@sumaris-net/ngx-components 0.27.2 → 0.27.6
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/bundles/sumaris-net.ngx-components.umd.js +562 -435
- package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +2 -2
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
- package/esm2015/src/app/core/form/editor.class.js +172 -127
- package/esm2015/src/app/core/form/entity-editor.class.js +2 -1
- package/esm2015/src/app/core/form/form.class.js +21 -2
- package/esm2015/src/app/core/form/form.utils.js +14 -1
- package/esm2015/src/app/core/table/table.class.js +14 -2
- package/esm2015/src/app/shared/pipes/number-format.pipe.js +1 -1
- package/fesm2015/sumaris-net.ngx-components.js +485 -382
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +2 -2
- package/src/app/core/form/editor.class.d.ts +43 -26
- package/src/app/core/form/form.class.d.ts +12 -2
- package/src/app/core/form/form.utils.d.ts +19 -0
- package/src/app/core/table/table.class.d.ts +5 -0
- package/sumaris-net.ngx-components.metadata.json +1 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sumaris-net/ngx-components",
|
|
3
3
|
"description": "SUMARiS Angular components",
|
|
4
|
-
"version": "0.27.
|
|
4
|
+
"version": "0.27.6",
|
|
5
5
|
"author": "contact@e-is.pro",
|
|
6
6
|
"license": "AGPL-3.0",
|
|
7
7
|
"readmeFilename": "README.md",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"tslib": "^2.2.0"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
|
-
"@apollo/client": "
|
|
17
|
+
"@apollo/client": "^3.4.17"
|
|
18
18
|
},
|
|
19
19
|
"repository": {
|
|
20
20
|
"type": "git",
|
|
@@ -3,7 +3,7 @@ import { ActivatedRoute, Params, Router } from '@angular/router';
|
|
|
3
3
|
import { MatTabChangeEvent, MatTabGroup } from '@angular/material/tabs';
|
|
4
4
|
import { AlertController, IonContent, ToastController } from '@ionic/angular';
|
|
5
5
|
import { TranslateService } from '@ngx-translate/core';
|
|
6
|
-
import { Subscription, TeardownLogic } from 'rxjs';
|
|
6
|
+
import { BehaviorSubject, Subscription, TeardownLogic } from 'rxjs';
|
|
7
7
|
import { AppTable } from '../table/table.class';
|
|
8
8
|
import { FormButtonsBarToken } from './form-buttons-bar.component';
|
|
9
9
|
import { IAppForm, IAppFormGetter } from './form.utils';
|
|
@@ -31,7 +31,7 @@ export declare class AppTabEditorOptions {
|
|
|
31
31
|
*/
|
|
32
32
|
enableSwipe?: boolean;
|
|
33
33
|
}
|
|
34
|
-
export declare abstract class
|
|
34
|
+
export declare abstract class AppEditor<T = any, ID = number, O = any> implements IAppEditor, OnInit, OnDestroy, AfterViewInit {
|
|
35
35
|
protected route: ActivatedRoute;
|
|
36
36
|
protected router: Router;
|
|
37
37
|
protected alertCtrl: AlertController;
|
|
@@ -41,11 +41,8 @@ export declare abstract class AppTabEditor<T = any, ID = number, O = any> implem
|
|
|
41
41
|
protected _enabled: boolean;
|
|
42
42
|
protected _dirty: boolean;
|
|
43
43
|
protected _loading: boolean;
|
|
44
|
-
protected
|
|
44
|
+
protected _$ready: BehaviorSubject<boolean>;
|
|
45
45
|
protected toastController: ToastController;
|
|
46
|
-
tabCount: number;
|
|
47
|
-
enableSwipe: boolean;
|
|
48
|
-
tabGroupAnimationDuration: string;
|
|
49
46
|
debug: boolean;
|
|
50
47
|
previousDataId: ID;
|
|
51
48
|
submitted: boolean;
|
|
@@ -55,8 +52,6 @@ export declare abstract class AppTabEditor<T = any, ID = number, O = any> implem
|
|
|
55
52
|
prefix: string;
|
|
56
53
|
suffix: string;
|
|
57
54
|
};
|
|
58
|
-
queryTabIndexParamName: string;
|
|
59
|
-
tabGroup: MatTabGroup;
|
|
60
55
|
toolbar: ToolbarToken | null;
|
|
61
56
|
formButtonsBar: FormButtonsBarToken | null;
|
|
62
57
|
content: IonContent;
|
|
@@ -73,16 +68,13 @@ export declare abstract class AppTabEditor<T = any, ID = number, O = any> implem
|
|
|
73
68
|
get disabled(): boolean;
|
|
74
69
|
get children(): IAppForm[];
|
|
75
70
|
get empty(): boolean;
|
|
76
|
-
get selectedTabIndex(): number;
|
|
77
|
-
set selectedTabIndex(value: number);
|
|
78
|
-
readonly selectedTabIndexChange: EventEmitter<number>;
|
|
79
71
|
abstract get isNewData(): boolean;
|
|
80
|
-
protected constructor(route: ActivatedRoute, router: Router, alertCtrl: AlertController, translate: TranslateService
|
|
72
|
+
protected constructor(route: ActivatedRoute, router: Router, alertCtrl: AlertController, translate: TranslateService);
|
|
81
73
|
ngOnInit(): void;
|
|
82
74
|
ngAfterViewInit(): void;
|
|
83
75
|
ngOnDestroy(): void;
|
|
84
|
-
addChildForm(form: IAppForm | IAppFormGetter):
|
|
85
|
-
addChildForms(forms: (IAppForm | IAppFormGetter)[]):
|
|
76
|
+
addChildForm(form: IAppForm | IAppFormGetter): AppEditor<T, ID, O>;
|
|
77
|
+
addChildForms(forms: (IAppForm | IAppFormGetter)[]): AppEditor<T, ID, O>;
|
|
86
78
|
disable(opts?: {
|
|
87
79
|
onlySelf?: boolean;
|
|
88
80
|
emitEvent?: boolean;
|
|
@@ -122,12 +114,11 @@ export declare abstract class AppTabEditor<T = any, ID = number, O = any> implem
|
|
|
122
114
|
onlySelf?: boolean;
|
|
123
115
|
emitEvent?: boolean;
|
|
124
116
|
}): void;
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
onSubTabChange(event: MatTabChangeEvent): void;
|
|
117
|
+
markAsReady(opts?: {
|
|
118
|
+
emitEvent?: boolean;
|
|
119
|
+
}): void;
|
|
120
|
+
ready(opts?: WaitForOptions): Promise<any>;
|
|
121
|
+
waitIdle(opts?: WaitForOptions): Promise<any>;
|
|
131
122
|
cancel(event?: Event): Promise<void>;
|
|
132
123
|
/**
|
|
133
124
|
* Unload the page (remove all data). Useful when reusing angular cache a cancelled page
|
|
@@ -139,14 +130,10 @@ export declare abstract class AppTabEditor<T = any, ID = number, O = any> implem
|
|
|
139
130
|
}): Promise<void>;
|
|
140
131
|
reloadWithConfirmation(confirm?: boolean): Promise<void>;
|
|
141
132
|
goBack(event?: Event): Promise<void | boolean>;
|
|
142
|
-
setSelectedTabIndex(value: number, opts?: {
|
|
143
|
-
emitEvent?: boolean;
|
|
144
|
-
realignInkBar?: boolean;
|
|
145
|
-
}): void;
|
|
146
|
-
waitIdle(opts?: WaitForOptions): Promise<any>;
|
|
147
133
|
abstract load(id?: ID, options?: O): Promise<void>;
|
|
148
134
|
abstract save(event?: Event, options?: any): Promise<boolean>;
|
|
149
135
|
abstract reload(): Promise<void>;
|
|
136
|
+
logFormErrors(): void;
|
|
150
137
|
protected scrollToTop(duration?: number): Promise<void>;
|
|
151
138
|
protected registerSubscription(sub: Subscription | TeardownLogic): void;
|
|
152
139
|
protected unregisterSubscription(sub: Subscription): void;
|
|
@@ -154,7 +141,37 @@ export declare abstract class AppTabEditor<T = any, ID = number, O = any> implem
|
|
|
154
141
|
emitEvent: boolean;
|
|
155
142
|
}): Promise<boolean>;
|
|
156
143
|
protected showToast(opts: ShowToastOptions): Promise<void>;
|
|
157
|
-
protected logFormErrors(): void;
|
|
158
144
|
protected logChildrenFormErrors(c: IAppForm | AbstractControl, prefix?: string, path?: string): void;
|
|
159
145
|
protected markForCheck(): void;
|
|
160
146
|
}
|
|
147
|
+
export declare abstract class AppTabEditor<T = any, ID = number, O = any> extends AppEditor<T, ID, O> {
|
|
148
|
+
protected route: ActivatedRoute;
|
|
149
|
+
protected router: Router;
|
|
150
|
+
protected alertCtrl: AlertController;
|
|
151
|
+
protected translate: TranslateService;
|
|
152
|
+
protected _selectedTabIndex: number;
|
|
153
|
+
tabCount: number;
|
|
154
|
+
enableSwipe: boolean;
|
|
155
|
+
tabGroupAnimationDuration: string;
|
|
156
|
+
queryTabIndexParamName: string;
|
|
157
|
+
set selectedTabIndex(value: number);
|
|
158
|
+
get selectedTabIndex(): number;
|
|
159
|
+
readonly selectedTabIndexChange: EventEmitter<number>;
|
|
160
|
+
tabGroup: MatTabGroup;
|
|
161
|
+
protected constructor(route: ActivatedRoute, router: Router, alertCtrl: AlertController, translate: TranslateService, options?: AppTabEditorOptions);
|
|
162
|
+
ngOnInit(): void;
|
|
163
|
+
ngOnDestroy(): void;
|
|
164
|
+
setSelectedTabIndex(value: number, opts?: {
|
|
165
|
+
emitEvent?: boolean;
|
|
166
|
+
realignInkBar?: boolean;
|
|
167
|
+
}): void;
|
|
168
|
+
onTabChange(event: MatTabChangeEvent, queryTabIndexParamName?: string): boolean;
|
|
169
|
+
/**
|
|
170
|
+
* Action triggered when user swipes
|
|
171
|
+
*/
|
|
172
|
+
onSwipeTab(event: HammerSwipeEvent): boolean;
|
|
173
|
+
onSubTabChange(event: MatTabChangeEvent): void;
|
|
174
|
+
unload(opts?: {
|
|
175
|
+
emitEvent?: boolean;
|
|
176
|
+
}): Promise<void>;
|
|
177
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EventEmitter, Injector, OnDestroy, OnInit } from '@angular/core';
|
|
2
2
|
import { FormGroup } from '@angular/forms';
|
|
3
|
-
import { Subscription } from 'rxjs';
|
|
3
|
+
import { BehaviorSubject, Subscription } from 'rxjs';
|
|
4
4
|
import { IAppForm } from './form.utils';
|
|
5
5
|
import { LocalSettingsService } from '../services/local-settings.service';
|
|
6
6
|
import { MatAutocompleteConfigHolder, MatAutocompleteFieldAddOptions, MatAutocompleteFieldConfig } from '../../shared/material/autocomplete/material.autocomplete';
|
|
@@ -15,6 +15,7 @@ export declare abstract class AppForm<T> implements IAppForm, OnInit, OnDestroy,
|
|
|
15
15
|
protected settings: LocalSettingsService;
|
|
16
16
|
protected errorTranslator: FormErrorTranslator;
|
|
17
17
|
protected _enable: boolean;
|
|
18
|
+
protected _$ready: BehaviorSubject<boolean>;
|
|
18
19
|
protected _loading: boolean;
|
|
19
20
|
protected i18nFieldPrefix: string;
|
|
20
21
|
private _subscription;
|
|
@@ -53,7 +54,7 @@ export declare abstract class AppForm<T> implements IAppForm, OnInit, OnDestroy,
|
|
|
53
54
|
setValue(data: T, opts?: {
|
|
54
55
|
emitEvent?: boolean;
|
|
55
56
|
onlySelf?: boolean;
|
|
56
|
-
}): void;
|
|
57
|
+
}): Promise<void> | void;
|
|
57
58
|
reset(data?: T, opts?: {
|
|
58
59
|
emitEvent?: boolean;
|
|
59
60
|
onlySelf?: boolean;
|
|
@@ -89,6 +90,15 @@ export declare abstract class AppForm<T> implements IAppForm, OnInit, OnDestroy,
|
|
|
89
90
|
onlySelf?: boolean;
|
|
90
91
|
emitEvent?: boolean;
|
|
91
92
|
}): void;
|
|
93
|
+
markAsReady(opts?: {
|
|
94
|
+
onlySelf?: boolean;
|
|
95
|
+
emitEvent?: boolean;
|
|
96
|
+
}): void;
|
|
97
|
+
/**
|
|
98
|
+
* Wait form is ready
|
|
99
|
+
* @param opts
|
|
100
|
+
*/
|
|
101
|
+
ready(opts?: WaitForOptions): Promise<boolean>;
|
|
92
102
|
/**
|
|
93
103
|
* Wait form is idle (not loading)
|
|
94
104
|
* @param opts
|
|
@@ -3,6 +3,9 @@ import { Entity } from '../services/model/entity.model';
|
|
|
3
3
|
import { filterNumberInput, selectInputContent } from '../../shared/inputs';
|
|
4
4
|
import { WaitForOptions } from '../../shared/observables';
|
|
5
5
|
export declare type IAppFormGetter = () => IAppForm;
|
|
6
|
+
export declare interface OnReady {
|
|
7
|
+
ngOnReady(): any;
|
|
8
|
+
}
|
|
6
9
|
export interface IAppForm {
|
|
7
10
|
invalid: boolean;
|
|
8
11
|
valid: boolean;
|
|
@@ -13,6 +16,7 @@ export interface IAppForm {
|
|
|
13
16
|
disabled: boolean;
|
|
14
17
|
empty?: boolean;
|
|
15
18
|
loading?: boolean;
|
|
19
|
+
ready(): Promise<any>;
|
|
16
20
|
disable(opts?: {
|
|
17
21
|
onlySelf?: boolean;
|
|
18
22
|
emitEvent?: boolean;
|
|
@@ -48,6 +52,10 @@ export interface IAppForm {
|
|
|
48
52
|
onlySelf?: boolean;
|
|
49
53
|
emitEvent?: boolean;
|
|
50
54
|
}): any;
|
|
55
|
+
markAsReady(opts?: {
|
|
56
|
+
onlySelf?: boolean;
|
|
57
|
+
emitEvent?: boolean;
|
|
58
|
+
}): any;
|
|
51
59
|
}
|
|
52
60
|
/**
|
|
53
61
|
* A form that do nothing
|
|
@@ -97,6 +105,12 @@ export declare class AppNullForm implements IAppForm {
|
|
|
97
105
|
onlySelf?: boolean;
|
|
98
106
|
emitEvent?: boolean;
|
|
99
107
|
}): void;
|
|
108
|
+
markAsReady(opts?: {
|
|
109
|
+
onlySelf?: boolean;
|
|
110
|
+
emitEvent?: boolean;
|
|
111
|
+
}): void;
|
|
112
|
+
waitIdle(opts?: WaitForOptions): Promise<any>;
|
|
113
|
+
ready(): Promise<any>;
|
|
100
114
|
}
|
|
101
115
|
export declare class AppFormProvider<F extends IAppForm = IAppForm> implements IAppForm {
|
|
102
116
|
private getterFn;
|
|
@@ -113,6 +127,7 @@ export declare class AppFormProvider<F extends IAppForm = IAppForm> implements I
|
|
|
113
127
|
get empty(): boolean;
|
|
114
128
|
get pending(): boolean;
|
|
115
129
|
get loading(): boolean;
|
|
130
|
+
ready(): Promise<any>;
|
|
116
131
|
disable(opts?: {
|
|
117
132
|
onlySelf?: boolean;
|
|
118
133
|
emitEvent?: boolean;
|
|
@@ -148,6 +163,10 @@ export declare class AppFormProvider<F extends IAppForm = IAppForm> implements I
|
|
|
148
163
|
onlySelf?: boolean;
|
|
149
164
|
emitEvent?: boolean;
|
|
150
165
|
}): any;
|
|
166
|
+
markAsReady(opts?: {
|
|
167
|
+
onlySelf?: boolean;
|
|
168
|
+
emitEvent?: boolean;
|
|
169
|
+
}): any;
|
|
151
170
|
}
|
|
152
171
|
export declare class AppFormUtils {
|
|
153
172
|
static copyEntity2Form: typeof copyEntity2Form;
|
|
@@ -71,6 +71,7 @@ export declare abstract class AppTable<T extends IEntity<T, ID>, F = any, ID = n
|
|
|
71
71
|
totalRowCount: number | null;
|
|
72
72
|
visibleRowCount: number;
|
|
73
73
|
errorTranslatorOptions: FormErrorTranslatorOptions;
|
|
74
|
+
readySubject: BehaviorSubject<boolean>;
|
|
74
75
|
loadingSubject: BehaviorSubject<boolean>;
|
|
75
76
|
savingSubject: BehaviorSubject<boolean>;
|
|
76
77
|
dirtySubject: BehaviorSubject<boolean>;
|
|
@@ -199,6 +200,9 @@ export declare abstract class AppTable<T extends IEntity<T, ID>, F = any, ID = n
|
|
|
199
200
|
onlySelf?: boolean;
|
|
200
201
|
emitEVent?: boolean;
|
|
201
202
|
}): void;
|
|
203
|
+
markAsReady(opts?: {
|
|
204
|
+
emitEvent?: boolean;
|
|
205
|
+
}): void;
|
|
202
206
|
get loading(): boolean;
|
|
203
207
|
get loaded(): boolean;
|
|
204
208
|
enableSort(): void;
|
|
@@ -286,6 +290,7 @@ export declare abstract class AppTable<T extends IEntity<T, ID>, F = any, ID = n
|
|
|
286
290
|
selectRowByData(data: T): Promise<boolean>;
|
|
287
291
|
clickRow(event: UIEvent | undefined, row: TableElement<T>): boolean;
|
|
288
292
|
moveRow(id: number, direction: number): void;
|
|
293
|
+
ready(): Promise<any>;
|
|
289
294
|
waitIdle(): Promise<any>;
|
|
290
295
|
openSelectColumnsModal(event?: Event): Promise<any>;
|
|
291
296
|
trackByFn(index: number, row: TableElement<T>): number;
|