commit
95394de364
|
@ -12,9 +12,11 @@ jobs:
|
|||
- name: Use Node.js
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: '12.x'
|
||||
node-version: '12'
|
||||
- name: Install npm packages
|
||||
run: npm ci
|
||||
run: |
|
||||
npm install -g npm@7
|
||||
npm ci --no-audit
|
||||
- name: Check langindex
|
||||
run: |
|
||||
result=$(cat scripts/langindex.json | grep \"TBD\" | wc -l); test $result -eq 0
|
||||
|
@ -56,4 +58,4 @@ jobs:
|
|||
- name: Production builds
|
||||
run: npm run build:prod
|
||||
- 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
|
||||
/.sourcemaps
|
||||
/.versions
|
||||
/.vscode
|
||||
/coverage
|
||||
/dist
|
||||
/node_modules
|
||||
|
|
|
@ -13,10 +13,3 @@ License
|
|||
-------
|
||||
|
||||
[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": {
|
||||
"builder": "@angular-devkit/build-angular:browser",
|
||||
"options": {
|
||||
"allowedCommonJsDependencies":[
|
||||
"chart.js"
|
||||
],
|
||||
"outputPath": "www",
|
||||
"index": "src/index.html",
|
||||
"main": "src/main.ts",
|
||||
|
@ -46,7 +49,6 @@
|
|||
},
|
||||
"outputHashing": "all",
|
||||
"sourceMap": false,
|
||||
"extractCss": true,
|
||||
"namedChunks": false,
|
||||
"aot": true,
|
||||
"extractLicenses": true,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?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>
|
||||
<description>Moodle official app</description>
|
||||
<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/' }),
|
||||
globals: {
|
||||
'ts-jest': {
|
||||
tsConfig: './tsconfig.test.json',
|
||||
tsconfig: './tsconfig.test.json',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
{
|
||||
"app_id": "com.moodle.moodlemobile",
|
||||
"appname": "Moodle Mobile",
|
||||
"versioncode": 3950,
|
||||
"versionname": "3.9.5",
|
||||
"versioncode": 3960,
|
||||
"versionname": "3.9.6-dev",
|
||||
"cache_update_frequency_usually": 420000,
|
||||
"cache_update_frequency_often": 1200000,
|
||||
"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",
|
||||
"version": "3.9.5",
|
||||
"version": "3.9.6-dev",
|
||||
"description": "The official app for Moodle.",
|
||||
"author": {
|
||||
"name": "Moodle Pty Ltd.",
|
||||
|
@ -37,141 +37,141 @@
|
|||
"ionic:build:before": "gulp"
|
||||
},
|
||||
"dependencies": {
|
||||
"@angular/animations": "10.0.14",
|
||||
"@angular/common": "10.0.14",
|
||||
"@angular/core": "10.0.14",
|
||||
"@angular/forms": "10.0.14",
|
||||
"@angular/platform-browser": "10.0.14",
|
||||
"@angular/platform-browser-dynamic": "10.0.14",
|
||||
"@angular/router": "10.0.14",
|
||||
"@ionic-native/badge": "5.33.0",
|
||||
"@ionic-native/camera": "5.33.0",
|
||||
"@ionic-native/chooser": "5.33.0",
|
||||
"@ionic-native/clipboard": "5.33.0",
|
||||
"@ionic-native/core": "5.33.0",
|
||||
"@ionic-native/device": "5.33.0",
|
||||
"@ionic-native/diagnostic": "5.33.0",
|
||||
"@ionic-native/file": "5.33.0",
|
||||
"@ionic-native/file-opener": "5.33.0",
|
||||
"@ionic-native/file-transfer": "5.33.0",
|
||||
"@ionic-native/geolocation": "5.33.0",
|
||||
"@ionic-native/http": "5.33.0",
|
||||
"@ionic-native/in-app-browser": "5.33.0",
|
||||
"@ionic-native/ionic-webview": "5.33.0",
|
||||
"@ionic-native/keyboard": "5.33.0",
|
||||
"@ionic-native/local-notifications": "5.33.0",
|
||||
"@ionic-native/media": "5.33.0",
|
||||
"@ionic-native/media-capture": "5.33.0",
|
||||
"@ionic-native/network": "5.33.0",
|
||||
"@ionic-native/push": "5.33.0",
|
||||
"@ionic-native/qr-scanner": "5.33.0",
|
||||
"@ionic-native/splash-screen": "5.33.0",
|
||||
"@ionic-native/sqlite": "5.33.0",
|
||||
"@ionic-native/status-bar": "5.33.0",
|
||||
"@ionic-native/web-intent": "5.33.0",
|
||||
"@ionic-native/zip": "5.33.0",
|
||||
"@ionic/angular": "5.6.6",
|
||||
"@angular/animations": "~11.2.14",
|
||||
"@angular/common": "~11.2.14",
|
||||
"@angular/core": "~11.2.14",
|
||||
"@angular/forms": "~11.2.14",
|
||||
"@angular/platform-browser": "~11.2.14",
|
||||
"@angular/platform-browser-dynamic": "~11.2.14",
|
||||
"@angular/router": "~11.2.14",
|
||||
"@ionic-native/badge": "^5.34.0",
|
||||
"@ionic-native/camera": "^5.34.0",
|
||||
"@ionic-native/chooser": "^5.34.0",
|
||||
"@ionic-native/clipboard": "^5.34.0",
|
||||
"@ionic-native/core": "^5.34.0",
|
||||
"@ionic-native/device": "^5.34.0",
|
||||
"@ionic-native/diagnostic": "^5.34.0",
|
||||
"@ionic-native/file": "^5.34.0",
|
||||
"@ionic-native/file-opener": "^5.34.0",
|
||||
"@ionic-native/file-transfer": "^5.34.0",
|
||||
"@ionic-native/geolocation": "^5.34.0",
|
||||
"@ionic-native/http": "^5.34.0",
|
||||
"@ionic-native/in-app-browser": "^5.34.0",
|
||||
"@ionic-native/ionic-webview": "^5.34.0",
|
||||
"@ionic-native/keyboard": "^5.34.0",
|
||||
"@ionic-native/local-notifications": "^5.34.0",
|
||||
"@ionic-native/media": "^5.34.0",
|
||||
"@ionic-native/media-capture": "^5.34.0",
|
||||
"@ionic-native/network": "^5.34.0",
|
||||
"@ionic-native/push": "^5.34.0",
|
||||
"@ionic-native/qr-scanner": "^5.34.0",
|
||||
"@ionic-native/splash-screen": "^5.34.0",
|
||||
"@ionic-native/sqlite": "^5.34.0",
|
||||
"@ionic-native/status-bar": "^5.34.0",
|
||||
"@ionic-native/web-intent": "^5.34.0",
|
||||
"@ionic-native/zip": "^5.34.0",
|
||||
"@ionic/angular": "^5.6.13",
|
||||
"@moodlehq/cordova-plugin-file-transfer": "1.7.1-moodle.2",
|
||||
"@moodlehq/cordova-plugin-inappbrowser": "5.0.0-moodle.2",
|
||||
"@moodlehq/cordova-plugin-local-notification": "0.9.0-moodle.2",
|
||||
"@moodlehq/cordova-plugin-qrscanner": "3.0.1-moodle.2",
|
||||
"@moodlehq/phonegap-plugin-push": "2.2.3-moodle.1",
|
||||
"@ngx-translate/core": "13.0.0",
|
||||
"@ngx-translate/http-loader": "6.0.0",
|
||||
"@types/chart.js": "2.9.31",
|
||||
"@ngx-translate/core": "^13.0.0",
|
||||
"@ngx-translate/http-loader": "^6.0.0",
|
||||
"@types/chart.js": "^2.9.31",
|
||||
"@types/cordova": "0.0.34",
|
||||
"@types/dom-mediacapture-record": "1.0.7",
|
||||
"chart.js": "2.9.4",
|
||||
"com-darryncampbell-cordova-plugin-intent": "1.3.0",
|
||||
"cordova": "10.0.0",
|
||||
"cordova-android": "9.1.0",
|
||||
"cordova-android-support-gradle-release": "3.0.1",
|
||||
"cordova-clipboard": "1.3.0",
|
||||
"cordova-ios": "6.2.0",
|
||||
"cordova-plugin-add-swift-support": "2.0.2",
|
||||
"cordova-plugin-advanced-http": "3.1.0",
|
||||
"cordova-plugin-badge": "0.8.8",
|
||||
"cordova-plugin-camera": "5.0.1",
|
||||
"cordova-plugin-chooser": "1.3.2",
|
||||
"cordova-plugin-customurlscheme": "5.0.2",
|
||||
"cordova-plugin-device": "2.0.3",
|
||||
"cordova-plugin-file": "6.0.2",
|
||||
"cordova-plugin-file-opener2": "3.0.5",
|
||||
"cordova-plugin-geolocation": "4.1.0",
|
||||
"cordova-plugin-globalization": "1.11.0",
|
||||
"cordova-plugin-ionic-keyboard": "2.2.0",
|
||||
"cordova-plugin-ionic-webview": "5.0.0",
|
||||
"cordova-plugin-media": "5.0.3",
|
||||
"cordova-plugin-media-capture": "3.0.3",
|
||||
"cordova-plugin-network-information": "2.0.2",
|
||||
"cordova-plugin-prevent-override": "1.0.0",
|
||||
"cordova-plugin-screen-orientation": "3.0.2",
|
||||
"cordova-plugin-splashscreen": "6.0.0",
|
||||
"cordova-plugin-statusbar": "2.4.3",
|
||||
"cordova-plugin-whitelist": "1.3.4",
|
||||
"cordova-plugin-wkuserscript": "1.0.0",
|
||||
"cordova-plugin-wkwebview-cookies": "1.0.0",
|
||||
"cordova-plugin-zip": "3.1.0",
|
||||
"cordova-sqlite-storage": "6.0.0",
|
||||
"cordova-support-google-services": "1.2.1",
|
||||
"cordova.plugins.diagnostic": "5.0.2",
|
||||
"core-js": "3.9.1",
|
||||
"es6-promise-plugin": "4.2.2",
|
||||
"jszip": "3.5.0",
|
||||
"@types/dom-mediacapture-record": "^1.0.10",
|
||||
"chart.js": "^2.9.4",
|
||||
"com-darryncampbell-cordova-plugin-intent": "^1.3.0",
|
||||
"cordova": "^10.0.0",
|
||||
"cordova-android": "^10.0.1",
|
||||
"cordova-android-support-gradle-release": "^3.0.1",
|
||||
"cordova-clipboard": "^1.3.0",
|
||||
"cordova-ios": "^6.2.0",
|
||||
"cordova-plugin-add-swift-support": "^2.0.2",
|
||||
"cordova-plugin-advanced-http": "^3.1.0",
|
||||
"cordova-plugin-badge": "^0.8.8",
|
||||
"cordova-plugin-camera": "^5.0.1",
|
||||
"cordova-plugin-chooser": "^1.3.2",
|
||||
"cordova-plugin-customurlscheme": "^5.0.2",
|
||||
"cordova-plugin-device": "^2.0.3",
|
||||
"cordova-plugin-file": "^6.0.2",
|
||||
"cordova-plugin-file-opener2": "^3.0.5",
|
||||
"cordova-plugin-geolocation": "^4.1.0",
|
||||
"cordova-plugin-globalization": "^1.11.0",
|
||||
"cordova-plugin-ionic-keyboard": "^2.2.0",
|
||||
"cordova-plugin-ionic-webview": "^5.0.0",
|
||||
"cordova-plugin-media": "^5.0.3",
|
||||
"cordova-plugin-media-capture": "^3.0.3",
|
||||
"cordova-plugin-network-information": "^2.0.2",
|
||||
"cordova-plugin-prevent-override": "^1.0.0",
|
||||
"cordova-plugin-screen-orientation": "^3.0.2",
|
||||
"cordova-plugin-splashscreen": "^6.0.0",
|
||||
"cordova-plugin-statusbar": "^2.4.3",
|
||||
"cordova-plugin-whitelist": "^1.3.4",
|
||||
"cordova-plugin-wkuserscript": "^1.0.0",
|
||||
"cordova-plugin-wkwebview-cookies": "^1.0.0",
|
||||
"cordova-plugin-zip": "^3.1.0",
|
||||
"cordova-sqlite-storage": "^6.0.0",
|
||||
"cordova-support-google-services": "^1.2.1",
|
||||
"cordova.plugins.diagnostic": "^5.0.2",
|
||||
"core-js": "^3.9.1",
|
||||
"es6-promise-plugin": "^4.2.2",
|
||||
"jszip": "^3.5.0",
|
||||
"mathjax": "2.7.7",
|
||||
"moment": "2.29.0",
|
||||
"nl.kingsquare.cordova.background-audio": "1.0.1",
|
||||
"phonegap-plugin-multidex": "1.0.0",
|
||||
"rxjs": "6.5.5",
|
||||
"ts-md5": "1.2.7",
|
||||
"tslib": "2.0.1",
|
||||
"zone.js": "0.10.3"
|
||||
"moment": "^2.29.0",
|
||||
"nl.kingsquare.cordova.background-audio": "^1.0.1",
|
||||
"phonegap-plugin-multidex": "^1.0.0",
|
||||
"rxjs": "~6.5.5",
|
||||
"ts-md5": "^1.2.7",
|
||||
"tslib": "^2.0.1",
|
||||
"zone.js": "~0.10.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular-devkit/architect": "0.1101.2",
|
||||
"@angular-devkit/build-angular": "0.1000.8",
|
||||
"@angular-eslint/builder": "4.2.0",
|
||||
"@angular-eslint/eslint-plugin": "4.2.0",
|
||||
"@angular-eslint/eslint-plugin-template": "4.2.0",
|
||||
"@angular-eslint/schematics": "4.2.0",
|
||||
"@angular-eslint/template-parser": "4.2.0",
|
||||
"@angular/cli": "10.0.8",
|
||||
"@angular/compiler": "10.0.14",
|
||||
"@angular/compiler-cli": "10.0.14",
|
||||
"@angular/language-service": "10.0.14",
|
||||
"@ionic/angular-toolkit": "2.3.3",
|
||||
"@ionic/cli": "6.14.1",
|
||||
"@types/faker": "5.1.3",
|
||||
"@types/node": "12.12.64",
|
||||
"@types/resize-observer-browser": "0.1.5",
|
||||
"@types/webpack-env": "1.16.0",
|
||||
"@typescript-eslint/eslint-plugin": "4.22.0",
|
||||
"@typescript-eslint/parser": "4.22.0",
|
||||
"check-es-compat": "1.1.1",
|
||||
"eslint": "7.25.0",
|
||||
"eslint-config-prettier": "8.3.0",
|
||||
"eslint-plugin-header": "3.1.1",
|
||||
"eslint-plugin-import": "2.22.1",
|
||||
"eslint-plugin-jest": "24.3.6",
|
||||
"eslint-plugin-jsdoc": "32.3.3",
|
||||
"eslint-plugin-prefer-arrow": "1.2.3",
|
||||
"eslint-plugin-promise": "5.1.0",
|
||||
"faker": "5.1.0",
|
||||
"fs-extra": "9.1.0",
|
||||
"@angular-devkit/build-angular": "~0.1102.14",
|
||||
"@angular-eslint/builder": "^4.2.0",
|
||||
"@angular-eslint/eslint-plugin": "^4.2.0",
|
||||
"@angular-eslint/eslint-plugin-template": "^4.2.0",
|
||||
"@angular-eslint/schematics": "^4.2.0",
|
||||
"@angular-eslint/template-parser": "^4.2.0",
|
||||
"@angular/cli": "~11.2.14",
|
||||
"@angular/compiler": "~11.2.14",
|
||||
"@angular/compiler-cli": "~11.2.14",
|
||||
"@angular/language-service": "~11.2.14",
|
||||
"@ionic/angular-toolkit": "^4.0.0",
|
||||
"@ionic/cli": "^6.14.1",
|
||||
"@types/faker": "^5.1.3",
|
||||
"@types/jest": "^26.0.24",
|
||||
"@types/node": "^12.12.64",
|
||||
"@types/resize-observer-browser": "^0.1.5",
|
||||
"@types/webpack-env": "^1.16.0",
|
||||
"@typescript-eslint/eslint-plugin": "^4.22.0",
|
||||
"@typescript-eslint/parser": "^4.22.0",
|
||||
"check-es-compat": "^1.1.1",
|
||||
"eslint": "^7.31.0",
|
||||
"eslint-config-prettier": "^8.3.0",
|
||||
"eslint-plugin-header": "^3.1.1",
|
||||
"eslint-plugin-import": "^2.23.4",
|
||||
"eslint-plugin-jest": "^24.4.0",
|
||||
"eslint-plugin-jsdoc": "^36.0.3",
|
||||
"eslint-plugin-prefer-arrow": "^1.2.3",
|
||||
"eslint-plugin-promise": "^5.1.0",
|
||||
"faker": "^5.1.0",
|
||||
"fs-extra": "^9.1.0",
|
||||
"gulp": "4.0.2",
|
||||
"gulp-clip-empty-files": "0.1.2",
|
||||
"gulp-concat": "2.6.1",
|
||||
"gulp-flatten": "0.4.0",
|
||||
"gulp-htmlmin": "5.0.1",
|
||||
"gulp-rename": "2.0.0",
|
||||
"gulp-slash": "1.1.3",
|
||||
"jest": "26.5.2",
|
||||
"jest-preset-angular": "8.3.1",
|
||||
"jsonc-parser": "2.3.1",
|
||||
"gulp-clip-empty-files": "^0.1.2",
|
||||
"gulp-concat": "^2.6.1",
|
||||
"gulp-flatten": "^0.4.0",
|
||||
"gulp-htmlmin": "^5.0.1",
|
||||
"gulp-rename": "^2.0.0",
|
||||
"gulp-slash": "^1.1.3",
|
||||
"jest": "^26.5.2",
|
||||
"jest-preset-angular": "^8.3.1",
|
||||
"jsonc-parser": "^2.3.1",
|
||||
"native-run": "^1.4.0",
|
||||
"ts-jest": "26.4.1",
|
||||
"ts-node": "8.3.0",
|
||||
"typescript": "3.9.9"
|
||||
"ts-jest": "^26.4.1",
|
||||
"ts-node": "~8.3.0",
|
||||
"typescript": "^4.1.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.x"
|
||||
|
@ -240,6 +240,6 @@
|
|||
}
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"keytar": "7.2.0"
|
||||
"keytar": "^7.2.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ export class AddonModBookTocComponent implements OnInit {
|
|||
addPadding = true;
|
||||
showBullets = false;
|
||||
|
||||
@Input() protected book?: AddonModBookBookWSData;
|
||||
@Input() book?: AddonModBookBookWSData;
|
||||
|
||||
/**
|
||||
* Component loaded.
|
||||
|
|
|
@ -40,8 +40,8 @@ export class AddonModWorkshopAssessmentComponent implements OnInit {
|
|||
@Input() courseId!: number;
|
||||
@Input() workshop!: AddonModWorkshopData;
|
||||
@Input() access!: AddonModWorkshopGetWorkshopAccessInformationWSResponse;
|
||||
@Input() protected submission!: AddonModWorkshopSubmissionDataWithOfflineData;
|
||||
@Input() protected module!: CoreCourseModule;
|
||||
@Input() submission!: AddonModWorkshopSubmissionDataWithOfflineData;
|
||||
@Input() module!: CoreCourseModule;
|
||||
|
||||
canViewAssessment = false;
|
||||
canSelfAssess = false;
|
||||
|
|
|
@ -28,7 +28,7 @@ export class AddonModWorkshopPhaseInfoComponent implements OnInit {
|
|||
@Input() phases!: AddonModWorkshopPhaseDataWithSwitch[];
|
||||
@Input() workshopPhase!: AddonModWorkshopPhase;
|
||||
@Input() showSubmit = false;
|
||||
@Input() protected externalUrl!: string;
|
||||
@Input() externalUrl!: string;
|
||||
|
||||
ngOnInit(): void {
|
||||
|
||||
|
|
|
@ -30,8 +30,8 @@ export class AddonNotesAddComponent {
|
|||
|
||||
@ViewChild('itemEdit') formElement?: ElementRef;
|
||||
|
||||
@Input() protected courseId!: number;
|
||||
@Input() protected userId?: number;
|
||||
@Input() courseId!: number;
|
||||
@Input() userId?: number;
|
||||
@Input() type: AddonNotesPublishState = 'personal';
|
||||
text = '';
|
||||
processing = false;
|
||||
|
|
|
@ -46,7 +46,7 @@ export class CoreTabsBaseComponent<T extends CoreTabBase> implements OnInit, Aft
|
|||
// Max height that allows tab hiding.
|
||||
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.
|
||||
@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.
|
||||
@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 = '';
|
||||
|
||||
expanded = false;
|
||||
|
|
|
@ -49,7 +49,7 @@ export class CoreLoadingComponent implements OnInit, OnChanges, AfterViewInit {
|
|||
|
||||
@Input() hideUntil: unknown; // Determine when should the contents be shown.
|
||||
@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;
|
||||
|
||||
|
|
|
@ -38,8 +38,8 @@ export class CoreUserAvatarComponent implements OnInit, OnChanges, OnDestroy {
|
|||
@Input() profileUrl?: string;
|
||||
@Input() linkProfile = true; // Avoid linking to the profile if wanted.
|
||||
@Input() fullname?: string;
|
||||
@Input() protected userId?: number; // If provided or found it will be used to link the image to the profile.
|
||||
@Input() protected courseId?: number;
|
||||
@Input() userId?: number; // If provided or found it will be used to link the image to the profile.
|
||||
@Input() courseId?: number;
|
||||
@Input() checkOnline = false; // If want to check and show online status.
|
||||
@Input() extraIcon?: string; // Extra icon to show near the avatar.
|
||||
|
||||
|
|
|
@ -1261,7 +1261,7 @@ export class CoreCourseModulePrefetchDelegateService extends CoreDelegate<CoreCo
|
|||
previousTime?: number,
|
||||
): CourseUpdates {
|
||||
// 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.
|
||||
response.warnings?.forEach((warning) => {
|
||||
|
|
|
@ -60,7 +60,7 @@ export class SQLiteDBMock extends SQLiteDB {
|
|||
tx.executeSql(query, args, (tx, result) => {
|
||||
if (result.rows.length <= 0) {
|
||||
// No tables to delete, stop.
|
||||
resolve();
|
||||
resolve(null);
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -36,15 +36,15 @@ import { CoreEventObserver, CoreEvents } from '@singletons/events';
|
|||
})
|
||||
export class CoreRatingRateComponent implements OnChanges, OnDestroy {
|
||||
|
||||
@Input() protected ratingInfo!: CoreRatingInfo;
|
||||
@Input() protected contextLevel!: ContextLevel; // Context level: course, module, user, etc.
|
||||
@Input() protected instanceId!: number; // Context instance id.
|
||||
@Input() protected itemId!: number; // Item id. Example: forum post id.
|
||||
@Input() protected itemSetId!: number; // Item set id. Example: forum discussion id.
|
||||
@Input() protected courseId!: number;
|
||||
@Input() protected aggregateMethod!: number;
|
||||
@Input() protected scaleId!: number;
|
||||
@Input() protected userId!: number;
|
||||
@Input() ratingInfo!: CoreRatingInfo;
|
||||
@Input() contextLevel!: ContextLevel; // Context level: course, module, user, etc.
|
||||
@Input() instanceId!: number; // Context instance id.
|
||||
@Input() itemId!: number; // Item id. Example: forum post id.
|
||||
@Input() itemSetId!: number; // Item set id. Example: forum discussion id.
|
||||
@Input() courseId!: number;
|
||||
@Input() aggregateMethod!: number;
|
||||
@Input() scaleId!: number;
|
||||
@Input() userId!: number;
|
||||
@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.
|
||||
|
||||
|
|
|
@ -26,13 +26,13 @@ import { ModalController } from '@singletons';
|
|||
})
|
||||
export class CoreRatingRatingsComponent implements OnInit {
|
||||
|
||||
@Input() protected contextLevel!: ContextLevel;
|
||||
@Input() protected instanceId!: number;
|
||||
@Input() protected ratingComponent!: string;
|
||||
@Input() protected ratingArea!: string;
|
||||
@Input() protected aggregateMethod!: number;
|
||||
@Input() protected itemId!: number;
|
||||
@Input() protected scaleId!: number;
|
||||
@Input() contextLevel!: ContextLevel;
|
||||
@Input() instanceId!: number;
|
||||
@Input() ratingComponent!: string;
|
||||
@Input() ratingArea!: string;
|
||||
@Input() aggregateMethod!: number;
|
||||
@Input() itemId!: number;
|
||||
@Input() scaleId!: number;
|
||||
@Input() courseId!: number;
|
||||
|
||||
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() showClear = true; // Show/hide clear button.
|
||||
@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.
|
||||
* To use different history lists, place different 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() onClear: EventEmitter<void>; // Send event when clearing the search form.
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import 'jest-preset-angular';
|
||||
import 'jest-preset-angular/setup-jest';
|
||||
|
||||
import { setCreateSingletonMethodProxy } from '@singletons';
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
"experimentalDecorators": true,
|
||||
"strictNullChecks": true,
|
||||
"strictPropertyInitialization": true,
|
||||
"module": "esnext",
|
||||
"module": "es2020",
|
||||
"moduleResolution": "node",
|
||||
"importHelpers": true,
|
||||
"target": "es2015",
|
||||
|
@ -46,6 +46,8 @@
|
|||
},
|
||||
"angularCompilerOptions": {
|
||||
"fullTemplateTypeCheck": true,
|
||||
"strictInjectionParameters": true
|
||||
"enableI18nLegacyMessageIdFormat": false,
|
||||
"strictInjectionParameters": true,
|
||||
"strictInputAccessModifiers": true
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue