@sumaris-net/ngx-components 18.2.5 → 18.2.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/doc/changelog.md +10 -0
- package/esm2022/public_api.mjs +2 -1
- package/esm2022/src/app/admin/services/person.service.mjs +11 -8
- package/esm2022/src/app/core/form/properties/properties.form.mjs +1 -1
- package/esm2022/src/app/core/services/base-entity-service.class.mjs +12 -12
- package/esm2022/src/app/core/table/testing/table.testing.mjs +1 -1
- package/esm2022/src/app/core/table/testing/table2.testing.mjs +1 -1
- package/esm2022/src/app/shared/form/field.component.mjs +1 -1
- package/esm2022/src/app/shared/functions.mjs +19 -13
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +25 -9
- package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +4 -4
- package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +1 -1
- package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +20 -18
- package/esm2022/src/app/shared/regexps.mjs +96 -0
- package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +4 -3
- package/esm2022/src/app/shared/services.mjs +16 -13
- package/fesm2022/sumaris-net.ngx-components.mjs +202 -78
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +1 -0
- package/src/app/core/services/base-entity-service.class.d.ts +8 -2
- package/src/app/shared/functions.d.ts +7 -4
- package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +3 -1
- package/src/app/shared/regexps.d.ts +32 -0
- package/src/assets/manifest.json +1 -1
- package/src/theme/_material.scss +11 -1
package/package.json
CHANGED
package/public_api.d.ts
CHANGED
|
@@ -108,6 +108,7 @@ export * from './src/app/shared/debug/debug-service.class';
|
|
|
108
108
|
export * from './src/app/shared/types';
|
|
109
109
|
export * from './src/app/shared/dates';
|
|
110
110
|
export * from './src/app/shared/functions';
|
|
111
|
+
export * from './src/app/shared/regexps';
|
|
111
112
|
export * from './src/app/shared/services';
|
|
112
113
|
export * from './src/app/shared/forms';
|
|
113
114
|
export * from './src/app/shared/observables';
|
|
@@ -101,7 +101,10 @@ export declare abstract class BaseEntityService<T extends Entity<T, ID>, F exten
|
|
|
101
101
|
delete(entity: T, opts?: EntitySaveOptions | any): Promise<any>;
|
|
102
102
|
listenChanges(id: ID, opts?: EntityServiceListenChangesOptions<T>): Observable<T>;
|
|
103
103
|
copyIdAndUpdateDate(source: T, target: T): void;
|
|
104
|
-
fromObject(source: any,
|
|
104
|
+
fromObject(source: any, opts?: {
|
|
105
|
+
toEntity?: boolean | ((source: any, opts?: any) => T);
|
|
106
|
+
[key: string]: any;
|
|
107
|
+
}): T;
|
|
105
108
|
asFilter(source: any): F;
|
|
106
109
|
equals(d1: T, d2: T): boolean;
|
|
107
110
|
isNew(data: T): boolean;
|
|
@@ -116,7 +119,10 @@ export declare abstract class BaseEntityService<T extends Entity<T, ID>, F exten
|
|
|
116
119
|
isNewFn(data: T): boolean;
|
|
117
120
|
protected ngOnStart(): Promise<void>;
|
|
118
121
|
protected fillDefaultProperties(source: T): void;
|
|
119
|
-
protected fromObjects(sources: any[],
|
|
122
|
+
protected fromObjects(sources: any[], opts?: {
|
|
123
|
+
toEntity?: boolean | ((source: any, opts?: any) => T);
|
|
124
|
+
[key: string]: any;
|
|
125
|
+
}): T[];
|
|
120
126
|
protected asObject(source: T, opts?: EntityAsObjectOptions): any;
|
|
121
127
|
protected getRefetchQueriesForMutation(opts?: EntitySaveOptions): ((result: FetchResult<{
|
|
122
128
|
data: any;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { KeysEnum, KeyValueType } from './types';
|
|
2
|
+
import { RegExpUtils } from './regexps';
|
|
2
3
|
export declare function isNil<T>(obj: T | null | undefined): boolean;
|
|
3
4
|
export declare function isNilOrBlank<T>(obj: T | null | undefined): boolean;
|
|
4
5
|
export declare function isNotNil<T>(obj: T | null | undefined): boolean;
|
|
@@ -36,7 +37,10 @@ export declare function toInt(obj: string | null | undefined, defaultValue?: num
|
|
|
36
37
|
export declare function toNotNil<T = any>(obj: T, defaultValue?: T): any | null;
|
|
37
38
|
export declare function removeDuplicatesFromArray<T>(obj: T[] | null | undefined, property?: string): T[] | null | undefined;
|
|
38
39
|
export declare function startsWithUpperCase(input: string, search: string): boolean;
|
|
39
|
-
|
|
40
|
+
/**
|
|
41
|
+
* @deprecated Use Regexps.matchUpperCase instead
|
|
42
|
+
*/
|
|
43
|
+
export declare const matchUpperCase: typeof RegExpUtils.matchUpperCase;
|
|
40
44
|
/**
|
|
41
45
|
* Remove trailing slash if any. Examples :
|
|
42
46
|
* - '/test/' -> '/test'
|
|
@@ -59,9 +63,8 @@ export declare function changeCaseToUnderscore(value: string): string;
|
|
|
59
63
|
*/
|
|
60
64
|
export declare function underscoreToChangeCase(value: string): string;
|
|
61
65
|
export declare function removeDiacritics(text: string): string;
|
|
62
|
-
export declare function suggestFromStringArray(values: string[],
|
|
63
|
-
|
|
64
|
-
searchAttributes?: string[];
|
|
66
|
+
export declare function suggestFromStringArray(values: string[], searchText: any, opts?: {
|
|
67
|
+
anySearch?: boolean;
|
|
65
68
|
}): string[];
|
|
66
69
|
export declare function joinPropertiesPath<T = any>(obj: T, properties: string[], separator?: string): string | undefined;
|
|
67
70
|
export declare function joinProperties<T = any, K extends keyof T = any>(obj: T, keys: K[], separator?: string): string | undefined;
|
|
@@ -83,6 +83,7 @@ export declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDe
|
|
|
83
83
|
trimSearchText: boolean;
|
|
84
84
|
splitSearchText: boolean;
|
|
85
85
|
selectInputContentOnFocus: boolean;
|
|
86
|
+
selectInputContentOnFocusDelay: number;
|
|
86
87
|
/**
|
|
87
88
|
* @deprecated Use panelClass instead
|
|
88
89
|
*/
|
|
@@ -159,7 +160,7 @@ export declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDe
|
|
|
159
160
|
*/
|
|
160
161
|
private _fixSearchbarOverlay;
|
|
161
162
|
static ɵfac: i0.ɵɵFactoryDeclaration<MatAutocompleteField, [null, null, null, null, null, { optional: true; }]>;
|
|
162
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MatAutocompleteField, "mat-autocomplete-field", never, { "equals": { "alias": "equals"; "required": false; }; "logPrefix": { "alias": "logPrefix"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "label": { "alias": "label"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "suggestFn": { "alias": "suggestFn"; "required": false; }; "required": { "alias": "required"; "required": false; }; "hideRequiredMarker": { "alias": "hideRequiredMarker"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "debounceTime": { "alias": "debounceTime"; "required": false; }; "displaySeparator": { "alias": "displaySeparator"; "required": false; }; "displayWith": { "alias": "displayWith"; "required": false; }; "displayAttributes": { "alias": "displayAttributes"; "required": false; }; "displayColumnSizes": { "alias": "displayColumnSizes"; "required": false; }; "displayColumnNames": { "alias": "displayColumnNames"; "required": false; }; "highlightAccent": { "alias": "highlightAccent"; "required": false; }; "showAllOnFocus": { "alias": "showAllOnFocus"; "required": false; }; "showPanelOnFocus": { "alias": "showPanelOnFocus"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "config": { "alias": "config"; "required": false; }; "i18nPrefix": { "alias": "i18nPrefix"; "required": false; }; "noResultMessage": { "alias": "noResultMessage"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "disableRipple": { "alias": "disableRipple"; "required": false; }; "matAutocompletePosition": { "alias": "matAutocompletePosition"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "fetchMoreThreshold": { "alias": "fetchMoreThreshold"; "required": false; }; "suggestLengthThreshold": { "alias": "suggestLengthThreshold"; "required": false; }; "showLoadingSpinner": { "alias": "showLoadingSpinner"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "showSearchBar": { "alias": "showSearchBar"; "required": false; }; "stickySearchBar": { "alias": "stickySearchBar"; "required": false; }; "applyImplicitValue": { "alias": "applyImplicitValue"; "required": false; }; "dropButtonTitle": { "alias": "dropButtonTitle"; "required": false; }; "clearButtonTitle": { "alias": "clearButtonTitle"; "required": false; }; "trimSearchText": { "alias": "trimSearchText"; "required": false; }; "splitSearchText": { "alias": "splitSearchText"; "required": false; }; "selectInputContentOnFocus": { "alias": "selectInputContentOnFocus"; "required": false; }; "classList": { "alias": "class"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "clicked": "click"; "blurred": "blur"; "focused": "focus"; "dropButtonClick": "dropButtonClick"; "keydownEscape": "keydown.escape"; "keyupEnter": "keyup.enter"; "selectionChange": "selectionChange"; }, never, ["[matAfter]", "[matPrefix]", "[matSuffix]", "mat-error,[matError]", "mat-hint:not([align='end']),[matHint]", "mat-hint[align='end']"], false, never>;
|
|
163
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MatAutocompleteField, "mat-autocomplete-field", never, { "equals": { "alias": "equals"; "required": false; }; "logPrefix": { "alias": "logPrefix"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "label": { "alias": "label"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "suggestFn": { "alias": "suggestFn"; "required": false; }; "required": { "alias": "required"; "required": false; }; "hideRequiredMarker": { "alias": "hideRequiredMarker"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "debounceTime": { "alias": "debounceTime"; "required": false; }; "displaySeparator": { "alias": "displaySeparator"; "required": false; }; "displayWith": { "alias": "displayWith"; "required": false; }; "displayAttributes": { "alias": "displayAttributes"; "required": false; }; "displayColumnSizes": { "alias": "displayColumnSizes"; "required": false; }; "displayColumnNames": { "alias": "displayColumnNames"; "required": false; }; "highlightAccent": { "alias": "highlightAccent"; "required": false; }; "showAllOnFocus": { "alias": "showAllOnFocus"; "required": false; }; "showPanelOnFocus": { "alias": "showPanelOnFocus"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "config": { "alias": "config"; "required": false; }; "i18nPrefix": { "alias": "i18nPrefix"; "required": false; }; "noResultMessage": { "alias": "noResultMessage"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "disableRipple": { "alias": "disableRipple"; "required": false; }; "matAutocompletePosition": { "alias": "matAutocompletePosition"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "fetchMoreThreshold": { "alias": "fetchMoreThreshold"; "required": false; }; "suggestLengthThreshold": { "alias": "suggestLengthThreshold"; "required": false; }; "showLoadingSpinner": { "alias": "showLoadingSpinner"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "showSearchBar": { "alias": "showSearchBar"; "required": false; }; "stickySearchBar": { "alias": "stickySearchBar"; "required": false; }; "applyImplicitValue": { "alias": "applyImplicitValue"; "required": false; }; "dropButtonTitle": { "alias": "dropButtonTitle"; "required": false; }; "clearButtonTitle": { "alias": "clearButtonTitle"; "required": false; }; "trimSearchText": { "alias": "trimSearchText"; "required": false; }; "splitSearchText": { "alias": "splitSearchText"; "required": false; }; "selectInputContentOnFocus": { "alias": "selectInputContentOnFocus"; "required": false; }; "selectInputContentOnFocusDelay": { "alias": "selectInputContentOnFocusDelay"; "required": false; }; "classList": { "alias": "class"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "clicked": "click"; "blurred": "blur"; "focused": "focus"; "dropButtonClick": "dropButtonClick"; "keydownEscape": "keydown.escape"; "keyupEnter": "keyup.enter"; "selectionChange": "selectionChange"; }, never, ["[matAfter]", "[matPrefix]", "[matSuffix]", "mat-error,[matError]", "mat-hint:not([align='end']),[matHint]", "mat-hint[align='end']"], false, never>;
|
|
163
164
|
static ngAcceptInputType_required: unknown;
|
|
164
165
|
static ngAcceptInputType_hideRequiredMarker: unknown;
|
|
165
166
|
static ngAcceptInputType_mobile: unknown;
|
|
@@ -179,5 +180,6 @@ export declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDe
|
|
|
179
180
|
static ngAcceptInputType_trimSearchText: unknown;
|
|
180
181
|
static ngAcceptInputType_splitSearchText: unknown;
|
|
181
182
|
static ngAcceptInputType_selectInputContentOnFocus: unknown;
|
|
183
|
+
static ngAcceptInputType_selectInputContentOnFocusDelay: unknown;
|
|
182
184
|
static ngAcceptInputType_readonly: unknown;
|
|
183
185
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export declare abstract class RegExpUtils {
|
|
2
|
+
private static _cachedSearchRegexps;
|
|
3
|
+
private static _cachedSearchTexts;
|
|
4
|
+
private static MAX_CACHE_SIZE;
|
|
5
|
+
private static SPECIAL_CHARACTERS_REGEXP;
|
|
6
|
+
private static SPECIAL_CHARACTERS_REPLACEMENT_MAP;
|
|
7
|
+
/**
|
|
8
|
+
* Cleans the provided search text by trimming whitespace and removing or condensing
|
|
9
|
+
* wildcard characters based on the specified options.
|
|
10
|
+
* (e.g. 'a**' becomes 'a', '*' becomes '', etc.)
|
|
11
|
+
*
|
|
12
|
+
* @param {string} searchText - The search text to be cleaned.
|
|
13
|
+
* @param {Object} [opts] - Optional settings for cleaning the search text.
|
|
14
|
+
* @param {boolean} [opts.anySearch] - If true, the search text is cleaned for any match. If false, search as a prefix
|
|
15
|
+
* @return {string} - The cleaned search text.
|
|
16
|
+
*/
|
|
17
|
+
static cleanSearchText(searchText: string, opts?: {
|
|
18
|
+
trim?: boolean;
|
|
19
|
+
}): string;
|
|
20
|
+
/**
|
|
21
|
+
* Compiles a regular expression from the provided search text, using a static cache to store
|
|
22
|
+
* previously compiled regular expressions for faster retrieval.
|
|
23
|
+
*
|
|
24
|
+
* @param {string} searchText - The text to compile into a regular expression.
|
|
25
|
+
* @param flags
|
|
26
|
+
* @return {RegExp} - The compiled regular expression.
|
|
27
|
+
*/
|
|
28
|
+
static compileSearchRegexp(searchText: string, flags?: string): RegExp;
|
|
29
|
+
static match(input: string, regexp: string | RegExp): boolean;
|
|
30
|
+
static matchUpperCase(input: string, regexp: string | RegExp): boolean;
|
|
31
|
+
static hasWildcardCharacter(input: string): boolean;
|
|
32
|
+
}
|
package/src/assets/manifest.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "ngx-sumaris-components",
|
|
3
3
|
"short_name": "ngx-sumaris-components",
|
|
4
4
|
"manifest_version": 1,
|
|
5
|
-
"version": "18.2.
|
|
5
|
+
"version": "18.2.6",
|
|
6
6
|
"default_locale": "fr",
|
|
7
7
|
"description": "Angular components for building beautiful and responsive Apps",
|
|
8
8
|
"icons": [{
|
package/src/theme/_material.scss
CHANGED
|
@@ -30,10 +30,20 @@
|
|
|
30
30
|
.mat-mdc-tab-header {
|
|
31
31
|
--mat-tab-header-label-text-tracking: 0.0178571429em;
|
|
32
32
|
}
|
|
33
|
+
|
|
34
|
+
// Drop down arrow of the mat-select (e.g. used in autocomplete - mobile)
|
|
33
35
|
.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper {
|
|
34
|
-
|
|
36
|
+
// FIXME: should be removed - not need anymore to fix arrow position ?
|
|
37
|
+
//transform: translateY(0px) !important;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Allow to hidden the down arrow of the mat-select (e.g. used in autocomplete - desktop + multiple )
|
|
41
|
+
.mat-mdc-select.mat-mdc-select-arrow-hidden .mat-mdc-select-arrow-wrapper {
|
|
42
|
+
display: none;
|
|
43
|
+
visibility: hidden;
|
|
35
44
|
}
|
|
36
45
|
|
|
46
|
+
|
|
37
47
|
// Icon, Button
|
|
38
48
|
.mat-button.mat-primary,
|
|
39
49
|
.mat-icon.mat-primary,
|