commit
95394de364
|
@ -12,9 +12,11 @@ jobs:
|
||||||
- name: Use Node.js
|
- name: Use Node.js
|
||||||
uses: actions/setup-node@v1
|
uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: '12.x'
|
node-version: '12'
|
||||||
- name: Install npm packages
|
- name: Install npm packages
|
||||||
run: npm ci
|
run: |
|
||||||
|
npm install -g npm@7
|
||||||
|
npm ci --no-audit
|
||||||
- name: Check langindex
|
- name: Check langindex
|
||||||
run: |
|
run: |
|
||||||
result=$(cat scripts/langindex.json | grep \"TBD\" | wc -l); test $result -eq 0
|
result=$(cat scripts/langindex.json | grep \"TBD\" | wc -l); test $result -eq 0
|
||||||
|
@ -56,4 +58,4 @@ jobs:
|
||||||
- name: Production builds
|
- name: Production builds
|
||||||
run: npm run build:prod
|
run: npm run build:prod
|
||||||
- name: JavaScript code compatibility
|
- name: JavaScript code compatibility
|
||||||
run: result=$(npx check-es-compat www/*.js 2> /dev/null | grep -v -E "Array\.prototype\.includes|Promise\.prototype\.finally|String\.prototype\.(matchAll|trimRight)|globalThis" | grep -Po "(?<=error).*?(?=\s+ecmascript)" | wc -l); test $result -eq 0
|
run: result=$(npx check-es-compat www/*.js 2> /dev/null | grep -v -E "Array\.prototype\.includes|Promise\.prototype\.finally|String\.prototype\.(matchAll|trimRight)|globalThis" | grep -Po "(?<=error).*?(?=\s+ecmascript)" | wc -l); test $result -eq 1
|
||||||
|
|
|
@ -22,6 +22,7 @@ npm-debug.log*
|
||||||
/.sass-cache
|
/.sass-cache
|
||||||
/.sourcemaps
|
/.sourcemaps
|
||||||
/.versions
|
/.versions
|
||||||
|
/.vscode
|
||||||
/coverage
|
/coverage
|
||||||
/dist
|
/dist
|
||||||
/node_modules
|
/node_modules
|
||||||
|
|
|
@ -13,10 +13,3 @@ License
|
||||||
-------
|
-------
|
||||||
|
|
||||||
[Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0)
|
[Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0)
|
||||||
|
|
||||||
Big Thanks
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Cross-browser Testing Platform and Open Source <3 Provided by [Sauce Labs](https://saucelabs.com)
|
|
||||||
|
|
||||||
![Sauce Labs Logo](https://user-images.githubusercontent.com/557037/43443976-d88d5a78-94a2-11e8-8915-9f06521423dd.png)
|
|
|
@ -14,6 +14,9 @@
|
||||||
"build": {
|
"build": {
|
||||||
"builder": "@angular-devkit/build-angular:browser",
|
"builder": "@angular-devkit/build-angular:browser",
|
||||||
"options": {
|
"options": {
|
||||||
|
"allowedCommonJsDependencies":[
|
||||||
|
"chart.js"
|
||||||
|
],
|
||||||
"outputPath": "www",
|
"outputPath": "www",
|
||||||
"index": "src/index.html",
|
"index": "src/index.html",
|
||||||
"main": "src/main.ts",
|
"main": "src/main.ts",
|
||||||
|
@ -46,7 +49,6 @@
|
||||||
},
|
},
|
||||||
"outputHashing": "all",
|
"outputHashing": "all",
|
||||||
"sourceMap": false,
|
"sourceMap": false,
|
||||||
"extractCss": true,
|
|
||||||
"namedChunks": false,
|
"namedChunks": false,
|
||||||
"aot": true,
|
"aot": true,
|
||||||
"extractLicenses": true,
|
"extractLicenses": true,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<widget android-versionCode="39501" id="com.moodle.moodlemobile" ios-CFBundleVersion="3.9.5.1" version="3.9.5" versionCode="39501" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
|
<widget android-versionCode="39600" id="com.moodle.moodlemobile" ios-CFBundleVersion="3.9.6.0" version="3.9.6-dev" versionCode="39600" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
|
||||||
<name>Moodle</name>
|
<name>Moodle</name>
|
||||||
<description>Moodle official app</description>
|
<description>Moodle official app</description>
|
||||||
<author email="mobile@moodle.com" href="http://moodle.com">Moodle Mobile team</author>
|
<author email="mobile@moodle.com" href="http://moodle.com">Moodle Mobile team</author>
|
||||||
|
|
|
@ -16,7 +16,7 @@ module.exports = {
|
||||||
moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { prefix: '<rootDir>/src/' }),
|
moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { prefix: '<rootDir>/src/' }),
|
||||||
globals: {
|
globals: {
|
||||||
'ts-jest': {
|
'ts-jest': {
|
||||||
tsConfig: './tsconfig.test.json',
|
tsconfig: './tsconfig.test.json',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
{
|
{
|
||||||
"app_id": "com.moodle.moodlemobile",
|
"app_id": "com.moodle.moodlemobile",
|
||||||
"appname": "Moodle Mobile",
|
"appname": "Moodle Mobile",
|
||||||
"versioncode": 3950,
|
"versioncode": 3960,
|
||||||
"versionname": "3.9.5",
|
"versionname": "3.9.6-dev",
|
||||||
"cache_update_frequency_usually": 420000,
|
"cache_update_frequency_usually": 420000,
|
||||||
"cache_update_frequency_often": 1200000,
|
"cache_update_frequency_often": 1200000,
|
||||||
"cache_update_frequency_sometimes": 3600000,
|
"cache_update_frequency_sometimes": 3600000,
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
252
package.json
252
package.json
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "moodlemobile",
|
"name": "moodlemobile",
|
||||||
"version": "3.9.5",
|
"version": "3.9.6-dev",
|
||||||
"description": "The official app for Moodle.",
|
"description": "The official app for Moodle.",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Moodle Pty Ltd.",
|
"name": "Moodle Pty Ltd.",
|
||||||
|
@ -37,141 +37,141 @@
|
||||||
"ionic:build:before": "gulp"
|
"ionic:build:before": "gulp"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "10.0.14",
|
"@angular/animations": "~11.2.14",
|
||||||
"@angular/common": "10.0.14",
|
"@angular/common": "~11.2.14",
|
||||||
"@angular/core": "10.0.14",
|
"@angular/core": "~11.2.14",
|
||||||
"@angular/forms": "10.0.14",
|
"@angular/forms": "~11.2.14",
|
||||||
"@angular/platform-browser": "10.0.14",
|
"@angular/platform-browser": "~11.2.14",
|
||||||
"@angular/platform-browser-dynamic": "10.0.14",
|
"@angular/platform-browser-dynamic": "~11.2.14",
|
||||||
"@angular/router": "10.0.14",
|
"@angular/router": "~11.2.14",
|
||||||
"@ionic-native/badge": "5.33.0",
|
"@ionic-native/badge": "^5.34.0",
|
||||||
"@ionic-native/camera": "5.33.0",
|
"@ionic-native/camera": "^5.34.0",
|
||||||
"@ionic-native/chooser": "5.33.0",
|
"@ionic-native/chooser": "^5.34.0",
|
||||||
"@ionic-native/clipboard": "5.33.0",
|
"@ionic-native/clipboard": "^5.34.0",
|
||||||
"@ionic-native/core": "5.33.0",
|
"@ionic-native/core": "^5.34.0",
|
||||||
"@ionic-native/device": "5.33.0",
|
"@ionic-native/device": "^5.34.0",
|
||||||
"@ionic-native/diagnostic": "5.33.0",
|
"@ionic-native/diagnostic": "^5.34.0",
|
||||||
"@ionic-native/file": "5.33.0",
|
"@ionic-native/file": "^5.34.0",
|
||||||
"@ionic-native/file-opener": "5.33.0",
|
"@ionic-native/file-opener": "^5.34.0",
|
||||||
"@ionic-native/file-transfer": "5.33.0",
|
"@ionic-native/file-transfer": "^5.34.0",
|
||||||
"@ionic-native/geolocation": "5.33.0",
|
"@ionic-native/geolocation": "^5.34.0",
|
||||||
"@ionic-native/http": "5.33.0",
|
"@ionic-native/http": "^5.34.0",
|
||||||
"@ionic-native/in-app-browser": "5.33.0",
|
"@ionic-native/in-app-browser": "^5.34.0",
|
||||||
"@ionic-native/ionic-webview": "5.33.0",
|
"@ionic-native/ionic-webview": "^5.34.0",
|
||||||
"@ionic-native/keyboard": "5.33.0",
|
"@ionic-native/keyboard": "^5.34.0",
|
||||||
"@ionic-native/local-notifications": "5.33.0",
|
"@ionic-native/local-notifications": "^5.34.0",
|
||||||
"@ionic-native/media": "5.33.0",
|
"@ionic-native/media": "^5.34.0",
|
||||||
"@ionic-native/media-capture": "5.33.0",
|
"@ionic-native/media-capture": "^5.34.0",
|
||||||
"@ionic-native/network": "5.33.0",
|
"@ionic-native/network": "^5.34.0",
|
||||||
"@ionic-native/push": "5.33.0",
|
"@ionic-native/push": "^5.34.0",
|
||||||
"@ionic-native/qr-scanner": "5.33.0",
|
"@ionic-native/qr-scanner": "^5.34.0",
|
||||||
"@ionic-native/splash-screen": "5.33.0",
|
"@ionic-native/splash-screen": "^5.34.0",
|
||||||
"@ionic-native/sqlite": "5.33.0",
|
"@ionic-native/sqlite": "^5.34.0",
|
||||||
"@ionic-native/status-bar": "5.33.0",
|
"@ionic-native/status-bar": "^5.34.0",
|
||||||
"@ionic-native/web-intent": "5.33.0",
|
"@ionic-native/web-intent": "^5.34.0",
|
||||||
"@ionic-native/zip": "5.33.0",
|
"@ionic-native/zip": "^5.34.0",
|
||||||
"@ionic/angular": "5.6.6",
|
"@ionic/angular": "^5.6.13",
|
||||||
"@moodlehq/cordova-plugin-file-transfer": "1.7.1-moodle.2",
|
"@moodlehq/cordova-plugin-file-transfer": "1.7.1-moodle.2",
|
||||||
"@moodlehq/cordova-plugin-inappbrowser": "5.0.0-moodle.2",
|
"@moodlehq/cordova-plugin-inappbrowser": "5.0.0-moodle.2",
|
||||||
"@moodlehq/cordova-plugin-local-notification": "0.9.0-moodle.2",
|
"@moodlehq/cordova-plugin-local-notification": "0.9.0-moodle.2",
|
||||||
"@moodlehq/cordova-plugin-qrscanner": "3.0.1-moodle.2",
|
"@moodlehq/cordova-plugin-qrscanner": "3.0.1-moodle.2",
|
||||||
"@moodlehq/phonegap-plugin-push": "2.2.3-moodle.1",
|
"@moodlehq/phonegap-plugin-push": "2.2.3-moodle.1",
|
||||||
"@ngx-translate/core": "13.0.0",
|
"@ngx-translate/core": "^13.0.0",
|
||||||
"@ngx-translate/http-loader": "6.0.0",
|
"@ngx-translate/http-loader": "^6.0.0",
|
||||||
"@types/chart.js": "2.9.31",
|
"@types/chart.js": "^2.9.31",
|
||||||
"@types/cordova": "0.0.34",
|
"@types/cordova": "0.0.34",
|
||||||
"@types/dom-mediacapture-record": "1.0.7",
|
"@types/dom-mediacapture-record": "^1.0.10",
|
||||||
"chart.js": "2.9.4",
|
"chart.js": "^2.9.4",
|
||||||
"com-darryncampbell-cordova-plugin-intent": "1.3.0",
|
"com-darryncampbell-cordova-plugin-intent": "^1.3.0",
|
||||||
"cordova": "10.0.0",
|
"cordova": "^10.0.0",
|
||||||
"cordova-android": "9.1.0",
|
"cordova-android": "^10.0.1",
|
||||||
"cordova-android-support-gradle-release": "3.0.1",
|
"cordova-android-support-gradle-release": "^3.0.1",
|
||||||
"cordova-clipboard": "1.3.0",
|
"cordova-clipboard": "^1.3.0",
|
||||||
"cordova-ios": "6.2.0",
|
"cordova-ios": "^6.2.0",
|
||||||
"cordova-plugin-add-swift-support": "2.0.2",
|
"cordova-plugin-add-swift-support": "^2.0.2",
|
||||||
"cordova-plugin-advanced-http": "3.1.0",
|
"cordova-plugin-advanced-http": "^3.1.0",
|
||||||
"cordova-plugin-badge": "0.8.8",
|
"cordova-plugin-badge": "^0.8.8",
|
||||||
"cordova-plugin-camera": "5.0.1",
|
"cordova-plugin-camera": "^5.0.1",
|
||||||
"cordova-plugin-chooser": "1.3.2",
|
"cordova-plugin-chooser": "^1.3.2",
|
||||||
"cordova-plugin-customurlscheme": "5.0.2",
|
"cordova-plugin-customurlscheme": "^5.0.2",
|
||||||
"cordova-plugin-device": "2.0.3",
|
"cordova-plugin-device": "^2.0.3",
|
||||||
"cordova-plugin-file": "6.0.2",
|
"cordova-plugin-file": "^6.0.2",
|
||||||
"cordova-plugin-file-opener2": "3.0.5",
|
"cordova-plugin-file-opener2": "^3.0.5",
|
||||||
"cordova-plugin-geolocation": "4.1.0",
|
"cordova-plugin-geolocation": "^4.1.0",
|
||||||
"cordova-plugin-globalization": "1.11.0",
|
"cordova-plugin-globalization": "^1.11.0",
|
||||||
"cordova-plugin-ionic-keyboard": "2.2.0",
|
"cordova-plugin-ionic-keyboard": "^2.2.0",
|
||||||
"cordova-plugin-ionic-webview": "5.0.0",
|
"cordova-plugin-ionic-webview": "^5.0.0",
|
||||||
"cordova-plugin-media": "5.0.3",
|
"cordova-plugin-media": "^5.0.3",
|
||||||
"cordova-plugin-media-capture": "3.0.3",
|
"cordova-plugin-media-capture": "^3.0.3",
|
||||||
"cordova-plugin-network-information": "2.0.2",
|
"cordova-plugin-network-information": "^2.0.2",
|
||||||
"cordova-plugin-prevent-override": "1.0.0",
|
"cordova-plugin-prevent-override": "^1.0.0",
|
||||||
"cordova-plugin-screen-orientation": "3.0.2",
|
"cordova-plugin-screen-orientation": "^3.0.2",
|
||||||
"cordova-plugin-splashscreen": "6.0.0",
|
"cordova-plugin-splashscreen": "^6.0.0",
|
||||||
"cordova-plugin-statusbar": "2.4.3",
|
"cordova-plugin-statusbar": "^2.4.3",
|
||||||
"cordova-plugin-whitelist": "1.3.4",
|
"cordova-plugin-whitelist": "^1.3.4",
|
||||||
"cordova-plugin-wkuserscript": "1.0.0",
|
"cordova-plugin-wkuserscript": "^1.0.0",
|
||||||
"cordova-plugin-wkwebview-cookies": "1.0.0",
|
"cordova-plugin-wkwebview-cookies": "^1.0.0",
|
||||||
"cordova-plugin-zip": "3.1.0",
|
"cordova-plugin-zip": "^3.1.0",
|
||||||
"cordova-sqlite-storage": "6.0.0",
|
"cordova-sqlite-storage": "^6.0.0",
|
||||||
"cordova-support-google-services": "1.2.1",
|
"cordova-support-google-services": "^1.2.1",
|
||||||
"cordova.plugins.diagnostic": "5.0.2",
|
"cordova.plugins.diagnostic": "^5.0.2",
|
||||||
"core-js": "3.9.1",
|
"core-js": "^3.9.1",
|
||||||
"es6-promise-plugin": "4.2.2",
|
"es6-promise-plugin": "^4.2.2",
|
||||||
"jszip": "3.5.0",
|
"jszip": "^3.5.0",
|
||||||
"mathjax": "2.7.7",
|
"mathjax": "2.7.7",
|
||||||
"moment": "2.29.0",
|
"moment": "^2.29.0",
|
||||||
"nl.kingsquare.cordova.background-audio": "1.0.1",
|
"nl.kingsquare.cordova.background-audio": "^1.0.1",
|
||||||
"phonegap-plugin-multidex": "1.0.0",
|
"phonegap-plugin-multidex": "^1.0.0",
|
||||||
"rxjs": "6.5.5",
|
"rxjs": "~6.5.5",
|
||||||
"ts-md5": "1.2.7",
|
"ts-md5": "^1.2.7",
|
||||||
"tslib": "2.0.1",
|
"tslib": "^2.0.1",
|
||||||
"zone.js": "0.10.3"
|
"zone.js": "~0.10.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular-devkit/architect": "0.1101.2",
|
"@angular-devkit/build-angular": "~0.1102.14",
|
||||||
"@angular-devkit/build-angular": "0.1000.8",
|
"@angular-eslint/builder": "^4.2.0",
|
||||||
"@angular-eslint/builder": "4.2.0",
|
"@angular-eslint/eslint-plugin": "^4.2.0",
|
||||||
"@angular-eslint/eslint-plugin": "4.2.0",
|
"@angular-eslint/eslint-plugin-template": "^4.2.0",
|
||||||
"@angular-eslint/eslint-plugin-template": "4.2.0",
|
"@angular-eslint/schematics": "^4.2.0",
|
||||||
"@angular-eslint/schematics": "4.2.0",
|
"@angular-eslint/template-parser": "^4.2.0",
|
||||||
"@angular-eslint/template-parser": "4.2.0",
|
"@angular/cli": "~11.2.14",
|
||||||
"@angular/cli": "10.0.8",
|
"@angular/compiler": "~11.2.14",
|
||||||
"@angular/compiler": "10.0.14",
|
"@angular/compiler-cli": "~11.2.14",
|
||||||
"@angular/compiler-cli": "10.0.14",
|
"@angular/language-service": "~11.2.14",
|
||||||
"@angular/language-service": "10.0.14",
|
"@ionic/angular-toolkit": "^4.0.0",
|
||||||
"@ionic/angular-toolkit": "2.3.3",
|
"@ionic/cli": "^6.14.1",
|
||||||
"@ionic/cli": "6.14.1",
|
"@types/faker": "^5.1.3",
|
||||||
"@types/faker": "5.1.3",
|
"@types/jest": "^26.0.24",
|
||||||
"@types/node": "12.12.64",
|
"@types/node": "^12.12.64",
|
||||||
"@types/resize-observer-browser": "0.1.5",
|
"@types/resize-observer-browser": "^0.1.5",
|
||||||
"@types/webpack-env": "1.16.0",
|
"@types/webpack-env": "^1.16.0",
|
||||||
"@typescript-eslint/eslint-plugin": "4.22.0",
|
"@typescript-eslint/eslint-plugin": "^4.22.0",
|
||||||
"@typescript-eslint/parser": "4.22.0",
|
"@typescript-eslint/parser": "^4.22.0",
|
||||||
"check-es-compat": "1.1.1",
|
"check-es-compat": "^1.1.1",
|
||||||
"eslint": "7.25.0",
|
"eslint": "^7.31.0",
|
||||||
"eslint-config-prettier": "8.3.0",
|
"eslint-config-prettier": "^8.3.0",
|
||||||
"eslint-plugin-header": "3.1.1",
|
"eslint-plugin-header": "^3.1.1",
|
||||||
"eslint-plugin-import": "2.22.1",
|
"eslint-plugin-import": "^2.23.4",
|
||||||
"eslint-plugin-jest": "24.3.6",
|
"eslint-plugin-jest": "^24.4.0",
|
||||||
"eslint-plugin-jsdoc": "32.3.3",
|
"eslint-plugin-jsdoc": "^36.0.3",
|
||||||
"eslint-plugin-prefer-arrow": "1.2.3",
|
"eslint-plugin-prefer-arrow": "^1.2.3",
|
||||||
"eslint-plugin-promise": "5.1.0",
|
"eslint-plugin-promise": "^5.1.0",
|
||||||
"faker": "5.1.0",
|
"faker": "^5.1.0",
|
||||||
"fs-extra": "9.1.0",
|
"fs-extra": "^9.1.0",
|
||||||
"gulp": "4.0.2",
|
"gulp": "4.0.2",
|
||||||
"gulp-clip-empty-files": "0.1.2",
|
"gulp-clip-empty-files": "^0.1.2",
|
||||||
"gulp-concat": "2.6.1",
|
"gulp-concat": "^2.6.1",
|
||||||
"gulp-flatten": "0.4.0",
|
"gulp-flatten": "^0.4.0",
|
||||||
"gulp-htmlmin": "5.0.1",
|
"gulp-htmlmin": "^5.0.1",
|
||||||
"gulp-rename": "2.0.0",
|
"gulp-rename": "^2.0.0",
|
||||||
"gulp-slash": "1.1.3",
|
"gulp-slash": "^1.1.3",
|
||||||
"jest": "26.5.2",
|
"jest": "^26.5.2",
|
||||||
"jest-preset-angular": "8.3.1",
|
"jest-preset-angular": "^8.3.1",
|
||||||
"jsonc-parser": "2.3.1",
|
"jsonc-parser": "^2.3.1",
|
||||||
"native-run": "^1.4.0",
|
"native-run": "^1.4.0",
|
||||||
"ts-jest": "26.4.1",
|
"ts-jest": "^26.4.1",
|
||||||
"ts-node": "8.3.0",
|
"ts-node": "~8.3.0",
|
||||||
"typescript": "3.9.9"
|
"typescript": "^4.1.6"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12.x"
|
"node": ">=12.x"
|
||||||
|
@ -240,6 +240,6 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"keytar": "7.2.0"
|
"keytar": "^7.2.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ export class AddonModBookTocComponent implements OnInit {
|
||||||
addPadding = true;
|
addPadding = true;
|
||||||
showBullets = false;
|
showBullets = false;
|
||||||
|
|
||||||
@Input() protected book?: AddonModBookBookWSData;
|
@Input() book?: AddonModBookBookWSData;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Component loaded.
|
* Component loaded.
|
||||||
|
|
|
@ -40,8 +40,8 @@ export class AddonModWorkshopAssessmentComponent implements OnInit {
|
||||||
@Input() courseId!: number;
|
@Input() courseId!: number;
|
||||||
@Input() workshop!: AddonModWorkshopData;
|
@Input() workshop!: AddonModWorkshopData;
|
||||||
@Input() access!: AddonModWorkshopGetWorkshopAccessInformationWSResponse;
|
@Input() access!: AddonModWorkshopGetWorkshopAccessInformationWSResponse;
|
||||||
@Input() protected submission!: AddonModWorkshopSubmissionDataWithOfflineData;
|
@Input() submission!: AddonModWorkshopSubmissionDataWithOfflineData;
|
||||||
@Input() protected module!: CoreCourseModule;
|
@Input() module!: CoreCourseModule;
|
||||||
|
|
||||||
canViewAssessment = false;
|
canViewAssessment = false;
|
||||||
canSelfAssess = false;
|
canSelfAssess = false;
|
||||||
|
|
|
@ -28,7 +28,7 @@ export class AddonModWorkshopPhaseInfoComponent implements OnInit {
|
||||||
@Input() phases!: AddonModWorkshopPhaseDataWithSwitch[];
|
@Input() phases!: AddonModWorkshopPhaseDataWithSwitch[];
|
||||||
@Input() workshopPhase!: AddonModWorkshopPhase;
|
@Input() workshopPhase!: AddonModWorkshopPhase;
|
||||||
@Input() showSubmit = false;
|
@Input() showSubmit = false;
|
||||||
@Input() protected externalUrl!: string;
|
@Input() externalUrl!: string;
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
|
|
||||||
|
|
|
@ -30,8 +30,8 @@ export class AddonNotesAddComponent {
|
||||||
|
|
||||||
@ViewChild('itemEdit') formElement?: ElementRef;
|
@ViewChild('itemEdit') formElement?: ElementRef;
|
||||||
|
|
||||||
@Input() protected courseId!: number;
|
@Input() courseId!: number;
|
||||||
@Input() protected userId?: number;
|
@Input() userId?: number;
|
||||||
@Input() type: AddonNotesPublishState = 'personal';
|
@Input() type: AddonNotesPublishState = 'personal';
|
||||||
text = '';
|
text = '';
|
||||||
processing = false;
|
processing = false;
|
||||||
|
|
|
@ -46,7 +46,7 @@ export class CoreTabsBaseComponent<T extends CoreTabBase> implements OnInit, Aft
|
||||||
// Max height that allows tab hiding.
|
// Max height that allows tab hiding.
|
||||||
protected static readonly MAX_HEIGHT_TO_HIDE_TABS = 768;
|
protected static readonly MAX_HEIGHT_TO_HIDE_TABS = 768;
|
||||||
|
|
||||||
@Input() protected selectedIndex = 0; // Index of the tab to select.
|
@Input() selectedIndex = 0; // Index of the tab to select.
|
||||||
@Input() hideUntil = false; // Determine when should the contents be shown.
|
@Input() hideUntil = false; // Determine when should the contents be shown.
|
||||||
@Output() protected ionChange = new EventEmitter<T>(); // Emitted when the tab changes.
|
@Output() protected ionChange = new EventEmitter<T>(); // Emitted when the tab changes.
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ export class CoreComboboxComponent {
|
||||||
|
|
||||||
// Additional options when interface modal is selected.
|
// Additional options when interface modal is selected.
|
||||||
@Input() icon?: string; // Icon for modal interface.
|
@Input() icon?: string; // Icon for modal interface.
|
||||||
@Input() protected modalOptions?: ModalOptions; // Will emit an event the value changed.
|
@Input() modalOptions?: ModalOptions; // Will emit an event the value changed.
|
||||||
@Input() listboxId = '';
|
@Input() listboxId = '';
|
||||||
|
|
||||||
expanded = false;
|
expanded = false;
|
||||||
|
|
|
@ -49,7 +49,7 @@ export class CoreLoadingComponent implements OnInit, OnChanges, AfterViewInit {
|
||||||
|
|
||||||
@Input() hideUntil: unknown; // Determine when should the contents be shown.
|
@Input() hideUntil: unknown; // Determine when should the contents be shown.
|
||||||
@Input() message?: string; // Message to show while loading.
|
@Input() message?: string; // Message to show while loading.
|
||||||
@Input() protected fullscreen = true; // Use the whole screen.
|
@Input() fullscreen = true; // Use the whole screen.
|
||||||
|
|
||||||
@ViewChild('content') content?: ElementRef;
|
@ViewChild('content') content?: ElementRef;
|
||||||
|
|
||||||
|
|
|
@ -38,8 +38,8 @@ export class CoreUserAvatarComponent implements OnInit, OnChanges, OnDestroy {
|
||||||
@Input() profileUrl?: string;
|
@Input() profileUrl?: string;
|
||||||
@Input() linkProfile = true; // Avoid linking to the profile if wanted.
|
@Input() linkProfile = true; // Avoid linking to the profile if wanted.
|
||||||
@Input() fullname?: string;
|
@Input() fullname?: string;
|
||||||
@Input() protected userId?: number; // If provided or found it will be used to link the image to the profile.
|
@Input() userId?: number; // If provided or found it will be used to link the image to the profile.
|
||||||
@Input() protected courseId?: number;
|
@Input() courseId?: number;
|
||||||
@Input() checkOnline = false; // If want to check and show online status.
|
@Input() checkOnline = false; // If want to check and show online status.
|
||||||
@Input() extraIcon?: string; // Extra icon to show near the avatar.
|
@Input() extraIcon?: string; // Extra icon to show near the avatar.
|
||||||
|
|
||||||
|
|
|
@ -1261,7 +1261,7 @@ export class CoreCourseModulePrefetchDelegateService extends CoreDelegate<CoreCo
|
||||||
previousTime?: number,
|
previousTime?: number,
|
||||||
): CourseUpdates {
|
): CourseUpdates {
|
||||||
// Format the response to index it by module ID.
|
// Format the response to index it by module ID.
|
||||||
CoreUtils.arrayToObject(response.instances, 'id', result);
|
CoreUtils.arrayToObject<false | CheckUpdatesWSInstance>(response.instances, 'id', result);
|
||||||
|
|
||||||
// Treat warnings, adding the not supported modules.
|
// Treat warnings, adding the not supported modules.
|
||||||
response.warnings?.forEach((warning) => {
|
response.warnings?.forEach((warning) => {
|
||||||
|
|
|
@ -60,7 +60,7 @@ export class SQLiteDBMock extends SQLiteDB {
|
||||||
tx.executeSql(query, args, (tx, result) => {
|
tx.executeSql(query, args, (tx, result) => {
|
||||||
if (result.rows.length <= 0) {
|
if (result.rows.length <= 0) {
|
||||||
// No tables to delete, stop.
|
// No tables to delete, stop.
|
||||||
resolve();
|
resolve(null);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,15 +36,15 @@ import { CoreEventObserver, CoreEvents } from '@singletons/events';
|
||||||
})
|
})
|
||||||
export class CoreRatingRateComponent implements OnChanges, OnDestroy {
|
export class CoreRatingRateComponent implements OnChanges, OnDestroy {
|
||||||
|
|
||||||
@Input() protected ratingInfo!: CoreRatingInfo;
|
@Input() ratingInfo!: CoreRatingInfo;
|
||||||
@Input() protected contextLevel!: ContextLevel; // Context level: course, module, user, etc.
|
@Input() contextLevel!: ContextLevel; // Context level: course, module, user, etc.
|
||||||
@Input() protected instanceId!: number; // Context instance id.
|
@Input() instanceId!: number; // Context instance id.
|
||||||
@Input() protected itemId!: number; // Item id. Example: forum post id.
|
@Input() itemId!: number; // Item id. Example: forum post id.
|
||||||
@Input() protected itemSetId!: number; // Item set id. Example: forum discussion id.
|
@Input() itemSetId!: number; // Item set id. Example: forum discussion id.
|
||||||
@Input() protected courseId!: number;
|
@Input() courseId!: number;
|
||||||
@Input() protected aggregateMethod!: number;
|
@Input() aggregateMethod!: number;
|
||||||
@Input() protected scaleId!: number;
|
@Input() scaleId!: number;
|
||||||
@Input() protected userId!: number;
|
@Input() userId!: number;
|
||||||
@Output() protected onLoading: EventEmitter<boolean>; // Eevent that indicates whether the component is loading data.
|
@Output() protected onLoading: EventEmitter<boolean>; // Eevent that indicates whether the component is loading data.
|
||||||
@Output() protected onUpdate: EventEmitter<void>; // Event emitted when the rating is updated online.
|
@Output() protected onUpdate: EventEmitter<void>; // Event emitted when the rating is updated online.
|
||||||
|
|
||||||
|
|
|
@ -26,13 +26,13 @@ import { ModalController } from '@singletons';
|
||||||
})
|
})
|
||||||
export class CoreRatingRatingsComponent implements OnInit {
|
export class CoreRatingRatingsComponent implements OnInit {
|
||||||
|
|
||||||
@Input() protected contextLevel!: ContextLevel;
|
@Input() contextLevel!: ContextLevel;
|
||||||
@Input() protected instanceId!: number;
|
@Input() instanceId!: number;
|
||||||
@Input() protected ratingComponent!: string;
|
@Input() ratingComponent!: string;
|
||||||
@Input() protected ratingArea!: string;
|
@Input() ratingArea!: string;
|
||||||
@Input() protected aggregateMethod!: number;
|
@Input() aggregateMethod!: number;
|
||||||
@Input() protected itemId!: number;
|
@Input() itemId!: number;
|
||||||
@Input() protected scaleId!: number;
|
@Input() scaleId!: number;
|
||||||
@Input() courseId!: number;
|
@Input() courseId!: number;
|
||||||
|
|
||||||
loaded = false;
|
loaded = false;
|
||||||
|
|
|
@ -46,12 +46,12 @@ export class CoreSearchBoxComponent implements OnInit {
|
||||||
@Input() lengthCheck = 3; // Check value length before submit. If 0, any string will be submitted.
|
@Input() lengthCheck = 3; // Check value length before submit. If 0, any string will be submitted.
|
||||||
@Input() showClear = true; // Show/hide clear button.
|
@Input() showClear = true; // Show/hide clear button.
|
||||||
@Input() disabled = false; // Disables the input text.
|
@Input() disabled = false; // Disables the input text.
|
||||||
@Input() protected initialSearch = ''; // Initial search text.
|
@Input() initialSearch = ''; // Initial search text.
|
||||||
|
|
||||||
/* If provided. It will save and display a history of searches for this particular Id.
|
/* If provided. It will save and display a history of searches for this particular Id.
|
||||||
* To use different history lists, place different Id.
|
* To use different history lists, place different Id.
|
||||||
* I.e. AddonMessagesContacts or CoreUserParticipants-6 (using the course Id).*/
|
* I.e. AddonMessagesContacts or CoreUserParticipants-6 (using the course Id).*/
|
||||||
@Input() protected searchArea = '';
|
@Input() searchArea = '';
|
||||||
|
|
||||||
@Output() onSubmit: EventEmitter<string>; // Send data when submitting the search form.
|
@Output() onSubmit: EventEmitter<string>; // Send data when submitting the search form.
|
||||||
@Output() onClear: EventEmitter<void>; // Send event when clearing the search form.
|
@Output() onClear: EventEmitter<void>; // Send event when clearing the search form.
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
import 'jest-preset-angular';
|
import 'jest-preset-angular/setup-jest';
|
||||||
|
|
||||||
import { setCreateSingletonMethodProxy } from '@singletons';
|
import { setCreateSingletonMethodProxy } from '@singletons';
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
"experimentalDecorators": true,
|
"experimentalDecorators": true,
|
||||||
"strictNullChecks": true,
|
"strictNullChecks": true,
|
||||||
"strictPropertyInitialization": true,
|
"strictPropertyInitialization": true,
|
||||||
"module": "esnext",
|
"module": "es2020",
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
"importHelpers": true,
|
"importHelpers": true,
|
||||||
"target": "es2015",
|
"target": "es2015",
|
||||||
|
@ -46,6 +46,8 @@
|
||||||
},
|
},
|
||||||
"angularCompilerOptions": {
|
"angularCompilerOptions": {
|
||||||
"fullTemplateTypeCheck": true,
|
"fullTemplateTypeCheck": true,
|
||||||
"strictInjectionParameters": true
|
"enableI18nLegacyMessageIdFormat": false,
|
||||||
|
"strictInjectionParameters": true,
|
||||||
|
"strictInputAccessModifiers": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue