@provoly/dashboard 0.22.4 → 0.22.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/README.md +0 -2
- package/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.d.ts +8 -4
- package/dataset/style/_o-pry-dataset-card.scss +24 -2
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +1 -1
- package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +1 -1
- package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +1 -1
- package/esm2022/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.mjs +7 -6
- package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +1 -1
- package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +44 -30
- package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +1 -1
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +3 -3
- package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +1 -1
- package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +1 -1
- package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +1 -1
- package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +1 -1
- package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +3 -3
- package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +1 -1
- package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +1 -1
- package/esm2022/components/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/components/metadata-editor/metadata-editor.component.mjs +1 -1
- package/esm2022/components/scheme-picker/scheme-picker.component.mjs +1 -1
- package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +3 -3
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -3
- package/esm2022/dataset/components/dataset.component.mjs +3 -3
- package/esm2022/dataset/style/css.component.mjs +2 -2
- package/esm2022/filters/autocomplete/autocomplete.component.mjs +1 -1
- package/esm2022/filters/list/list-filter.component.mjs +1 -1
- package/esm2022/import/components/import.component.mjs +1 -1
- package/esm2022/lib/core/components/about/about.component.mjs +3 -3
- package/esm2022/lib/core/components/base-menu/base-menu.component.mjs +3 -3
- package/esm2022/lib/core/components/base-toolbox-action/base-toolbox-action.component.mjs +3 -3
- package/esm2022/lib/core/components/chips-selector/chips-selector.component.mjs +8 -4
- package/esm2022/lib/core/components/overlay/dialog-confirm.component.mjs +3 -3
- package/esm2022/lib/core/components/select/select.component.mjs +21 -9
- package/esm2022/lib/core/components/select/select.module.mjs +5 -4
- package/esm2022/lib/core/components/select-image/select-image.component.mjs +2 -2
- package/esm2022/lib/core/components/share/share.component.mjs +1 -1
- package/esm2022/lib/core/i18n/en.translations.mjs +7 -2
- package/esm2022/lib/core/i18n/fr.translations.mjs +8 -3
- package/esm2022/lib/core/store/image/image.service.mjs +4 -3
- package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +3 -3
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +3 -3
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +3 -3
- package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +2 -2
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.mjs +16 -1
- package/esm2022/lib/dashboard/filter/components/filter-group/filter-group.component.mjs +3 -3
- package/esm2022/lib/dashboard/filter/style/css.component.mjs +2 -2
- package/esm2022/lib/dashboard/item-utils.mjs +2 -2
- package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +1 -4
- package/esm2022/lib/dashboard/store/refresh.service.mjs +14 -9
- package/esm2022/notification/store/notification.service.mjs +1 -1
- package/esm2022/notification/style/css.component.mjs +2 -2
- package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +3 -3
- package/esm2022/pipeline-components/filter/component/filter.component.mjs +1 -1
- package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +1 -1
- package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +1 -1
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +1 -1
- package/esm2022/presentation/components/presentation.component.mjs +4 -3
- package/esm2022/presentation/style/css.component.mjs +2 -2
- package/esm2022/restitution/components/restitution/restitution.component.mjs +3 -3
- package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +3 -3
- package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +3 -3
- package/esm2022/restitution/components/restitution-list-item/restitution-list-item.component.mjs +3 -3
- package/esm2022/restitution/style/css.component.mjs +2 -2
- package/esm2022/search/search-home/search-home.component.mjs +2 -2
- package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +1 -1
- package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +1 -1
- package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +1 -1
- package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +1 -1
- package/esm2022/toolbox/components/automate-refresh/automate-refresh.component.mjs +13 -10
- package/esm2022/toolbox/components/clear-view/clear-view.component.mjs +3 -3
- package/esm2022/toolbox/components/delete/delete.component.mjs +3 -3
- package/esm2022/toolbox/components/drag-widgets/drag-widgets.component.mjs +3 -3
- package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +20 -8
- package/esm2022/toolbox/components/launch-tab/launch-tab.component.mjs +3 -3
- package/esm2022/toolbox/components/refresh-datasets/refresh-datasets.component.mjs +20 -18
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +3 -3
- package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +3 -3
- package/esm2022/toolbox/components/share/share.component.mjs +4 -3
- package/esm2022/toolbox/components/switch-to-edit-content/switch-to-edit-content.component.mjs +3 -3
- package/esm2022/toolbox/components/toolbox.component.mjs +19 -6
- package/esm2022/toolbox/style/css.component.mjs +2 -2
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +3 -3
- package/esm2022/widgets/widget-aggregated-chart/style/css.component.mjs +2 -2
- package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +1 -1
- package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +4 -5
- package/esm2022/widgets/widget-graph/style/css.component.mjs +2 -2
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +8 -8
- package/esm2022/widgets/widget-map/pipe/widget-map-legend-url.pipe.mjs +3 -2
- package/esm2022/widgets/widget-map/style/css.component.mjs +3 -3
- package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +5 -1
- package/esm2022/widgets/widget-table/component/widget-table.component.mjs +1 -1
- package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +1 -1
- package/fesm2022/provoly-dashboard-admin.mjs +62 -47
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-checkbox.mjs +2 -2
- package/fesm2022/provoly-dashboard-components-checkbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +1 -1
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +8 -8
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +1 -1
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-list.mjs +1 -1
- package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-import.mjs +1 -1
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-notification.mjs +2 -2
- package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline.mjs +2 -2
- package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +6 -5
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +10 -10
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-search.mjs +5 -5
- package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +83 -52
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +4 -4
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +5 -6
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +14 -9
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +108 -65
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/components/overlay/dialog-confirm.component.d.ts +1 -1
- package/lib/core/components/select/select.component.d.ts +2 -1
- package/lib/core/components/select/select.module.d.ts +2 -1
- package/lib/core/i18n/en.translations.d.ts +5 -0
- package/lib/core/i18n/fr.translations.d.ts +5 -0
- package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +1 -1
- package/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.d.ts +8 -1
- package/lib/dashboard/filter/style/_o-pry-filter-group.scss +1 -1
- package/lib/dashboard/store/dashboard.selectors.d.ts +0 -13
- package/lib/dashboard/store/refresh.service.d.ts +3 -1
- package/notification/style/_m-notifications.scss +4 -10
- package/package.json +13 -13
- package/presentation/style/_o-pry-new-presentation.scss +0 -4
- package/presentation/style/_o-pry-presentation.scss +6 -4
- package/restitution/style/_o-restitution-list.scss +1 -1
- package/styles/abstracts/_mixins.scss +13 -0
- package/styles/components/_a-btn.scss +8 -26
- package/styles/components/_a-chip.scss +19 -0
- package/styles/components/_a-pry-select.scss +13 -0
- package/styles/components/_a-range-slider.scss +4 -5
- package/styles/components/_m-info-icon.scss +2 -3
- package/styles/components/_m-nav-links.scss +2 -7
- package/styles/components/{_o-datasources.scss → _o-chips-selector.scss} +3 -4
- package/styles/components/_o-dashboard.scss +41 -7
- package/styles/components/_o-modal.scss +1 -1
- package/styles/components/_o-widget.scss +11 -5
- package/styles/layout/_o-manifest-layout.scss +4 -0
- package/styles/libs/_reset-lib-ol.scss +9 -5
- package/styles/main.scss +7 -7
- package/styles-theme/abstracts-theme/_abstracts-overlays.theme.scss +6 -0
- package/styles-theme/abstracts-theme/variables/_variables-colors.scss +18 -24
- package/styles-theme/abstracts-theme/variables/_variables-decoration.scss +2 -2
- package/styles-theme/abstracts-theme/variables/_variables-typo.scss +2 -2
- package/styles-theme/base-theme/_typography.theme.scss +5 -2
- package/styles-theme/components-theme/_a-btn.theme.scss +42 -73
- package/styles-theme/components-theme/_a-checkbox.theme.scss +3 -45
- package/styles-theme/components-theme/_a-chip.theme.scss +32 -0
- package/styles-theme/components-theme/_a-form-field.theme.scss +1 -1
- package/styles-theme/components-theme/_a-label.theme.scss +1 -0
- package/styles-theme/components-theme/_a-pry-select.theme.scss +13 -7
- package/styles-theme/components-theme/_a-range-slider.theme.scss +16 -16
- package/styles-theme/components-theme/_a-table.theme.scss +2 -2
- package/styles-theme/components-theme/_a-toggle.theme.scss +7 -8
- package/styles-theme/components-theme/_m-btn-sorttable.theme.scss +3 -3
- package/styles-theme/components-theme/_m-filter.theme.scss +4 -13
- package/styles-theme/components-theme/_m-form-radio-group.theme.scss +17 -0
- package/styles-theme/components-theme/_m-info-icon.theme.scss +11 -0
- package/styles-theme/components-theme/_m-minus-plus.theme.scss +2 -2
- package/styles-theme/components-theme/_m-nav-links.theme.scss +18 -0
- package/styles-theme/components-theme/_m-notifications.theme.scss +8 -4
- package/styles-theme/components-theme/_m-time-picker.theme.scss +1 -1
- package/styles-theme/components-theme/_o-catalog.theme.scss +1 -1
- package/styles-theme/components-theme/_o-date-picker.theme.scss +2 -2
- package/styles-theme/components-theme/_o-draggable-menu.theme.scss +2 -2
- package/styles-theme/components-theme/_o-multi-class-field-selection.theme.scss +1 -1
- package/styles-theme/components-theme/_o-object-panel.theme.scss +1 -1
- package/styles-theme/components-theme/_o-pry-admin-classes-customize.theme.scss +0 -9
- package/styles-theme/components-theme/_o-pry-dataset-card.theme.scss +8 -0
- package/styles-theme/components-theme/_o-pry-presentation.theme.scss +18 -11
- package/styles-theme/components-theme/_o-pry-search-tools.theme.scss +2 -13
- package/styles-theme/components-theme/_o-pry-stepper.theme.scss +6 -8
- package/styles-theme/components-theme/_o-restitution-list.theme.scss +1 -1
- package/styles-theme/components-theme/_o-search-fulltext.theme.scss +2 -2
- package/styles-theme/components-theme/_o-search-multi-class.theme.scss +0 -5
- package/styles-theme/components-theme/_o-settings.theme.scss +1 -1
- package/styles-theme/components-theme/_o-tabs.theme.scss +1 -1
- package/styles-theme/components-theme/_o-widget-iframe.theme.scss +2 -2
- package/styles-theme/components-theme/_o-widget.theme.scss +31 -2
- package/styles-theme/components-theme/_overlay.theme.scss +3 -3
- package/styles-theme/layout-theme/_o-base-layout.theme.scss +4 -3
- package/styles-theme/layout-theme/_o-manifest-layout.theme.scss +8 -2
- package/styles-theme/libs-theme/_reset-lib-ol.theme.scss +12 -3
- package/styles-theme/main-theme.scss +6 -4
- package/toolbox/components/automate-refresh/automate-refresh.component.d.ts +3 -1
- package/toolbox/components/filter-settings/filter-settings.component.d.ts +3 -2
- package/toolbox/components/refresh-datasets/refresh-datasets.component.d.ts +3 -2
- package/toolbox/components/toolbox.component.d.ts +3 -1
- package/toolbox/style/_o-filter-settings.scss +0 -4
- package/toolbox/style/_o-toolbox.scss +2 -26
- package/widgets/widget-aggregated-chart/style/_o-widget-chart.scss +3 -0
- package/widgets/widget-graph/component/widget-graph.component.d.ts +0 -1
- package/widgets/widget-graph/style/_o-widget-graph.scss +14 -0
- package/widgets/widget-map/pipe/widget-map-legend-url.pipe.d.ts +1 -1
- package/widgets/widget-map/style/{_o-layer-legend.scss → _m-layer-legend.scss} +7 -8
- package/widgets/widget-map/style/_o-widget-map.scss +2 -2
- package/styles/components/_a-chips.scss +0 -15
- package/styles-theme/components-theme/_o-datasources.theme.scss +0 -41
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ComponentRef, EventEmitter, Injector, OnDestroy, ViewContainerRef } from '@angular/core';
|
|
2
2
|
import { Store } from '@ngrx/store';
|
|
3
|
-
import { Attribute, BaseTooltipComponent, Class, PryI18nService, SubscriptionnerDirective, TooltipFactoryService, TooltipOfClass } from '@provoly/dashboard';
|
|
3
|
+
import { Attribute, BaseTooltipComponent, Class, Field, PryI18nService, SubscriptionnerDirective, TooltipFactoryService, TooltipOfClass } from '@provoly/dashboard';
|
|
4
4
|
import { Observable } from 'rxjs';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export declare class AdminClassesCustomizeTooltipComponent extends SubscriptionnerDirective implements OnDestroy {
|
|
@@ -15,17 +15,20 @@ export declare class AdminClassesCustomizeTooltipComponent extends Subscriptionn
|
|
|
15
15
|
label: string;
|
|
16
16
|
}[]>;
|
|
17
17
|
advancedTooltip: boolean;
|
|
18
|
-
possibleAttributes: Attribute[];
|
|
19
18
|
possibleNonAttributesFields: Attribute[];
|
|
20
19
|
backPressed: EventEmitter<void>;
|
|
21
|
-
private _currentClass
|
|
22
|
-
private fields;
|
|
20
|
+
private _currentClass$;
|
|
23
21
|
strOptions: string;
|
|
24
22
|
tmpComponent?: ComponentRef<BaseTooltipComponent>;
|
|
25
23
|
defs: {
|
|
26
24
|
[p: string]: TooltipOfClass;
|
|
27
25
|
};
|
|
28
26
|
noTooltip: boolean;
|
|
27
|
+
classes$: Observable<Class[]>;
|
|
28
|
+
fields$: Observable<Field[]>;
|
|
29
|
+
attributesOfClass$: Observable<Attribute[]>;
|
|
30
|
+
mockData: any;
|
|
31
|
+
attributes: Attribute[];
|
|
29
32
|
set currentClass(clazz: Class | null | undefined);
|
|
30
33
|
get currentClass(): Class;
|
|
31
34
|
constructor(tooltipFactoryService: TooltipFactoryService, injector: Injector, translateService: PryI18nService, store: Store);
|
|
@@ -35,6 +38,7 @@ export declare class AdminClassesCustomizeTooltipComponent extends Subscriptionn
|
|
|
35
38
|
updateTemplate(): void;
|
|
36
39
|
goBack(): void;
|
|
37
40
|
changeAttributes($event: any): void;
|
|
41
|
+
private removeUnknown;
|
|
38
42
|
static ɵfac: i0.ɵɵFactoryDeclaration<AdminClassesCustomizeTooltipComponent, never>;
|
|
39
43
|
static ɵcmp: i0.ɵɵComponentDeclaration<AdminClassesCustomizeTooltipComponent, "pry-admin-classes-customize-tooltip", never, { "currentClass": { "alias": "currentClass"; "required": false; }; }, { "backPressed": "backPressed"; }, never, never, false, never>;
|
|
40
44
|
}
|
|
@@ -13,6 +13,17 @@
|
|
|
13
13
|
min-width: toRem(330);
|
|
14
14
|
height: toRem(150);
|
|
15
15
|
|
|
16
|
+
&:hover {
|
|
17
|
+
cursor: pointer;
|
|
18
|
+
|
|
19
|
+
.o-pry-dataset-card__footer {
|
|
20
|
+
pry-icon {
|
|
21
|
+
visibility: visible;
|
|
22
|
+
opacity: 1;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
16
27
|
&__header {
|
|
17
28
|
display: flex;
|
|
18
29
|
gap: toRem(15);
|
|
@@ -45,10 +56,21 @@
|
|
|
45
56
|
}
|
|
46
57
|
}
|
|
47
58
|
|
|
48
|
-
|
|
59
|
+
&__footer {
|
|
49
60
|
display: flex;
|
|
50
61
|
align-items: center;
|
|
51
|
-
|
|
62
|
+
justify-content: center;
|
|
63
|
+
|
|
64
|
+
.a-btn {
|
|
65
|
+
margin-left: toRem(20); // needed for centering the footer text
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
pry-icon {
|
|
69
|
+
visibility: hidden;
|
|
70
|
+
opacity: 0;
|
|
71
|
+
transition: visibility 100ms linear , opacity 100ms linear;
|
|
72
|
+
margin-left: toRem(3);
|
|
73
|
+
}
|
|
52
74
|
}
|
|
53
75
|
|
|
54
76
|
.dataset-name {
|
|
@@ -44,7 +44,7 @@ export class AdminAbacRulesFormComponent {
|
|
|
44
44
|
this.store.dispatch(AbacRulesActions.cancelAbacRuleEdition({ redirect: backPath.toString() }));
|
|
45
45
|
}
|
|
46
46
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AdminAbacRulesFormComponent, deps: [{ token: i1.Store }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
47
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AdminAbacRulesFormComponent, selector: "pry-admin-abac-rules-form", inputs: { readonly: "readonly", edit: "edit" }, ngImport: i0, template: "<ng-container *ngIf=\"editAbacRule$ | async as rule\">\n <form class=\"o-form\" #abacRuleForm=\"ngForm\">\n <div class=\"row\">\n <div class=\"col\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" id=\"name-label\" for=\"inputName\">\n {{ '@pry.admin.abac-rules.form.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"inputName\"\n type=\"text\"\n [ngModel]=\"rule.name\"\n (ngModelChange)=\"onChangeAbacRuleProperty('name', $event)\"\n class=\"a-form-field\"\n name=\"name\"\n #name=\"ngModel\"\n maxlength=\"50\"\n required\n [readonly]=\"readonly\"\n [attr.aria-labelledby]=\"isSubmitted && name?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && name?.invalid\"\n />\n <label\n class=\"a-label a-label--help -error\"\n id=\"name-error\"\n for=\"inputName\"\n *ngIf=\"isSubmitted && name.invalid\"\n >{{ '@pry.admin.required' | i18n }}</label\n >\n </div>\n\n <fieldset class=\"m-form-radio-group-wrapper\" [disabled]=\"readonly\">\n <legend class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.status' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </legend>\n <div class=\"m-form-radio-group\">\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"newRuleTrue\"\n name=\"active\"\n [ngModel]=\"rule.active\"\n (ngModelChange)=\"!readonly && onChangeAbacRuleProperty('active', $event)\"\n [value]=\"true\"\n />\n <label for=\"newRuleTrue\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.statusActive' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"newRuleFalse\"\n name=\"active\"\n [ngModel]=\"rule.active\"\n (ngModelChange)=\"!readonly && onChangeAbacRuleProperty('active', $event)\"\n [value]=\"false\"\n />\n <label for=\"newRuleFalse\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.statusInactive' | i18n }}\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n\n <div class=\"col\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"abac-rules-description\">{{\n '@pry.admin.abac-rules.form.description' | i18n\n }}</label>\n <textarea\n name=\"description\"\n id=\"abac-rules-description\"\n [ngModel]=\"rule.description\"\n (ngModelChange)=\"onChangeAbacRuleProperty('description', $event)\"\n class=\"a-form-field\"\n maxlength=\"90\"\n [readonly]=\"readonly\"\n ></textarea>\n </div>\n\n <div class=\"m-form-label-field\">\n <label id=\"predicate-label\" for=\"predicate\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.predicate' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"predicate\"\n [attr.aria-labelledby]=\"\n isSubmitted && abacRuleForm.form.get('predicate')?.invalid\n ? 'predicate-label predicate-error'\n : 'predicate-label'\n \"\n [readonly]=\"readonly\"\n [items]=\"predicates$ | async\"\n bindLabel=\"name\"\n bindValue=\"id\"\n [template]=\"templateOption\"\n name=\"predicate\"\n [ngModel]=\"rule.predicate\"\n (ngModelChange)=\"onChangeAbacRuleProperty('predicate', $event)\"\n [isForm]=\"!readonly\"\n [attr.aria-invalid]=\"isSubmitted && abacRuleForm.form.get('predicate')?.invalid\"\n required\n ></pry-select>\n\n <ng-template #templateOption let-item=\"item\">\n <ng-container *ngIf=\"toPredicate(item); let item\">\n <div class=\"u-display-flex -column\">\n <span>#{{ item.id }}</span>\n <span>{{ item.name }}</span>\n <span>{{ item.value }}</span>\n </div>\n </ng-container>\n </ng-template>\n <label\n class=\"a-label a-label--help -error\"\n id=\"predicate-error\"\n for=\"predicate\"\n *ngIf=\"isSubmitted && abacRuleForm.form.get('predicate')?.invalid\"\n >{{ '@pry.admin.required' | i18n }}</label\n >\n </div>\n\n <fieldset class=\"m-form-radio-group-wrapper\" [disabled]=\"readonly\">\n <legend class=\"a-label\">\n <label>{{ '@pry.admin.abac-rules.form.type' | i18n }}</label> *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </legend>\n\n <div class=\"m-form-radio-group\">\n <ng-container *ngIf=\"typeSelected$ | async; else typeNotSelected\">\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n disabled\n id=\"metadataId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n value=\"METADATA\"\n />\n <label class=\"a-label\" for=\"metadataId\">\n {{ '@pry.admin.abac-rules.form.typeMetadata' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n disabled\n id=\"attributeId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n value=\"ATTRIBUTE\"\n />\n <label class=\"a-label\" for=\"attributeId\">\n {{ '@pry.admin.abac-rules.form.typeAttribute' | i18n }}\n </label>\n </div>\n <span *ngIf=\"!readonly\" style=\"font-size: 12px; font-style: italic\">{{\n '@pry.admin.abac-rules.form.typeSelected' | i18n\n }}</span>\n </ng-container>\n\n <ng-template #typeNotSelected>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"metadataId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n (ngModelChange)=\"onChangeAbacRuleProperty('type', METADATA)\"\n value=\"METADATA\"\n [disabled]=\"readonly\"\n />\n <label class=\"a-label\" for=\"metadataId\">\n {{ '@pry.admin.abac-rules.form.typeMetadata' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"attributeId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n (ngModelChange)=\"onChangeAbacRuleProperty('type', ATTRIBUTE)\"\n value=\"ATTRIBUTE\"\n [disabled]=\"readonly\"\n />\n <label class=\"a-label\" for=\"attributeId\">\n {{ '@pry.admin.abac-rules.form.typeAttribute' | i18n }}\n </label>\n </div>\n </ng-template>\n </div>\n </fieldset>\n </div>\n </div>\n\n <ng-container *ngIf=\"editAbacRuleConditionsMasterId$ | async as masterId\">\n <div class=\"row\">\n <div class=\"col\">\n <pry-composed-condition\n class=\"o-component-pry-composed-condition\"\n style=\"margin: 1rem\"\n [rootElement]=\"true\"\n [id]=\"masterId\"\n [readonly]=\"readonly\"\n ></pry-composed-condition>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf=\"!readonly\" class=\"m-btn-group -align-center -width-sm\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"goBack()\">\n {{ '@pry.admin.cancel' | i18n }}\n </button>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"onCreateAbacRule(abacRuleForm)\">\n {{ '@pry.admin.' + (edit ? 'edit' : 'create') | i18n }}\n </button>\n </div>\n </form>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "loading", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "component", type: i6.ComposedConditionComponent, selector: "pry-composed-condition", inputs: ["id", "readonly", "rootElement"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.I18nPipe, name: "i18n" }] }); }
|
|
47
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AdminAbacRulesFormComponent, selector: "pry-admin-abac-rules-form", inputs: { readonly: "readonly", edit: "edit" }, ngImport: i0, template: "<ng-container *ngIf=\"editAbacRule$ | async as rule\">\n <form class=\"o-form\" #abacRuleForm=\"ngForm\">\n <div class=\"row\">\n <div class=\"col\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" id=\"name-label\" for=\"inputName\">\n {{ '@pry.admin.abac-rules.form.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"inputName\"\n type=\"text\"\n [ngModel]=\"rule.name\"\n (ngModelChange)=\"onChangeAbacRuleProperty('name', $event)\"\n class=\"a-form-field\"\n name=\"name\"\n #name=\"ngModel\"\n maxlength=\"50\"\n required\n [readonly]=\"readonly\"\n [attr.aria-labelledby]=\"isSubmitted && name?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && name?.invalid\"\n />\n <label\n class=\"a-label a-label--help -error\"\n id=\"name-error\"\n for=\"inputName\"\n *ngIf=\"isSubmitted && name.invalid\"\n >{{ '@pry.admin.required' | i18n }}</label\n >\n </div>\n\n <fieldset class=\"m-form-radio-group-wrapper\" [disabled]=\"readonly\">\n <legend class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.status' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </legend>\n <div class=\"m-form-radio-group\">\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"newRuleTrue\"\n name=\"active\"\n [ngModel]=\"rule.active\"\n (ngModelChange)=\"!readonly && onChangeAbacRuleProperty('active', $event)\"\n [value]=\"true\"\n />\n <label for=\"newRuleTrue\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.statusActive' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"newRuleFalse\"\n name=\"active\"\n [ngModel]=\"rule.active\"\n (ngModelChange)=\"!readonly && onChangeAbacRuleProperty('active', $event)\"\n [value]=\"false\"\n />\n <label for=\"newRuleFalse\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.statusInactive' | i18n }}\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n\n <div class=\"col\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"abac-rules-description\">{{\n '@pry.admin.abac-rules.form.description' | i18n\n }}</label>\n <textarea\n name=\"description\"\n id=\"abac-rules-description\"\n [ngModel]=\"rule.description\"\n (ngModelChange)=\"onChangeAbacRuleProperty('description', $event)\"\n class=\"a-form-field\"\n maxlength=\"90\"\n [readonly]=\"readonly\"\n ></textarea>\n </div>\n\n <div class=\"m-form-label-field\">\n <label id=\"predicate-label\" for=\"predicate\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.predicate' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"predicate\"\n [attr.aria-labelledby]=\"\n isSubmitted && abacRuleForm.form.get('predicate')?.invalid\n ? 'predicate-label predicate-error'\n : 'predicate-label'\n \"\n [readonly]=\"readonly\"\n [items]=\"predicates$ | async\"\n bindLabel=\"name\"\n bindValue=\"id\"\n [template]=\"templateOption\"\n name=\"predicate\"\n [ngModel]=\"rule.predicate\"\n (ngModelChange)=\"onChangeAbacRuleProperty('predicate', $event)\"\n [isForm]=\"!readonly\"\n [attr.aria-invalid]=\"isSubmitted && abacRuleForm.form.get('predicate')?.invalid\"\n required\n ></pry-select>\n\n <ng-template #templateOption let-item=\"item\">\n <ng-container *ngIf=\"toPredicate(item); let item\">\n <div class=\"u-display-flex -column\">\n <span>#{{ item.id }}</span>\n <span>{{ item.name }}</span>\n <span>{{ item.value }}</span>\n </div>\n </ng-container>\n </ng-template>\n <label\n class=\"a-label a-label--help -error\"\n id=\"predicate-error\"\n for=\"predicate\"\n *ngIf=\"isSubmitted && abacRuleForm.form.get('predicate')?.invalid\"\n >{{ '@pry.admin.required' | i18n }}</label\n >\n </div>\n\n <fieldset class=\"m-form-radio-group-wrapper\" [disabled]=\"readonly\">\n <legend class=\"a-label\">\n <label>{{ '@pry.admin.abac-rules.form.type' | i18n }}</label> *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </legend>\n\n <div class=\"m-form-radio-group\">\n <ng-container *ngIf=\"typeSelected$ | async; else typeNotSelected\">\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n disabled\n id=\"metadataId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n value=\"METADATA\"\n />\n <label class=\"a-label\" for=\"metadataId\">\n {{ '@pry.admin.abac-rules.form.typeMetadata' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n disabled\n id=\"attributeId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n value=\"ATTRIBUTE\"\n />\n <label class=\"a-label\" for=\"attributeId\">\n {{ '@pry.admin.abac-rules.form.typeAttribute' | i18n }}\n </label>\n </div>\n <span *ngIf=\"!readonly\" style=\"font-size: 12px; font-style: italic\">{{\n '@pry.admin.abac-rules.form.typeSelected' | i18n\n }}</span>\n </ng-container>\n\n <ng-template #typeNotSelected>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"metadataId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n (ngModelChange)=\"onChangeAbacRuleProperty('type', METADATA)\"\n value=\"METADATA\"\n [disabled]=\"readonly\"\n />\n <label class=\"a-label\" for=\"metadataId\">\n {{ '@pry.admin.abac-rules.form.typeMetadata' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"attributeId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n (ngModelChange)=\"onChangeAbacRuleProperty('type', ATTRIBUTE)\"\n value=\"ATTRIBUTE\"\n [disabled]=\"readonly\"\n />\n <label class=\"a-label\" for=\"attributeId\">\n {{ '@pry.admin.abac-rules.form.typeAttribute' | i18n }}\n </label>\n </div>\n </ng-template>\n </div>\n </fieldset>\n </div>\n </div>\n\n <ng-container *ngIf=\"editAbacRuleConditionsMasterId$ | async as masterId\">\n <div class=\"row\">\n <div class=\"col\">\n <pry-composed-condition\n class=\"o-component-pry-composed-condition\"\n style=\"margin: 1rem\"\n [rootElement]=\"true\"\n [id]=\"masterId\"\n [readonly]=\"readonly\"\n ></pry-composed-condition>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf=\"!readonly\" class=\"m-btn-group -align-center -width-sm\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"goBack()\">\n {{ '@pry.admin.cancel' | i18n }}\n </button>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"onCreateAbacRule(abacRuleForm)\">\n {{ '@pry.admin.' + (edit ? 'edit' : 'create') | i18n }}\n </button>\n </div>\n </form>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "component", type: i6.ComposedConditionComponent, selector: "pry-composed-condition", inputs: ["id", "readonly", "rootElement"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.I18nPipe, name: "i18n" }] }); }
|
|
48
48
|
}
|
|
49
49
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AdminAbacRulesFormComponent, decorators: [{
|
|
50
50
|
type: Component,
|
|
@@ -68,7 +68,7 @@ export class AttributeConditionComponent {
|
|
|
68
68
|
this.store.dispatch(AbacRulesActions.removeEditAbacRuleConditionFromComposed({ conditionId: parentId, childrenId: conditionId }));
|
|
69
69
|
}
|
|
70
70
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AttributeConditionComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
71
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AttributeConditionComponent, selector: "pry-attribute-condition", inputs: { readonly: "readonly", id: "id" }, ngImport: i0, template: "<ng-container *ngIf=\"condition$ | async as condition\">\n <ng-container *ngIf=\"attribute$ | async as attr; else noAttribute\">\n <ng-container *ngIf=\"field$ | async as field; else noField\">\n <div class=\"o-pry-attribute-condition\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-pressed=\"false\"\n *ngIf=\"!readonly\"\n (click)=\"onOpenPanel()\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n >\n <pry-icon iconSvg=\"drag_indicator\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.admin.abac-rules.delete' | i18n }}</span>\n\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n (backdropClick)=\"onClosePanel()\"\n >\n <div class=\"m-pry-overlay-panel-wrapper\">\n <div class=\"m-pry-overlay-panel\">\n <button\n class=\"pry-condition-delete\"\n (click)=\"onDeleteAttributeCondition(condition.id, condition.parentId)\"\n >\n {{ '@pry.admin.abac-rules.delete' | i18n }}\n </button>\n </div>\n </div>\n </ng-template>\n </button>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"attr_name\">Name</label>\n <input id=\"attr_name\" class=\"a-form-field\" type=\"text\" [value]=\"attr.name\" readonly />\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"condition_operator\">???</label>\n <pry-select\n id=\"condition_operator\"\n [style.width.px]=\"160\"\n [items]=\"operatorOptions$ | async\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n [ngModel]=\"condition.operator\"\n (ngModelChange)=\"onChangeOperator($event, condition.id)\"\n [readonly]=\"readonly\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"condition_value\">Name</label>\n <input\n id=\"condition_value\"\n [readonly]=\"readonly\"\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"condition.value\"\n (focusout)=\"onChangeValue($event, condition.id)\"\n />\n </div>\n </div>\n </ng-container>\n <ng-template #noField> Loading field ...</ng-template>\n </ng-container>\n <ng-template #noAttribute> Loading attribute ...</ng-template>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "loading", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "directive", type: i5.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i5.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
|
|
71
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AttributeConditionComponent, selector: "pry-attribute-condition", inputs: { readonly: "readonly", id: "id" }, ngImport: i0, template: "<ng-container *ngIf=\"condition$ | async as condition\">\n <ng-container *ngIf=\"attribute$ | async as attr; else noAttribute\">\n <ng-container *ngIf=\"field$ | async as field; else noField\">\n <div class=\"o-pry-attribute-condition\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-pressed=\"false\"\n *ngIf=\"!readonly\"\n (click)=\"onOpenPanel()\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n >\n <pry-icon iconSvg=\"drag_indicator\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.admin.abac-rules.delete' | i18n }}</span>\n\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n (backdropClick)=\"onClosePanel()\"\n >\n <div class=\"m-pry-overlay-panel-wrapper\">\n <div class=\"m-pry-overlay-panel\">\n <button\n class=\"pry-condition-delete\"\n (click)=\"onDeleteAttributeCondition(condition.id, condition.parentId)\"\n >\n {{ '@pry.admin.abac-rules.delete' | i18n }}\n </button>\n </div>\n </div>\n </ng-template>\n </button>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"attr_name\">Name</label>\n <input id=\"attr_name\" class=\"a-form-field\" type=\"text\" [value]=\"attr.name\" readonly />\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"condition_operator\">???</label>\n <pry-select\n id=\"condition_operator\"\n [style.width.px]=\"160\"\n [items]=\"operatorOptions$ | async\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n [ngModel]=\"condition.operator\"\n (ngModelChange)=\"onChangeOperator($event, condition.id)\"\n [readonly]=\"readonly\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"condition_value\">Name</label>\n <input\n id=\"condition_value\"\n [readonly]=\"readonly\"\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"condition.value\"\n (focusout)=\"onChangeValue($event, condition.id)\"\n />\n </div>\n </div>\n </ng-container>\n <ng-template #noField> Loading field ...</ng-template>\n </ng-container>\n <ng-template #noAttribute> Loading attribute ...</ng-template>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "directive", type: i5.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i5.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
|
|
72
72
|
}
|
|
73
73
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AttributeConditionComponent, decorators: [{
|
|
74
74
|
type: Component,
|
|
@@ -55,7 +55,7 @@ export class MetadataConditionComponent {
|
|
|
55
55
|
this.store.dispatch(AbacRulesActions.removeEditAbacRuleConditionFromComposed({ conditionId: parentId, childrenId: conditionId }));
|
|
56
56
|
}
|
|
57
57
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataConditionComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
58
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataConditionComponent, selector: "pry-metadata-condition", inputs: { readonly: "readonly", id: "id" }, ngImport: i0, template: "<ng-container *ngIf=\"condition$ | async as condition\">\n <ng-container *ngIf=\"metadata$ | async as metadata; else noMetadata\">\n <div class=\"o-pry-metadata-condition\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-pressed=\"false\"\n (click)=\"deleteConditionOpen = true\"\n [pryOverlay]=\"deleteConditionTpl\"\n [(overlayOpen)]=\"deleteConditionOpen\"\n >\n <pry-icon *ngIf=\"!readonly\" iconSvg=\"drag_indicator\"></pry-icon>\n <span class=\"u-visually-hidden\">???</span>\n </button>\n\n <ng-template #deleteConditionTpl>\n <button class=\"m-pry-overlay-item\" (click)=\"onDeleteMetadataCondition(condition.id, condition.parentId)\">\n {{ '@pry.admin.abac-rules.delete' | i18n }}\n </button>\n </ng-template>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"metadata_name\">Name</label>\n <input id=\"metadata_name\" class=\"a-form-field\" type=\"text\" [value]=\"metadata.name\" readonly />\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"metadata_operator\">???</label>\n <pry-select\n id=\"metadata_operator\"\n [readonly]=\"readonly\"\n [style.width.px]=\"160\"\n [items]=\"operators$ | async\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n [ngModel]=\"condition.operator\"\n (ngModelChange)=\"onChangeOperator($event, condition.id)\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"condition_value\">???</label>\n <input\n id=\"condition_value\"\n class=\"a-form-field\"\n [readonly]=\"readonly\"\n type=\"text\"\n [style.width.px]=\"200\"\n [value]=\"condition.value\"\n (focusout)=\"onChangeValue($event, condition.id)\"\n />\n </div>\n\n <button\n type=\"button\"\n aria-pressed=\"false\"\n *ngIf=\"!readonly\"\n class=\"a-btn a-btn--select -size-sm\"\n [pryOverlay]=\"metadataUserTpl\"\n [(overlayOpen)]=\"metadataUserOpen\"\n (click)=\"metadataUserOpen = true\"\n >\n {{ '@pry.admin.abac-rules.metadataUser' | i18n }}\n </button>\n\n <ng-template #metadataUserTpl>\n <div class=\"m-pry-overlay-wrapper\">\n <ng-container *ngFor=\"let metadataUser of metadataUsers$ | async\">\n <button class=\"m-pry-overlay-item\" (click)=\"onSelectMetadataUser(condition.id, metadataUser)\">\n {{ metadataUser.name }}\n </button>\n </ng-container>\n </div>\n </ng-template>\n </div>\n </ng-container>\n <ng-template #noMetadata> Loading ...</ng-template>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "loading", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "directive", type: i3.PryOverlayDirective, selector: "[pryOverlay]", inputs: ["pryOverlay", "styleReversed", "pryOverlaySticky", "pryOverlayNoPadding", "pryOverlayPosition", "overlayOpen", "hasBackdrop"], outputs: ["overlayOpenChange"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
|
|
58
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataConditionComponent, selector: "pry-metadata-condition", inputs: { readonly: "readonly", id: "id" }, ngImport: i0, template: "<ng-container *ngIf=\"condition$ | async as condition\">\n <ng-container *ngIf=\"metadata$ | async as metadata; else noMetadata\">\n <div class=\"o-pry-metadata-condition\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-pressed=\"false\"\n (click)=\"deleteConditionOpen = true\"\n [pryOverlay]=\"deleteConditionTpl\"\n [(overlayOpen)]=\"deleteConditionOpen\"\n >\n <pry-icon *ngIf=\"!readonly\" iconSvg=\"drag_indicator\"></pry-icon>\n <span class=\"u-visually-hidden\">???</span>\n </button>\n\n <ng-template #deleteConditionTpl>\n <button class=\"m-pry-overlay-item\" (click)=\"onDeleteMetadataCondition(condition.id, condition.parentId)\">\n {{ '@pry.admin.abac-rules.delete' | i18n }}\n </button>\n </ng-template>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"metadata_name\">Name</label>\n <input id=\"metadata_name\" class=\"a-form-field\" type=\"text\" [value]=\"metadata.name\" readonly />\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"metadata_operator\">???</label>\n <pry-select\n id=\"metadata_operator\"\n [readonly]=\"readonly\"\n [style.width.px]=\"160\"\n [items]=\"operators$ | async\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n [ngModel]=\"condition.operator\"\n (ngModelChange)=\"onChangeOperator($event, condition.id)\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"condition_value\">???</label>\n <input\n id=\"condition_value\"\n class=\"a-form-field\"\n [readonly]=\"readonly\"\n type=\"text\"\n [style.width.px]=\"200\"\n [value]=\"condition.value\"\n (focusout)=\"onChangeValue($event, condition.id)\"\n />\n </div>\n\n <button\n type=\"button\"\n aria-pressed=\"false\"\n *ngIf=\"!readonly\"\n class=\"a-btn a-btn--select -size-sm\"\n [pryOverlay]=\"metadataUserTpl\"\n [(overlayOpen)]=\"metadataUserOpen\"\n (click)=\"metadataUserOpen = true\"\n >\n {{ '@pry.admin.abac-rules.metadataUser' | i18n }}\n </button>\n\n <ng-template #metadataUserTpl>\n <div class=\"m-pry-overlay-wrapper\">\n <ng-container *ngFor=\"let metadataUser of metadataUsers$ | async\">\n <button class=\"m-pry-overlay-item\" (click)=\"onSelectMetadataUser(condition.id, metadataUser)\">\n {{ metadataUser.name }}\n </button>\n </ng-container>\n </div>\n </ng-template>\n </div>\n </ng-container>\n <ng-template #noMetadata> Loading ...</ng-template>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "directive", type: i3.PryOverlayDirective, selector: "[pryOverlay]", inputs: ["pryOverlay", "styleReversed", "pryOverlaySticky", "pryOverlayNoPadding", "pryOverlayPosition", "overlayOpen", "hasBackdrop"], outputs: ["overlayOpenChange"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
|
|
59
59
|
}
|
|
60
60
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataConditionComponent, decorators: [{
|
|
61
61
|
type: Component,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
|
|
2
2
|
import { Component } from '@angular/core';
|
|
3
|
-
import { ClassActions, ClassSelectors, ConfigActions, ConfigSelectors, FieldSelectors, ItemUtils, SubscriptionnerDirective } from '@provoly/dashboard';
|
|
3
|
+
import { ClassActions, ClassSelectors, ConfigActions, ConfigSelectors, FieldActions, FieldSelectors, ItemUtils, SubscriptionnerDirective } from '@provoly/dashboard';
|
|
4
4
|
import { combineLatest, combineLatestWith, map, of, switchMap } from 'rxjs';
|
|
5
5
|
import { AdminClassActions } from '../store/admin-class.actions';
|
|
6
6
|
import { AdminClassSelectors } from '../store/admin-class.selectors';
|
|
@@ -27,6 +27,7 @@ export class AdminClassesCustomizeComponent extends SubscriptionnerDirective {
|
|
|
27
27
|
this.maxTilesAttributes = 5;
|
|
28
28
|
this.subscriptions.add(this.route.params.subscribe((params) => this.store.dispatch(AdminClassActions.selectClass({ clazz: { id: params['id'] } }))));
|
|
29
29
|
this.store.dispatch(ClassActions.load());
|
|
30
|
+
this.store.dispatch(FieldActions.load());
|
|
30
31
|
this.store.dispatch(ConfigActions.loadCustomization());
|
|
31
32
|
this.fields$ = this.store.select(FieldSelectors.fields);
|
|
32
33
|
this.currentClass$ = combineLatest([
|
|
@@ -38,15 +39,15 @@ export class AdminClassesCustomizeComponent extends SubscriptionnerDirective {
|
|
|
38
39
|
this.subscriptions.add(this.currentPropertiesConfig$.pipe(combineLatestWith(this.currentClass$)).subscribe(([attrs, clazz]) => {
|
|
39
40
|
this.defaultAttributes = JSON.parse(JSON.stringify(attrs));
|
|
40
41
|
this.otherAttributes = (clazz ?? { attributes: [] }).attributes
|
|
41
|
-
.filter((attr) => !attrs.includes(attr.
|
|
42
|
-
.map((attr) => attr.
|
|
42
|
+
.filter((attr) => !attrs.includes(attr.name))
|
|
43
|
+
.map((attr) => attr.name);
|
|
43
44
|
}));
|
|
44
45
|
this.currentTilePropertiesConfig$ = this.store.select(ConfigSelectors.tileAttributesDefinitions).pipe(combineLatestWith(this.currentClass$, this.fields$), map(([defs, clazz, fields]) => ItemUtils.getAttributesDefinitionForClass((clazz ?? { attributes: [] }), defs, fields)), map((attrs) => attrs.filter((_, i) => i < this.maxTilesAttributes)));
|
|
45
46
|
this.subscriptions.add(this.currentTilePropertiesConfig$.pipe(combineLatestWith(this.currentClass$)).subscribe(([attrs, clazz]) => {
|
|
46
47
|
this.defaultTileAttributes = JSON.parse(JSON.stringify(attrs));
|
|
47
48
|
this.otherTileAttributes = (clazz ?? { attributes: [] }).attributes
|
|
48
|
-
.filter((attr) => !attrs.includes(attr.
|
|
49
|
-
.map((attr) => attr.
|
|
49
|
+
.filter((attr) => !attrs.includes(attr.name))
|
|
50
|
+
.map((attr) => attr.name);
|
|
50
51
|
}));
|
|
51
52
|
this.subscriptions.add(this.store.select(ConfigSelectors.maxAttributesInTiles).subscribe((max) => {
|
|
52
53
|
this.maxTilesAttributes = max;
|
|
@@ -88,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
88
89
|
type: Component,
|
|
89
90
|
args: [{ selector: 'pry-admin-classes-customize', template: "<div class=\"o-pry-admin-classes-customize\">\n <h1 class=\"a-h1\" id=\"tab-custom\">{{ '@pry.admin.customize.title' | i18n }}</h1>\n\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"customizeTemplate\" name=\"customize.template\"></pry-tab>\n <pry-tab [templateRef]=\"customizeTable\" name=\"customize.table\"></pry-tab>\n <pry-tab [templateRef]=\"customizeSymbol\" name=\"classes.rules\"></pry-tab>\n <pry-tab [templateRef]=\"customizeTile\" name=\"customize.tile\"></pry-tab>\n </pry-tab-group>\n\n <ng-template #customizeTemplate>\n <pry-admin-classes-customize-tooltip\n (backPressed)=\"goBack()\"\n [currentClass]=\"currentClass$ | async\"\n ></pry-admin-classes-customize-tooltip>\n </ng-template>\n <ng-template #customizeTable>\n <div class=\"container\">\n <h2>{{ '@pry.admin.customize.tableAttrs' | i18n }}</h2>\n <div\n cdkDropList\n #defaultList=\"cdkDropList\"\n [cdkDropListData]=\"defaultAttributes\"\n [cdkDropListConnectedTo]=\"[notDefaultList]\"\n class=\"list\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n <div class=\"item\" *ngFor=\"let item of defaultAttributes\" cdkDrag>{{ item }}</div>\n </div>\n </div>\n\n <div class=\"container\">\n <h2>{{ '@pry.admin.customize.noTableAttrs' | i18n }}</h2>\n <div\n cdkDropList\n #notDefaultList=\"cdkDropList\"\n [cdkDropListData]=\"otherAttributes\"\n [cdkDropListConnectedTo]=\"[defaultList]\"\n class=\"list\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n <div class=\"item\" *ngFor=\"let item of otherAttributes\" cdkDrag>{{ item }}</div>\n </div>\n </div>\n\n <div class=\"m-btn-group -width-lg\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button class=\"a-btn a-btn--primary\" type=\"submit\" (click)=\"updateTableAttrs()\">\n {{ '@pry.admin.customize.updateTable' | i18n }}\n </button>\n </div>\n </ng-template>\n <ng-template #customizeSymbol>\n <pry-admin-classes-customize-symbol\n (backPressed)=\"goBack()\"\n [currentClass]=\"currentClass$ | async\"\n ></pry-admin-classes-customize-symbol>\n </ng-template>\n <ng-template #customizeTile>\n <div class=\"container\">\n <h2>{{ '@pry.admin.customize.tile' | i18n }}</h2>\n <div\n cdkDropList\n #defaultTilesList=\"cdkDropList\"\n [cdkDropListData]=\"defaultTileAttributes\"\n [cdkDropListConnectedTo]=\"[notDefaultTilesList]\"\n class=\"list\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n <div class=\"item\" *ngFor=\"let item of defaultTileAttributes\" cdkDrag>{{ item }}</div>\n </div>\n </div>\n\n <div class=\"container\">\n <h2>{{ '@pry.admin.customize.noTileAttrs' | i18n }}</h2>\n <div\n cdkDropList\n #notDefaultTilesList=\"cdkDropList\"\n [cdkDropListData]=\"otherTileAttributes\"\n [cdkDropListConnectedTo]=\"[defaultTilesList]\"\n class=\"list\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n <div class=\"item\" *ngFor=\"let item of otherTileAttributes\" cdkDrag>{{ item }}</div>\n </div>\n </div>\n\n <div>\n <ng-container *ngIf=\"!isTileConfValid()\">\n <p>{{ '@pry.admin.customize.tileHint' | i18n : { max: maxTilesAttributes } }}</p>\n </ng-container>\n </div>\n\n <div class=\"m-btn-group -width-lg\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button class=\"a-btn a-btn--primary\" type=\"submit\" (click)=\"updateTileAttrs()\" [disabled]=\"!isTileConfValid()\">\n {{ '@pry.admin.customize.updateTile' | i18n }}\n </button>\n </div>\n </ng-template>\n</div>\n" }]
|
|
90
91
|
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Router }, { type: i2.ActivatedRoute }]; } });
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tY2xhc3Nlcy1jdXN0b21pemUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvYWRtaW4vY29tcG9uZW50cy9hZG1pbi1jbGFzc2VzL2FkbWluLWNsYXNzZXMtY3VzdG9taXplL2FkbWluLWNsYXNzZXMtY3VzdG9taXplLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2FkbWluL2NvbXBvbmVudHMvYWRtaW4tY2xhc3Nlcy9hZG1pbi1jbGFzc2VzLWN1c3RvbWl6ZS9hZG1pbi1jbGFzc2VzLWN1c3RvbWl6ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUdyRCxPQUFPLEVBRUwsWUFBWSxFQUNaLGNBQWMsRUFDZCxhQUFhLEVBQ2IsZUFBZSxFQUVmLGNBQWMsRUFDZCxTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3pCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7O0FBTXJFLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSx3QkFBd0I7SUFhMUUsWUFBb0IsS0FBaUIsRUFBVSxNQUFjLEVBQVUsS0FBcUI7UUFDMUYsS0FBSyxFQUFFLENBQUM7UUFEVSxVQUFLLEdBQUwsS0FBSyxD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O1FBQ2IsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUMvRyxDQUFDOytHQW5HVSw4QkFBOEI7bUdBQTlCLDhCQUE4QiwwRkN2QjNDLGc5SEErR0E7OzRGRHhGYSw4QkFBOEI7a0JBSjFDLFNBQVM7K0JBQ0UsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSwgdHJhbnNmZXJBcnJheUl0ZW0gfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQ2xhc3MsXG4gIENsYXNzQWN0aW9ucyxcbiAgQ2xhc3NTZWxlY3RvcnMsXG4gIENvbmZpZ0FjdGlvbnMsXG4gIENvbmZpZ1NlbGVjdG9ycyxcbiAgRmllbGQsXG4gIEZpZWxkU2VsZWN0b3JzLFxuICBJdGVtVXRpbHMsXG4gIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZVxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgY29tYmluZUxhdGVzdFdpdGgsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWRtaW5DbGFzc0FjdGlvbnMgfSBmcm9tICcuLi9zdG9yZS9hZG1pbi1jbGFzcy5hY3Rpb25zJztcbmltcG9ydCB7IEFkbWluQ2xhc3NTZWxlY3RvcnMgfSBmcm9tICcuLi9zdG9yZS9hZG1pbi1jbGFzcy5zZWxlY3RvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktYWRtaW4tY2xhc3Nlcy1jdXN0b21pemUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRtaW4tY2xhc3Nlcy1jdXN0b21pemUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFkbWluQ2xhc3Nlc0N1c3RvbWl6ZUNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIGN1cnJlbnRDbGFzcyQ6IE9ic2VydmFibGU8Q2xhc3MgfCB1bmRlZmluZWQ+O1xuICBjdXJyZW50Q2xhc3M6IENsYXNzID0ge30gYXMgQ2xhc3M7XG4gIGRlZmF1bHRBdHRyaWJ1dGVzOiBzdHJpbmdbXSA9IFtdO1xuICBvdGhlckF0dHJpYnV0ZXM6IHN0cmluZ1tdID0gW107XG4gIGN1cnJlbnRQcm9wZXJ0aWVzQ29uZmlnJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG4gIGN1cnJlbnRUaWxlUHJvcGVydGllc0NvbmZpZyQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuICBjbGFzc2VzJDogT2JzZXJ2YWJsZTxDbGFzc1tdPiA9IG9mKFtdKTtcbiAgZGVmYXVsdFRpbGVBdHRyaWJ1dGVzOiBzdHJpbmdbXSA9IFtdO1xuICBvdGhlclRpbGVBdHRyaWJ1dGVzOiBzdHJpbmdbXSA9IFtdO1xuICBtYXhUaWxlc0F0dHJpYnV0ZXMgPSA1O1xuICBmaWVsZHMkOiBPYnNlcnZhYmxlPEZpZWxkW10+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlPGFueT4sIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQWRtaW5DbGFzc0FjdGlvbnMuc2VsZWN0Q2xhc3MoeyBjbGF6ejogeyBpZDogcGFyYW1zWydpZCddIH0gYXMgQ2xhc3MgfSkpXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENsYXNzQWN0aW9ucy5sb2FkKCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5sb2FkQ3VzdG9taXphdGlvbigpKTtcbiAgICB0aGlzLmZpZWxkcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChGaWVsZFNlbGVjdG9ycy5maWVsZHMpO1xuICAgIHRoaXMuY3VycmVudENsYXNzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQWRtaW5DbGFzc1NlbGVjdG9ycy5zZWxlY3RlZENsYXNzKSxcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KENsYXNzU2VsZWN0b3JzLmNsYXNzZXMpXG4gICAgXSkucGlwZShzd2l0Y2hNYXAoKFtjbGF6eiwgX10pID0+IHRoaXMuc3RvcmUuc2VsZWN0KENsYXNzU2VsZWN0b3JzLmNsYXNzQnlJZChjbGF6ej8uaWQgPz8gJycpKSkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5jdXJyZW50Q2xhc3MkLnN1YnNjcmliZSgoY2xhenopID0+ICh0aGlzLmN1cnJlbnRDbGFzcyA9IGNsYXp6ID8/ICh7fSBhcyBDbGFzcykpKSk7XG4gICAgdGhpcy5jdXJyZW50UHJvcGVydGllc0NvbmZpZyQgPSB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMudGFibGVEZWZhdWx0QXR0cmlidXRlc0RlZmluaXRpb25zKS5waXBlKFxuICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy5jdXJyZW50Q2xhc3MkLCB0aGlzLmZpZWxkcyQpLFxuICAgICAgbWFwKChbZGVmcywgY2xhenosIGZpZWxkc10pID0+XG4gICAgICAgIEl0ZW1VdGlscy5nZXRBdHRyaWJ1dGVzRGVmaW5pdGlvbkZvckNsYXNzKChjbGF6eiA/PyB7IGF0dHJpYnV0ZXM6IFtdIH0pIGFzIENsYXNzLCBkZWZzLCBmaWVsZHMpXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5jdXJyZW50UHJvcGVydGllc0NvbmZpZyQucGlwZShjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLmN1cnJlbnRDbGFzcyQpKS5zdWJzY3JpYmUoKFthdHRycywgY2xhenpdKSA9PiB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEF0dHJpYnV0ZXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGF0dHJzKSk7XG4gICAgICAgIHRoaXMub3RoZXJBdHRyaWJ1dGVzID0gKGNsYXp6ID8/IHsgYXR0cmlidXRlczogW10gfSkuYXR0cmlidXRlc1xuICAgICAgICAgIC5maWx0ZXIoKGF0dHIpID0+ICFhdHRycy5pbmNsdWRlcyhhdHRyLnRlY2huaWNhbE5hbWUpKVxuICAgICAgICAgIC5tYXAoKGF0dHIpID0+IGF0dHIudGVjaG5pY2FsTmFtZSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5jdXJyZW50VGlsZVByb3BlcnRpZXNDb25maWckID0gdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLnRpbGVBdHRyaWJ1dGVzRGVmaW5pdGlvbnMpLnBpcGUoXG4gICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLmN1cnJlbnRDbGFzcyQsIHRoaXMuZmllbGRzJCksXG4gICAgICBtYXAoKFtkZWZzLCBjbGF6eiwgZmllbGRzXSkgPT5cbiAgICAgICAgSXRlbVV0aWxzLmdldEF0dHJpYnV0ZXNEZWZpbml0aW9uRm9yQ2xhc3MoKGNsYXp6ID8/IHsgYXR0cmlidXRlczogW10gfSkgYXMgQ2xhc3MsIGRlZnMsIGZpZWxkcylcbiAgICAgICksXG4gICAgICBtYXAoKGF0dHJzKSA9PiBhdHRycy5maWx0ZXIoKF8sIGkpID0+IGkgPCB0aGlzLm1heFRpbGVzQXR0cmlidXRlcykpXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5jdXJyZW50VGlsZVByb3BlcnRpZXNDb25maWckLnBpcGUoY29tYmluZUxhdGVzdFdpdGgodGhpcy5jdXJyZW50Q2xhc3MkKSkuc3Vic2NyaWJlKChbYXR0cnMsIGNsYXp6XSkgPT4ge1xuICAgICAgICB0aGlzLmRlZmF1bHRUaWxlQXR0cmlidXRlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYXR0cnMpKTtcbiAgICAgICAgdGhpcy5vdGhlclRpbGVBdHRyaWJ1dGVzID0gKGNsYXp6ID8/IHsgYXR0cmlidXRlczogW10gfSkuYXR0cmlidXRlc1xuICAgICAgICAgIC5maWx0ZXIoKGF0dHIpID0+ICFhdHRycy5pbmNsdWRlcyhhdHRyLnRlY2huaWNhbE5hbWUpKVxuICAgICAgICAgIC5tYXAoKGF0dHIpID0+IGF0dHIudGVjaG5pY2FsTmFtZSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5tYXhBdHRyaWJ1dGVzSW5UaWxlcykuc3Vic2NyaWJlKChtYXgpID0+IHtcbiAgICAgICAgdGhpcy5tYXhUaWxlc0F0dHJpYnV0ZXMgPSBtYXg7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnb0JhY2soKSB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWycuLi8uLiddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChBZG1pbkNsYXNzQWN0aW9ucy5iYWNrKHsgcGF0aDogcGF0aC50b1N0cmluZygpIH0pKTtcbiAgfVxuXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPikge1xuICAgIGlmIChldmVudC5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXZlbnQuY29udGFpbmVyKSB7XG4gICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyYW5zZmVyQXJyYXlJdGVtKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsIGV2ZW50LmNvbnRhaW5lci5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIH1cbiAgICBjb25zdCB0b1NvcnQgPSBldmVudC5wcmV2aW91c0NvbnRhaW5lci5pZCA9PT0gJ2Nkay1kcm9wLWxpc3QtMScgPyBldmVudC5wcmV2aW91c0NvbnRhaW5lciA6IGV2ZW50LmNvbnRhaW5lcjtcbiAgICB0b1NvcnQuZGF0YS5zb3J0KChhLCBiKSA9PiBhLnRvTG93ZXJDYXNlKCkubG9jYWxlQ29tcGFyZShiLnRvTG93ZXJDYXNlKCkpKTtcbiAgfVxuXG4gIHVwZGF0ZVRhYmxlQXR0cnMoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIENvbmZpZ0FjdGlvbnMuc2F2ZVRhYmxlRGVmYXVsdEF0dHJpYnV0ZXMoe1xuICAgICAgICBkZWZpbml0aW9uczogeyBbdGhpcy5jdXJyZW50Q2xhc3MuaWRdOiB0aGlzLmRlZmF1bHRBdHRyaWJ1dGVzLnNvcnQoKSB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5nb0JhY2soKTtcbiAgfVxuXG4gIHVwZGF0ZVRpbGVBdHRycygpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgQ29uZmlnQWN0aW9ucy5zYXZlVGlsZUF0dHJpYnV0ZXMoe1xuICAgICAgICBkZWZpbml0aW9uczogeyBbdGhpcy5jdXJyZW50Q2xhc3MuaWRdOiB0aGlzLmRlZmF1bHRUaWxlQXR0cmlidXRlcyB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5nb0JhY2soKTtcbiAgfVxuXG4gIGlzVGlsZUNvbmZWYWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0VGlsZUF0dHJpYnV0ZXMubGVuZ3RoID4gMCAmJiB0aGlzLmRlZmF1bHRUaWxlQXR0cmlidXRlcy5sZW5ndGggPD0gdGhpcy5tYXhUaWxlc0F0dHJpYnV0ZXM7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJvLXByeS1hZG1pbi1jbGFzc2VzLWN1c3RvbWl6ZVwiPlxuICA8aDEgY2xhc3M9XCJhLWgxXCIgaWQ9XCJ0YWItY3VzdG9tXCI+e3sgJ0BwcnkuYWRtaW4uY3VzdG9taXplLnRpdGxlJyB8IGkxOG4gfX08L2gxPlxuXG4gIDxwcnktdGFiLWdyb3VwIHRyYW5zbGF0aW9uU3RyaW5nQmFzZT1cIkBwcnkuYWRtaW4uXCI+XG4gICAgPHByeS10YWIgW3RlbXBsYXRlUmVmXT1cImN1c3RvbWl6ZVRlbXBsYXRlXCIgbmFtZT1cImN1c3RvbWl6ZS50ZW1wbGF0ZVwiPjwvcHJ5LXRhYj5cbiAgICA8cHJ5LXRhYiBbdGVtcGxhdGVSZWZdPVwiY3VzdG9taXplVGFibGVcIiBuYW1lPVwiY3VzdG9taXplLnRhYmxlXCI+PC9wcnktdGFiPlxuICAgIDxwcnktdGFiIFt0ZW1wbGF0ZVJlZl09XCJjdXN0b21pemVTeW1ib2xcIiBuYW1lPVwiY2xhc3Nlcy5ydWxlc1wiPjwvcHJ5LXRhYj5cbiAgICA8cHJ5LXRhYiBbdGVtcGxhdGVSZWZdPVwiY3VzdG9taXplVGlsZVwiIG5hbWU9XCJjdXN0b21pemUudGlsZVwiPjwvcHJ5LXRhYj5cbiAgPC9wcnktdGFiLWdyb3VwPlxuXG4gIDxuZy10ZW1wbGF0ZSAjY3VzdG9taXplVGVtcGxhdGU+XG4gICAgPHByeS1hZG1pbi1jbGFzc2VzLWN1c3RvbWl6ZS10b29sdGlwXG4gICAgICAoYmFja1ByZXNzZWQpPVwiZ29CYWNrKClcIlxuICAgICAgW2N1cnJlbnRDbGFzc109XCJjdXJyZW50Q2xhc3MkIHwgYXN5bmNcIlxuICAgID48L3ByeS1hZG1pbi1jbGFzc2VzLWN1c3RvbWl6ZS10b29sdGlwPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2N1c3RvbWl6ZVRhYmxlPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgIDxoMj57eyAnQHByeS5hZG1pbi5jdXN0b21pemUudGFibGVBdHRycycgfCBpMThuIH19PC9oMj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgI2RlZmF1bHRMaXN0PVwiY2RrRHJvcExpc3RcIlxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImRlZmF1bHRBdHRyaWJ1dGVzXCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW25vdERlZmF1bHRMaXN0XVwiXG4gICAgICAgIGNsYXNzPVwibGlzdFwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkZWZhdWx0QXR0cmlidXRlc1wiIGNka0RyYWc+e3sgaXRlbSB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgICA8aDI+e3sgJ0BwcnkuYWRtaW4uY3VzdG9taXplLm5vVGFibGVBdHRycycgfCBpMThuIH19PC9oMj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgI25vdERlZmF1bHRMaXN0PVwiY2RrRHJvcExpc3RcIlxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cIm90aGVyQXR0cmlidXRlc1wiXG4gICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIltkZWZhdWx0TGlzdF1cIlxuICAgICAgICBjbGFzcz1cImxpc3RcIlxuICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3RoZXJBdHRyaWJ1dGVzXCIgY2RrRHJhZz57eyBpdGVtIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtLWJ0bi1ncm91cCAtd2lkdGgtbGdcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiXG4gICAgICAgIChjbGljayk9XCJnb0JhY2soKVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiJ0BwcnkuYWRtaW4uY2FuY2VsJyB8IGkxOG5cIlxuICAgICAgPjwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJ1cGRhdGVUYWJsZUF0dHJzKClcIj5cbiAgICAgICAge3sgJ0BwcnkuYWRtaW4uY3VzdG9taXplLnVwZGF0ZVRhYmxlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2N1c3RvbWl6ZVN5bWJvbD5cbiAgICA8cHJ5LWFkbWluLWNsYXNzZXMtY3VzdG9taXplLXN5bWJvbFxuICAgICAgKGJhY2tQcmVzc2VkKT1cImdvQmFjaygpXCJcbiAgICAgIFtjdXJyZW50Q2xhc3NdPVwiY3VycmVudENsYXNzJCB8IGFzeW5jXCJcbiAgICA+PC9wcnktYWRtaW4tY2xhc3Nlcy1jdXN0b21pemUtc3ltYm9sPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2N1c3RvbWl6ZVRpbGU+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgPGgyPnt7ICdAcHJ5LmFkbWluLmN1c3RvbWl6ZS50aWxlJyB8IGkxOG4gfX08L2gyPlxuICAgICAgPGRpdlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAjZGVmYXVsdFRpbGVzTGlzdD1cImNka0Ryb3BMaXN0XCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJkZWZhdWx0VGlsZUF0dHJpYnV0ZXNcIlxuICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJbbm90RGVmYXVsdFRpbGVzTGlzdF1cIlxuICAgICAgICBjbGFzcz1cImxpc3RcIlxuICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGVmYXVsdFRpbGVBdHRyaWJ1dGVzXCIgY2RrRHJhZz57eyBpdGVtIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgIDxoMj57eyAnQHByeS5hZG1pbi5jdXN0b21pemUubm9UaWxlQXR0cnMnIHwgaTE4biB9fTwvaDI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICNub3REZWZhdWx0VGlsZXNMaXN0PVwiY2RrRHJvcExpc3RcIlxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cIm90aGVyVGlsZUF0dHJpYnV0ZXNcIlxuICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJbZGVmYXVsdFRpbGVzTGlzdF1cIlxuICAgICAgICBjbGFzcz1cImxpc3RcIlxuICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3RoZXJUaWxlQXR0cmlidXRlc1wiIGNka0RyYWc+e3sgaXRlbSB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RpbGVDb25mVmFsaWQoKVwiPlxuICAgICAgICA8cD57eyAnQHByeS5hZG1pbi5jdXN0b21pemUudGlsZUhpbnQnIHwgaTE4biA6IHsgbWF4OiBtYXhUaWxlc0F0dHJpYnV0ZXMgfSB9fTwvcD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwIC13aWR0aC1sZ1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCJcbiAgICAgICAgKGNsaWNrKT1cImdvQmFjaygpXCJcbiAgICAgICAgW2lubmVySFRNTF09XCInQHByeS5hZG1pbi5jYW5jZWwnIHwgaTE4blwiXG4gICAgICA+PC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cInVwZGF0ZVRpbGVBdHRycygpXCIgW2Rpc2FibGVkXT1cIiFpc1RpbGVDb25mVmFsaWQoKVwiPlxuICAgICAgICB7eyAnQHByeS5hZG1pbi5jdXN0b21pemUudXBkYXRlVGlsZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tY2xhc3Nlcy1jdXN0b21pemUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvYWRtaW4vY29tcG9uZW50cy9hZG1pbi1jbGFzc2VzL2FkbWluLWNsYXNzZXMtY3VzdG9taXplL2FkbWluLWNsYXNzZXMtY3VzdG9taXplLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2FkbWluL2NvbXBvbmVudHMvYWRtaW4tY2xhc3Nlcy9hZG1pbi1jbGFzc2VzLWN1c3RvbWl6ZS9hZG1pbi1jbGFzc2VzLWN1c3RvbWl6ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUdyRCxPQUFPLEVBRUwsWUFBWSxFQUNaLGNBQWMsRUFDZCxhQUFhLEVBQ2IsZUFBZSxFQUVmLFlBQVksRUFDWixjQUFjLEVBQ2QsU0FBUyxFQUNULHdCQUF3QixFQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7OztBQU1yRSxNQUFNLE9BQU8sOEJBQStCLFNBQVEsd0JBQXdCO0lBYTFFLFlBQW9CLEtBQWlCLEVBQVUsTUFBYyxFQUFVLEtBQXFCO1FBQzFGLEtBQUssRUFBRSxDQUFDO1FBRFUsVUFBSyxH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RUFBRTtTQUNwRSxDQUFDLENBQ0gsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDL0csQ0FBQzsrR0FwR1UsOEJBQThCO21HQUE5Qiw4QkFBOEIsMEZDeEIzQyxnOUhBK0dBOzs0RkR2RmEsOEJBQThCO2tCQUoxQyxTQUFTOytCQUNFLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXksIHRyYW5zZmVyQXJyYXlJdGVtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIENsYXNzLFxuICBDbGFzc0FjdGlvbnMsXG4gIENsYXNzU2VsZWN0b3JzLFxuICBDb25maWdBY3Rpb25zLFxuICBDb25maWdTZWxlY3RvcnMsXG4gIEZpZWxkLFxuICBGaWVsZEFjdGlvbnMsXG4gIEZpZWxkU2VsZWN0b3JzLFxuICBJdGVtVXRpbHMsXG4gIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZVxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgY29tYmluZUxhdGVzdFdpdGgsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWRtaW5DbGFzc0FjdGlvbnMgfSBmcm9tICcuLi9zdG9yZS9hZG1pbi1jbGFzcy5hY3Rpb25zJztcbmltcG9ydCB7IEFkbWluQ2xhc3NTZWxlY3RvcnMgfSBmcm9tICcuLi9zdG9yZS9hZG1pbi1jbGFzcy5zZWxlY3RvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktYWRtaW4tY2xhc3Nlcy1jdXN0b21pemUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRtaW4tY2xhc3Nlcy1jdXN0b21pemUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFkbWluQ2xhc3Nlc0N1c3RvbWl6ZUNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIGN1cnJlbnRDbGFzcyQ6IE9ic2VydmFibGU8Q2xhc3MgfCB1bmRlZmluZWQ+O1xuICBjdXJyZW50Q2xhc3M6IENsYXNzID0ge30gYXMgQ2xhc3M7XG4gIGRlZmF1bHRBdHRyaWJ1dGVzOiBzdHJpbmdbXSA9IFtdO1xuICBvdGhlckF0dHJpYnV0ZXM6IHN0cmluZ1tdID0gW107XG4gIGN1cnJlbnRQcm9wZXJ0aWVzQ29uZmlnJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG4gIGN1cnJlbnRUaWxlUHJvcGVydGllc0NvbmZpZyQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuICBjbGFzc2VzJDogT2JzZXJ2YWJsZTxDbGFzc1tdPiA9IG9mKFtdKTtcbiAgZGVmYXVsdFRpbGVBdHRyaWJ1dGVzOiBzdHJpbmdbXSA9IFtdO1xuICBvdGhlclRpbGVBdHRyaWJ1dGVzOiBzdHJpbmdbXSA9IFtdO1xuICBtYXhUaWxlc0F0dHJpYnV0ZXMgPSA1O1xuICBmaWVsZHMkOiBPYnNlcnZhYmxlPEZpZWxkW10+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlPGFueT4sIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQWRtaW5DbGFzc0FjdGlvbnMuc2VsZWN0Q2xhc3MoeyBjbGF6ejogeyBpZDogcGFyYW1zWydpZCddIH0gYXMgQ2xhc3MgfSkpXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENsYXNzQWN0aW9ucy5sb2FkKCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRmllbGRBY3Rpb25zLmxvYWQoKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmxvYWRDdXN0b21pemF0aW9uKCkpO1xuICAgIHRoaXMuZmllbGRzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KEZpZWxkU2VsZWN0b3JzLmZpZWxkcyk7XG4gICAgdGhpcy5jdXJyZW50Q2xhc3MkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChBZG1pbkNsYXNzU2VsZWN0b3JzLnNlbGVjdGVkQ2xhc3MpLFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3NlcylcbiAgICBdKS5waXBlKHN3aXRjaE1hcCgoW2NsYXp6LCBfXSkgPT4gdGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3NCeUlkKGNsYXp6Py5pZCA/PyAnJykpKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmN1cnJlbnRDbGFzcyQuc3Vic2NyaWJlKChjbGF6eikgPT4gKHRoaXMuY3VycmVudENsYXNzID0gY2xhenogPz8gKHt9IGFzIENsYXNzKSkpKTtcbiAgICB0aGlzLmN1cnJlbnRQcm9wZXJ0aWVzQ29uZmlnJCA9IHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy50YWJsZURlZmF1bHRBdHRyaWJ1dGVzRGVmaW5pdGlvbnMpLnBpcGUoXG4gICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLmN1cnJlbnRDbGFzcyQsIHRoaXMuZmllbGRzJCksXG4gICAgICBtYXAoKFtkZWZzLCBjbGF6eiwgZmllbGRzXSkgPT5cbiAgICAgICAgSXRlbVV0aWxzLmdldEF0dHJpYnV0ZXNEZWZpbml0aW9uRm9yQ2xhc3MoKGNsYXp6ID8/IHsgYXR0cmlidXRlczogW10gfSkgYXMgQ2xhc3MsIGRlZnMsIGZpZWxkcylcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmN1cnJlbnRQcm9wZXJ0aWVzQ29uZmlnJC5waXBlKGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMuY3VycmVudENsYXNzJCkpLnN1YnNjcmliZSgoW2F0dHJzLCBjbGF6el0pID0+IHtcbiAgICAgICAgdGhpcy5kZWZhdWx0QXR0cmlidXRlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYXR0cnMpKTtcbiAgICAgICAgdGhpcy5vdGhlckF0dHJpYnV0ZXMgPSAoY2xhenogPz8geyBhdHRyaWJ1dGVzOiBbXSB9KS5hdHRyaWJ1dGVzXG4gICAgICAgICAgLmZpbHRlcigoYXR0cikgPT4gIWF0dHJzLmluY2x1ZGVzKGF0dHIubmFtZSkpXG4gICAgICAgICAgLm1hcCgoYXR0cikgPT4gYXR0ci5uYW1lKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmN1cnJlbnRUaWxlUHJvcGVydGllc0NvbmZpZyQgPSB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMudGlsZUF0dHJpYnV0ZXNEZWZpbml0aW9ucykucGlwZShcbiAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMuY3VycmVudENsYXNzJCwgdGhpcy5maWVsZHMkKSxcbiAgICAgIG1hcCgoW2RlZnMsIGNsYXp6LCBmaWVsZHNdKSA9PlxuICAgICAgICBJdGVtVXRpbHMuZ2V0QXR0cmlidXRlc0RlZmluaXRpb25Gb3JDbGFzcygoY2xhenogPz8geyBhdHRyaWJ1dGVzOiBbXSB9KSBhcyBDbGFzcywgZGVmcywgZmllbGRzKVxuICAgICAgKSxcbiAgICAgIG1hcCgoYXR0cnMpID0+IGF0dHJzLmZpbHRlcigoXywgaSkgPT4gaSA8IHRoaXMubWF4VGlsZXNBdHRyaWJ1dGVzKSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmN1cnJlbnRUaWxlUHJvcGVydGllc0NvbmZpZyQucGlwZShjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLmN1cnJlbnRDbGFzcyQpKS5zdWJzY3JpYmUoKFthdHRycywgY2xhenpdKSA9PiB7XG4gICAgICAgIHRoaXMuZGVmYXVsdFRpbGVBdHRyaWJ1dGVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShhdHRycykpO1xuICAgICAgICB0aGlzLm90aGVyVGlsZUF0dHJpYnV0ZXMgPSAoY2xhenogPz8geyBhdHRyaWJ1dGVzOiBbXSB9KS5hdHRyaWJ1dGVzXG4gICAgICAgICAgLmZpbHRlcigoYXR0cikgPT4gIWF0dHJzLmluY2x1ZGVzKGF0dHIubmFtZSkpXG4gICAgICAgICAgLm1hcCgoYXR0cikgPT4gYXR0ci5uYW1lKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLm1heEF0dHJpYnV0ZXNJblRpbGVzKS5zdWJzY3JpYmUoKG1heCkgPT4ge1xuICAgICAgICB0aGlzLm1heFRpbGVzQXR0cmlidXRlcyA9IG1heDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdvQmFjaygpIHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy4uLy4uJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEFkbWluQ2xhc3NBY3Rpb25zLmJhY2soeyBwYXRoOiBwYXRoLnRvU3RyaW5nKCkgfSkpO1xuICB9XG5cbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XG4gICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyID09PSBldmVudC5jb250YWluZXIpIHtcbiAgICAgIG1vdmVJdGVtSW5BcnJheShldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSwgZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgfVxuICAgIGNvbnN0IHRvU29ydCA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmlkID09PSAnY2RrLWRyb3AtbGlzdC0xJyA/IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyIDogZXZlbnQuY29udGFpbmVyO1xuICAgIHRvU29ydC5kYXRhLnNvcnQoKGEsIGIpID0+IGEudG9Mb3dlckNhc2UoKS5sb2NhbGVDb21wYXJlKGIudG9Mb3dlckNhc2UoKSkpO1xuICB9XG5cbiAgdXBkYXRlVGFibGVBdHRycygpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgQ29uZmlnQWN0aW9ucy5zYXZlVGFibGVEZWZhdWx0QXR0cmlidXRlcyh7XG4gICAgICAgIGRlZmluaXRpb25zOiB7IFt0aGlzLmN1cnJlbnRDbGFzcy5pZF06IHRoaXMuZGVmYXVsdEF0dHJpYnV0ZXMuc29ydCgpIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmdvQmFjaygpO1xuICB9XG5cbiAgdXBkYXRlVGlsZUF0dHJzKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBDb25maWdBY3Rpb25zLnNhdmVUaWxlQXR0cmlidXRlcyh7XG4gICAgICAgIGRlZmluaXRpb25zOiB7IFt0aGlzLmN1cnJlbnRDbGFzcy5pZF06IHRoaXMuZGVmYXVsdFRpbGVBdHRyaWJ1dGVzIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmdvQmFjaygpO1xuICB9XG5cbiAgaXNUaWxlQ29uZlZhbGlkKCkge1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHRUaWxlQXR0cmlidXRlcy5sZW5ndGggPiAwICYmIHRoaXMuZGVmYXVsdFRpbGVBdHRyaWJ1dGVzLmxlbmd0aCA8PSB0aGlzLm1heFRpbGVzQXR0cmlidXRlcztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm8tcHJ5LWFkbWluLWNsYXNzZXMtY3VzdG9taXplXCI+XG4gIDxoMSBjbGFzcz1cImEtaDFcIiBpZD1cInRhYi1jdXN0b21cIj57eyAnQHByeS5hZG1pbi5jdXN0b21pemUudGl0bGUnIHwgaTE4biB9fTwvaDE+XG5cbiAgPHByeS10YWItZ3JvdXAgdHJhbnNsYXRpb25TdHJpbmdCYXNlPVwiQHByeS5hZG1pbi5cIj5cbiAgICA8cHJ5LXRhYiBbdGVtcGxhdGVSZWZdPVwiY3VzdG9taXplVGVtcGxhdGVcIiBuYW1lPVwiY3VzdG9taXplLnRlbXBsYXRlXCI+PC9wcnktdGFiPlxuICAgIDxwcnktdGFiIFt0ZW1wbGF0ZVJlZl09XCJjdXN0b21pemVUYWJsZVwiIG5hbWU9XCJjdXN0b21pemUudGFibGVcIj48L3ByeS10YWI+XG4gICAgPHByeS10YWIgW3RlbXBsYXRlUmVmXT1cImN1c3RvbWl6ZVN5bWJvbFwiIG5hbWU9XCJjbGFzc2VzLnJ1bGVzXCI+PC9wcnktdGFiPlxuICAgIDxwcnktdGFiIFt0ZW1wbGF0ZVJlZl09XCJjdXN0b21pemVUaWxlXCIgbmFtZT1cImN1c3RvbWl6ZS50aWxlXCI+PC9wcnktdGFiPlxuICA8L3ByeS10YWItZ3JvdXA+XG5cbiAgPG5nLXRlbXBsYXRlICNjdXN0b21pemVUZW1wbGF0ZT5cbiAgICA8cHJ5LWFkbWluLWNsYXNzZXMtY3VzdG9taXplLXRvb2x0aXBcbiAgICAgIChiYWNrUHJlc3NlZCk9XCJnb0JhY2soKVwiXG4gICAgICBbY3VycmVudENsYXNzXT1cImN1cnJlbnRDbGFzcyQgfCBhc3luY1wiXG4gICAgPjwvcHJ5LWFkbWluLWNsYXNzZXMtY3VzdG9taXplLXRvb2x0aXA+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjY3VzdG9taXplVGFibGU+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgPGgyPnt7ICdAcHJ5LmFkbWluLmN1c3RvbWl6ZS50YWJsZUF0dHJzJyB8IGkxOG4gfX08L2gyPlxuICAgICAgPGRpdlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAjZGVmYXVsdExpc3Q9XCJjZGtEcm9wTGlzdFwiXG4gICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiZGVmYXVsdEF0dHJpYnV0ZXNcIlxuICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJbbm90RGVmYXVsdExpc3RdXCJcbiAgICAgICAgY2xhc3M9XCJsaXN0XCJcbiAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRlZmF1bHRBdHRyaWJ1dGVzXCIgY2RrRHJhZz57eyBpdGVtIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgIDxoMj57eyAnQHByeS5hZG1pbi5jdXN0b21pemUubm9UYWJsZUF0dHJzJyB8IGkxOG4gfX08L2gyPlxuICAgICAgPGRpdlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAjbm90RGVmYXVsdExpc3Q9XCJjZGtEcm9wTGlzdFwiXG4gICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwib3RoZXJBdHRyaWJ1dGVzXCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW2RlZmF1bHRMaXN0XVwiXG4gICAgICAgIGNsYXNzPVwibGlzdFwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvdGhlckF0dHJpYnV0ZXNcIiBjZGtEcmFnPnt7IGl0ZW0gfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwIC13aWR0aC1sZ1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCJcbiAgICAgICAgKGNsaWNrKT1cImdvQmFjaygpXCJcbiAgICAgICAgW2lubmVySFRNTF09XCInQHByeS5hZG1pbi5jYW5jZWwnIHwgaTE4blwiXG4gICAgICA+PC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cInVwZGF0ZVRhYmxlQXR0cnMoKVwiPlxuICAgICAgICB7eyAnQHByeS5hZG1pbi5jdXN0b21pemUudXBkYXRlVGFibGUnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjY3VzdG9taXplU3ltYm9sPlxuICAgIDxwcnktYWRtaW4tY2xhc3Nlcy1jdXN0b21pemUtc3ltYm9sXG4gICAgICAoYmFja1ByZXNzZWQpPVwiZ29CYWNrKClcIlxuICAgICAgW2N1cnJlbnRDbGFzc109XCJjdXJyZW50Q2xhc3MkIHwgYXN5bmNcIlxuICAgID48L3ByeS1hZG1pbi1jbGFzc2VzLWN1c3RvbWl6ZS1zeW1ib2w+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjY3VzdG9taXplVGlsZT5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgICA8aDI+e3sgJ0BwcnkuYWRtaW4uY3VzdG9taXplLnRpbGUnIHwgaTE4biB9fTwvaDI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICNkZWZhdWx0VGlsZXNMaXN0PVwiY2RrRHJvcExpc3RcIlxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImRlZmF1bHRUaWxlQXR0cmlidXRlc1wiXG4gICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIltub3REZWZhdWx0VGlsZXNMaXN0XVwiXG4gICAgICAgIGNsYXNzPVwibGlzdFwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkZWZhdWx0VGlsZUF0dHJpYnV0ZXNcIiBjZGtEcmFnPnt7IGl0ZW0gfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgPGgyPnt7ICdAcHJ5LmFkbWluLmN1c3RvbWl6ZS5ub1RpbGVBdHRycycgfCBpMThuIH19PC9oMj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgI25vdERlZmF1bHRUaWxlc0xpc3Q9XCJjZGtEcm9wTGlzdFwiXG4gICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwib3RoZXJUaWxlQXR0cmlidXRlc1wiXG4gICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIltkZWZhdWx0VGlsZXNMaXN0XVwiXG4gICAgICAgIGNsYXNzPVwibGlzdFwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvdGhlclRpbGVBdHRyaWJ1dGVzXCIgY2RrRHJhZz57eyBpdGVtIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXY+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGlsZUNvbmZWYWxpZCgpXCI+XG4gICAgICAgIDxwPnt7ICdAcHJ5LmFkbWluLmN1c3RvbWl6ZS50aWxlSGludCcgfCBpMThuIDogeyBtYXg6IG1heFRpbGVzQXR0cmlidXRlcyB9IH19PC9wPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibS1idG4tZ3JvdXAgLXdpZHRoLWxnXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIlxuICAgICAgICAoY2xpY2spPVwiZ29CYWNrKClcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cIidAcHJ5LmFkbWluLmNhbmNlbCcgfCBpMThuXCJcbiAgICAgID48L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwidXBkYXRlVGlsZUF0dHJzKClcIiBbZGlzYWJsZWRdPVwiIWlzVGlsZUNvbmZWYWxpZCgpXCI+XG4gICAgICAgIHt7ICdAcHJ5LmFkbWluLmN1c3RvbWl6ZS51cGRhdGVUaWxlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|
|
@@ -133,7 +133,7 @@ export class AdminClassesCustomizeSymbolComponent extends SubscriptionnerDirecti
|
|
|
133
133
|
this.store.dispatch(ConfigActions.updateIcons({ definitions: { [this.currentClass?.id ?? '']: this.definitions } }));
|
|
134
134
|
}
|
|
135
135
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AdminClassesCustomizeSymbolComponent, deps: [{ token: i1.PryI18nService }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
136
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AdminClassesCustomizeSymbolComponent, selector: "pry-admin-classes-customize-symbol", inputs: { currentClass: "currentClass" }, outputs: { backPressed: "backPressed" }, usesInheritance: true, ngImport: i0, template: "<ul class=\"m-rule-wrapper\">\n <li\n *ngFor=\"let definition of definitions; let i = index\"\n [class.m-rule--default]=\"definition.isDefault\"\n class=\"m-rule\"\n >\n <div class=\"m-rule__header\">\n <h3 class=\"a-h3\">\n {{ '@pry.admin.rule' | i18n : { id: i + 1 } }}\n <span>{{ definition.isDefault ? ('@pry.admin.defaultRule' | i18n) : '' }}</span>\n </h3>\n\n <div *ngIf=\"!definition.isDefault\" class=\"m-rule__actions\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n [class.-disabled]=\"i <= 1\"\n [disabled]=\"i <= 1\"\n (click)=\"move(i, i - 1)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n [class.-disabled]=\"i >= definitions.length - 1\"\n [disabled]=\"i >= definitions.length - 1\"\n (click)=\"move(i, i + 1)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"removeRule(i)\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div>\n <pry-select-image [iconUrl]=\"definition.iconUrl\" (changed)=\"changeForImage($event, i)\"></pry-select-image>\n\n <ng-container *ngIf=\"definition.isDefault\">\n <div class=\"m-form-label-field m-rule__display-mode\">\n <label class=\"a-label\" for=\"size\">{{ '@pry.admin.size' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeSize($event)\"\n [items]=\"sizes\"\n [ngModel]=\"definition.iconSize[0]\"\n bindLabel=\"label\"\n bindValue=\"value\"\n id=\"size\"\n ></pry-select>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!definition.isDefault\">\n <div class=\"m-form-label-field m-rule__display-mode\">\n <label class=\"a-label\" for=\"display_mode\">{{ '@pry.admin.displayModeImage' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changePosition($event, i)\"\n [items]=\"positions\"\n [ngModel]=\"definition.position\"\n bindLabel=\"label\"\n bindValue=\"value\"\n id=\"display_mode\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox [ngModel]=\"!!definition.rule\" (click)=\"toggleRule(i)\">{{\n '@pry.admin.classes.condition' | i18n\n }}</pry-checkbox>\n </div>\n </ng-container>\n\n <div *ngIf=\"!!definition.rule && !definition.isDefault\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"classes_attrname\">{{ '@pry.admin.classes.attrName' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeAttrName($event, i)\"\n [items]=\"fieldsForClass\"\n [ngModel]=\"definition.rule.attributeName\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"classes_attrname\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"classes_operation\">{{ '@pry.admin.classes.operation' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOperation($event, i)\"\n [items]=\"operations\"\n [ngModel]=\"definition.rule.operation\"\n bindLabel=\"label\"\n bindValue=\"name\"\n id=\"classes_operation\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"classes_value\">{{ '@pry.admin.classes.value' | i18n }}</label>\n <input\n id=\"classes_value\"\n type=\"text\"\n class=\"a-form-field\"\n (ngModelChange)=\"changeValue($event, i)\"\n [ngModel]=\"definition.rule.value\"\n />\n </div>\n </div>\n </div>\n </li>\n</ul>\n\n<button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"addRule()\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n Ajouter une r\u00E8gle\n</button>\n\n<div class=\"m-btn-group -width-lg\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"restoreSymbols(); goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n [innerHTML]=\"'@pry.admin.customize.updateIcons' | i18n\"\n (click)=\"valid()\"\n ></button>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.PrySelectImageComponent, selector: "pry-select-image", inputs: ["iconUrl", "size", "mode"], outputs: ["toggled", "changed"] }, { kind: "component", type: i1.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i1.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "loading", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "pipe", type: i1.I18nPipe, name: "i18n" }] }); }
|
|
136
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AdminClassesCustomizeSymbolComponent, selector: "pry-admin-classes-customize-symbol", inputs: { currentClass: "currentClass" }, outputs: { backPressed: "backPressed" }, usesInheritance: true, ngImport: i0, template: "<ul class=\"m-rule-wrapper\">\n <li\n *ngFor=\"let definition of definitions; let i = index\"\n [class.m-rule--default]=\"definition.isDefault\"\n class=\"m-rule\"\n >\n <div class=\"m-rule__header\">\n <h3 class=\"a-h3\">\n {{ '@pry.admin.rule' | i18n : { id: i + 1 } }}\n <span>{{ definition.isDefault ? ('@pry.admin.defaultRule' | i18n) : '' }}</span>\n </h3>\n\n <div *ngIf=\"!definition.isDefault\" class=\"m-rule__actions\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n [class.-disabled]=\"i <= 1\"\n [disabled]=\"i <= 1\"\n (click)=\"move(i, i - 1)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n [class.-disabled]=\"i >= definitions.length - 1\"\n [disabled]=\"i >= definitions.length - 1\"\n (click)=\"move(i, i + 1)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"removeRule(i)\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div>\n <pry-select-image [iconUrl]=\"definition.iconUrl\" (changed)=\"changeForImage($event, i)\"></pry-select-image>\n\n <ng-container *ngIf=\"definition.isDefault\">\n <div class=\"m-form-label-field m-rule__display-mode\">\n <label class=\"a-label\" for=\"size\">{{ '@pry.admin.size' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeSize($event)\"\n [items]=\"sizes\"\n [ngModel]=\"definition.iconSize[0]\"\n bindLabel=\"label\"\n bindValue=\"value\"\n id=\"size\"\n ></pry-select>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!definition.isDefault\">\n <div class=\"m-form-label-field m-rule__display-mode\">\n <label class=\"a-label\" for=\"display_mode\">{{ '@pry.admin.displayModeImage' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changePosition($event, i)\"\n [items]=\"positions\"\n [ngModel]=\"definition.position\"\n bindLabel=\"label\"\n bindValue=\"value\"\n id=\"display_mode\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox [ngModel]=\"!!definition.rule\" (click)=\"toggleRule(i)\">{{\n '@pry.admin.classes.condition' | i18n\n }}</pry-checkbox>\n </div>\n </ng-container>\n\n <div *ngIf=\"!!definition.rule && !definition.isDefault\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"classes_attrname\">{{ '@pry.admin.classes.attrName' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeAttrName($event, i)\"\n [items]=\"fieldsForClass\"\n [ngModel]=\"definition.rule.attributeName\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"classes_attrname\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"classes_operation\">{{ '@pry.admin.classes.operation' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOperation($event, i)\"\n [items]=\"operations\"\n [ngModel]=\"definition.rule.operation\"\n bindLabel=\"label\"\n bindValue=\"name\"\n id=\"classes_operation\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"classes_value\">{{ '@pry.admin.classes.value' | i18n }}</label>\n <input\n id=\"classes_value\"\n type=\"text\"\n class=\"a-form-field\"\n (ngModelChange)=\"changeValue($event, i)\"\n [ngModel]=\"definition.rule.value\"\n />\n </div>\n </div>\n </div>\n </li>\n</ul>\n\n<button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"addRule()\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n Ajouter une r\u00E8gle\n</button>\n\n<div class=\"m-btn-group -width-lg\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"restoreSymbols(); goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n [innerHTML]=\"'@pry.admin.customize.updateIcons' | i18n\"\n (click)=\"valid()\"\n ></button>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.PrySelectImageComponent, selector: "pry-select-image", inputs: ["iconUrl", "size", "mode"], outputs: ["toggled", "changed"] }, { kind: "component", type: i1.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i1.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "pipe", type: i1.I18nPipe, name: "i18n" }] }); }
|
|
137
137
|
}
|
|
138
138
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AdminClassesCustomizeSymbolComponent, decorators: [{
|
|
139
139
|
type: Component,
|