@ecodev/natural 62.1.2 → 63.0.0
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/fesm2022/ecodev-natural-vanilla.mjs +1193 -0
- package/fesm2022/ecodev-natural-vanilla.mjs.map +1 -0
- package/fesm2022/ecodev-natural.mjs +436 -425
- package/fesm2022/ecodev-natural.mjs.map +1 -1
- package/lib/classes/network-activity.service.d.ts +54 -0
- package/lib/classes/validators.d.ts +1 -1
- package/lib/modules/columns-picker/columns-picker.component.d.ts +2 -2
- package/lib/modules/common/services/seo.provider.d.ts +2 -2
- package/lib/modules/dropdown-components/type-select/type-select.component.d.ts +1 -1
- package/lib/modules/file/abstract-file.d.ts +6 -3
- package/lib/modules/file/component/file.component.d.ts +2 -2
- package/lib/modules/file/file-drop.directive.d.ts +2 -3
- package/lib/modules/fixed-button-detail/fixed-button-detail.component.d.ts +2 -3
- package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.d.ts +3 -3
- package/lib/modules/icon/icon.module.d.ts +2 -2
- package/lib/modules/panels/panels.service.d.ts +1 -2
- package/lib/modules/relations/relations.component.d.ts +3 -3
- package/lib/modules/search/dropdown-container/dropdown-container.component.d.ts +2 -3
- package/lib/modules/search/group/group.component.d.ts +2 -3
- package/lib/modules/search/input/input.component.d.ts +5 -5
- package/lib/modules/search/search/search.component.d.ts +2 -2
- package/lib/modules/select/abstract-select.component.d.ts +3 -3
- package/lib/modules/select/select/select.component.d.ts +1 -1
- package/lib/modules/sidenav/sidenav-container/sidenav-container.component.d.ts +1 -1
- package/lib/modules/table-button/table-button.component.d.ts +4 -2
- package/package.json +16 -14
- package/public-api.d.ts +1 -0
- package/src/lib/_natural.theme.scss +1 -2
- package/vanilla/index.d.ts +5 -0
- package/vanilla/package.json +3 -0
- package/vanilla/public-api.d.ts +11 -0
- package/vanilla/src/lib/classes/crypto.d.ts +8 -0
- package/vanilla/src/lib/classes/data-source.d.ts +32 -0
- package/vanilla/src/lib/classes/query-variable-manager-utils.d.ts +2 -0
- package/vanilla/src/lib/classes/query-variable-manager.d.ts +91 -0
- package/vanilla/src/lib/classes/signing.d.ts +7 -0
- package/vanilla/src/lib/classes/utility.d.ts +77 -0
- package/vanilla/src/lib/modules/search/classes/graphql-doctrine.types.d.ts +83 -0
- package/vanilla/src/lib/modules/search/classes/utils.d.ts +17 -0
- package/vanilla/src/lib/modules/search/types/dropdown-component.d.ts +20 -0
- package/vanilla/src/lib/modules/search/types/facet.d.ts +75 -0
- package/vanilla/src/lib/modules/search/types/values.d.ts +32 -0
- package/vanilla/src/lib/services/abstract-model.service.d.ts +244 -0
- package/vanilla/src/lib/services/debounce.service.d.ts +52 -0
- package/vanilla/src/lib/types/types.d.ts +100 -0
- package/esm2022/ecodev-natural.mjs +0 -5
- package/esm2022/lib/classes/abstract-detail.mjs +0 -229
- package/esm2022/lib/classes/abstract-editable-list.mjs +0 -99
- package/esm2022/lib/classes/abstract-list.mjs +0 -461
- package/esm2022/lib/classes/abstract-navigable-list.mjs +0 -133
- package/esm2022/lib/classes/apollo-utils.mjs +0 -59
- package/esm2022/lib/classes/crypto.mjs +0 -23
- package/esm2022/lib/classes/cumulative-changes.mjs +0 -50
- package/esm2022/lib/classes/data-source.mjs +0 -71
- package/esm2022/lib/classes/providers.mjs +0 -13
- package/esm2022/lib/classes/query-variable-manager-utils.mjs +0 -14
- package/esm2022/lib/classes/query-variable-manager.mjs +0 -172
- package/esm2022/lib/classes/rxjs.mjs +0 -54
- package/esm2022/lib/classes/signing.mjs +0 -38
- package/esm2022/lib/classes/tld.mjs +0 -1476
- package/esm2022/lib/classes/utility.mjs +0 -234
- package/esm2022/lib/classes/validators.mjs +0 -179
- package/esm2022/lib/directives/http-prefix.directive.mjs +0 -47
- package/esm2022/lib/modules/alert/alert.service.mjs +0 -53
- package/esm2022/lib/modules/alert/confirm.component.mjs +0 -16
- package/esm2022/lib/modules/alert/public-api.mjs +0 -6
- package/esm2022/lib/modules/avatar/component/avatar.component.mjs +0 -203
- package/esm2022/lib/modules/avatar/public-api.mjs +0 -6
- package/esm2022/lib/modules/avatar/service/avatar.service.mjs +0 -63
- package/esm2022/lib/modules/avatar/sources/gravatar.mjs +0 -29
- package/esm2022/lib/modules/avatar/sources/image.mjs +0 -13
- package/esm2022/lib/modules/avatar/sources/initials.mjs +0 -39
- package/esm2022/lib/modules/avatar/sources/source.mjs +0 -16
- package/esm2022/lib/modules/columns-picker/columns-picker.component.mjs +0 -145
- package/esm2022/lib/modules/columns-picker/public-api.mjs +0 -5
- package/esm2022/lib/modules/columns-picker/types.mjs +0 -2
- package/esm2022/lib/modules/common/directives/background-density.directive.mjs +0 -63
- package/esm2022/lib/modules/common/directives/linkable-tab.directive.mjs +0 -93
- package/esm2022/lib/modules/common/directives/src-density.directive.mjs +0 -72
- package/esm2022/lib/modules/common/pipes/capitalize.pipe.mjs +0 -24
- package/esm2022/lib/modules/common/pipes/ellipsis.pipe.mjs +0 -17
- package/esm2022/lib/modules/common/pipes/enum.pipe.mjs +0 -24
- package/esm2022/lib/modules/common/pipes/time-ago.pipe.mjs +0 -140
- package/esm2022/lib/modules/common/public-api.mjs +0 -14
- package/esm2022/lib/modules/common/services/memory-storage.mjs +0 -110
- package/esm2022/lib/modules/common/services/seo.provider.mjs +0 -23
- package/esm2022/lib/modules/common/services/seo.service.mjs +0 -235
- package/esm2022/lib/modules/detail-header/detail-header.component.mjs +0 -84
- package/esm2022/lib/modules/detail-header/public-api.mjs +0 -5
- package/esm2022/lib/modules/dialog-trigger/dialog-trigger.component.mjs +0 -72
- package/esm2022/lib/modules/dialog-trigger/public-api.mjs +0 -5
- package/esm2022/lib/modules/dropdown-components/abstract-association-select-component.directive.mjs +0 -100
- package/esm2022/lib/modules/dropdown-components/public-api.mjs +0 -14
- package/esm2022/lib/modules/dropdown-components/type-boolean/type-boolean.component.mjs +0 -39
- package/esm2022/lib/modules/dropdown-components/type-date/type-date.component.mjs +0 -173
- package/esm2022/lib/modules/dropdown-components/type-date-range/type-date-range.component.mjs +0 -134
- package/esm2022/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.mjs +0 -80
- package/esm2022/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.mjs +0 -48
- package/esm2022/lib/modules/dropdown-components/type-number/type-number.component.mjs +0 -110
- package/esm2022/lib/modules/dropdown-components/type-options/type-options.component.mjs +0 -64
- package/esm2022/lib/modules/dropdown-components/type-select/type-select.component.mjs +0 -175
- package/esm2022/lib/modules/dropdown-components/type-text/type-text.component.mjs +0 -62
- package/esm2022/lib/modules/dropdown-components/types.mjs +0 -41
- package/esm2022/lib/modules/dropdown-components/utils.mjs +0 -35
- package/esm2022/lib/modules/file/abstract-file.mjs +0 -230
- package/esm2022/lib/modules/file/component/file.component.mjs +0 -172
- package/esm2022/lib/modules/file/file-drop.directive.mjs +0 -111
- package/esm2022/lib/modules/file/file-select.directive.mjs +0 -26
- package/esm2022/lib/modules/file/file.service.mjs +0 -43
- package/esm2022/lib/modules/file/public-api.mjs +0 -9
- package/esm2022/lib/modules/file/types.mjs +0 -2
- package/esm2022/lib/modules/file/utils.mjs +0 -129
- package/esm2022/lib/modules/fixed-button/fixed-button.component.mjs +0 -30
- package/esm2022/lib/modules/fixed-button/public-api.mjs +0 -5
- package/esm2022/lib/modules/fixed-button-detail/fixed-button-detail.component.mjs +0 -56
- package/esm2022/lib/modules/fixed-button-detail/public-api.mjs +0 -5
- package/esm2022/lib/modules/hierarchic-selector/classes/flat-node.mjs +0 -18
- package/esm2022/lib/modules/hierarchic-selector/classes/hierarchic-configuration.mjs +0 -2
- package/esm2022/lib/modules/hierarchic-selector/classes/hierarchic-filters-configuration.mjs +0 -2
- package/esm2022/lib/modules/hierarchic-selector/classes/model-node.mjs +0 -14
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.mjs +0 -398
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.mjs +0 -243
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.mjs +0 -38
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.mjs +0 -22
- package/esm2022/lib/modules/hierarchic-selector/public-api.mjs +0 -10
- package/esm2022/lib/modules/icon/icon.directive.mjs +0 -96
- package/esm2022/lib/modules/icon/icon.module.mjs +0 -33
- package/esm2022/lib/modules/icon/public-api.mjs +0 -6
- package/esm2022/lib/modules/logger/error-handler.mjs +0 -87
- package/esm2022/lib/modules/logger/error.module.mjs +0 -22
- package/esm2022/lib/modules/logger/public-api.mjs +0 -6
- package/esm2022/lib/modules/matomo/matomo.service.mjs +0 -96
- package/esm2022/lib/modules/matomo/public-api.mjs +0 -5
- package/esm2022/lib/modules/panels/abstract-panel.mjs +0 -76
- package/esm2022/lib/modules/panels/fallback-if-no-opened-panels.urlmatcher.mjs +0 -12
- package/esm2022/lib/modules/panels/panels.component.mjs +0 -27
- package/esm2022/lib/modules/panels/panels.module.mjs +0 -10
- package/esm2022/lib/modules/panels/panels.service.mjs +0 -329
- package/esm2022/lib/modules/panels/panels.urlmatcher.mjs +0 -75
- package/esm2022/lib/modules/panels/public-api.mjs +0 -11
- package/esm2022/lib/modules/panels/types.mjs +0 -3
- package/esm2022/lib/modules/relations/public-api.mjs +0 -5
- package/esm2022/lib/modules/relations/relations.component.mjs +0 -254
- package/esm2022/lib/modules/search/classes/graphql-doctrine.mjs +0 -111
- package/esm2022/lib/modules/search/classes/graphql-doctrine.types.mjs +0 -14
- package/esm2022/lib/modules/search/classes/transformers.mjs +0 -142
- package/esm2022/lib/modules/search/classes/url.mjs +0 -53
- package/esm2022/lib/modules/search/classes/utils.mjs +0 -25
- package/esm2022/lib/modules/search/dropdown-container/dropdown-container-animations.mjs +0 -44
- package/esm2022/lib/modules/search/dropdown-container/dropdown-container.component.mjs +0 -87
- package/esm2022/lib/modules/search/dropdown-container/dropdown-ref.mjs +0 -24
- package/esm2022/lib/modules/search/dropdown-container/dropdown.service.mjs +0 -90
- package/esm2022/lib/modules/search/facet-selector/facet-selector.component.mjs +0 -45
- package/esm2022/lib/modules/search/group/group.component.mjs +0 -53
- package/esm2022/lib/modules/search/input/input.component.mjs +0 -365
- package/esm2022/lib/modules/search/public-api.mjs +0 -7
- package/esm2022/lib/modules/search/search/search.component.mjs +0 -102
- package/esm2022/lib/modules/search/types/dropdown-component.mjs +0 -2
- package/esm2022/lib/modules/search/types/facet.mjs +0 -2
- package/esm2022/lib/modules/search/types/values.mjs +0 -2
- package/esm2022/lib/modules/select/abstract-select.component.mjs +0 -232
- package/esm2022/lib/modules/select/public-api.mjs +0 -7
- package/esm2022/lib/modules/select/select/select.component.mjs +0 -310
- package/esm2022/lib/modules/select/select-enum/select-enum.component.mjs +0 -57
- package/esm2022/lib/modules/select/select-hierarchic/select-hierarchic.component.mjs +0 -155
- package/esm2022/lib/modules/sidenav/public-api.mjs +0 -9
- package/esm2022/lib/modules/sidenav/sidenav/sidenav.component.mjs +0 -15
- package/esm2022/lib/modules/sidenav/sidenav-container/sidenav-container.component.mjs +0 -90
- package/esm2022/lib/modules/sidenav/sidenav-content/sidenav-content.component.mjs +0 -11
- package/esm2022/lib/modules/sidenav/sidenav-stack.service.mjs +0 -50
- package/esm2022/lib/modules/sidenav/sidenav.service.mjs +0 -196
- package/esm2022/lib/modules/stamp/public-api.mjs +0 -5
- package/esm2022/lib/modules/stamp/stamp.component.mjs +0 -23
- package/esm2022/lib/modules/table-button/public-api.mjs +0 -5
- package/esm2022/lib/modules/table-button/table-button.component.mjs +0 -78
- package/esm2022/lib/services/abstract-model.service.mjs +0 -526
- package/esm2022/lib/services/debounce.service.mjs +0 -149
- package/esm2022/lib/services/enum.service.mjs +0 -64
- package/esm2022/lib/services/link-mutation.service.mjs +0 -154
- package/esm2022/lib/services/persistence.service.mjs +0 -115
- package/esm2022/lib/services/swiss-parsing-date-adapter.service.mjs +0 -63
- package/esm2022/lib/types/types.mjs +0 -2
- package/esm2022/public-api.mjs +0 -46
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { deepClone } from './utils';
|
|
2
|
-
/**
|
|
3
|
-
* Returns a string representation of the selection that can be used in URL.
|
|
4
|
-
*
|
|
5
|
-
* The string can be parsed back with `fromUrl()`
|
|
6
|
-
*/
|
|
7
|
-
export function toUrl(selections) {
|
|
8
|
-
if (!selections?.length) {
|
|
9
|
-
return null;
|
|
10
|
-
}
|
|
11
|
-
const s = deepClone(selections);
|
|
12
|
-
for (const a of s) {
|
|
13
|
-
for (const b of a) {
|
|
14
|
-
b.f = b.field;
|
|
15
|
-
b.c = b.condition;
|
|
16
|
-
delete b.field;
|
|
17
|
-
delete b.condition;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
const result = JSON.stringify(s);
|
|
21
|
-
return result === '[[]]' ? null : result;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Parse a string, probably coming from URL, into a selection
|
|
25
|
-
*/
|
|
26
|
-
export function fromUrl(selections) {
|
|
27
|
-
if (!selections?.length) {
|
|
28
|
-
return [[]];
|
|
29
|
-
}
|
|
30
|
-
const result = JSON.parse(selections);
|
|
31
|
-
for (const a of result) {
|
|
32
|
-
for (const b of a) {
|
|
33
|
-
b.field = b.f;
|
|
34
|
-
b.condition = b.c;
|
|
35
|
-
delete b.f;
|
|
36
|
-
delete b.c;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
if (result.length === 0) {
|
|
40
|
-
result.push([]);
|
|
41
|
-
}
|
|
42
|
-
return result;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Transform a search selection to navigation parameters to be used in URL.
|
|
46
|
-
*
|
|
47
|
-
* This is typically useful to craft URL to pre-filtered lists.
|
|
48
|
-
*/
|
|
49
|
-
export function toNavigationParameters(selections) {
|
|
50
|
-
const value = toUrl(selections);
|
|
51
|
-
return value ? { ns: JSON.stringify(value) } : {};
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VhcmNoL2NsYXNzZXMvdXJsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFJbEM7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsVUFBMEM7SUFDNUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDaEIsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNmLENBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUMxQixDQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFFL0IsT0FBUSxDQUFhLENBQUMsS0FBSyxDQUFDO1lBQzVCLE9BQVEsQ0FBYSxDQUFDLFNBQVMsQ0FBQztRQUNwQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFakMsT0FBTyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUM3QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFDLFVBQXlCO0lBQzdDLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDdEIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBNEIsQ0FBQztJQUVqRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEIsQ0FBQyxDQUFDLEtBQUssR0FBSSxDQUFhLENBQUMsQ0FBQyxDQUFDO1lBQzNCLENBQUMsQ0FBQyxTQUFTLEdBQUksQ0FBYSxDQUFDLENBQUMsQ0FBQztZQUUvQixPQUFRLENBQWEsQ0FBQyxDQUFDLENBQUM7WUFDeEIsT0FBUSxDQUFhLENBQUMsQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLFVBQW1DO0lBQ3RFLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVoQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmF0dXJhbFNlYXJjaFNlbGVjdGlvbnN9IGZyb20gJy4uL3R5cGVzL3ZhbHVlcyc7XG5pbXBvcnQge2RlZXBDbG9uZX0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge0xpdGVyYWx9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3R5cGVzJztcbmltcG9ydCB7UGFyYW1zfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNlbGVjdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGluIFVSTC5cbiAqXG4gKiBUaGUgc3RyaW5nIGNhbiBiZSBwYXJzZWQgYmFjayB3aXRoIGBmcm9tVXJsKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1VybChzZWxlY3Rpb25zOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9ucyB8IG51bGwpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIXNlbGVjdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBzID0gZGVlcENsb25lKHNlbGVjdGlvbnMpO1xuICAgIGZvciAoY29uc3QgYSBvZiBzKSB7XG4gICAgICAgIGZvciAoY29uc3QgYiBvZiBhKSB7XG4gICAgICAgICAgICAoYiBhcyBMaXRlcmFsKS5mID0gYi5maWVsZDtcbiAgICAgICAgICAgIChiIGFzIExpdGVyYWwpLmMgPSBiLmNvbmRpdGlvbjtcblxuICAgICAgICAgICAgZGVsZXRlIChiIGFzIExpdGVyYWwpLmZpZWxkO1xuICAgICAgICAgICAgZGVsZXRlIChiIGFzIExpdGVyYWwpLmNvbmRpdGlvbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IEpTT04uc3RyaW5naWZ5KHMpO1xuXG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gJ1tbXV0nID8gbnVsbCA6IHJlc3VsdDtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIHN0cmluZywgcHJvYmFibHkgY29taW5nIGZyb20gVVJMLCBpbnRvIGEgc2VsZWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tVXJsKHNlbGVjdGlvbnM6IHN0cmluZyB8IG51bGwpOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9ucyB7XG4gICAgaWYgKCFzZWxlY3Rpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtbXV07XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gSlNPTi5wYXJzZShzZWxlY3Rpb25zKSBhcyBOYXR1cmFsU2VhcmNoU2VsZWN0aW9ucztcblxuICAgIGZvciAoY29uc3QgYSBvZiByZXN1bHQpIHtcbiAgICAgICAgZm9yIChjb25zdCBiIG9mIGEpIHtcbiAgICAgICAgICAgIGIuZmllbGQgPSAoYiBhcyBMaXRlcmFsKS5mO1xuICAgICAgICAgICAgYi5jb25kaXRpb24gPSAoYiBhcyBMaXRlcmFsKS5jO1xuXG4gICAgICAgICAgICBkZWxldGUgKGIgYXMgTGl0ZXJhbCkuZjtcbiAgICAgICAgICAgIGRlbGV0ZSAoYiBhcyBMaXRlcmFsKS5jO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goW10pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogVHJhbnNmb3JtIGEgc2VhcmNoIHNlbGVjdGlvbiB0byBuYXZpZ2F0aW9uIHBhcmFtZXRlcnMgdG8gYmUgdXNlZCBpbiBVUkwuXG4gKlxuICogVGhpcyBpcyB0eXBpY2FsbHkgdXNlZnVsIHRvIGNyYWZ0IFVSTCB0byBwcmUtZmlsdGVyZWQgbGlzdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b05hdmlnYXRpb25QYXJhbWV0ZXJzKHNlbGVjdGlvbnM6IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb25zKTogUGFyYW1zIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRvVXJsKHNlbGVjdGlvbnMpO1xuXG4gICAgcmV0dXJuIHZhbHVlID8ge25zOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSl9IDoge307XG59XG4iXX0=
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lookup a facet by its `name` and then by its `field`, or return null if not found
|
|
3
|
-
*/
|
|
4
|
-
export function getFacetFromSelection(facets, selection) {
|
|
5
|
-
if (!facets) {
|
|
6
|
-
return null;
|
|
7
|
-
}
|
|
8
|
-
return (facets.find(facet => facet.name != null && facet.name === selection.name) ||
|
|
9
|
-
facets.find(facet => facet.field === selection.field) ||
|
|
10
|
-
null);
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Deep clone a literal via JSON serializing/unserializing
|
|
14
|
-
*
|
|
15
|
-
* It will **not** work with:
|
|
16
|
-
*
|
|
17
|
-
* - functions (will be removed)
|
|
18
|
-
* - `undefined` (will be removed)
|
|
19
|
-
* - cyclic references (will crash)
|
|
20
|
-
* - objects (will be converted to `{}`)
|
|
21
|
-
*/
|
|
22
|
-
export function deepClone(obj) {
|
|
23
|
-
return JSON.parse(JSON.stringify(obj));
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9zZWFyY2gvY2xhc3Nlcy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7R0FFRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FDakMsTUFBa0MsRUFDbEMsU0FBaUM7SUFFakMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1YsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU8sQ0FDSCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ3pFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDckQsSUFBSSxDQUNQLENBQUM7QUFDTixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBSSxHQUFvQztJQUM3RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZhY2V0LCBOYXR1cmFsU2VhcmNoRmFjZXRzfSBmcm9tICcuLi90eXBlcy9mYWNldCc7XG5pbXBvcnQge05hdHVyYWxTZWFyY2hTZWxlY3Rpb259IGZyb20gJy4uL3R5cGVzL3ZhbHVlcyc7XG5cbi8qKlxuICogTG9va3VwIGEgZmFjZXQgYnkgaXRzIGBuYW1lYCBhbmQgdGhlbiBieSBpdHMgYGZpZWxkYCwgb3IgcmV0dXJuIG51bGwgaWYgbm90IGZvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGYWNldEZyb21TZWxlY3Rpb24oXG4gICAgZmFjZXRzOiBOYXR1cmFsU2VhcmNoRmFjZXRzIHwgbnVsbCxcbiAgICBzZWxlY3Rpb246IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24sXG4pOiBGYWNldCB8IG51bGwge1xuICAgIGlmICghZmFjZXRzKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIGZhY2V0cy5maW5kKGZhY2V0ID0+IGZhY2V0Lm5hbWUgIT0gbnVsbCAmJiBmYWNldC5uYW1lID09PSBzZWxlY3Rpb24ubmFtZSkgfHxcbiAgICAgICAgZmFjZXRzLmZpbmQoZmFjZXQgPT4gZmFjZXQuZmllbGQgPT09IHNlbGVjdGlvbi5maWVsZCkgfHxcbiAgICAgICAgbnVsbFxuICAgICk7XG59XG5cbi8qKlxuICogRGVlcCBjbG9uZSBhIGxpdGVyYWwgdmlhIEpTT04gc2VyaWFsaXppbmcvdW5zZXJpYWxpemluZ1xuICpcbiAqIEl0IHdpbGwgKipub3QqKiB3b3JrIHdpdGg6XG4gKlxuICogICAgIC0gZnVuY3Rpb25zICh3aWxsIGJlIHJlbW92ZWQpXG4gKiAgICAgLSBgdW5kZWZpbmVkYCAod2lsbCBiZSByZW1vdmVkKVxuICogICAgIC0gY3ljbGljIHJlZmVyZW5jZXMgKHdpbGwgY3Jhc2gpXG4gKiAgICAgLSBvYmplY3RzICh3aWxsIGJlIGNvbnZlcnRlZCB0byBge31gKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVlcENsb25lPFQ+KG9iajogVCBleHRlbmRzIHVuZGVmaW5lZCA/IG5ldmVyIDogVCk6IFQge1xuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpO1xufVxuIl19
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { animate, group, query, sequence, state, style, transition, trigger, } from '@angular/animations';
|
|
2
|
-
/**
|
|
3
|
-
* Animations used by the mat-menu component.
|
|
4
|
-
* Animation duration and timing values are based on:
|
|
5
|
-
* https://material.io/guidelines/components/menus.html#menus-usage
|
|
6
|
-
*/
|
|
7
|
-
export const naturalDropdownAnimations = {
|
|
8
|
-
/**
|
|
9
|
-
* This animation controls the menu panel's entry and exit from the page.
|
|
10
|
-
*
|
|
11
|
-
* When the menu panel is added to the DOM, it scales in and fades in its border.
|
|
12
|
-
*
|
|
13
|
-
* When the menu panel is removed from the DOM, it simply fades out after a brief
|
|
14
|
-
* delay to display the ripple.
|
|
15
|
-
*/
|
|
16
|
-
transformMenu: trigger('transformMenu', [
|
|
17
|
-
state('void', style({
|
|
18
|
-
opacity: 0,
|
|
19
|
-
// This starts off from 0.01, instead of 0, because there's an issue in the Angular animations
|
|
20
|
-
// as of 4.2, which causes the animation to be skipped if it starts from 0.
|
|
21
|
-
transform: 'scale(0.01, 0.01)',
|
|
22
|
-
})),
|
|
23
|
-
transition('void => enter', sequence([
|
|
24
|
-
query('.natural-dropdown-container-content', style({ opacity: 0 })),
|
|
25
|
-
animate('100ms linear', style({ opacity: 1, transform: 'scale(1, 0.5)' })),
|
|
26
|
-
group([
|
|
27
|
-
query('.natural-dropdown-container-content', animate('400ms cubic-bezier(0.55, 0, 0.55, 0.2)', style({ opacity: 1 }))),
|
|
28
|
-
animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ transform: 'scale(1, 1)' })),
|
|
29
|
-
]),
|
|
30
|
-
])),
|
|
31
|
-
transition('* => void', animate('150ms 50ms linear', style({ opacity: 0 }))),
|
|
32
|
-
]),
|
|
33
|
-
/**
|
|
34
|
-
* This animation fades in the background color and content of the menu panel
|
|
35
|
-
* after its containing element is scaled in.
|
|
36
|
-
*/
|
|
37
|
-
fadeInItems: trigger('fadeInItems', [
|
|
38
|
-
// TODO(crisbeto): this is inside the `transformMenu`
|
|
39
|
-
// now. Remove next time we do breaking changes.
|
|
40
|
-
state('showing', style({ opacity: 1 })),
|
|
41
|
-
transition('void => *', [style({ opacity: 0 }), animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')]),
|
|
42
|
-
]),
|
|
43
|
-
};
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tY29udGFpbmVyLWFuaW1hdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9zZWFyY2gvZHJvcGRvd24tY29udGFpbmVyL2Ryb3Bkb3duLWNvbnRhaW5lci1hbmltYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxPQUFPLEVBRVAsS0FBSyxFQUNMLEtBQUssRUFDTCxRQUFRLEVBQ1IsS0FBSyxFQUNMLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNWLE1BQU0scUJBQXFCLENBQUM7QUFFN0I7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUdsQztJQUNBOzs7Ozs7O09BT0c7SUFDSCxhQUFhLEVBQUUsT0FBTyxDQUFDLGVBQWUsRUFBRTtRQUNwQyxLQUFLLENBQ0QsTUFBTSxFQUNOLEtBQUssQ0FBQztZQUNGLE9BQU8sRUFBRSxDQUFDO1lBQ1YsOEZBQThGO1lBQzlGLDJFQUEyRTtZQUMzRSxTQUFTLEVBQUUsbUJBQW1CO1NBQ2pDLENBQUMsQ0FDTDtRQUNELFVBQVUsQ0FDTixlQUFlLEVBQ2YsUUFBUSxDQUFDO1lBQ0wsS0FBSyxDQUFDLHFDQUFxQyxFQUFFLEtBQUssQ0FBQyxFQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1lBQ2pFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFDLENBQUMsQ0FBQztZQUN4RSxLQUFLLENBQUM7Z0JBQ0YsS0FBSyxDQUNELHFDQUFxQyxFQUNyQyxPQUFPLENBQUMsd0NBQXdDLEVBQUUsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FDekU7Z0JBQ0QsT0FBTyxDQUFDLHdDQUF3QyxFQUFFLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUMsQ0FBQyxDQUFDO2FBQ3ZGLENBQUM7U0FDTCxDQUFDLENBQ0w7UUFDRCxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzdFLENBQUM7SUFFRjs7O09BR0c7SUFDSCxXQUFXLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFBRTtRQUNoQyxxREFBcUQ7UUFDckQsZ0RBQWdEO1FBQ2hELEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7UUFDckMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDLENBQUM7S0FDMUcsQ0FBQztDQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIGFuaW1hdGUsXG4gICAgQW5pbWF0aW9uVHJpZ2dlck1ldGFkYXRhLFxuICAgIGdyb3VwLFxuICAgIHF1ZXJ5LFxuICAgIHNlcXVlbmNlLFxuICAgIHN0YXRlLFxuICAgIHN0eWxlLFxuICAgIHRyYW5zaXRpb24sXG4gICAgdHJpZ2dlcixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbi8qKlxuICogQW5pbWF0aW9ucyB1c2VkIGJ5IHRoZSBtYXQtbWVudSBjb21wb25lbnQuXG4gKiBBbmltYXRpb24gZHVyYXRpb24gYW5kIHRpbWluZyB2YWx1ZXMgYXJlIGJhc2VkIG9uOlxuICogaHR0cHM6Ly9tYXRlcmlhbC5pby9ndWlkZWxpbmVzL2NvbXBvbmVudHMvbWVudXMuaHRtbCNtZW51cy11c2FnZVxuICovXG5leHBvcnQgY29uc3QgbmF0dXJhbERyb3Bkb3duQW5pbWF0aW9uczoge1xuICAgIHJlYWRvbmx5IHRyYW5zZm9ybU1lbnU6IEFuaW1hdGlvblRyaWdnZXJNZXRhZGF0YTtcbiAgICByZWFkb25seSBmYWRlSW5JdGVtczogQW5pbWF0aW9uVHJpZ2dlck1ldGFkYXRhO1xufSA9IHtcbiAgICAvKipcbiAgICAgKiBUaGlzIGFuaW1hdGlvbiBjb250cm9scyB0aGUgbWVudSBwYW5lbCdzIGVudHJ5IGFuZCBleGl0IGZyb20gdGhlIHBhZ2UuXG4gICAgICpcbiAgICAgKiBXaGVuIHRoZSBtZW51IHBhbmVsIGlzIGFkZGVkIHRvIHRoZSBET00sIGl0IHNjYWxlcyBpbiBhbmQgZmFkZXMgaW4gaXRzIGJvcmRlci5cbiAgICAgKlxuICAgICAqIFdoZW4gdGhlIG1lbnUgcGFuZWwgaXMgcmVtb3ZlZCBmcm9tIHRoZSBET00sIGl0IHNpbXBseSBmYWRlcyBvdXQgYWZ0ZXIgYSBicmllZlxuICAgICAqIGRlbGF5IHRvIGRpc3BsYXkgdGhlIHJpcHBsZS5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm1NZW51OiB0cmlnZ2VyKCd0cmFuc2Zvcm1NZW51JywgW1xuICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICd2b2lkJyxcbiAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgIC8vIFRoaXMgc3RhcnRzIG9mZiBmcm9tIDAuMDEsIGluc3RlYWQgb2YgMCwgYmVjYXVzZSB0aGVyZSdzIGFuIGlzc3VlIGluIHRoZSBBbmd1bGFyIGFuaW1hdGlvbnNcbiAgICAgICAgICAgICAgICAvLyBhcyBvZiA0LjIsIHdoaWNoIGNhdXNlcyB0aGUgYW5pbWF0aW9uIHRvIGJlIHNraXBwZWQgaWYgaXQgc3RhcnRzIGZyb20gMC5cbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZSgwLjAxLCAwLjAxKScsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICAgICAgdHJhbnNpdGlvbihcbiAgICAgICAgICAgICd2b2lkID0+IGVudGVyJyxcbiAgICAgICAgICAgIHNlcXVlbmNlKFtcbiAgICAgICAgICAgICAgICBxdWVyeSgnLm5hdHVyYWwtZHJvcGRvd24tY29udGFpbmVyLWNvbnRlbnQnLCBzdHlsZSh7b3BhY2l0eTogMH0pKSxcbiAgICAgICAgICAgICAgICBhbmltYXRlKCcxMDBtcyBsaW5lYXInLCBzdHlsZSh7b3BhY2l0eTogMSwgdHJhbnNmb3JtOiAnc2NhbGUoMSwgMC41KSd9KSksXG4gICAgICAgICAgICAgICAgZ3JvdXAoW1xuICAgICAgICAgICAgICAgICAgICBxdWVyeShcbiAgICAgICAgICAgICAgICAgICAgICAgICcubmF0dXJhbC1kcm9wZG93bi1jb250YWluZXItY29udGVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlKCc0MDBtcyBjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKScsIHN0eWxlKHtvcGFjaXR5OiAxfSkpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBhbmltYXRlKCczMDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKScsIHN0eWxlKHt0cmFuc2Zvcm06ICdzY2FsZSgxLCAxKSd9KSksXG4gICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgKSxcbiAgICAgICAgdHJhbnNpdGlvbignKiA9PiB2b2lkJywgYW5pbWF0ZSgnMTUwbXMgNTBtcyBsaW5lYXInLCBzdHlsZSh7b3BhY2l0eTogMH0pKSksXG4gICAgXSksXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGFuaW1hdGlvbiBmYWRlcyBpbiB0aGUgYmFja2dyb3VuZCBjb2xvciBhbmQgY29udGVudCBvZiB0aGUgbWVudSBwYW5lbFxuICAgICAqIGFmdGVyIGl0cyBjb250YWluaW5nIGVsZW1lbnQgaXMgc2NhbGVkIGluLlxuICAgICAqL1xuICAgIGZhZGVJbkl0ZW1zOiB0cmlnZ2VyKCdmYWRlSW5JdGVtcycsIFtcbiAgICAgICAgLy8gVE9ETyhjcmlzYmV0byk6IHRoaXMgaXMgaW5zaWRlIHRoZSBgdHJhbnNmb3JtTWVudWBcbiAgICAgICAgLy8gbm93LiBSZW1vdmUgbmV4dCB0aW1lIHdlIGRvIGJyZWFraW5nIGNoYW5nZXMuXG4gICAgICAgIHN0YXRlKCdzaG93aW5nJywgc3R5bGUoe29wYWNpdHk6IDF9KSksXG4gICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIFtzdHlsZSh7b3BhY2l0eTogMH0pLCBhbmltYXRlKCc0MDBtcyAxMDBtcyBjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKScpXSksXG4gICAgXSksXG59O1xuIl19
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';
|
|
2
|
-
import { BasePortalOutlet, CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';
|
|
3
|
-
import { Component, ElementRef, inject, InjectionToken, TemplateRef, ViewChild, ViewEncapsulation, } from '@angular/core';
|
|
4
|
-
import { Subject } from 'rxjs';
|
|
5
|
-
import { naturalDropdownAnimations } from './dropdown-container-animations';
|
|
6
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/cdk/portal";
|
|
9
|
-
import * as i2 from "@angular/material/button";
|
|
10
|
-
export function throwMatDialogContentAlreadyAttachedError() {
|
|
11
|
-
throw Error('Attempting to attach dialog content after content is already attached');
|
|
12
|
-
}
|
|
13
|
-
export const NATURAL_DROPDOWN_CONTAINER_DATA = new InjectionToken('NaturalDropdownContainerData');
|
|
14
|
-
export class NaturalDropdownContainerComponent extends BasePortalOutlet {
|
|
15
|
-
elementRef = inject(ElementRef);
|
|
16
|
-
focusTrapFactory = inject(ConfigurableFocusTrapFactory);
|
|
17
|
-
data = inject(NATURAL_DROPDOWN_CONTAINER_DATA);
|
|
18
|
-
portalOutlet;
|
|
19
|
-
templateRef;
|
|
20
|
-
closed = new Subject();
|
|
21
|
-
/** Current state of the panel animation. */
|
|
22
|
-
panelAnimationState = 'void';
|
|
23
|
-
/** Emits whenever an animation on the menu completes. */
|
|
24
|
-
animationDone = new Subject();
|
|
25
|
-
focusTrap = null;
|
|
26
|
-
elementFocusedBeforeDialogWasOpened = null;
|
|
27
|
-
constructor() {
|
|
28
|
-
super();
|
|
29
|
-
}
|
|
30
|
-
ngOnDestroy() {
|
|
31
|
-
this.closed.complete();
|
|
32
|
-
}
|
|
33
|
-
close() {
|
|
34
|
-
this.closed.next();
|
|
35
|
-
}
|
|
36
|
-
attachTemplatePortal(portal) {
|
|
37
|
-
return this.portalOutlet.attachTemplatePortal(portal);
|
|
38
|
-
}
|
|
39
|
-
attachComponentPortal(portal) {
|
|
40
|
-
if (this.portalOutlet.hasAttached()) {
|
|
41
|
-
throwMatDialogContentAlreadyAttachedError();
|
|
42
|
-
}
|
|
43
|
-
return this.portalOutlet.attachComponentPortal(portal);
|
|
44
|
-
}
|
|
45
|
-
startAnimation() {
|
|
46
|
-
this.panelAnimationState = 'enter';
|
|
47
|
-
}
|
|
48
|
-
onAnimationDone(event) {
|
|
49
|
-
if (event.toState === 'enter') {
|
|
50
|
-
this.trapFocus();
|
|
51
|
-
}
|
|
52
|
-
else if (event.toState === 'exit') {
|
|
53
|
-
this.restoreFocus();
|
|
54
|
-
}
|
|
55
|
-
this.animationDone.next();
|
|
56
|
-
}
|
|
57
|
-
trapFocus() {
|
|
58
|
-
if (!this.focusTrap) {
|
|
59
|
-
this.focusTrap = this.focusTrapFactory.create(this.elementRef.nativeElement);
|
|
60
|
-
}
|
|
61
|
-
this.focusTrap.focusInitialElementWhenReady();
|
|
62
|
-
}
|
|
63
|
-
/** Restores focus to the element that was focused before the dialog opened. */
|
|
64
|
-
restoreFocus() {
|
|
65
|
-
const toFocus = this.elementFocusedBeforeDialogWasOpened;
|
|
66
|
-
// We need the extra check, because IE can set the `activeElement` to null in some cases.
|
|
67
|
-
if (toFocus && typeof toFocus.focus === 'function') {
|
|
68
|
-
toFocus.focus();
|
|
69
|
-
}
|
|
70
|
-
if (this.focusTrap) {
|
|
71
|
-
this.focusTrap.destroy();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalDropdownContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
75
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalDropdownContainerComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }, { propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\n (@transformMenu.done)=\"onAnimationDone($event)\"\n [@transformMenu]=\"panelAnimationState\"\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n>\n <div class=\"natural-dropdown-container-content\">\n <ng-template cdkPortalOutlet />\n </div>\n\n @if (data.showValidateButton) {\n <div class=\"natural-dropdown-validate-button\">\n <button (click)=\"close()\" color=\"primary\" mat-raised-button i18n>Valider</button>\n </div>\n }\n</div>\n", styles: [".natural-dropdown-container{display:flex;flex-direction:column;border-radius:2px;height:100%}.natural-dropdown-container-content{flex:1;padding:5px;overflow:auto}.natural-dropdown-container .natural-dropdown-validate-button{display:flex;flex:none;flex-direction:row;justify-content:flex-end;margin:5px}\n"], dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }], animations: [naturalDropdownAnimations.transformMenu, naturalDropdownAnimations.fadeInItems], encapsulation: i0.ViewEncapsulation.None });
|
|
76
|
-
}
|
|
77
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalDropdownContainerComponent, decorators: [{
|
|
78
|
-
type: Component,
|
|
79
|
-
args: [{ encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, animations: [naturalDropdownAnimations.transformMenu, naturalDropdownAnimations.fadeInItems], standalone: true, imports: [PortalModule, MatButtonModule], template: "<div\n (@transformMenu.done)=\"onAnimationDone($event)\"\n [@transformMenu]=\"panelAnimationState\"\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n>\n <div class=\"natural-dropdown-container-content\">\n <ng-template cdkPortalOutlet />\n </div>\n\n @if (data.showValidateButton) {\n <div class=\"natural-dropdown-validate-button\">\n <button (click)=\"close()\" color=\"primary\" mat-raised-button i18n>Valider</button>\n </div>\n }\n</div>\n", styles: [".natural-dropdown-container{display:flex;flex-direction:column;border-radius:2px;height:100%}.natural-dropdown-container-content{flex:1;padding:5px;overflow:auto}.natural-dropdown-container .natural-dropdown-validate-button{display:flex;flex:none;flex-direction:row;justify-content:flex-end;margin:5px}\n"] }]
|
|
80
|
-
}], ctorParameters: () => [], propDecorators: { portalOutlet: [{
|
|
81
|
-
type: ViewChild,
|
|
82
|
-
args: [CdkPortalOutlet, { static: true }]
|
|
83
|
-
}], templateRef: [{
|
|
84
|
-
type: ViewChild,
|
|
85
|
-
args: [TemplateRef, { static: true }]
|
|
86
|
-
}] } });
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyw0QkFBNEIsRUFBWSxNQUFNLG1CQUFtQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQW1CLFlBQVksRUFBaUIsTUFBTSxxQkFBcUIsQ0FBQztBQUNySCxPQUFPLEVBQ0gsU0FBUyxFQUVULFVBQVUsRUFFVixNQUFNLEVBQ04sY0FBYyxFQUVkLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDMUUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDOzs7O0FBRXpELE1BQU0sVUFBVSx5Q0FBeUM7SUFDckQsTUFBTSxLQUFLLENBQUMsdUVBQXVFLENBQUMsQ0FBQztBQUN6RixDQUFDO0FBTUQsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsSUFBSSxjQUFjLENBQzdELDhCQUE4QixDQUNqQyxDQUFDO0FBWUYsTUFBTSxPQUFPLGlDQUFrQyxTQUFRLGdCQUFnQjtJQUNsRCxVQUFVLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztJQUN6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LFlBQVksRUFBRSxlQUFlLENBQUM7d0RBT1csWUFBWTtzQkFBOUQsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUNLLFdBQVc7c0JBQXpELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QW5pbWF0aW9uRXZlbnR9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtDb25maWd1cmFibGVGb2N1c1RyYXBGYWN0b3J5LCBGb2N1c1RyYXB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7QmFzZVBvcnRhbE91dGxldCwgQ2RrUG9ydGFsT3V0bGV0LCBDb21wb25lbnRQb3J0YWwsIFBvcnRhbE1vZHVsZSwgVGVtcGxhdGVQb3J0YWx9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRW1iZWRkZWRWaWV3UmVmLFxuICAgIGluamVjdCxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBPbkRlc3Ryb3ksXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge25hdHVyYWxEcm9wZG93bkFuaW1hdGlvbnN9IGZyb20gJy4vZHJvcGRvd24tY29udGFpbmVyLWFuaW1hdGlvbnMnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd01hdERpYWxvZ0NvbnRlbnRBbHJlYWR5QXR0YWNoZWRFcnJvcigpOiB2b2lkIHtcbiAgICB0aHJvdyBFcnJvcignQXR0ZW1wdGluZyB0byBhdHRhY2ggZGlhbG9nIGNvbnRlbnQgYWZ0ZXIgY29udGVudCBpcyBhbHJlYWR5IGF0dGFjaGVkJyk7XG59XG5cbmV4cG9ydCB0eXBlIE5hdHVyYWxEcm9wZG93bkNvbnRhaW5lckRhdGEgPSB7XG4gICAgc2hvd1ZhbGlkYXRlQnV0dG9uOiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IE5BVFVSQUxfRFJPUERPV05fQ09OVEFJTkVSX0RBVEEgPSBuZXcgSW5qZWN0aW9uVG9rZW48TmF0dXJhbERyb3Bkb3duQ29udGFpbmVyRGF0YT4oXG4gICAgJ05hdHVyYWxEcm9wZG93bkNvbnRhaW5lckRhdGEnLFxuKTtcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2Ryb3Bkb3duLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcycsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC91c2UtY29tcG9uZW50LXZpZXctZW5jYXBzdWxhdGlvblxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gICAgYW5pbWF0aW9uczogW25hdHVyYWxEcm9wZG93bkFuaW1hdGlvbnMudHJhbnNmb3JtTWVudSwgbmF0dXJhbERyb3Bkb3duQW5pbWF0aW9ucy5mYWRlSW5JdGVtc10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbUG9ydGFsTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsRHJvcGRvd25Db250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlUG9ydGFsT3V0bGV0IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9jdXNUcmFwRmFjdG9yeSA9IGluamVjdChDb25maWd1cmFibGVGb2N1c1RyYXBGYWN0b3J5KTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGF0YSA9IGluamVjdChOQVRVUkFMX0RST1BET1dOX0NPTlRBSU5FUl9EQVRBKTtcblxuICAgIEBWaWV3Q2hpbGQoQ2RrUG9ydGFsT3V0bGV0LCB7c3RhdGljOiB0cnVlfSkgcHVibGljIHBvcnRhbE91dGxldCE6IENka1BvcnRhbE91dGxldDtcbiAgICBAVmlld0NoaWxkKFRlbXBsYXRlUmVmLCB7c3RhdGljOiB0cnVlfSkgcHVibGljIHRlbXBsYXRlUmVmITogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHB1YmxpYyByZWFkb25seSBjbG9zZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEN1cnJlbnQgc3RhdGUgb2YgdGhlIHBhbmVsIGFuaW1hdGlvbi4gKi9cbiAgICBwdWJsaWMgcGFuZWxBbmltYXRpb25TdGF0ZTogJ3ZvaWQnIHwgJ2VudGVyJyA9ICd2b2lkJztcblxuICAgIC8qKiBFbWl0cyB3aGVuZXZlciBhbiBhbmltYXRpb24gb24gdGhlIG1lbnUgY29tcGxldGVzLiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYW5pbWF0aW9uRG9uZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIGZvY3VzVHJhcDogRm9jdXNUcmFwIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBlbGVtZW50Rm9jdXNlZEJlZm9yZURpYWxvZ1dhc09wZW5lZDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlZC5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGF0dGFjaFRlbXBsYXRlUG9ydGFsPEM+KHBvcnRhbDogVGVtcGxhdGVQb3J0YWw8Qz4pOiBFbWJlZGRlZFZpZXdSZWY8Qz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3J0YWxPdXRsZXQuYXR0YWNoVGVtcGxhdGVQb3J0YWwocG9ydGFsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXR0YWNoQ29tcG9uZW50UG9ydGFsPFQ+KHBvcnRhbDogQ29tcG9uZW50UG9ydGFsPFQ+KTogQ29tcG9uZW50UmVmPFQ+IHtcbiAgICAgICAgaWYgKHRoaXMucG9ydGFsT3V0bGV0Lmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgICAgIHRocm93TWF0RGlhbG9nQ29udGVudEFscmVhZHlBdHRhY2hlZEVycm9yKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wb3J0YWxPdXRsZXQuYXR0YWNoQ29tcG9uZW50UG9ydGFsKHBvcnRhbCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXJ0QW5pbWF0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhbmVsQW5pbWF0aW9uU3RhdGUgPSAnZW50ZXInO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC50b1N0YXRlID09PSAnZW50ZXInKSB7XG4gICAgICAgICAgICB0aGlzLnRyYXBGb2N1cygpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICdleGl0Jykge1xuICAgICAgICAgICAgdGhpcy5yZXN0b3JlRm9jdXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYW5pbWF0aW9uRG9uZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmFwRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5mb2N1c1RyYXApIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNUcmFwID0gdGhpcy5mb2N1c1RyYXBGYWN0b3J5LmNyZWF0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvY3VzVHJhcC5mb2N1c0luaXRpYWxFbGVtZW50V2hlblJlYWR5KCk7XG4gICAgfVxuXG4gICAgLyoqIFJlc3RvcmVzIGZvY3VzIHRvIHRoZSBlbGVtZW50IHRoYXQgd2FzIGZvY3VzZWQgYmVmb3JlIHRoZSBkaWFsb2cgb3BlbmVkLiAqL1xuICAgIHByaXZhdGUgcmVzdG9yZUZvY3VzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0b0ZvY3VzID0gdGhpcy5lbGVtZW50Rm9jdXNlZEJlZm9yZURpYWxvZ1dhc09wZW5lZDtcblxuICAgICAgICAvLyBXZSBuZWVkIHRoZSBleHRyYSBjaGVjaywgYmVjYXVzZSBJRSBjYW4gc2V0IHRoZSBgYWN0aXZlRWxlbWVudGAgdG8gbnVsbCBpbiBzb21lIGNhc2VzLlxuICAgICAgICBpZiAodG9Gb2N1cyAmJiB0eXBlb2YgdG9Gb2N1cy5mb2N1cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdG9Gb2N1cy5mb2N1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNUcmFwKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzVHJhcC5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgKEB0cmFuc2Zvcm1NZW51LmRvbmUpPVwib25BbmltYXRpb25Eb25lKCRldmVudClcIlxuICAgIFtAdHJhbnNmb3JtTWVudV09XCJwYW5lbEFuaW1hdGlvblN0YXRlXCJcbiAgICBjbGFzcz1cIm5hdHVyYWwtZHJvcGRvd24tY29udGFpbmVyIG1hdC1lbGV2YXRpb24tejJcIlxuICAgIHJvbGU9XCJtZW51XCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbj5cbiAgICA8ZGl2IGNsYXNzPVwibmF0dXJhbC1kcm9wZG93bi1jb250YWluZXItY29udGVudFwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgY2RrUG9ydGFsT3V0bGV0IC8+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGRhdGEuc2hvd1ZhbGlkYXRlQnV0dG9uKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYXR1cmFsLWRyb3Bkb3duLXZhbGlkYXRlLWJ1dHRvblwiPlxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoKVwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1yYWlzZWQtYnV0dG9uIGkxOG4+VmFsaWRlcjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Subject } from 'rxjs';
|
|
2
|
-
import { ComponentPortal } from '@angular/cdk/portal';
|
|
3
|
-
import { Injector } from '@angular/core';
|
|
4
|
-
export class NaturalDropdownRef {
|
|
5
|
-
dropdownContainer;
|
|
6
|
-
componentInstance;
|
|
7
|
-
closed = new Subject();
|
|
8
|
-
constructor(dropdownContainer, component, customProviders, parentInjector, containerRef) {
|
|
9
|
-
this.dropdownContainer = dropdownContainer;
|
|
10
|
-
// Customize injector to allow data and dropdown reference injection in component
|
|
11
|
-
customProviders.push({ provide: NaturalDropdownRef, useValue: this });
|
|
12
|
-
const customInjector = Injector.create({ providers: customProviders, parent: parentInjector });
|
|
13
|
-
// Content (type component given in configuration)
|
|
14
|
-
const componentPortal = new ComponentPortal(component, undefined, customInjector);
|
|
15
|
-
const contentRef = containerRef.instance.attachComponentPortal(componentPortal);
|
|
16
|
-
this.componentInstance = contentRef.instance;
|
|
17
|
-
}
|
|
18
|
-
close(result) {
|
|
19
|
-
this.closed.next(result);
|
|
20
|
-
this.closed.complete();
|
|
21
|
-
this.dropdownContainer.close();
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VhcmNoL2Ryb3Bkb3duLWNvbnRhaW5lci9kcm9wZG93bi1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUk3QixPQUFPLEVBQUMsZUFBZSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQ25FLE9BQU8sRUFBZSxRQUFRLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXJFLE1BQU0sT0FBTyxrQkFBa0I7SUFLTjtJQUpMLGlCQUFpQixDQUFvQjtJQUNyQyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQThCLENBQUM7SUFFbkUsWUFDcUIsaUJBQW9ELEVBQ3JFLFNBQTJDLEVBQzNDLGVBQWlDLEVBQ2pDLGNBQXdCLEVBQ3hCLFlBQTZEO1FBSjVDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUM7UUFNckUsaUZBQWlGO1FBQ2pGLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDcEUsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBQyxDQUFDLENBQUM7UUFFN0Ysa0RBQWtEO1FBQ2xELE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDbEYsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVoRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQztJQUNqRCxDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQXVCO1FBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ25DLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Ryb3Bkb3duQ29tcG9uZW50fSBmcm9tICcuLi90eXBlcy9kcm9wZG93bi1jb21wb25lbnQnO1xuaW1wb3J0IHtEcm9wZG93blJlc3VsdH0gZnJvbSAnLi4vdHlwZXMvdmFsdWVzJztcbmltcG9ydCB7TmF0dXJhbERyb3Bkb3duQ29udGFpbmVyQ29tcG9uZW50fSBmcm9tICcuL2Ryb3Bkb3duLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHtDb21wb25lbnRQb3J0YWwsIENvbXBvbmVudFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtDb21wb25lbnRSZWYsIEluamVjdG9yLCBTdGF0aWNQcm92aWRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBOYXR1cmFsRHJvcGRvd25SZWYge1xuICAgIHB1YmxpYyByZWFkb25seSBjb21wb25lbnRJbnN0YW5jZTogRHJvcGRvd25Db21wb25lbnQ7XG4gICAgcHVibGljIHJlYWRvbmx5IGNsb3NlZCA9IG5ldyBTdWJqZWN0PERyb3Bkb3duUmVzdWx0IHwgdW5kZWZpbmVkPigpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRyb3Bkb3duQ29udGFpbmVyOiBOYXR1cmFsRHJvcGRvd25Db250YWluZXJDb21wb25lbnQsXG4gICAgICAgIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxEcm9wZG93bkNvbXBvbmVudD4sXG4gICAgICAgIGN1c3RvbVByb3ZpZGVyczogU3RhdGljUHJvdmlkZXJbXSxcbiAgICAgICAgcGFyZW50SW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBjb250YWluZXJSZWY6IENvbXBvbmVudFJlZjxOYXR1cmFsRHJvcGRvd25Db250YWluZXJDb21wb25lbnQ+LFxuICAgICkge1xuICAgICAgICAvLyBDdXN0b21pemUgaW5qZWN0b3IgdG8gYWxsb3cgZGF0YSBhbmQgZHJvcGRvd24gcmVmZXJlbmNlIGluamVjdGlvbiBpbiBjb21wb25lbnRcbiAgICAgICAgY3VzdG9tUHJvdmlkZXJzLnB1c2goe3Byb3ZpZGU6IE5hdHVyYWxEcm9wZG93blJlZiwgdXNlVmFsdWU6IHRoaXN9KTtcbiAgICAgICAgY29uc3QgY3VzdG9tSW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe3Byb3ZpZGVyczogY3VzdG9tUHJvdmlkZXJzLCBwYXJlbnQ6IHBhcmVudEluamVjdG9yfSk7XG5cbiAgICAgICAgLy8gQ29udGVudCAodHlwZSBjb21wb25lbnQgZ2l2ZW4gaW4gY29uZmlndXJhdGlvbilcbiAgICAgICAgY29uc3QgY29tcG9uZW50UG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChjb21wb25lbnQsIHVuZGVmaW5lZCwgY3VzdG9tSW5qZWN0b3IpO1xuICAgICAgICBjb25zdCBjb250ZW50UmVmID0gY29udGFpbmVyUmVmLmluc3RhbmNlLmF0dGFjaENvbXBvbmVudFBvcnRhbChjb21wb25lbnRQb3J0YWwpO1xuXG4gICAgICAgIHRoaXMuY29tcG9uZW50SW5zdGFuY2UgPSBjb250ZW50UmVmLmluc3RhbmNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZShyZXN1bHQ/OiBEcm9wZG93blJlc3VsdCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlZC5uZXh0KHJlc3VsdCk7XG4gICAgICAgIHRoaXMuY2xvc2VkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuZHJvcGRvd25Db250YWluZXIuY2xvc2UoKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
|
|
2
|
-
import { ComponentPortal } from '@angular/cdk/portal';
|
|
3
|
-
import { inject, Injectable, InjectionToken, Injector } from '@angular/core';
|
|
4
|
-
import { takeUntil } from 'rxjs/operators';
|
|
5
|
-
import { NATURAL_DROPDOWN_CONTAINER_DATA, NaturalDropdownContainerComponent, } from './dropdown-container.component';
|
|
6
|
-
import { NaturalDropdownRef } from './dropdown-ref';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
export const NATURAL_DROPDOWN_DATA = new InjectionToken('NaturalDropdownData');
|
|
9
|
-
export class NaturalDropdownService {
|
|
10
|
-
overlay = inject(Overlay);
|
|
11
|
-
injector = inject(Injector);
|
|
12
|
-
open(component, connectedElement, customProviders, showValidateButton) {
|
|
13
|
-
// Container data
|
|
14
|
-
const containerData = {
|
|
15
|
-
showValidateButton: showValidateButton,
|
|
16
|
-
};
|
|
17
|
-
const injectionTokens = [
|
|
18
|
-
{
|
|
19
|
-
provide: NATURAL_DROPDOWN_CONTAINER_DATA,
|
|
20
|
-
useValue: containerData,
|
|
21
|
-
},
|
|
22
|
-
];
|
|
23
|
-
const containerInjector = Injector.create({ providers: injectionTokens, parent: this.injector });
|
|
24
|
-
// Container
|
|
25
|
-
const overlayRef = this.overlay.create(this.getOverlayConfig(connectedElement));
|
|
26
|
-
const containerPortal = new ComponentPortal(NaturalDropdownContainerComponent, undefined, containerInjector);
|
|
27
|
-
const containerRef = overlayRef.attach(containerPortal);
|
|
28
|
-
const dropdownContainer = containerRef.instance;
|
|
29
|
-
const dropdownRef = new NaturalDropdownRef(dropdownContainer, component, customProviders, this.injector, containerRef);
|
|
30
|
-
// Start animation that shows menu
|
|
31
|
-
dropdownContainer.startAnimation();
|
|
32
|
-
const close = () => {
|
|
33
|
-
if (dropdownRef.componentInstance.isValid() && dropdownRef.componentInstance.isDirty()) {
|
|
34
|
-
dropdownRef.close({
|
|
35
|
-
condition: dropdownRef.componentInstance.getCondition(),
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
dropdownRef.close();
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
// When parent closes, remove overlay from dom and update "return" valu
|
|
43
|
-
dropdownContainer.closed.subscribe(() => {
|
|
44
|
-
overlayRef.dispose();
|
|
45
|
-
close();
|
|
46
|
-
});
|
|
47
|
-
// When click on backdrop, validate result.. ?
|
|
48
|
-
overlayRef
|
|
49
|
-
.backdropClick()
|
|
50
|
-
.pipe(takeUntil(dropdownContainer.closed))
|
|
51
|
-
.subscribe(() => dropdownContainer.close());
|
|
52
|
-
return dropdownRef;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* This method builds the configuration object needed to create the overlay, the OverlayState.
|
|
56
|
-
*/
|
|
57
|
-
getOverlayConfig(element) {
|
|
58
|
-
return new OverlayConfig({
|
|
59
|
-
positionStrategy: this.getPosition(element),
|
|
60
|
-
hasBackdrop: true,
|
|
61
|
-
backdropClass: 'cdk-overlay-transparent-backdrop',
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
getPosition(element) {
|
|
65
|
-
return this.overlay
|
|
66
|
-
.position()
|
|
67
|
-
.flexibleConnectedTo(element)
|
|
68
|
-
.withFlexibleDimensions(true)
|
|
69
|
-
.withViewportMargin(30)
|
|
70
|
-
.withPush(false)
|
|
71
|
-
.withPositions([
|
|
72
|
-
{
|
|
73
|
-
originX: 'start',
|
|
74
|
-
originY: 'bottom',
|
|
75
|
-
overlayX: 'start',
|
|
76
|
-
overlayY: 'top',
|
|
77
|
-
offsetY: 10,
|
|
78
|
-
},
|
|
79
|
-
]);
|
|
80
|
-
}
|
|
81
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalDropdownService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
82
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalDropdownService, providedIn: 'root' });
|
|
83
|
-
}
|
|
84
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalDropdownService, decorators: [{
|
|
85
|
-
type: Injectable,
|
|
86
|
-
args: [{
|
|
87
|
-
providedIn: 'root',
|
|
88
|
-
}]
|
|
89
|
-
}] });
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLE9BQU8sRUFBRSxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRixPQUFPLEVBQUMsZUFBZSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQ25FLE9BQU8sRUFBMkIsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNySCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekMsT0FBTyxFQUNILCtCQUErQixFQUMvQixpQ0FBaUMsR0FFcEMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFTbEQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQXNCLHFCQUFxQixDQUFDLENBQUM7QUFLcEcsTUFBTSxPQUFPLHNCQUFzQjtJQUNkLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV0QyxJQUFJLENBQ1AsU0FBMkMsRUFDM0MsZ0JBQXlDLEVBQ3pDLGVBQWlDLEVBQ2pDLGtCQUEyQjtRQUUzQixpQkFBaUI7UUFDakIsTUFBTSxhQUFhLEdBQWlDO1lBQ2hELGtCQUFrQixFQUFFLGtCQUFrQjtTQUN6QyxDQUFDO1FBRUYsTUFBTSxlQUFlLEdBQXFCO1lBQ3RDO2dCQUNJLE9BQU8sRUFBRSwrQkFBK0I7Z0JBQ3hDLFFBQVEsRUFBRSxhQUFhO2FBQzFCO1NBQ0osQ0FB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UG9zaXRpb25TdHJhdGVneSwgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZ30gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtDb21wb25lbnRQb3J0YWwsIENvbXBvbmVudFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtDb21wb25lbnRSZWYsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBTdGF0aWNQcm92aWRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkfSBmcm9tICcuLi9jbGFzc2VzL2dyYXBocWwtZG9jdHJpbmUudHlwZXMnO1xuaW1wb3J0IHtcbiAgICBOQVRVUkFMX0RST1BET1dOX0NPTlRBSU5FUl9EQVRBLFxuICAgIE5hdHVyYWxEcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudCxcbiAgICBOYXR1cmFsRHJvcGRvd25Db250YWluZXJEYXRhLFxufSBmcm9tICcuL2Ryb3Bkb3duLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHtOYXR1cmFsRHJvcGRvd25SZWZ9IGZyb20gJy4vZHJvcGRvd24tcmVmJztcbmltcG9ydCB7RHJvcGRvd25Db21wb25lbnR9IGZyb20gJy4uL3R5cGVzL2Ryb3Bkb3duLWNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIE5hdHVyYWxEcm9wZG93bkRhdGE8QyA9IGFueT4gPSB7XG4gICAgY29uZGl0aW9uOiBGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkIHwgbnVsbDtcbiAgICBjb25maWd1cmF0aW9uOiBDO1xuICAgIHRpdGxlPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNvbnN0IE5BVFVSQUxfRFJPUERPV05fREFUQSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOYXR1cmFsRHJvcGRvd25EYXRhPignTmF0dXJhbERyb3Bkb3duRGF0YScpO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsRHJvcGRvd25TZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgICBwdWJsaWMgb3BlbihcbiAgICAgICAgY29tcG9uZW50OiBDb21wb25lbnRUeXBlPERyb3Bkb3duQ29tcG9uZW50PixcbiAgICAgICAgY29ubmVjdGVkRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIGN1c3RvbVByb3ZpZGVyczogU3RhdGljUHJvdmlkZXJbXSxcbiAgICAgICAgc2hvd1ZhbGlkYXRlQnV0dG9uOiBib29sZWFuLFxuICAgICk6IE5hdHVyYWxEcm9wZG93blJlZiB7XG4gICAgICAgIC8vIENvbnRhaW5lciBkYXRhXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckRhdGE6IE5hdHVyYWxEcm9wZG93bkNvbnRhaW5lckRhdGEgPSB7XG4gICAgICAgICAgICBzaG93VmFsaWRhdGVCdXR0b246IHNob3dWYWxpZGF0ZUJ1dHRvbixcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBpbmplY3Rpb25Ub2tlbnM6IFN0YXRpY1Byb3ZpZGVyW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogTkFUVVJBTF9EUk9QRE9XTl9DT05UQUlORVJfREFUQSxcbiAgICAgICAgICAgICAgICB1c2VWYWx1ZTogY29udGFpbmVyRGF0YSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgY29udGFpbmVySW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe3Byb3ZpZGVyczogaW5qZWN0aW9uVG9rZW5zLCBwYXJlbnQ6IHRoaXMuaW5qZWN0b3J9KTtcblxuICAgICAgICAvLyBDb250YWluZXJcbiAgICAgICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUodGhpcy5nZXRPdmVybGF5Q29uZmlnKGNvbm5lY3RlZEVsZW1lbnQpKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChOYXR1cmFsRHJvcGRvd25Db250YWluZXJDb21wb25lbnQsIHVuZGVmaW5lZCwgY29udGFpbmVySW5qZWN0b3IpO1xuICAgICAgICBjb25zdCBjb250YWluZXJSZWY6IENvbXBvbmVudFJlZjxOYXR1cmFsRHJvcGRvd25Db250YWluZXJDb21wb25lbnQ+ID0gb3ZlcmxheVJlZi5hdHRhY2goY29udGFpbmVyUG9ydGFsKTtcblxuICAgICAgICBjb25zdCBkcm9wZG93bkNvbnRhaW5lciA9IGNvbnRhaW5lclJlZi5pbnN0YW5jZTtcbiAgICAgICAgY29uc3QgZHJvcGRvd25SZWYgPSBuZXcgTmF0dXJhbERyb3Bkb3duUmVmKFxuICAgICAgICAgICAgZHJvcGRvd25Db250YWluZXIsXG4gICAgICAgICAgICBjb21wb25lbnQsXG4gICAgICAgICAgICBjdXN0b21Qcm92aWRlcnMsXG4gICAgICAgICAgICB0aGlzLmluamVjdG9yLFxuICAgICAgICAgICAgY29udGFpbmVyUmVmLFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFN0YXJ0IGFuaW1hdGlvbiB0aGF0IHNob3dzIG1lbnVcbiAgICAgICAgZHJvcGRvd25Db250YWluZXIuc3RhcnRBbmltYXRpb24oKTtcblxuICAgICAgICBjb25zdCBjbG9zZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGlmIChkcm9wZG93blJlZi5jb21wb25lbnRJbnN0YW5jZS5pc1ZhbGlkKCkgJiYgZHJvcGRvd25SZWYuY29tcG9uZW50SW5zdGFuY2UuaXNEaXJ0eSgpKSB7XG4gICAgICAgICAgICAgICAgZHJvcGRvd25SZWYuY2xvc2Uoe1xuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb246IGRyb3Bkb3duUmVmLmNvbXBvbmVudEluc3RhbmNlLmdldENvbmRpdGlvbigpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkcm9wZG93blJlZi5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFdoZW4gcGFyZW50IGNsb3NlcywgcmVtb3ZlIG92ZXJsYXkgZnJvbSBkb20gYW5kIHVwZGF0ZSBcInJldHVyblwiIHZhbHVcbiAgICAgICAgZHJvcGRvd25Db250YWluZXIuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBvdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgIGNsb3NlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFdoZW4gY2xpY2sgb24gYmFja2Ryb3AsIHZhbGlkYXRlIHJlc3VsdC4uID9cbiAgICAgICAgb3ZlcmxheVJlZlxuICAgICAgICAgICAgLmJhY2tkcm9wQ2xpY2soKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKGRyb3Bkb3duQ29udGFpbmVyLmNsb3NlZCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IGRyb3Bkb3duQ29udGFpbmVyLmNsb3NlKCkpO1xuXG4gICAgICAgIHJldHVybiBkcm9wZG93blJlZjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBidWlsZHMgdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IG5lZWRlZCB0byBjcmVhdGUgdGhlIG92ZXJsYXksIHRoZSBPdmVybGF5U3RhdGUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRPdmVybGF5Q29uZmlnKGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTogT3ZlcmxheUNvbmZpZyB7XG4gICAgICAgIHJldHVybiBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLmdldFBvc2l0aW9uKGVsZW1lbnQpLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgICAgICBiYWNrZHJvcENsYXNzOiAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBvc2l0aW9uKGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGVsZW1lbnQpXG4gICAgICAgICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyh0cnVlKVxuICAgICAgICAgICAgLndpdGhWaWV3cG9ydE1hcmdpbigzMClcbiAgICAgICAgICAgIC53aXRoUHVzaChmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAxMCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { Component, inject } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
import { NaturalDropdownRef } from '../../search/dropdown-container/dropdown-ref';
|
|
4
|
-
import { NATURAL_DROPDOWN_DATA } from '../../search/dropdown-container/dropdown.service';
|
|
5
|
-
import { MatListModule } from '@angular/material/list';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/material/list";
|
|
8
|
-
export class FacetSelectorComponent {
|
|
9
|
-
data = inject(NATURAL_DROPDOWN_DATA);
|
|
10
|
-
dropdownRef = inject(NaturalDropdownRef);
|
|
11
|
-
// Never has a real value
|
|
12
|
-
renderedValue = new BehaviorSubject('');
|
|
13
|
-
facets = this.data.configuration.facets;
|
|
14
|
-
selection = null;
|
|
15
|
-
/**
|
|
16
|
-
* Get value, including rich object types
|
|
17
|
-
*/
|
|
18
|
-
getCondition() {
|
|
19
|
-
return {};
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Allow to close the dropdown with a valid value
|
|
23
|
-
*/
|
|
24
|
-
close() {
|
|
25
|
-
if (this.selection) {
|
|
26
|
-
this.dropdownRef.close({
|
|
27
|
-
condition: {},
|
|
28
|
-
facet: this.selection,
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
isValid() {
|
|
33
|
-
return !!this.selection;
|
|
34
|
-
}
|
|
35
|
-
isDirty() {
|
|
36
|
-
return true;
|
|
37
|
-
}
|
|
38
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: FacetSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
39
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: FacetSelectorComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "@if (data.title) {\n <div class=\"dropdown-title mat-body-2\">{{ data.title }}</div>\n}\n<mat-nav-list>\n @for (facet of facets; track $index) {\n <mat-list-item (click)=\"selection = facet; close()\">\n <a>{{ facet.display }}</a>\n </mat-list-item>\n }\n</mat-nav-list>\n", styles: [".mat-nav-list{padding:0}.dropdown-title{opacity:.7;padding:5px;font-variant:all-small-caps;font-size:18px}\n"], dependencies: [{ kind: "ngmodule", type: MatListModule }, { kind: "component", type: i1.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }] });
|
|
40
|
-
}
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: FacetSelectorComponent, decorators: [{
|
|
42
|
-
type: Component,
|
|
43
|
-
args: [{ standalone: true, imports: [MatListModule], template: "@if (data.title) {\n <div class=\"dropdown-title mat-body-2\">{{ data.title }}</div>\n}\n<mat-nav-list>\n @for (facet of facets; track $index) {\n <mat-list-item (click)=\"selection = facet; close()\">\n <a>{{ facet.display }}</a>\n </mat-list-item>\n }\n</mat-nav-list>\n", styles: [".mat-nav-list{padding:0}.dropdown-title{opacity:.7;padding:5px;font-variant:all-small-caps;font-size:18px}\n"] }]
|
|
44
|
-
}] });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VhcmNoL2ZhY2V0LXNlbGVjdG9yL2ZhY2V0LXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9mYWNldC1zZWxlY3Rvci9mYWNldC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXJDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxxQkFBcUIsRUFBc0IsTUFBTSxrREFBa0QsQ0FBQztBQUc1RyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7OztBQWVyRCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2YsSUFBSSxHQUFHLE1BQU0sQ0FBa0QscUJBQXFCLENBQUMsQ0FBQztJQUM1RixXQUFXLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFbkQseUJBQXlCO0lBQ1QsYUFBYSxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7SUFDeEMsU0FBUyxHQUFpQixJQUFJLENBQUM7SUFFdEM7O09BRUc7SUFDSSxZQUFZO1FBQ2YsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLO1FBQ1IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7Z0JBQ25CLFNBQVMsRUFBRSxFQUFFO2dCQUNiLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUzthQUN4QixDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQztJQUVNLE9BQU87UUFDVixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzVCLENBQUM7SUFFTSxPQUFPO1FBQ1YsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzt1R0FsQ1Esc0JBQXNCOzJGQUF0QixzQkFBc0Isd0VDdEJuQyxvVEFVQSxxS0RVYyxhQUFhOzsyRkFFZCxzQkFBc0I7a0JBTmxDLFNBQVM7aUNBR00sSUFBSSxXQUNQLENBQUMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0ZpbHRlckdyb3VwQ29uZGl0aW9uRmllbGR9IGZyb20gJy4uLy4uL3NlYXJjaC9jbGFzc2VzL2dyYXBocWwtZG9jdHJpbmUudHlwZXMnO1xuaW1wb3J0IHtOYXR1cmFsRHJvcGRvd25SZWZ9IGZyb20gJy4uLy4uL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tcmVmJztcbmltcG9ydCB7TkFUVVJBTF9EUk9QRE9XTl9EQVRBLCBOYXR1cmFsRHJvcGRvd25EYXRhfSBmcm9tICcuLi8uLi9zZWFyY2gvZHJvcGRvd24tY29udGFpbmVyL2Ryb3Bkb3duLnNlcnZpY2UnO1xuaW1wb3J0IHtEcm9wZG93bkNvbXBvbmVudH0gZnJvbSAnLi4vdHlwZXMvZHJvcGRvd24tY29tcG9uZW50JztcbmltcG9ydCB7RmFjZXQsIE5hdHVyYWxTZWFyY2hGYWNldHN9IGZyb20gJy4uL3R5cGVzL2ZhY2V0JztcbmltcG9ydCB7TWF0TGlzdE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgZmFjZXQgc2VsZWN0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIEZhY2V0U2VsZWN0b3JDb25maWd1cmF0aW9uID0ge1xuICAgIGZhY2V0czogTmF0dXJhbFNlYXJjaEZhY2V0cztcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi9mYWNldC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2ZhY2V0LXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtNYXRMaXN0TW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgRmFjZXRTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIERyb3Bkb3duQ29tcG9uZW50IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGF0YSA9IGluamVjdDxOYXR1cmFsRHJvcGRvd25EYXRhPEZhY2V0U2VsZWN0b3JDb25maWd1cmF0aW9uPj4oTkFUVVJBTF9EUk9QRE9XTl9EQVRBKTtcbiAgICBwcm90ZWN0ZWQgZHJvcGRvd25SZWYgPSBpbmplY3QoTmF0dXJhbERyb3Bkb3duUmVmKTtcblxuICAgIC8vIE5ldmVyIGhhcyBhIHJlYWwgdmFsdWVcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVuZGVyZWRWYWx1ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gICAgcHVibGljIGZhY2V0cyA9IHRoaXMuZGF0YS5jb25maWd1cmF0aW9uLmZhY2V0cztcbiAgICBwdWJsaWMgc2VsZWN0aW9uOiBGYWNldCB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogR2V0IHZhbHVlLCBpbmNsdWRpbmcgcmljaCBvYmplY3QgdHlwZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29uZGl0aW9uKCk6IEZpbHRlckdyb3VwQ29uZGl0aW9uRmllbGQge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWxsb3cgdG8gY2xvc2UgdGhlIGRyb3Bkb3duIHdpdGggYSB2YWxpZCB2YWx1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duUmVmLmNsb3NlKHtcbiAgICAgICAgICAgICAgICBjb25kaXRpb246IHt9LFxuICAgICAgICAgICAgICAgIGZhY2V0OiB0aGlzLnNlbGVjdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGlzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuc2VsZWN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0RpcnR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG4iLCJAaWYgKGRhdGEudGl0bGUpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tdGl0bGUgbWF0LWJvZHktMlwiPnt7IGRhdGEudGl0bGUgfX08L2Rpdj5cbn1cbjxtYXQtbmF2LWxpc3Q+XG4gICAgQGZvciAoZmFjZXQgb2YgZmFjZXRzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPG1hdC1saXN0LWl0ZW0gKGNsaWNrKT1cInNlbGVjdGlvbiA9IGZhY2V0OyBjbG9zZSgpXCI+XG4gICAgICAgICAgICA8YT57eyBmYWNldC5kaXNwbGF5IH19PC9hPlxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgfVxuPC9tYXQtbmF2LWxpc3Q+XG4iXX0=
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { deepClone } from '../classes/utils';
|
|
3
|
-
import { NaturalInputComponent } from '../input/input.component';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class NaturalGroupComponent {
|
|
6
|
-
newValueInput;
|
|
7
|
-
/**
|
|
8
|
-
* Text display in the dropdown to select the facet
|
|
9
|
-
*/
|
|
10
|
-
dropdownTitle = '';
|
|
11
|
-
placeholder;
|
|
12
|
-
facets;
|
|
13
|
-
selectionChange = new EventEmitter();
|
|
14
|
-
innerSelections = [];
|
|
15
|
-
set selections(selection) {
|
|
16
|
-
this.innerSelections = deepClone(selection);
|
|
17
|
-
}
|
|
18
|
-
updateInput(selection, index) {
|
|
19
|
-
this.innerSelections[index] = selection;
|
|
20
|
-
this.selectionChange.emit(this.innerSelections);
|
|
21
|
-
}
|
|
22
|
-
addInput(selection) {
|
|
23
|
-
this.newValueInput.clear();
|
|
24
|
-
this.innerSelections.push(selection);
|
|
25
|
-
this.selectionChange.emit(this.innerSelections);
|
|
26
|
-
}
|
|
27
|
-
removeInput(index) {
|
|
28
|
-
this.innerSelections.splice(index, 1);
|
|
29
|
-
this.selectionChange.emit(this.innerSelections);
|
|
30
|
-
}
|
|
31
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalGroupComponent, isStandalone: true, selector: "natural-group", inputs: { dropdownTitle: "dropdownTitle", placeholder: "placeholder", facets: "facets", selections: "selections" }, outputs: { selectionChange: "selectionChange" }, viewQueries: [{ propertyName: "newValueInput", first: true, predicate: ["newValueInput"], descendants: true }], ngImport: i0, template: "@for (selection of innerSelections; track $index) {\n <natural-input\n (cleared)=\"removeInput($index)\"\n (selectionChange)=\"updateInput($event, $index)\"\n [facets]=\"facets\"\n [selection]=\"selection\"\n />\n}\n\n<natural-input\n #newValueInput\n (selectionChange)=\"addInput($event)\"\n [facets]=\"facets\"\n [placeholder]=\"placeholder\"\n tabIndex=\"10\"\n cdkFocusInitial\n [dropdownTitle]=\"dropdownTitle\"\n/>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap}:host natural-input{display:inline-flex;flex:auto;margin-right:10px;margin-bottom:10px}:host natural-input:last-of-type{flex:1;min-width:250px}\n"], dependencies: [{ kind: "component", type: NaturalInputComponent, selector: "natural-input", inputs: ["placeholder", "searchFieldName", "selection", "facets", "dropdownTitle"], outputs: ["selectionChange", "cleared"] }] });
|
|
33
|
-
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalGroupComponent, decorators: [{
|
|
35
|
-
type: Component,
|
|
36
|
-
args: [{ selector: 'natural-group', standalone: true, imports: [NaturalInputComponent], template: "@for (selection of innerSelections; track $index) {\n <natural-input\n (cleared)=\"removeInput($index)\"\n (selectionChange)=\"updateInput($event, $index)\"\n [facets]=\"facets\"\n [selection]=\"selection\"\n />\n}\n\n<natural-input\n #newValueInput\n (selectionChange)=\"addInput($event)\"\n [facets]=\"facets\"\n [placeholder]=\"placeholder\"\n tabIndex=\"10\"\n cdkFocusInitial\n [dropdownTitle]=\"dropdownTitle\"\n/>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap}:host natural-input{display:inline-flex;flex:auto;margin-right:10px;margin-bottom:10px}:host natural-input:last-of-type{flex:1;min-width:250px}\n"] }]
|
|
37
|
-
}], propDecorators: { newValueInput: [{
|
|
38
|
-
type: ViewChild,
|
|
39
|
-
args: ['newValueInput']
|
|
40
|
-
}], dropdownTitle: [{
|
|
41
|
-
type: Input
|
|
42
|
-
}], placeholder: [{
|
|
43
|
-
type: Input,
|
|
44
|
-
args: [{ required: true }]
|
|
45
|
-
}], facets: [{
|
|
46
|
-
type: Input,
|
|
47
|
-
args: [{ required: true }]
|
|
48
|
-
}], selectionChange: [{
|
|
49
|
-
type: Output
|
|
50
|
-
}], selections: [{
|
|
51
|
-
type: Input
|
|
52
|
-
}] } });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VhcmNoL2dyb3VwL2dyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9ncm91cC9ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7O0FBVy9ELE1BQU0sT0FBTyxxQkFBcUI7SUFDSyxhQUFhLENBQXlCO0lBRXpFOztPQUVHO0lBQ2EsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUNILFdBQVcsQ0FBVTtJQUNyQixNQUFNLENBQXVCO0lBQ25DLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztJQUN6RSxlQUFlLEdBQW9CLEVBQUUsQ0FBQztJQUU3QyxJQUFvQixVQUFVLENBQUMsU0FBMEI7UUFDckQsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLFdBQVcsQ0FBQyxTQUFpQyxFQUFFLEtBQWE7UUFDL0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSxRQUFRLENBQUMsU0FBaUM7UUFDN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDcEQsQ0FBQzt1R0E5QlEscUJBQXFCOzJGQUFyQixxQkFBcUIsOFZDYmxDLCtkQWtCQSxnUURQYyxxQkFBcUI7OzJGQUV0QixxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0ksZUFBZSxjQUdiLElBQUksV0FDUCxDQUFDLHFCQUFxQixDQUFDOzhCQUdHLGFBQWE7c0JBQS9DLFNBQVM7dUJBQUMsZUFBZTtnQkFLVixhQUFhO3NCQUE1QixLQUFLO2dCQUMwQixXQUFXO3NCQUExQyxLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztnQkFDUyxNQUFNO3NCQUFyQyxLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztnQkFDRyxlQUFlO3NCQUF4QyxNQUFNO2dCQUdhLFVBQVU7c0JBQTdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtkZWVwQ2xvbmV9IGZyb20gJy4uL2NsYXNzZXMvdXRpbHMnO1xuaW1wb3J0IHtOYXR1cmFsSW5wdXRDb21wb25lbnR9IGZyb20gJy4uL2lucHV0L2lucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQge05hdHVyYWxTZWFyY2hGYWNldHN9IGZyb20gJy4uL3R5cGVzL2ZhY2V0JztcbmltcG9ydCB7R3JvdXBTZWxlY3Rpb25zLCBOYXR1cmFsU2VhcmNoU2VsZWN0aW9ufSBmcm9tICcuLi90eXBlcy92YWx1ZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25hdHVyYWwtZ3JvdXAnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2dyb3VwLmNvbXBvbmVudC5zY3NzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOYXR1cmFsSW5wdXRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsR3JvdXBDb21wb25lbnQge1xuICAgIEBWaWV3Q2hpbGQoJ25ld1ZhbHVlSW5wdXQnKSBwdWJsaWMgbmV3VmFsdWVJbnB1dCE6IE5hdHVyYWxJbnB1dENvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIFRleHQgZGlzcGxheSBpbiB0aGUgZHJvcGRvd24gdG8gc2VsZWN0IHRoZSBmYWNldFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkcm9wZG93blRpdGxlID0gJyc7XG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pIHB1YmxpYyBwbGFjZWhvbGRlciE6IHN0cmluZztcbiAgICBASW5wdXQoe3JlcXVpcmVkOiB0cnVlfSkgcHVibGljIGZhY2V0cyE6IE5hdHVyYWxTZWFyY2hGYWNldHM7XG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEdyb3VwU2VsZWN0aW9ucz4oKTtcbiAgICBwdWJsaWMgaW5uZXJTZWxlY3Rpb25zOiBHcm91cFNlbGVjdGlvbnMgPSBbXTtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBzZXQgc2VsZWN0aW9ucyhzZWxlY3Rpb246IEdyb3VwU2VsZWN0aW9ucykge1xuICAgICAgICB0aGlzLmlubmVyU2VsZWN0aW9ucyA9IGRlZXBDbG9uZShzZWxlY3Rpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVJbnB1dChzZWxlY3Rpb246IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24sIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbm5lclNlbGVjdGlvbnNbaW5kZXhdID0gc2VsZWN0aW9uO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuaW5uZXJTZWxlY3Rpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkSW5wdXQoc2VsZWN0aW9uOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmV3VmFsdWVJbnB1dC5jbGVhcigpO1xuICAgICAgICB0aGlzLmlubmVyU2VsZWN0aW9ucy5wdXNoKHNlbGVjdGlvbik7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5pbm5lclNlbGVjdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVJbnB1dChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5uZXJTZWxlY3Rpb25zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5pbm5lclNlbGVjdGlvbnMpO1xuICAgIH1cbn1cbiIsIkBmb3IgKHNlbGVjdGlvbiBvZiBpbm5lclNlbGVjdGlvbnM7IHRyYWNrICRpbmRleCkge1xuICAgIDxuYXR1cmFsLWlucHV0XG4gICAgICAgIChjbGVhcmVkKT1cInJlbW92ZUlucHV0KCRpbmRleClcIlxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInVwZGF0ZUlucHV0KCRldmVudCwgJGluZGV4KVwiXG4gICAgICAgIFtmYWNldHNdPVwiZmFjZXRzXCJcbiAgICAgICAgW3NlbGVjdGlvbl09XCJzZWxlY3Rpb25cIlxuICAgIC8+XG59XG5cbjxuYXR1cmFsLWlucHV0XG4gICAgI25ld1ZhbHVlSW5wdXRcbiAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImFkZElucHV0KCRldmVudClcIlxuICAgIFtmYWNldHNdPVwiZmFjZXRzXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIHRhYkluZGV4PVwiMTBcIlxuICAgIGNka0ZvY3VzSW5pdGlhbFxuICAgIFtkcm9wZG93blRpdGxlXT1cImRyb3Bkb3duVGl0bGVcIlxuLz5cbiJdfQ==
|