@sumaris-net/ngx-components 2.4.55 → 2.4.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/doc/changelog.md +3 -0
- package/esm2020/src/app/core/form/entity/entity-editor.class.mjs +7 -4
- package/esm2020/src/app/core/services/model/entity.model.mjs +10 -1
- package/esm2020/src/app/core/table/table.class.mjs +58 -20
- package/esm2020/src/app/core/table/table.utils.mjs +18 -1
- package/fesm2015/sumaris-net.ngx-components.mjs +87 -22
- package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
- package/fesm2020/sumaris-net.ngx-components.mjs +86 -22
- package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/core/services/model/entity.model.d.ts +3 -0
- package/src/app/core/table/table.class.d.ts +7 -8
- package/src/app/core/table/table.utils.d.ts +4 -0
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { AppFormUtils } from '../form/form.utils';
|
|
2
|
+
import { EntityUtils } from '../services/model/entity.model';
|
|
3
|
+
import { isNotNil, isNotNilOrNaN } from '../../shared/functions';
|
|
2
4
|
export class AppTableUtils {
|
|
3
5
|
static waitIdle(table) {
|
|
4
6
|
if (!table || !table.dataSource) {
|
|
@@ -9,5 +11,20 @@ export class AppTableUtils {
|
|
|
9
11
|
static logRowErrors(row, logPrefix) {
|
|
10
12
|
AppFormUtils.logFormErrors(row.validator, logPrefix);
|
|
11
13
|
}
|
|
14
|
+
static getEntityId(row) {
|
|
15
|
+
return EntityUtils.getId(row.currentData);
|
|
16
|
+
}
|
|
17
|
+
static getEntityIds(rows) {
|
|
18
|
+
return (rows || [])
|
|
19
|
+
.map((row) => row.currentData)
|
|
20
|
+
.filter(isNotNil)
|
|
21
|
+
.map(EntityUtils.getId)
|
|
22
|
+
.filter(isNotNilOrNaN);
|
|
23
|
+
}
|
|
24
|
+
static getEntities(rows) {
|
|
25
|
+
return (rows || [])
|
|
26
|
+
.map((row) => row.currentData)
|
|
27
|
+
.filter(isNotNil);
|
|
28
|
+
}
|
|
12
29
|
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvdGFibGUvdGFibGUudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRWhELE9BQU8sRUFBQyxXQUFXLEVBQVUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUMsUUFBUSxFQUFFLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRS9ELE1BQU0sT0FBTyxhQUFhO0lBRXhCLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBOEI7UUFDNUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1NBQ3JFO1FBQ0QsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQTZDLEVBQUUsU0FBa0I7UUFDbkYsWUFBWSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUF5RCxHQUEyQztRQUNwSCxPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUF5RCxJQUFnRDtRQUMxSCxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQzthQUNoQixHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUM7YUFDN0IsTUFBTSxDQUFDLFFBQVEsQ0FBQzthQUNoQixHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQzthQUN0QixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXLENBQXlELElBQWdEO1FBQ3pILE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2FBQ2hCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQzthQUM3QixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcHBUYWJsZX0gZnJvbSAnLi90YWJsZS5jbGFzcyc7XG5pbXBvcnQge1RhYmxlRWxlbWVudH0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlJztcbmltcG9ydCB7QXBwRm9ybVV0aWxzfSBmcm9tICcuLi9mb3JtL2Zvcm0udXRpbHMnO1xuaW1wb3J0IHtBc3luY1RhYmxlRWxlbWVudH0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlL3NyYy9hcHAvbmd4LW1hdGVyaWFsLXRhYmxlL2FzeW5jL2FzeW5jLXRhYmxlLWVsZW1lbnQnO1xuaW1wb3J0IHtFbnRpdHlVdGlscywgSUVudGl0eX0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7aXNOb3ROaWwsIGlzTm90TmlsT3JOYU59IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuXG5leHBvcnQgY2xhc3MgQXBwVGFibGVVdGlscyB7XG5cbiAgc3RhdGljIHdhaXRJZGxlKHRhYmxlOiBBcHBUYWJsZTxhbnksIGFueSwgYW55Pik6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKCF0YWJsZSB8fCAhdGFibGUuZGF0YVNvdXJjZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRhYmxlLiBNaXNzaW5nIHRhYmxlIG9yIHRhYmxlLmRhdGFTb3VyY2UnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhYmxlLmRhdGFTb3VyY2Uud2FpdElkbGUoKTtcbiAgfVxuXG4gIHN0YXRpYyBsb2dSb3dFcnJvcnMocm93OiBUYWJsZUVsZW1lbnQ8YW55PnxBc3luY1RhYmxlRWxlbWVudDxhbnk+LCBsb2dQcmVmaXg/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBBcHBGb3JtVXRpbHMubG9nRm9ybUVycm9ycyhyb3cudmFsaWRhdG9yLCBsb2dQcmVmaXgpO1xuICB9XG5cbiAgc3RhdGljIGdldEVudGl0eUlkPFQgZXh0ZW5kcyBJRW50aXR5PFQsIElEPiA9IElFbnRpdHk8YW55LCBhbnk+LCBJRCA9IGFueT4ocm93OiBUYWJsZUVsZW1lbnQ8VD4gfCBBc3luY1RhYmxlRWxlbWVudDxUPik6IElEIHtcbiAgICByZXR1cm4gRW50aXR5VXRpbHMuZ2V0SWQocm93LmN1cnJlbnREYXRhKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRFbnRpdHlJZHM8VCBleHRlbmRzIElFbnRpdHk8VCwgSUQ+ID0gSUVudGl0eTxhbnksIGFueT4sIElEID0gYW55Pihyb3dzOiBUYWJsZUVsZW1lbnQ8VD5bXSB8IEFzeW5jVGFibGVFbGVtZW50PFQ+W10pOiBJRFtdIHtcbiAgICByZXR1cm4gKHJvd3MgfHwgW10pXG4gICAgICAubWFwKChyb3cpID0+IHJvdy5jdXJyZW50RGF0YSlcbiAgICAgIC5maWx0ZXIoaXNOb3ROaWwpXG4gICAgICAubWFwKEVudGl0eVV0aWxzLmdldElkKVxuICAgICAgLmZpbHRlcihpc05vdE5pbE9yTmFOKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRFbnRpdGllczxUIGV4dGVuZHMgSUVudGl0eTxULCBJRD4gPSBJRW50aXR5PGFueSwgYW55PiwgSUQgPSBhbnk+KHJvd3M6IFRhYmxlRWxlbWVudDxUPltdIHwgQXN5bmNUYWJsZUVsZW1lbnQ8VD5bXSk6IFRbXSB7XG4gICAgcmV0dXJuIChyb3dzIHx8IFtdKVxuICAgICAgLm1hcCgocm93KSA9PiByb3cuY3VycmVudERhdGEpXG4gICAgICAuZmlsdGVyKGlzTm90TmlsKTtcbiAgfVxufVxuIl19
|
|
@@ -11515,6 +11515,15 @@ class EntityUtils {
|
|
|
11515
11515
|
static isRemoteId(id) {
|
|
11516
11516
|
return isNotNil(id) && +id >= 0;
|
|
11517
11517
|
}
|
|
11518
|
+
static getId(entity) {
|
|
11519
|
+
return entity.id;
|
|
11520
|
+
}
|
|
11521
|
+
static collectById(entities) {
|
|
11522
|
+
return (entities || []).map(e => e.id);
|
|
11523
|
+
}
|
|
11524
|
+
static arrayDistinctFilterFn(item, index, values) {
|
|
11525
|
+
return values.findIndex(e => e.id === item.id) === index;
|
|
11526
|
+
}
|
|
11518
11527
|
}
|
|
11519
11528
|
EntityUtils.getPropertyByPath = getPropertyByPath;
|
|
11520
11529
|
|
|
@@ -25995,6 +26004,21 @@ class AppTableUtils {
|
|
|
25995
26004
|
static logRowErrors(row, logPrefix) {
|
|
25996
26005
|
AppFormUtils.logFormErrors(row.validator, logPrefix);
|
|
25997
26006
|
}
|
|
26007
|
+
static getEntityId(row) {
|
|
26008
|
+
return EntityUtils.getId(row.currentData);
|
|
26009
|
+
}
|
|
26010
|
+
static getEntityIds(rows) {
|
|
26011
|
+
return (rows || [])
|
|
26012
|
+
.map((row) => row.currentData)
|
|
26013
|
+
.filter(isNotNil)
|
|
26014
|
+
.map(EntityUtils.getId)
|
|
26015
|
+
.filter(isNotNilOrNaN);
|
|
26016
|
+
}
|
|
26017
|
+
static getEntities(rows) {
|
|
26018
|
+
return (rows || [])
|
|
26019
|
+
.map((row) => row.currentData)
|
|
26020
|
+
.filter(isNotNil);
|
|
26021
|
+
}
|
|
25998
26022
|
}
|
|
25999
26023
|
|
|
26000
26024
|
// @dynamic
|
|
@@ -26421,6 +26445,7 @@ class AppTable {
|
|
|
26421
26445
|
this.dirtySubject = new BehaviorSubject(false);
|
|
26422
26446
|
this.errorSubject = new BehaviorSubject(undefined);
|
|
26423
26447
|
this.selection = new SelectionModel(true, []);
|
|
26448
|
+
this.permanentSelection = null;
|
|
26424
26449
|
this.editedRow = undefined;
|
|
26425
26450
|
this.i18nColumnPrefix = 'COMMON.';
|
|
26426
26451
|
this.autoLoad = true;
|
|
@@ -26474,18 +26499,6 @@ class AppTable {
|
|
|
26474
26499
|
set error(error) {
|
|
26475
26500
|
this.setError(error);
|
|
26476
26501
|
}
|
|
26477
|
-
/**
|
|
26478
|
-
* @deprecated
|
|
26479
|
-
*/
|
|
26480
|
-
get loading$() {
|
|
26481
|
-
return this.loadingSubject.asObservable();
|
|
26482
|
-
}
|
|
26483
|
-
/**
|
|
26484
|
-
* @deprecated
|
|
26485
|
-
*/
|
|
26486
|
-
get saving$() {
|
|
26487
|
-
return this.savingSubject.asObservable();
|
|
26488
|
-
}
|
|
26489
26502
|
get firstUserColumn() {
|
|
26490
26503
|
return this.displayedColumns[RESERVED_START_COLUMNS.length];
|
|
26491
26504
|
}
|
|
@@ -26507,6 +26520,11 @@ class AppTable {
|
|
|
26507
26520
|
get empty() {
|
|
26508
26521
|
return this.loading || this.totalRowCount === 0;
|
|
26509
26522
|
}
|
|
26523
|
+
get selectedEntities() {
|
|
26524
|
+
var _a;
|
|
26525
|
+
return ((_a = this.permanentSelection) === null || _a === void 0 ? void 0 : _a.selected)
|
|
26526
|
+
|| AppTableUtils.getEntities(this.selection.selected);
|
|
26527
|
+
}
|
|
26510
26528
|
get dirty() {
|
|
26511
26529
|
return this.dirtySubject.value;
|
|
26512
26530
|
}
|
|
@@ -27076,8 +27094,7 @@ class AppTable {
|
|
|
27076
27094
|
isAllSelected() {
|
|
27077
27095
|
// DEBUG
|
|
27078
27096
|
//console.debug('isAllSelected. lengths', this.selection.selected.length, this.totalRowCount);
|
|
27079
|
-
return this.selection.selected.length === this.
|
|
27080
|
-
this.selection.selected.length === this.visibleRowCount;
|
|
27097
|
+
return this.selection.selected.length === this.visibleRowCount;
|
|
27081
27098
|
}
|
|
27082
27099
|
/** Selects all rows if they are not all selected; otherwise clear selection. */
|
|
27083
27100
|
masterToggle() {
|
|
@@ -27206,7 +27223,8 @@ class AppTable {
|
|
|
27206
27223
|
// DO not update manually, because watchALl().subscribe() will update this count
|
|
27207
27224
|
//this.totalRowCount -= deleteCount;
|
|
27208
27225
|
//this.visibleRowCount -= deleteCount;
|
|
27209
|
-
|
|
27226
|
+
// Deselect deleted rows
|
|
27227
|
+
this.selection.deselect(...rows);
|
|
27210
27228
|
this.editedRow = undefined;
|
|
27211
27229
|
this.markAsDirty({ emitEvent: false /*markForCheck() is called just after*/ });
|
|
27212
27230
|
this.markForCheck();
|
|
@@ -27275,7 +27293,6 @@ class AppTable {
|
|
|
27275
27293
|
event.preventDefault();
|
|
27276
27294
|
}
|
|
27277
27295
|
this.markAsLoading();
|
|
27278
|
-
this.selection.clear();
|
|
27279
27296
|
this.openRow(row.currentData.id, row)
|
|
27280
27297
|
.then(() => this.markAsLoaded())
|
|
27281
27298
|
.catch(() => this.markAsLoaded());
|
|
@@ -27590,9 +27607,7 @@ class AppTable {
|
|
|
27590
27607
|
this.onNewRow.emit(event);
|
|
27591
27608
|
return true;
|
|
27592
27609
|
}
|
|
27593
|
-
return
|
|
27594
|
-
relativeTo: this.route
|
|
27595
|
-
});
|
|
27610
|
+
return this.navController.navigateForward(`${this.router.url}/new`);
|
|
27596
27611
|
});
|
|
27597
27612
|
}
|
|
27598
27613
|
// can be overridden to add more required columns
|
|
@@ -28019,6 +28034,53 @@ class AppTable {
|
|
|
28019
28034
|
def.subject.unsubscribe();
|
|
28020
28035
|
}
|
|
28021
28036
|
}
|
|
28037
|
+
/**
|
|
28038
|
+
* Initialize the permanent selection model
|
|
28039
|
+
* @protected
|
|
28040
|
+
*/
|
|
28041
|
+
initPermanentSelection() {
|
|
28042
|
+
if (this.permanentSelection)
|
|
28043
|
+
throw new Error('initPermanentSelection() already called!');
|
|
28044
|
+
this.permanentSelection = new SelectionModel(true, []);
|
|
28045
|
+
let selectionChangedPrevented = false;
|
|
28046
|
+
// Listen sort change
|
|
28047
|
+
this.registerSubscription(this.onSort.subscribe(() => (selectionChangedPrevented = true)) // prevent selection change on sort
|
|
28048
|
+
);
|
|
28049
|
+
// Listen datasource update
|
|
28050
|
+
this.registerSubscription(this.dataSource.rowsSubject
|
|
28051
|
+
// restore the 'adding' selection (for example after a page or sort change)
|
|
28052
|
+
.subscribe((rows) => {
|
|
28053
|
+
selectionChangedPrevented = true;
|
|
28054
|
+
try {
|
|
28055
|
+
const permanentSelectionIds = (this.permanentSelection.selected || []).map(EntityUtils.getId);
|
|
28056
|
+
this.selection.setSelection(...rows.filter((row) => permanentSelectionIds.includes(AppTableUtils.getEntityId(row))));
|
|
28057
|
+
this.markForCheck();
|
|
28058
|
+
}
|
|
28059
|
+
finally {
|
|
28060
|
+
selectionChangedPrevented = false;
|
|
28061
|
+
}
|
|
28062
|
+
}));
|
|
28063
|
+
// Listen selection change
|
|
28064
|
+
this.registerSubscription(this.selection.changed
|
|
28065
|
+
.pipe(filter(() => !selectionChangedPrevented))
|
|
28066
|
+
.subscribe((selectionChange) => {
|
|
28067
|
+
// add to selection
|
|
28068
|
+
if (selectionChange.added.length) {
|
|
28069
|
+
this.permanentSelection.setSelection(...(this.permanentSelection.selected || [])
|
|
28070
|
+
// Add new elements
|
|
28071
|
+
.concat(...AppTableUtils.getEntities(selectionChange.added))
|
|
28072
|
+
// Avoid duplicated entities (Mantis #55351)
|
|
28073
|
+
.filter(EntityUtils.arrayDistinctFilterFn));
|
|
28074
|
+
}
|
|
28075
|
+
// remove from selection
|
|
28076
|
+
if (selectionChange.removed.length) {
|
|
28077
|
+
const removedIds = AppTableUtils.getEntityIds(selectionChange.removed);
|
|
28078
|
+
this.permanentSelection.setSelection(...(this.permanentSelection.selected || [])
|
|
28079
|
+
.filter((entity) => !removedIds.includes(entity.id)));
|
|
28080
|
+
}
|
|
28081
|
+
this.markForCheck();
|
|
28082
|
+
}));
|
|
28083
|
+
}
|
|
28022
28084
|
}
|
|
28023
28085
|
AppTable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AppTable, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
28024
28086
|
AppTable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: AppTable, inputs: { settingsId: "settingsId", debug: "debug", i18nColumnPrefix: "i18nColumnPrefix", i18nColumnSuffix: "i18nColumnSuffix", autoLoad: "autoLoad", readOnly: "readOnly", inlineEdition: "inlineEdition", focusFirstColumn: "focusFirstColumn", confirmBeforeDelete: "confirmBeforeDelete", confirmBeforeCancel: "confirmBeforeCancel", undoableDeletion: "undoableDeletion", saveBeforeDelete: "saveBeforeDelete", keepEditedRowOnSave: "keepEditedRowOnSave", saveBeforeSort: "saveBeforeSort", saveBeforeFilter: "saveBeforeFilter", propagateRowError: "propagateRowError", defaultSortBy: "defaultSortBy", defaultSortDirection: "defaultSortDirection", defaultPageSize: "defaultPageSize", defaultPageSizeOptions: "defaultPageSizeOptions", focusColumn: "focusColumn", dataSource: "dataSource", filter: "filter", disabled: "disabled", paginator: "paginator" }, outputs: { onRefresh: "onRefresh", onOpenRow: "onOpenRow", onNewRow: "onNewRow", onStartEditingRow: "onStartEditingRow", onConfirmEditCreateRow: "onConfirmEditCreateRow", onCancelOrDeleteRow: "onCancelOrDeleteRow", onBeforeDeleteRows: "onBeforeDeleteRows", onBeforeCancelRows: "onBeforeCancelRows", onBeforeSave: "onBeforeSave", onAfterDeletedRows: "onAfterDeletedRows", onSort: "onSort", onDirty: "onDirty", onError: "onError" }, viewQueries: [{ propertyName: "table", first: true, predicate: MatTable, descendants: true }, { propertyName: "childPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }], ngImport: i0 });
|
|
@@ -29441,7 +29503,8 @@ class AppEntityEditor extends AppTabEditor {
|
|
|
29441
29503
|
console.debug('[entity-editor] Updating route using queryParams: ', queryParams);
|
|
29442
29504
|
return yield this.router.navigate(['.'], {
|
|
29443
29505
|
relativeTo: this.route,
|
|
29444
|
-
queryParams: this.queryParams
|
|
29506
|
+
queryParams: this.queryParams,
|
|
29507
|
+
state: { animated: false }
|
|
29445
29508
|
});
|
|
29446
29509
|
}
|
|
29447
29510
|
}
|
|
@@ -29451,7 +29514,8 @@ class AppEntityEditor extends AppTabEditor {
|
|
|
29451
29514
|
const res = yield this.router.navigate(['.'], {
|
|
29452
29515
|
relativeTo: this.route,
|
|
29453
29516
|
replaceUrl: true,
|
|
29454
|
-
queryParams: Object.assign(Object.assign({}, this.queryParams), { [this.pathIdAttribute]: futureId })
|
|
29517
|
+
queryParams: Object.assign(Object.assign({}, this.queryParams), { [this.pathIdAttribute]: futureId }),
|
|
29518
|
+
state: { animated: false }
|
|
29455
29519
|
});
|
|
29456
29520
|
if (!res)
|
|
29457
29521
|
return false;
|
|
@@ -29463,7 +29527,8 @@ class AppEntityEditor extends AppTabEditor {
|
|
|
29463
29527
|
console.debug('[entity-editor] Updating route to: ' + path);
|
|
29464
29528
|
return yield this.router.navigate(commands, {
|
|
29465
29529
|
replaceUrl: true,
|
|
29466
|
-
queryParams: this.queryParams
|
|
29530
|
+
queryParams: this.queryParams,
|
|
29531
|
+
state: { animated: false }
|
|
29467
29532
|
});
|
|
29468
29533
|
}
|
|
29469
29534
|
return Promise.reject('Missing page URL');
|