@acorex/platform 18.0.6 → 18.0.7
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/auth/lib/auth.strategy.d.ts +1 -1
- package/auth/lib/session.service.d.ts +0 -1
- package/common/lib/data/data-provider.types.d.ts +1 -1
- package/common/lib/schema/entity/entity.class.d.ts +1 -0
- package/common/lib/schema/widgets/lookup/lookup-widget-column.component.d.ts +1 -1
- package/common/lib/schema/widgets/lookup/lookup-widget-edit.component.d.ts +3 -1
- package/common/lib/schema/widgets/phone/phone-widget-edit.component.d.ts +3 -1
- package/esm2022/auth/lib/auth.guard.mjs +4 -4
- package/esm2022/auth/lib/auth.strategy.mjs +1 -1
- package/esm2022/auth/lib/session.service.mjs +14 -15
- package/esm2022/common/lib/data/data-provider.types.mjs +1 -1
- package/esm2022/common/lib/schema/entity/entity.class.mjs +1 -1
- package/esm2022/common/lib/schema/widgets/avatar/avatar-widget-edit.component.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/avatar/avatar-widget-view.component.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/common-widget-filter/boolean-widget-filter.component.mjs +1 -1
- package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-edit.component.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-filter.component.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/email/email-widget-edit.component.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/file/file-widget-filter.component.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/gallery/gallery-widget-filter.component.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-column.component.mjs +3 -3
- package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-edit.component.mjs +23 -19
- package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-filter.component.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/messenger/messenger-widget-edit.component.mjs +1 -1
- package/esm2022/common/lib/schema/widgets/phone/phone-widget-edit.component.mjs +8 -4
- package/esm2022/common/lib/schema/widgets/selection-list/selection-list-widget-filter.component.mjs +2 -2
- package/esm2022/layout/entity/lib/entity-master-list.viewmodel.mjs +56 -61
- package/esm2022/layout/entity/lib/entity-master-single.viewmodel.mjs +4 -2
- package/esm2022/layout/entity/lib/entity.module.mjs +16 -19
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.mjs +62 -55
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.component.mjs +83 -61
- package/esm2022/layout/entity/lib/workflows/create-entity.workflow.mjs +10 -8
- package/esm2022/layouts/lib/admin/admin.module.mjs +9 -2
- package/esm2022/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.component.mjs +6 -3
- package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/entity-details-view.component.mjs +7 -5
- package/esm2022/layouts/lib/admin/entity-layout/entity-import-view/entity-import-view.component.mjs +91 -0
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/entity-custom-view/entity-custom-view.component.mjs +4 -3
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-columns/list-view-option-columns.component.mjs +4 -3
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-conditions.component.mjs +4 -3
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-filter-operator.component.mjs +1 -1
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-sorting/list-view-option-sorting.component.mjs +4 -3
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.mjs +18 -6
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/list-view.module.mjs +9 -5
- package/esm2022/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.component.mjs +6 -3
- package/esm2022/layouts/lib/admin/entity-layout/workflows/create-entity.workflow.mjs +5 -3
- package/esm2022/layouts/lib/admin/entity-layout/workflows/import-entity.workflow.mjs +77 -0
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.mjs +8 -5
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.mjs +29 -13
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.mjs +17 -13
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-sorting/list-view-option-sorting.component.mjs +13 -9
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component.mjs +8 -5
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.mjs +8 -5
- package/esm2022/widgets/lib/editors/date-time-box-widget/date-time-box-widget-edit.component.mjs +2 -2
- package/esm2022/widgets/lib/editors/email-box-widget/email-box-widget-edit.component.mjs +2 -2
- package/esm2022/widgets/lib/editors/link-widget/index.mjs +8 -0
- package/esm2022/widgets/lib/editors/link-widget/link-widget-column.component.mjs +19 -0
- package/esm2022/widgets/lib/editors/link-widget/link-widget-designer.component.mjs +19 -0
- package/esm2022/widgets/lib/editors/link-widget/link-widget-edit.component.mjs +391 -0
- package/esm2022/widgets/lib/editors/link-widget/link-widget-filter.component.mjs +20 -0
- package/esm2022/widgets/lib/editors/link-widget/link-widget-print.component.mjs +19 -0
- package/esm2022/widgets/lib/editors/link-widget/link-widget-view.component.mjs +120 -0
- package/esm2022/widgets/lib/editors/link-widget/link-widget.config.mjs +24 -0
- package/esm2022/widgets/lib/editors/number-box-widget/number-box-widget-edit.component.mjs +10 -7
- package/esm2022/widgets/lib/editors/phone-box-widget/phone-box-widget-edit.component.mjs +5 -3
- package/esm2022/widgets/lib/editors/select-box-widget/select-box-widget-edit.component.mjs +2 -2
- package/esm2022/widgets/lib/editors/signature-pad-widget/signature-pad-widget-edit.component.mjs +13 -3
- package/esm2022/widgets/lib/editors/signature-pad-widget/signature-pad-widget-view.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets.module.mjs +4 -1
- package/fesm2022/acorex-platform-auth.mjs +14 -15
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-B8txzrTw.mjs → acorex-platform-common-avatar-widget-edit.component-BtnVjoMi.mjs} +2 -2
- package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-B8txzrTw.mjs.map → acorex-platform-common-avatar-widget-edit.component-BtnVjoMi.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-avatar-widget-view.component-B3Ubyw3X.mjs → acorex-platform-common-avatar-widget-view.component-0-hGLYLK.mjs} +2 -2
- package/fesm2022/{acorex-platform-common-avatar-widget-view.component-B3Ubyw3X.mjs.map → acorex-platform-common-avatar-widget-view.component-0-hGLYLK.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-CcJ5Vj4q.mjs → acorex-platform-common-boolean-widget-filter.component-CMkjO_x1.mjs} +2 -2
- package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-CcJ5Vj4q.mjs.map → acorex-platform-common-boolean-widget-filter.component-CMkjO_x1.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-DRsoJMVG.mjs → acorex-platform-common-dateTime-widget-edit.component-DdqtbOY1.mjs} +2 -2
- package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-DRsoJMVG.mjs.map → acorex-platform-common-dateTime-widget-edit.component-DdqtbOY1.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-uB7iwji0.mjs → acorex-platform-common-dateTime-widget-filter.component-BjtIJkeC.mjs} +2 -2
- package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-uB7iwji0.mjs.map → acorex-platform-common-dateTime-widget-filter.component-BjtIJkeC.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-email-widget-edit.component-CY-Nu0xD.mjs → acorex-platform-common-email-widget-edit.component-CLl0gmdM.mjs} +2 -2
- package/fesm2022/{acorex-platform-common-email-widget-edit.component-CY-Nu0xD.mjs.map → acorex-platform-common-email-widget-edit.component-CLl0gmdM.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-file-widget-filter.component-qL-PznYm.mjs → acorex-platform-common-file-widget-filter.component-DqYmxdx_.mjs} +2 -2
- package/fesm2022/{acorex-platform-common-file-widget-filter.component-qL-PznYm.mjs.map → acorex-platform-common-file-widget-filter.component-DqYmxdx_.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-gallery-widget-filter.component-Bvy3nmy6.mjs → acorex-platform-common-gallery-widget-filter.component-Btrq4HP9.mjs} +2 -2
- package/fesm2022/{acorex-platform-common-gallery-widget-filter.component-Bvy3nmy6.mjs.map → acorex-platform-common-gallery-widget-filter.component-Btrq4HP9.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-lookup-widget-column.component-Cl-vO5XW.mjs → acorex-platform-common-lookup-widget-column.component-CtvP7V_w.mjs} +3 -3
- package/fesm2022/acorex-platform-common-lookup-widget-column.component-CtvP7V_w.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-edit.component-CpzTuRyJ.mjs → acorex-platform-common-lookup-widget-edit.component-JjtWsg2g.mjs} +23 -19
- package/fesm2022/acorex-platform-common-lookup-widget-edit.component-JjtWsg2g.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-filter.component-i8oRoMWh.mjs → acorex-platform-common-lookup-widget-filter.component-B4C5JB_p.mjs} +2 -2
- package/fesm2022/{acorex-platform-common-lookup-widget-filter.component-i8oRoMWh.mjs.map → acorex-platform-common-lookup-widget-filter.component-B4C5JB_p.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-WHM8ANuQ.mjs → acorex-platform-common-messenger-widget-edit.component-BjqtP0ls.mjs} +2 -2
- package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-WHM8ANuQ.mjs.map → acorex-platform-common-messenger-widget-edit.component-BjqtP0ls.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-phone-widget-edit.component-BdxXFoxc.mjs → acorex-platform-common-phone-widget-edit.component-Dj_tdhZw.mjs} +8 -4
- package/fesm2022/acorex-platform-common-phone-widget-edit.component-Dj_tdhZw.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-filter.component-NDAFZhfE.mjs → acorex-platform-common-selection-list-widget-filter.component-hbxBcirf.mjs} +2 -2
- package/fesm2022/{acorex-platform-common-selection-list-widget-filter.component-NDAFZhfE.mjs.map → acorex-platform-common-selection-list-widget-filter.component-hbxBcirf.mjs.map} +1 -1
- package/fesm2022/acorex-platform-common.mjs +15 -15
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +309 -289
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layouts-entity-create-view.component-DgPPnU8S.mjs +110 -0
- package/fesm2022/acorex-platform-layouts-entity-create-view.component-DgPPnU8S.mjs.map +1 -0
- package/fesm2022/acorex-platform-layouts-entity-import-view.component-V50y5Jjs.mjs +93 -0
- package/fesm2022/acorex-platform-layouts-entity-import-view.component-V50y5Jjs.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layouts-entity-modify-view.component-C-dS2HFl.mjs → acorex-platform-layouts-entity-modify-view.component-Bwz4yVpK.mjs} +6 -3
- package/fesm2022/acorex-platform-layouts-entity-modify-view.component-Bwz4yVpK.mjs.map +1 -0
- package/fesm2022/acorex-platform-layouts.mjs +130 -35
- package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-qOxuoK6c.mjs +99 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-qOxuoK6c.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-DHmUvWx8.mjs → acorex-platform-themes-default-entity-master-modify-view.component-BJcpG94Q.mjs} +9 -6
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BJcpG94Q.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +50 -31
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-widgets.mjs +628 -14
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/layout/entity/lib/entity-master-list.viewmodel.d.ts +7 -6
- package/layout/entity/lib/entity-master-single.viewmodel.d.ts +1 -0
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.d.ts +5 -4
- package/layout/entity/lib/workflows/create-entity.workflow.d.ts +1 -0
- package/layouts/lib/admin/entity-layout/entity-import-view/entity-import-view.component.d.ts +27 -0
- package/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.d.ts +2 -0
- package/layouts/lib/admin/entity-layout/entity-list-view/list-view.module.d.ts +2 -1
- package/layouts/lib/admin/entity-layout/workflows/create-entity.workflow.d.ts +1 -0
- package/layouts/lib/admin/entity-layout/workflows/import-entity.workflow.d.ts +27 -0
- package/package.json +4 -1
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +3 -0
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.d.ts +1 -1
- package/widgets/lib/editors/link-widget/index.d.ts +7 -0
- package/widgets/lib/editors/link-widget/link-widget-column.component.d.ts +6 -0
- package/widgets/lib/editors/link-widget/link-widget-designer.component.d.ts +6 -0
- package/widgets/lib/editors/link-widget/link-widget-edit.component.d.ts +45 -0
- package/widgets/lib/editors/link-widget/link-widget-filter.component.d.ts +6 -0
- package/widgets/lib/editors/link-widget/link-widget-print.component.d.ts +6 -0
- package/widgets/lib/editors/link-widget/link-widget-view.component.d.ts +13 -0
- package/widgets/lib/editors/link-widget/link-widget.config.d.ts +2 -0
- package/widgets/lib/editors/number-box-widget/number-box-widget-edit.component.d.ts +4 -1
- package/widgets/lib/editors/signature-pad-widget/signature-pad-widget-edit.component.d.ts +2 -0
- package/fesm2022/acorex-platform-common-lookup-widget-column.component-Cl-vO5XW.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-edit.component-CpzTuRyJ.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-phone-widget-edit.component-BdxXFoxc.mjs.map +0 -1
- package/fesm2022/acorex-platform-layouts-entity-create-view.component-Bxkv579D.mjs +0 -107
- package/fesm2022/acorex-platform-layouts-entity-create-view.component-Bxkv579D.mjs.map +0 -1
- package/fesm2022/acorex-platform-layouts-entity-modify-view.component-C-dS2HFl.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CTlj-QBs.mjs +0 -96
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CTlj-QBs.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DHmUvWx8.mjs.map +0 -1
|
@@ -1,21 +1,22 @@
|
|
|
1
|
+
import { AXButtonModule } from '@acorex/components/button';
|
|
2
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
3
|
+
import { AXFormModule } from '@acorex/components/form';
|
|
4
|
+
import { AXLoadingModule } from '@acorex/components/loading';
|
|
5
|
+
import { AXPopupService } from '@acorex/components/popup';
|
|
1
6
|
import { AXSelectBoxModule } from '@acorex/components/select-box';
|
|
7
|
+
import { AXTextBoxComponent, AXTextBoxModule } from '@acorex/components/text-box';
|
|
8
|
+
import { AXFormatService } from '@acorex/core/format';
|
|
9
|
+
import { AXTranslationService } from '@acorex/core/translation';
|
|
10
|
+
import { AXValidationModule } from '@acorex/core/validation';
|
|
2
11
|
import { AXPLayoutBuilderService, AXPWidgetBase } from '@acorex/platform/layout/builder';
|
|
3
12
|
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { ChangeDetectionStrategy, Component,
|
|
13
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, Injector, ViewChild, computed, inject, signal } from '@angular/core';
|
|
14
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
15
|
import { FormsModule } from '@angular/forms';
|
|
16
|
+
import { get } from 'lodash-es';
|
|
6
17
|
import { AXP_ENTITY_DEFINITION_LOADER } from '../../entity.config';
|
|
7
|
-
import { AXTextBoxComponent, AXTextBoxModule } from '@acorex/components/text-box';
|
|
8
|
-
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
9
|
-
import { AXButtonModule } from '@acorex/components/button';
|
|
10
|
-
import { AXFormatService } from '@acorex/core/format';
|
|
11
|
-
import { AXPopupService } from '@acorex/components/popup';
|
|
12
18
|
import { AXPLookupWidgetSelectorComponent } from './lookup-widget-selector.component';
|
|
13
19
|
import { AXPLookupWidgetSelectorViewModel } from './lookup-widget-selector.viewmodel';
|
|
14
|
-
import { AXLoadingModule } from '@acorex/components/loading';
|
|
15
|
-
import { get } from 'lodash-es';
|
|
16
|
-
import { AXValidationModule } from '@acorex/core/validation';
|
|
17
|
-
import { AXFormModule } from '@acorex/components/form';
|
|
18
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
19
20
|
import * as i0 from "@angular/core";
|
|
20
21
|
import * as i1 from "@angular/forms";
|
|
21
22
|
import * as i2 from "@acorex/components/text-box";
|
|
@@ -26,7 +27,7 @@ import * as i6 from "@acorex/components/form";
|
|
|
26
27
|
export class AXPLookupWidgetEditComponent extends AXPWidgetBase {
|
|
27
28
|
constructor() {
|
|
28
29
|
super(...arguments);
|
|
29
|
-
this.textField =
|
|
30
|
+
this.textField = 'title';
|
|
30
31
|
this.validationRules = [];
|
|
31
32
|
this.injector = inject(Injector);
|
|
32
33
|
this.loader = inject(AXP_ENTITY_DEFINITION_LOADER);
|
|
@@ -34,14 +35,15 @@ export class AXPLookupWidgetEditComponent extends AXPWidgetBase {
|
|
|
34
35
|
this.popupService = inject(AXPopupService);
|
|
35
36
|
this.builderService = inject(AXPLayoutBuilderService);
|
|
36
37
|
this.destroyRef = inject(DestroyRef);
|
|
37
|
-
this.
|
|
38
|
+
this.translateService = inject(AXTranslationService);
|
|
39
|
+
this.displayText = signal('');
|
|
38
40
|
this.selectedItem = signal(null);
|
|
39
41
|
this.searchTerm = signal(null);
|
|
40
42
|
this.isLoading = signal(false);
|
|
41
43
|
this.isOpen = signal(false);
|
|
42
44
|
this.vm = signal(null);
|
|
43
45
|
this.placeholder = computed(() => {
|
|
44
|
-
return '
|
|
46
|
+
return this.translateService.translateSync('widget.lookup.search') + this.vm()?.inlineFiltersPlaceholders().join(', ');
|
|
45
47
|
});
|
|
46
48
|
}
|
|
47
49
|
async ngOnInit() {
|
|
@@ -52,18 +54,15 @@ export class AXPLookupWidgetEditComponent extends AXPWidgetBase {
|
|
|
52
54
|
//
|
|
53
55
|
this.vm.set(new AXPLookupWidgetSelectorViewModel(this.injector, this.entityDef, this.filter));
|
|
54
56
|
//
|
|
55
|
-
this.textField = this.entityDef?.formats.lookup ?? this.entityDef?.properties.find(c => c.name != 'id')?.name ??
|
|
57
|
+
this.textField = this.entityDef?.formats.lookup ?? this.entityDef?.properties.find((c) => c.name != 'id')?.name ?? 'title';
|
|
56
58
|
const value = this.getValue();
|
|
57
59
|
if (typeof value == 'object')
|
|
58
|
-
this.displayText.set(this.formatService.format(this.textField,
|
|
60
|
+
this.displayText.set(this.formatService.format(this.textField, 'string', value));
|
|
59
61
|
else if (value != null) {
|
|
60
62
|
await this.findByValue();
|
|
61
63
|
}
|
|
62
64
|
//
|
|
63
|
-
this.builderService
|
|
64
|
-
.onChanged
|
|
65
|
-
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
66
|
-
.subscribe(async (c) => {
|
|
65
|
+
this.builderService.onChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(async (c) => {
|
|
67
66
|
if (c.path == this.path) {
|
|
68
67
|
if (this.getValue())
|
|
69
68
|
await this.findByValue();
|
|
@@ -82,14 +81,16 @@ export class AXPLookupWidgetEditComponent extends AXPWidgetBase {
|
|
|
82
81
|
}
|
|
83
82
|
showSelector() {
|
|
84
83
|
this.isOpen.set(true);
|
|
85
|
-
this.popupService
|
|
84
|
+
this.popupService
|
|
85
|
+
.open(AXPLookupWidgetSelectorComponent, {
|
|
86
86
|
title: `${this.entityDef?.formats.plural} Lookup`,
|
|
87
87
|
size: (this.vm()?.columns().length ?? 0) > 3 ? 'lg' : 'md',
|
|
88
88
|
data: {
|
|
89
89
|
vm: new AXPLookupWidgetSelectorViewModel(this.injector, this.entityDef, this.filter),
|
|
90
|
-
searchTerm: this.searchTerm() == this.displayText() ? null : this.searchTerm()
|
|
91
|
-
}
|
|
92
|
-
})
|
|
90
|
+
searchTerm: this.searchTerm() == this.displayText() ? null : this.searchTerm(),
|
|
91
|
+
},
|
|
92
|
+
})
|
|
93
|
+
.then((e) => {
|
|
93
94
|
this.isOpen.set(false);
|
|
94
95
|
this.textbox.focus();
|
|
95
96
|
if (e.data?.items) {
|
|
@@ -118,7 +119,7 @@ export class AXPLookupWidgetEditComponent extends AXPWidgetBase {
|
|
|
118
119
|
async handleKeyDown(e) {
|
|
119
120
|
const keyEvent = e.nativeEvent;
|
|
120
121
|
const value = this.searchTerm()?.trim();
|
|
121
|
-
if ((keyEvent.code ==
|
|
122
|
+
if ((keyEvent.code == 'Enter' || keyEvent.code == 'NumpadEnter') && value) {
|
|
122
123
|
this.isLoading.set(true);
|
|
123
124
|
const result = await this.vm()?.find(value);
|
|
124
125
|
if (result?.total == 1) {
|
|
@@ -134,7 +135,7 @@ export class AXPLookupWidgetEditComponent extends AXPWidgetBase {
|
|
|
134
135
|
this.searchTerm.set(null);
|
|
135
136
|
this.displayText.set('');
|
|
136
137
|
this.selectedItem.set(item);
|
|
137
|
-
const text = this.formatService.format(this.textField,
|
|
138
|
+
const text = this.formatService.format(this.textField, 'string', item);
|
|
138
139
|
this.displayText.set(text);
|
|
139
140
|
this.setValue(item.id);
|
|
140
141
|
if (this.expose) {
|
|
@@ -142,8 +143,8 @@ export class AXPLookupWidgetEditComponent extends AXPWidgetBase {
|
|
|
142
143
|
this.builderService.setValue(this.expose, item);
|
|
143
144
|
}
|
|
144
145
|
else if (Array.isArray(this.expose)) {
|
|
145
|
-
this.expose.forEach(i => {
|
|
146
|
-
if (typeof i ==
|
|
146
|
+
this.expose.forEach((i) => {
|
|
147
|
+
if (typeof i == 'string') {
|
|
147
148
|
this.builderService.setValue(i, item);
|
|
148
149
|
}
|
|
149
150
|
else {
|
|
@@ -165,23 +166,26 @@ export class AXPLookupWidgetEditComponent extends AXPWidgetBase {
|
|
|
165
166
|
}
|
|
166
167
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPLookupWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
167
168
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXPLookupWidgetEditComponent, isStandalone: true, selector: "ng-component", inputs: { entity: "entity", conditions: "conditions", expose: "expose" }, viewQueries: [{ propertyName: "textbox", first: true, predicate: AXTextBoxComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
168
|
-
<ax-text-box
|
|
169
|
+
<ax-text-box
|
|
170
|
+
[ngModel]="displayText()"
|
|
171
|
+
(onValueChanged)="handleValueChange($event)"
|
|
172
|
+
[placeholder]="placeholder()"
|
|
173
|
+
(onKeyUp)="handleKeyDown($event)"
|
|
174
|
+
(onBlur)="handleOnBlur($event)"
|
|
175
|
+
>
|
|
169
176
|
@for (validation of validationRules; track $index) {
|
|
170
|
-
|
|
177
|
+
<ax-validation-rule [rule]="validation.rule" [message]="validation.options?.message" [options]="validation.options"></ax-validation-rule>
|
|
171
178
|
}
|
|
172
179
|
<ax-clear-button (click)="handleClearClick()"></ax-clear-button>
|
|
173
180
|
|
|
174
181
|
<ax-suffix>
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
</ax-icon>
|
|
183
|
-
}
|
|
184
|
-
</ax-button>
|
|
182
|
+
<ax-button color="ghost" look="twotone" [disabled]="isLoading()" (onClick)="handleOnClick($event)">
|
|
183
|
+
@if(isLoading()) {
|
|
184
|
+
<ax-loading></ax-loading>
|
|
185
|
+
} @else {
|
|
186
|
+
<ax-icon icon="far fa-search"> </ax-icon>
|
|
187
|
+
}
|
|
188
|
+
</ax-button>
|
|
185
189
|
</ax-suffix>
|
|
186
190
|
</ax-text-box>
|
|
187
191
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i5.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXValidationModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "directive", type: i6.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -190,23 +194,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
190
194
|
type: Component,
|
|
191
195
|
args: [{
|
|
192
196
|
template: `
|
|
193
|
-
<ax-text-box
|
|
197
|
+
<ax-text-box
|
|
198
|
+
[ngModel]="displayText()"
|
|
199
|
+
(onValueChanged)="handleValueChange($event)"
|
|
200
|
+
[placeholder]="placeholder()"
|
|
201
|
+
(onKeyUp)="handleKeyDown($event)"
|
|
202
|
+
(onBlur)="handleOnBlur($event)"
|
|
203
|
+
>
|
|
194
204
|
@for (validation of validationRules; track $index) {
|
|
195
|
-
|
|
205
|
+
<ax-validation-rule [rule]="validation.rule" [message]="validation.options?.message" [options]="validation.options"></ax-validation-rule>
|
|
196
206
|
}
|
|
197
207
|
<ax-clear-button (click)="handleClearClick()"></ax-clear-button>
|
|
198
208
|
|
|
199
209
|
<ax-suffix>
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
</ax-icon>
|
|
208
|
-
}
|
|
209
|
-
</ax-button>
|
|
210
|
+
<ax-button color="ghost" look="twotone" [disabled]="isLoading()" (onClick)="handleOnClick($event)">
|
|
211
|
+
@if(isLoading()) {
|
|
212
|
+
<ax-loading></ax-loading>
|
|
213
|
+
} @else {
|
|
214
|
+
<ax-icon icon="far fa-search"> </ax-icon>
|
|
215
|
+
}
|
|
216
|
+
</ax-button>
|
|
210
217
|
</ax-suffix>
|
|
211
218
|
</ax-text-box>
|
|
212
219
|
`,
|
|
@@ -221,12 +228,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
221
228
|
AXDecoratorModule,
|
|
222
229
|
AXLoadingModule,
|
|
223
230
|
AXValidationModule,
|
|
224
|
-
AXFormModule
|
|
231
|
+
AXFormModule,
|
|
225
232
|
],
|
|
226
|
-
inputs: [
|
|
233
|
+
inputs: ['entity', 'conditions', 'expose'],
|
|
227
234
|
}]
|
|
228
235
|
}], propDecorators: { textbox: [{
|
|
229
236
|
type: ViewChild,
|
|
230
237
|
args: [AXTextBoxComponent]
|
|
231
238
|
}] } });
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXdpZGdldC1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2VudGl0eS9zcmMvbGliL3dpZGdldHMvbG9va3VwLXdpZGdldC9sb29rdXAtd2lkZ2V0LWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFjLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXRGLE9BQU8sRUFB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cmNlLCBBWERhdGFTb3VyY2VGaWx0ZXJPcHRpb24sIEFYRXZlbnQsIEFYRm9jdXNFdmVudCwgQVhIdG1sRXZlbnQsIEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7IEFYU2VsZWN0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlbGVjdC1ib3gnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UsIEFYUFdpZGdldEJhc2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgRGVzdHJveVJlZiwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbmplY3Rvciwgc2lnbmFsLCB2aWV3Q2hpbGQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBWFBfRU5USVRZX0RFRklOSVRJT05fTE9BREVSIH0gZnJvbSAnLi4vLi4vZW50aXR5LmNvbmZpZyc7XG5pbXBvcnQgeyBBWFRleHRCb3hDb21wb25lbnQsIEFYVGV4dEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90ZXh0LWJveCc7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWEZvcm1hdFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYUG9wdXBTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcHVwJztcbmltcG9ydCB7IEFYUExvb2t1cFdpZGdldFNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9sb29rdXAtd2lkZ2V0LXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBMb29rdXBXaWRnZXRTZWxlY3RvclZpZXdNb2RlbCB9IGZyb20gJy4vbG9va3VwLXdpZGdldC1zZWxlY3Rvci52aWV3bW9kZWwnO1xuaW1wb3J0IHsgQVhQRW50aXR5LCBBWFBRdWVyeUZpbHRlciwgQVhQVmFsaWRhdGlvblJ1bGVzIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgZ2V0LCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYVmFsaWRhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcbmltcG9ydCB7IEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGF4LXRleHQtYm94IFtuZ01vZGVsXT1cImRpc3BsYXlUZXh0KClcIiAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlVmFsdWVDaGFuZ2UoJGV2ZW50KVwiICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIiAob25LZXlVcCk9XCJoYW5kbGVLZXlEb3duKCRldmVudClcIiAob25CbHVyKT1cImhhbmRsZU9uQmx1cigkZXZlbnQpXCI+XG4gICAgICBAZm9yICh2YWxpZGF0aW9uIG9mIHZhbGlkYXRpb25SdWxlczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgPGF4LXZhbGlkYXRpb24tcnVsZSBbcnVsZV09XCJ2YWxpZGF0aW9uLnJ1bGVcIiBbbWVzc2FnZV09XCJ2YWxpZGF0aW9uLm9wdGlvbnM/Lm1lc3NhZ2VcIiBbb3B0aW9uc109XCJ2YWxpZGF0aW9uLm9wdGlvbnNcIj48L2F4LXZhbGlkYXRpb24tcnVsZT5cbiAgICAgIH1cbiAgICAgIDxheC1jbGVhci1idXR0b24gKGNsaWNrKT1cImhhbmRsZUNsZWFyQ2xpY2soKVwiPjwvYXgtY2xlYXItYnV0dG9uPlxuXG4gICAgICA8YXgtc3VmZml4PlxuICAgICAgICAgIDxheC1idXR0b24gY29sb3I9XCJnaG9zdFwiIGxvb2s9XCJ0d290b25lXCIgIFtkaXNhYmxlZF09XCJpc0xvYWRpbmcoKVwiIChvbkNsaWNrKT1cImhhbmRsZU9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgQGlmKGlzTG9hZGluZygpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+ICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhciBmYS1zZWFyY2hcIj5cbiAgICAgICAgICAgICAgPC9heC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgPC9heC1zdWZmaXg+XG4gICAgPC9heC10ZXh0LWJveD5cbiAgYCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQVhTZWxlY3RCb3hNb2R1bGUsXG4gICAgQVhUZXh0Qm94TW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYTG9hZGluZ01vZHVsZSxcbiAgICBBWFZhbGlkYXRpb25Nb2R1bGUsXG4gICAgQVhGb3JtTW9kdWxlXG4gIF0sXG4gIGlucHV0czogW1wiZW50aXR5XCIsIFwiY29uZGl0aW9uc1wiLCBcImV4cG9zZVwiXVxufSlcbmV4cG9ydCBjbGFzcyBBWFBMb29rdXBXaWRnZXRFZGl0Q29tcG9uZW50IGV4dGVuZHMgQVhQV2lkZ2V0QmFzZTxhbnk+IHtcblxuICBwcm90ZWN0ZWQgdGV4dEZpZWxkID0gXCJ0aXRsZVwiO1xuICBwcm90ZWN0ZWQgZXhwb3NlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBlbnRpdHk6IHN0cmluZztcbiAgcHJvdGVjdGVkIGZpbHRlcjogQVhEYXRhU291cmNlRmlsdGVyT3B0aW9uIHwgbnVsbDtcblxuICBwcm90ZWN0ZWQgdmFsaWRhdGlvblJ1bGVzOiBBWFBWYWxpZGF0aW9uUnVsZXMgPSBbXTtcblxuICBwcm90ZWN0ZWQgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcm90ZWN0ZWQgbG9hZGVyID0gaW5qZWN0KEFYUF9FTlRJVFlfREVGSU5JVElPTl9MT0FERVIpO1xuICBwcm90ZWN0ZWQgZm9ybWF0U2VydmljZSA9IGluamVjdChBWEZvcm1hdFNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcG9wdXBTZXJ2aWNlID0gaW5qZWN0KEFYUG9wdXBTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBidWlsZGVyU2VydmljZSA9IGluamVjdChBWFBMYXlvdXRCdWlsZGVyU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSBlbnRpdHlEZWY6IEFYUEVudGl0eSB8IG51bGw7XG5cbiAgcHJvdGVjdGVkIGNvbmRpdGlvbnM/OiBBWFBRdWVyeUZpbHRlcltdO1xuXG4gIHByb3RlY3RlZCBkaXNwbGF5VGV4dCA9IHNpZ25hbChcIlwiKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkSXRlbSA9IHNpZ25hbDxhbnkgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHNlYXJjaFRlcm0gPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgQFZpZXdDaGlsZChBWFRleHRCb3hDb21wb25lbnQpXG4gIHRleHRib3g6IEFYVGV4dEJveENvbXBvbmVudDtcblxuICBwcm90ZWN0ZWQgaXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgaXNPcGVuID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgdm0gPSBzaWduYWw8QVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JWaWV3TW9kZWwgfCBudWxsPihudWxsKTtcblxuICBwcm90ZWN0ZWQgcGxhY2Vob2xkZXIgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuICdTZWFyY2ggb24gJyArIHRoaXMudm0oKT8uaW5saW5lRmlsdGVyc1BsYWNlaG9sZGVycygpLmpvaW4oJywgJylcbiAgfSlcblxuXG4gIG92ZXJyaWRlIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgLy9cbiAgICBjb25zdCBbbW9kdWxlLCBlbnRpdHldID0gdGhpcy5lbnRpdHkuc3BsaXQoJy4nKTtcbiAgICB0aGlzLmVudGl0eURlZiA9IGF3YWl0IHRoaXMubG9hZGVyLmdldChtb2R1bGUsIGVudGl0eSk7XG4gICAgLy9cbiAgICB0aGlzLnZtLnNldChuZXcgQVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JWaWV3TW9kZWwodGhpcy5pbmplY3RvciwgdGhpcy5lbnRpdHlEZWYhLCB0aGlzLmZpbHRlcikpO1xuICAgIC8vXG4gICAgdGhpcy50ZXh0RmllbGQgPSB0aGlzLmVudGl0eURlZj8uZm9ybWF0cy5sb29rdXAgPz8gdGhpcy5lbnRpdHlEZWY/LnByb3BlcnRpZXMuZmluZChjID0+IGMubmFtZSAhPSAnaWQnKT8ubmFtZSA/PyBcInRpdGxlXCI7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlKClcbiAgICBpZiAodHlwZW9mIHZhbHVlID09ICdvYmplY3QnKVxuICAgICAgdGhpcy5kaXNwbGF5VGV4dC5zZXQodGhpcy5mb3JtYXRTZXJ2aWNlLmZvcm1hdCh0aGlzLnRleHRGaWVsZCwgXCJzdHJpbmdcIiwgdmFsdWUpKVxuICAgIGVsc2UgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIGF3YWl0IHRoaXMuZmluZEJ5VmFsdWUoKTtcbiAgICB9XG4gICAgLy9cbiAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlXG4gICAgICAub25DaGFuZ2VkXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgYyA9PiB7XG4gICAgICAgIGlmIChjLnBhdGggPT0gdGhpcy5wYXRoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZ2V0VmFsdWUoKSlcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZmluZEJ5VmFsdWUoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmluZEJ5VmFsdWUoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIGNvbnN0IGJ5S2V5ID0gdGhpcy5lbnRpdHlEZWY/LnF1ZXJpZXMuYnlLZXk/LmV4ZWN1dGUgYXMgRnVuY3Rpb247XG4gICAgY29uc3QgaXRlbSA9IGF3YWl0IGJ5S2V5KHRoaXMuZ2V0VmFsdWUoKSk7XG4gICAgdGhpcy5zZXRJdGVtcyhpdGVtKTtcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICB9XG5cblxuICBoYW5kbGVPbkNsaWNrKGU6IEFYQ2xpY2tFdmVudCkge1xuICAgIHRoaXMuc2hvd1NlbGVjdG9yKCk7XG4gIH1cblxuXG4gIHByaXZhdGUgc2hvd1NlbGVjdG9yKCkge1xuICAgIHRoaXMuaXNPcGVuLnNldCh0cnVlKVxuICAgIHRoaXMucG9wdXBTZXJ2aWNlLm9wZW4oQVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JDb21wb25lbnQsIHtcbiAgICAgIHRpdGxlOiBgJHt0aGlzLmVudGl0eURlZj8uZm9ybWF0cy5wbHVyYWx9IExvb2t1cGAsXG4gICAgICBzaXplOiAodGhpcy52bSgpPy5jb2x1bW5zKCkubGVuZ3RoID8/IDApID4gMyA/ICdsZycgOiAnbWQnLFxuICAgICAgZGF0YToge1xuICAgICAgICB2bTogbmV3IEFYUExvb2t1cFdpZGdldFNlbGVjdG9yVmlld01vZGVsKHRoaXMuaW5qZWN0b3IsIHRoaXMuZW50aXR5RGVmISwgdGhpcy5maWx0ZXIpLFxuICAgICAgICBzZWFyY2hUZXJtOiB0aGlzLnNlYXJjaFRlcm0oKSA9PSB0aGlzLmRpc3BsYXlUZXh0KCkgPyBudWxsIDogdGhpcy5zZWFyY2hUZXJtKClcbiAgICAgIH1cbiAgICB9KS50aGVuKChlOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSlcbiAgICAgIHRoaXMudGV4dGJveC5mb2N1cygpO1xuICAgICAgaWYgKGUuZGF0YT8uaXRlbXMpIHtcbiAgICAgICAgdGhpcy5zZXRJdGVtcyhlLmRhdGE/Lml0ZW1zWzBdKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVZhbHVlQ2hhbmdlKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0uc2V0KGUudmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZU9uQmx1cihlOiBBWEZvY3VzRXZlbnQpIHtcbiAgICBjb25zdCBjb20gPSAoZS5jb21wb25lbnQgYXMgQVhUZXh0Qm94Q29tcG9uZW50KTtcbiAgICBjb25zdCBpbnB1dCA9IChjb21bJ2lucHV0J10gYXMgRWxlbWVudFJlZikubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtKCkpIHtcbiAgICAgICAgaW5wdXQudmFsdWUgPSB0aGlzLmRpc3BsYXlUZXh0KCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbigpKSB7XG4gICAgICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICAgICAgICB0aGlzLnNlYXJjaFRlcm0uc2V0KG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVLZXlEb3duKGU6IEFYSHRtbEV2ZW50KSB7XG4gICAgY29uc3Qga2V5RXZlbnQgPSBlLm5hdGl2ZUV2ZW50IGFzIEtleWJvYXJkRXZlbnQ7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnNlYXJjaFRlcm0oKT8udHJpbSgpO1xuICAgIGlmICgoa2V5RXZlbnQuY29kZSA9PSBcIkVudGVyXCIgfHwga2V5RXZlbnQuY29kZSA9PSBcIk51bXBhZEVudGVyXCIpICYmIHZhbHVlKSB7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnZtKCk/LmZpbmQodmFsdWUpO1xuICAgICAgaWYgKHJlc3VsdD8udG90YWwgPT0gMSkge1xuICAgICAgICB0aGlzLnNldEl0ZW1zKHJlc3VsdC5pdGVtc1swXSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93U2VsZWN0b3IoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRJdGVtcyhpdGVtOiBhbnkpIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0uc2V0KG51bGwpO1xuICAgIHRoaXMuZGlzcGxheVRleHQuc2V0KCcnKTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbS5zZXQoaXRlbSk7XG4gICAgY29uc3QgdGV4dCA9IHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy50ZXh0RmllbGQsIFwic3RyaW5nXCIsIGl0ZW0pO1xuICAgIHRoaXMuZGlzcGxheVRleHQuc2V0KHRleHQpO1xuICAgIHRoaXMuc2V0VmFsdWUoaXRlbS5pZCk7XG4gICAgaWYgKHRoaXMuZXhwb3NlKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuZXhwb3NlID09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuYnVpbGRlclNlcnZpY2Uuc2V0VmFsdWUodGhpcy5leHBvc2UsIGl0ZW0pO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmV4cG9zZSkpIHtcbiAgICAgICAgKHRoaXMuZXhwb3NlIGFzIGFueVtdKS5mb3JFYWNoKGkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgaSA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLnNldFZhbHVlKGksIGl0ZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGdldChpdGVtLCBpLnNvdXJjZSk7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLnNldFZhbHVlKGkudGFyZ2V0LCBrZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQ2xlYXJDbGljaygpIHtcbiAgICB0aGlzLmNsZWFyKCk7XG4gICAgdGhpcy5zZXRWYWx1ZShudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0uc2V0KCcnKTtcbiAgICB0aGlzLmRpc3BsYXlUZXh0LnNldCgnJyk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0uc2V0KG51bGwpO1xuICB9XG59Il19
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXdpZGdldC1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2VudGl0eS9zcmMvbGliL3dpZGdldHMvbG9va3VwLXdpZGdldC9sb29rdXAtd2lkZ2V0LWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQWMsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7QUEwQ3RGLE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxhQUFrQjtJQXhDcEU7O1FBeUNZLGNBQVMsR0FBRyxPQUFPLENBQUM7UUFLcEIsb0JBQWUsR0FBdUIsRUFBRSxDQUFDO1FBRXpDLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQzlDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9CLG1CQUFjLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDakQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUs5QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixpQkFBWSxHQUFHLE1BQU0sQ0FBYSxJQUFJLENBQUMsQ0FBQztRQUN4QyxlQUFVLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUt6QyxjQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFCLFdBQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkIsT0FBRSxHQUFHLE1BQU0sQ0FBMEMsSUFBSSxDQUFDLENBQUM7UUFFM0QsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3BDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSx5QkFBeUIsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6SCxDQUFDLENBQUMsQ0FBQztLQTJISjtJQXpIVSxLQUFLLENBQUMsUUFBUTtRQUNyQixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsRUFBRTtRQUNGLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN2RCxFQUFFO1FBQ0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDL0YsRUFBRTtRQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksT0FBTyxDQUFDO1FBQzNILE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVE7WUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQzFHLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFDRCxFQUFFO1FBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUYsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO29CQUFFLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxLQUFLLENBQUMsV0FBVztRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBbUIsQ0FBQztRQUNqRSxNQUFNLElBQUksR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxhQUFhLENBQUMsQ0FBZTtRQUMzQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVk7YUFDZCxJQUFJLENBQUMsZ0NBQWdDLEVBQUU7WUFDdEMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsTUFBTSxTQUFTO1lBQ2pELElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDMUQsSUFBSSxFQUFFO2dCQUNKLEVBQUUsRUFBRSxJQUFJLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUNyRixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO2FBQy9FO1NBQ0YsQ0FBQzthQUNELElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRVMsaUJBQWlCLENBQUMsQ0FBc0I7UUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFUyxZQUFZLENBQUMsQ0FBZTtRQUNwQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBK0IsQ0FBQztRQUM5QyxNQUFNLEtBQUssR0FBSSxHQUFHLENBQUMsT0FBTyxDQUFnQixDQUFDLGFBQWlDLENBQUM7UUFDN0UsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7Z0JBQ3hCLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25DLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7b0JBQ25CLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO29CQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDNUIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRVMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFjO1FBQzFDLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxXQUE0QixDQUFDO1FBQ2hELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksUUFBUSxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUMxRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUMsSUFBSSxNQUFNLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLENBQUM7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVPLFFBQVEsQ0FBQyxJQUFTO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xELENBQUM7aUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsTUFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDbkMsSUFBSSxPQUFPLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQzt3QkFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUN4QyxDQUFDO3lCQUFNLENBQUM7d0JBQ04sTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQzlDLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFUyxnQkFBZ0I7UUFDeEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7OEdBNUpVLDRCQUE0QjtrR0FBNUIsNEJBQTRCLDJMQXVCNUIsa0JBQWtCLHVFQTlEbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJULDJEQUlDLFlBQVksOEJBQ1osV0FBVyw4VkFDWCxpQkFBaUIsOEJBQ2pCLGVBQWUscWJBQ2YsY0FBYyxpWEFDZCxpQkFBaUIsdWNBQ2pCLGVBQWUsOEtBQ2Ysa0JBQWtCLDhCQUNsQixZQUFZOzsyRkFJSCw0QkFBNEI7a0JBeEN4QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1QlQ7b0JBQ0QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLFlBQVk7cUJBQ2I7b0JBQ0QsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUM7aUJBQzNDOzhCQXlCQyxPQUFPO3NCQUROLFNBQVM7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYQ2xpY2tFdmVudCwgQVhEYXRhU291cmNlRmlsdGVyT3B0aW9uLCBBWEZvY3VzRXZlbnQsIEFYSHRtbEV2ZW50LCBBWFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYUG9wdXBTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcHVwJztcbmltcG9ydCB7IEFYU2VsZWN0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlbGVjdC1ib3gnO1xuaW1wb3J0IHsgQVhUZXh0Qm94Q29tcG9uZW50LCBBWFRleHRCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGV4dC1ib3gnO1xuaW1wb3J0IHsgQVhGb3JtYXRTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBBWFBFbnRpdHksIEFYUFF1ZXJ5RmlsdGVyLCBBWFBWYWxpZGF0aW9uUnVsZXMgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSwgQVhQV2lkZ2V0QmFzZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIERlc3Ryb3lSZWYsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBWaWV3Q2hpbGQsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQVhQX0VOVElUWV9ERUZJTklUSU9OX0xPQURFUiB9IGZyb20gJy4uLy4uL2VudGl0eS5jb25maWcnO1xuaW1wb3J0IHsgQVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuL2xvb2t1cC13aWRnZXQtc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IEFYUExvb2t1cFdpZGdldFNlbGVjdG9yVmlld01vZGVsIH0gZnJvbSAnLi9sb29rdXAtd2lkZ2V0LXNlbGVjdG9yLnZpZXdtb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogYFxuICAgIDxheC10ZXh0LWJveFxuICAgICAgW25nTW9kZWxdPVwiZGlzcGxheVRleHQoKVwiXG4gICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXG4gICAgICAob25LZXlVcCk9XCJoYW5kbGVLZXlEb3duKCRldmVudClcIlxuICAgICAgKG9uQmx1cik9XCJoYW5kbGVPbkJsdXIoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgQGZvciAodmFsaWRhdGlvbiBvZiB2YWxpZGF0aW9uUnVsZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgPGF4LXZhbGlkYXRpb24tcnVsZSBbcnVsZV09XCJ2YWxpZGF0aW9uLnJ1bGVcIiBbbWVzc2FnZV09XCJ2YWxpZGF0aW9uLm9wdGlvbnM/Lm1lc3NhZ2VcIiBbb3B0aW9uc109XCJ2YWxpZGF0aW9uLm9wdGlvbnNcIj48L2F4LXZhbGlkYXRpb24tcnVsZT5cbiAgICAgIH1cbiAgICAgIDxheC1jbGVhci1idXR0b24gKGNsaWNrKT1cImhhbmRsZUNsZWFyQ2xpY2soKVwiPjwvYXgtY2xlYXItYnV0dG9uPlxuXG4gICAgICA8YXgtc3VmZml4PlxuICAgICAgICA8YXgtYnV0dG9uIGNvbG9yPVwiZ2hvc3RcIiBsb29rPVwidHdvdG9uZVwiIFtkaXNhYmxlZF09XCJpc0xvYWRpbmcoKVwiIChvbkNsaWNrKT1cImhhbmRsZU9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgIEBpZihpc0xvYWRpbmcoKSkge1xuICAgICAgICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmFyIGZhLXNlYXJjaFwiPiA8L2F4LWljb24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIDwvYXgtc3VmZml4PlxuICAgIDwvYXgtdGV4dC1ib3g+XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEFYU2VsZWN0Qm94TW9kdWxlLFxuICAgIEFYVGV4dEJveE1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWExvYWRpbmdNb2R1bGUsXG4gICAgQVhWYWxpZGF0aW9uTW9kdWxlLFxuICAgIEFYRm9ybU1vZHVsZSxcbiAgXSxcbiAgaW5wdXRzOiBbJ2VudGl0eScsICdjb25kaXRpb25zJywgJ2V4cG9zZSddLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBMb29rdXBXaWRnZXRFZGl0Q29tcG9uZW50IGV4dGVuZHMgQVhQV2lkZ2V0QmFzZTxhbnk+IHtcbiAgcHJvdGVjdGVkIHRleHRGaWVsZCA9ICd0aXRsZSc7XG4gIHByb3RlY3RlZCBleHBvc2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIGVudGl0eTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgZmlsdGVyOiBBWERhdGFTb3VyY2VGaWx0ZXJPcHRpb24gfCBudWxsO1xuXG4gIHByb3RlY3RlZCB2YWxpZGF0aW9uUnVsZXM6IEFYUFZhbGlkYXRpb25SdWxlcyA9IFtdO1xuXG4gIHByb3RlY3RlZCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByb3RlY3RlZCBsb2FkZXIgPSBpbmplY3QoQVhQX0VOVElUWV9ERUZJTklUSU9OX0xPQURFUik7XG4gIHByb3RlY3RlZCBmb3JtYXRTZXJ2aWNlID0gaW5qZWN0KEFYRm9ybWF0U2VydmljZSk7XG4gIHByb3RlY3RlZCBwb3B1cFNlcnZpY2UgPSBpbmplY3QoQVhQb3B1cFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJ1aWxkZXJTZXJ2aWNlID0gaW5qZWN0KEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIGVudGl0eURlZjogQVhQRW50aXR5IHwgbnVsbDtcblxuICBwcm90ZWN0ZWQgY29uZGl0aW9ucz86IEFYUFF1ZXJ5RmlsdGVyW107XG5cbiAgcHJvdGVjdGVkIGRpc3BsYXlUZXh0ID0gc2lnbmFsKCcnKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkSXRlbSA9IHNpZ25hbDxhbnkgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHNlYXJjaFRlcm0gPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgQFZpZXdDaGlsZChBWFRleHRCb3hDb21wb25lbnQpXG4gIHRleHRib3g6IEFYVGV4dEJveENvbXBvbmVudDtcblxuICBwcm90ZWN0ZWQgaXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgaXNPcGVuID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgdm0gPSBzaWduYWw8QVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JWaWV3TW9kZWwgfCBudWxsPihudWxsKTtcblxuICBwcm90ZWN0ZWQgcGxhY2Vob2xkZXIgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVTeW5jKCd3aWRnZXQubG9va3VwLnNlYXJjaCcpICsgdGhpcy52bSgpPy5pbmxpbmVGaWx0ZXJzUGxhY2Vob2xkZXJzKCkuam9pbignLCAnKTtcbiAgfSk7XG5cbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAvL1xuICAgIGNvbnN0IFttb2R1bGUsIGVudGl0eV0gPSB0aGlzLmVudGl0eS5zcGxpdCgnLicpO1xuICAgIHRoaXMuZW50aXR5RGVmID0gYXdhaXQgdGhpcy5sb2FkZXIuZ2V0KG1vZHVsZSwgZW50aXR5KTtcbiAgICAvL1xuICAgIHRoaXMudm0uc2V0KG5ldyBBWFBMb29rdXBXaWRnZXRTZWxlY3RvclZpZXdNb2RlbCh0aGlzLmluamVjdG9yLCB0aGlzLmVudGl0eURlZiEsIHRoaXMuZmlsdGVyKSk7XG4gICAgLy9cbiAgICB0aGlzLnRleHRGaWVsZCA9IHRoaXMuZW50aXR5RGVmPy5mb3JtYXRzLmxvb2t1cCA/PyB0aGlzLmVudGl0eURlZj8ucHJvcGVydGllcy5maW5kKChjKSA9PiBjLm5hbWUgIT0gJ2lkJyk/Lm5hbWUgPz8gJ3RpdGxlJztcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09ICdvYmplY3QnKSB0aGlzLmRpc3BsYXlUZXh0LnNldCh0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KHRoaXMudGV4dEZpZWxkLCAnc3RyaW5nJywgdmFsdWUpKTtcbiAgICBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBhd2FpdCB0aGlzLmZpbmRCeVZhbHVlKCk7XG4gICAgfVxuICAgIC8vXG4gICAgdGhpcy5idWlsZGVyU2VydmljZS5vbkNoYW5nZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKGFzeW5jIChjKSA9PiB7XG4gICAgICBpZiAoYy5wYXRoID09IHRoaXMucGF0aCkge1xuICAgICAgICBpZiAodGhpcy5nZXRWYWx1ZSgpKSBhd2FpdCB0aGlzLmZpbmRCeVZhbHVlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZpbmRCeVZhbHVlKCkge1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICBjb25zdCBieUtleSA9IHRoaXMuZW50aXR5RGVmPy5xdWVyaWVzLmJ5S2V5Py5leGVjdXRlIGFzIEZ1bmN0aW9uO1xuICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCBieUtleSh0aGlzLmdldFZhbHVlKCkpO1xuICAgIHRoaXMuc2V0SXRlbXMoaXRlbSk7XG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2soZTogQVhDbGlja0V2ZW50KSB7XG4gICAgdGhpcy5zaG93U2VsZWN0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1NlbGVjdG9yKCkge1xuICAgIHRoaXMuaXNPcGVuLnNldCh0cnVlKTtcbiAgICB0aGlzLnBvcHVwU2VydmljZVxuICAgICAgLm9wZW4oQVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JDb21wb25lbnQsIHtcbiAgICAgICAgdGl0bGU6IGAke3RoaXMuZW50aXR5RGVmPy5mb3JtYXRzLnBsdXJhbH0gTG9va3VwYCxcbiAgICAgICAgc2l6ZTogKHRoaXMudm0oKT8uY29sdW1ucygpLmxlbmd0aCA/PyAwKSA+IDMgPyAnbGcnIDogJ21kJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHZtOiBuZXcgQVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JWaWV3TW9kZWwodGhpcy5pbmplY3RvciwgdGhpcy5lbnRpdHlEZWYhLCB0aGlzLmZpbHRlciksXG4gICAgICAgICAgc2VhcmNoVGVybTogdGhpcy5zZWFyY2hUZXJtKCkgPT0gdGhpcy5kaXNwbGF5VGV4dCgpID8gbnVsbCA6IHRoaXMuc2VhcmNoVGVybSgpLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC50aGVuKChlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy50ZXh0Ym94LmZvY3VzKCk7XG4gICAgICAgIGlmIChlLmRhdGE/Lml0ZW1zKSB7XG4gICAgICAgICAgdGhpcy5zZXRJdGVtcyhlLmRhdGE/Lml0ZW1zWzBdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlVmFsdWVDaGFuZ2UoZTogQVhWYWx1ZUNoYW5nZWRFdmVudCkge1xuICAgIHRoaXMuc2VhcmNoVGVybS5zZXQoZS52YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlT25CbHVyKGU6IEFYRm9jdXNFdmVudCkge1xuICAgIGNvbnN0IGNvbSA9IGUuY29tcG9uZW50IGFzIEFYVGV4dEJveENvbXBvbmVudDtcbiAgICBjb25zdCBpbnB1dCA9IChjb21bJ2lucHV0J10gYXMgRWxlbWVudFJlZikubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtKCkpIHtcbiAgICAgICAgaW5wdXQudmFsdWUgPSB0aGlzLmRpc3BsYXlUZXh0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKCkpIHtcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgICAgICAgIHRoaXMuc2VhcmNoVGVybS5zZXQobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCAxMDApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUtleURvd24oZTogQVhIdG1sRXZlbnQpIHtcbiAgICBjb25zdCBrZXlFdmVudCA9IGUubmF0aXZlRXZlbnQgYXMgS2V5Ym9hcmRFdmVudDtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuc2VhcmNoVGVybSgpPy50cmltKCk7XG4gICAgaWYgKChrZXlFdmVudC5jb2RlID09ICdFbnRlcicgfHwga2V5RXZlbnQuY29kZSA9PSAnTnVtcGFkRW50ZXInKSAmJiB2YWx1ZSkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy52bSgpPy5maW5kKHZhbHVlKTtcbiAgICAgIGlmIChyZXN1bHQ/LnRvdGFsID09IDEpIHtcbiAgICAgICAgdGhpcy5zZXRJdGVtcyhyZXN1bHQuaXRlbXNbMF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93U2VsZWN0b3IoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRJdGVtcyhpdGVtOiBhbnkpIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0uc2V0KG51bGwpO1xuICAgIHRoaXMuZGlzcGxheVRleHQuc2V0KCcnKTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbS5zZXQoaXRlbSk7XG4gICAgY29uc3QgdGV4dCA9IHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy50ZXh0RmllbGQsICdzdHJpbmcnLCBpdGVtKTtcbiAgICB0aGlzLmRpc3BsYXlUZXh0LnNldCh0ZXh0KTtcbiAgICB0aGlzLnNldFZhbHVlKGl0ZW0uaWQpO1xuICAgIGlmICh0aGlzLmV4cG9zZSkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmV4cG9zZSA9PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLnNldFZhbHVlKHRoaXMuZXhwb3NlLCBpdGVtKTtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmV4cG9zZSkpIHtcbiAgICAgICAgKHRoaXMuZXhwb3NlIGFzIGFueVtdKS5mb3JFYWNoKChpKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBpID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLnNldFZhbHVlKGksIGl0ZW0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBnZXQoaXRlbSwgaS5zb3VyY2UpO1xuICAgICAgICAgICAgdGhpcy5idWlsZGVyU2VydmljZS5zZXRWYWx1ZShpLnRhcmdldCwga2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDbGVhckNsaWNrKCkge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB0aGlzLnNldFZhbHVlKG51bGwpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIHRoaXMuc2VhcmNoVGVybS5zZXQoJycpO1xuICAgIHRoaXMuZGlzcGxheVRleHQuc2V0KCcnKTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbS5zZXQobnVsbCk7XG4gIH1cbn1cbiJdfQ==
|
package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.component.mjs
CHANGED
|
@@ -3,19 +3,22 @@ import { AXDataTableModule } from '@acorex/components/data-table';
|
|
|
3
3
|
import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
6
|
+
import { AXButtonModule } from '@acorex/components/button';
|
|
6
7
|
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
7
|
-
import { AXSearchBoxModule } from '@acorex/components/search-box';
|
|
8
|
-
import { AXBasePageComponent } from '@acorex/components/page';
|
|
9
8
|
import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
|
|
10
9
|
import { AXFormModule } from '@acorex/components/form';
|
|
11
|
-
import {
|
|
10
|
+
import { AXBasePageComponent } from '@acorex/components/page';
|
|
11
|
+
import { AXSearchBoxModule } from '@acorex/components/search-box';
|
|
12
|
+
import { AXTranslationModule } from '@acorex/core/translation';
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "@
|
|
14
|
-
import * as i2 from "@acorex/components/
|
|
15
|
-
import * as i3 from "@acorex/components/
|
|
16
|
-
import * as i4 from "@acorex/components/
|
|
17
|
-
import * as i5 from "@acorex/components/
|
|
18
|
-
import * as i6 from "@acorex/
|
|
14
|
+
import * as i1 from "@angular/common";
|
|
15
|
+
import * as i2 from "@acorex/components/common";
|
|
16
|
+
import * as i3 from "@acorex/components/button";
|
|
17
|
+
import * as i4 from "@acorex/components/decorators";
|
|
18
|
+
import * as i5 from "@acorex/components/data-table";
|
|
19
|
+
import * as i6 from "@acorex/components/search-box";
|
|
20
|
+
import * as i7 from "@acorex/platform/layout/builder";
|
|
21
|
+
import * as i8 from "@acorex/core/translation";
|
|
19
22
|
export class AXPLookupWidgetSelectorComponent extends AXBasePageComponent {
|
|
20
23
|
// protected override ngOnInit(): void {
|
|
21
24
|
// super.ngOnInit();
|
|
@@ -57,79 +60,97 @@ export class AXPLookupWidgetSelectorComponent extends AXBasePageComponent {
|
|
|
57
60
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPLookupWidgetSelectorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
58
61
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXPLookupWidgetSelectorComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
|
|
59
62
|
<div class="ax-p-4 ax-flex ax-flex-col ax-gap-4 ax-overflow-hidden">
|
|
60
|
-
@if(vm.hasInlineFilters())
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
@if(vm.hasInlineFilters()) {
|
|
64
|
+
<div class="ax-w-full">
|
|
65
|
+
<ax-search-box
|
|
66
|
+
[placeholder]="('widget.lookup.search' | translate) + vm.inlineFiltersPlaceholders().join(', ')"
|
|
67
|
+
[value]="searchTerm"
|
|
68
|
+
(onValueChanged)="handleChangeSearchValue($event)"
|
|
69
|
+
[axAutoFocus]="true"
|
|
70
|
+
><ax-clear-button></ax-clear-button
|
|
71
|
+
></ax-search-box>
|
|
65
72
|
</div>
|
|
66
73
|
}
|
|
67
|
-
<ax-data-table
|
|
68
|
-
|
|
69
|
-
|
|
74
|
+
<ax-data-table
|
|
75
|
+
#grid
|
|
76
|
+
[showFooter]="false"
|
|
77
|
+
class="ax-h-[50vh]"
|
|
78
|
+
[paging]="true"
|
|
79
|
+
[fetchDataMode]="'manual'"
|
|
80
|
+
[loading]="{ enabled: true, animation: true }"
|
|
81
|
+
[dataSource]="vm.dataSource"
|
|
82
|
+
(selectedRowsChange)="handleSelectedRowsChange($event)"
|
|
83
|
+
(onRowClick)="handleRowClick($event)"
|
|
84
|
+
(onRowDbClick)="handleRowDbClick($event)"
|
|
85
|
+
>
|
|
70
86
|
<!-- <ax-select-column fixed="start" [width]="'50px'"></ax-select-column> -->
|
|
71
|
-
@for(col of vm.columns();track col.name) {
|
|
72
|
-
@if(col.visible)
|
|
73
|
-
{
|
|
87
|
+
@for(col of vm.columns();track col.name) { @if(col.visible) {
|
|
74
88
|
<axp-widget-column-renderer [caption]="col.title" [node]="col.node()"></axp-widget-column-renderer>
|
|
75
|
-
}
|
|
76
|
-
}
|
|
89
|
+
} }
|
|
77
90
|
</ax-data-table>
|
|
78
91
|
</div>
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
<ax-button look="solid" color="primary" text="Create New" (onClick)="handleCreateNewClick()">
|
|
92
|
+
<ax-footer>
|
|
93
|
+
<ax-suffix>
|
|
94
|
+
<ax-button look="solid" color="ghost" text="Close" (onClick)="handleCloseClick()"> </ax-button>
|
|
95
|
+
<ax-button look="solid" color="primary" text="Select" (onClick)="handleSelectClick()" [disabled]="focusedRow == null"> </ax-button>
|
|
96
|
+
@if(!vm.canCreate()) {
|
|
97
|
+
<ax-button look="solid" color="primary" [text]="'Create-New' | translate | async" (onClick)="handleCreateNewClick()">
|
|
86
98
|
<ax-prefix>
|
|
87
|
-
|
|
99
|
+
<ax-icon icon="fa-solid fa-add"></ax-icon>
|
|
88
100
|
</ax-prefix>
|
|
89
101
|
</ax-button>
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXCommonModule }, { kind: "directive", type:
|
|
102
|
+
}
|
|
103
|
+
</ax-suffix>
|
|
104
|
+
</ax-footer>
|
|
105
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXCommonModule }, { kind: "directive", type: i2.AXAutoFocusDirective, selector: "[axAutoFocus]", inputs: ["axAutoFocus", "axAutoFocusTime"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i5.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "rowTemplate", "emptyTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i6.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "delayTime"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i7.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "node", "footerTemplate", "cellTemplate", "headerTemplate"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i8.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
94
106
|
}
|
|
95
107
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPLookupWidgetSelectorComponent, decorators: [{
|
|
96
108
|
type: Component,
|
|
97
109
|
args: [{
|
|
98
110
|
template: `
|
|
99
111
|
<div class="ax-p-4 ax-flex ax-flex-col ax-gap-4 ax-overflow-hidden">
|
|
100
|
-
@if(vm.hasInlineFilters())
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
112
|
+
@if(vm.hasInlineFilters()) {
|
|
113
|
+
<div class="ax-w-full">
|
|
114
|
+
<ax-search-box
|
|
115
|
+
[placeholder]="('widget.lookup.search' | translate) + vm.inlineFiltersPlaceholders().join(', ')"
|
|
116
|
+
[value]="searchTerm"
|
|
117
|
+
(onValueChanged)="handleChangeSearchValue($event)"
|
|
118
|
+
[axAutoFocus]="true"
|
|
119
|
+
><ax-clear-button></ax-clear-button
|
|
120
|
+
></ax-search-box>
|
|
105
121
|
</div>
|
|
106
122
|
}
|
|
107
|
-
<ax-data-table
|
|
108
|
-
|
|
109
|
-
|
|
123
|
+
<ax-data-table
|
|
124
|
+
#grid
|
|
125
|
+
[showFooter]="false"
|
|
126
|
+
class="ax-h-[50vh]"
|
|
127
|
+
[paging]="true"
|
|
128
|
+
[fetchDataMode]="'manual'"
|
|
129
|
+
[loading]="{ enabled: true, animation: true }"
|
|
130
|
+
[dataSource]="vm.dataSource"
|
|
131
|
+
(selectedRowsChange)="handleSelectedRowsChange($event)"
|
|
132
|
+
(onRowClick)="handleRowClick($event)"
|
|
133
|
+
(onRowDbClick)="handleRowDbClick($event)"
|
|
134
|
+
>
|
|
110
135
|
<!-- <ax-select-column fixed="start" [width]="'50px'"></ax-select-column> -->
|
|
111
|
-
@for(col of vm.columns();track col.name) {
|
|
112
|
-
@if(col.visible)
|
|
113
|
-
{
|
|
136
|
+
@for(col of vm.columns();track col.name) { @if(col.visible) {
|
|
114
137
|
<axp-widget-column-renderer [caption]="col.title" [node]="col.node()"></axp-widget-column-renderer>
|
|
115
|
-
}
|
|
116
|
-
}
|
|
138
|
+
} }
|
|
117
139
|
</ax-data-table>
|
|
118
140
|
</div>
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
<ax-button look="solid" color="primary" text="Create New" (onClick)="handleCreateNewClick()">
|
|
141
|
+
<ax-footer>
|
|
142
|
+
<ax-suffix>
|
|
143
|
+
<ax-button look="solid" color="ghost" text="Close" (onClick)="handleCloseClick()"> </ax-button>
|
|
144
|
+
<ax-button look="solid" color="primary" text="Select" (onClick)="handleSelectClick()" [disabled]="focusedRow == null"> </ax-button>
|
|
145
|
+
@if(!vm.canCreate()) {
|
|
146
|
+
<ax-button look="solid" color="primary" [text]="'Create-New' | translate | async" (onClick)="handleCreateNewClick()">
|
|
126
147
|
<ax-prefix>
|
|
127
|
-
|
|
148
|
+
<ax-icon icon="fa-solid fa-add"></ax-icon>
|
|
128
149
|
</ax-prefix>
|
|
129
150
|
</ax-button>
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
151
|
+
}
|
|
152
|
+
</ax-suffix>
|
|
153
|
+
</ax-footer>
|
|
133
154
|
`,
|
|
134
155
|
standalone: true,
|
|
135
156
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
@@ -142,9 +163,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
142
163
|
AXDropdownButtonModule,
|
|
143
164
|
AXDataTableModule,
|
|
144
165
|
AXSearchBoxModule,
|
|
145
|
-
AXPLayoutBuilderModule
|
|
166
|
+
AXPLayoutBuilderModule,
|
|
167
|
+
AXTranslationModule,
|
|
146
168
|
],
|
|
147
|
-
inputs: []
|
|
169
|
+
inputs: [],
|
|
148
170
|
}]
|
|
149
171
|
}] });
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXdpZGdldC1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9lbnRpdHkvc3JjL2xpYi93aWRnZXRzL2xvb2t1cC13aWRnZXQvbG9va3VwLXdpZGdldC1zZWxlY3Rvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBdUIsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQThDLE1BQU0sK0JBQStCLENBQUM7QUFDOUcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7OztBQWdFL0QsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLG1CQUFtQjtJQUt2RSx3Q0FBd0M7SUFDeEMsc0JBQXNCO0lBRXRCLElBQUk7SUFFTSxlQUFlO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRVMsZ0JBQWdCLENBQUMsQ0FBd0I7UUFDakQsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVTLGNBQWMsQ0FBQyxDQUFzQjtRQUM3QyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVTLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxJQUFlO1FBQ3RELGtDQUFrQztJQUNwQyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsQ0FBc0I7UUFDNUMsSUFBSSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVTLEtBQUssQ0FBQyxvQkFBb0I7UUFDbEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFUyxnQkFBZ0I7UUFDeEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVTLGlCQUFpQjtRQUN6QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQzs4R0FqRFUsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0MsK0ZBN0RqQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Q1QsMkRBSUMsWUFBWSxtRkFDWixjQUFjLDJKQUNkLGNBQWMsaVhBQ2QsWUFBWSw4QkFDWixpQkFBaUIsdWNBQ2pCLHNCQUFzQiw4QkFDdEIsaUJBQWlCLGliQUNqQixpQkFBaUIsMlhBQ2pCLHNCQUFzQix5TkFDdEIsbUJBQW1COzsyRkFJVixnQ0FBZ0M7a0JBOUQ1QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Q1Q7b0JBQ0QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3FCQUNwQjtvQkFDRCxNQUFNLEVBQUUsRUFBRTtpQkFDWCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tbW9uTW9kdWxlLCBBWFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBBWERhdGFUYWJsZU1vZHVsZSwgQVhEYXRhVGFibGVSb3dDbGljaywgQVhEYXRhVGFibGVSb3dEYkNsaWNrIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RhdGEtdGFibGUnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bkJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bi1idXR0b24nO1xuaW1wb3J0IHsgQVhGb3JtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhCYXNlUGFnZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wYWdlJztcbmltcG9ydCB7IEFYU2VhcmNoQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlYXJjaC1ib3gnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBMb29rdXBXaWRnZXRTZWxlY3RvclZpZXdNb2RlbCB9IGZyb20gJy4vbG9va3VwLXdpZGdldC1zZWxlY3Rvci52aWV3bW9kZWwnO1xuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImF4LXAtNCBheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC00ICBheC1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgIEBpZih2bS5oYXNJbmxpbmVGaWx0ZXJzKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC13LWZ1bGxcIj5cbiAgICAgICAgPGF4LXNlYXJjaC1ib3hcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKCd3aWRnZXQubG9va3VwLnNlYXJjaCcgfCB0cmFuc2xhdGUpICsgdm0uaW5saW5lRmlsdGVyc1BsYWNlaG9sZGVycygpLmpvaW4oJywgJylcIlxuICAgICAgICAgIFt2YWx1ZV09XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlQ2hhbmdlU2VhcmNoVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICAgW2F4QXV0b0ZvY3VzXT1cInRydWVcIlxuICAgICAgICAgID48YXgtY2xlYXItYnV0dG9uPjwvYXgtY2xlYXItYnV0dG9uXG4gICAgICAgID48L2F4LXNlYXJjaC1ib3g+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIDxheC1kYXRhLXRhYmxlXG4gICAgICAgICNncmlkXG4gICAgICAgIFtzaG93Rm9vdGVyXT1cImZhbHNlXCJcbiAgICAgICAgY2xhc3M9XCJheC1oLVs1MHZoXVwiXG4gICAgICAgIFtwYWdpbmddPVwidHJ1ZVwiXG4gICAgICAgIFtmZXRjaERhdGFNb2RlXT1cIidtYW51YWwnXCJcbiAgICAgICAgW2xvYWRpbmddPVwieyBlbmFibGVkOiB0cnVlLCBhbmltYXRpb246IHRydWUgfVwiXG4gICAgICAgIFtkYXRhU291cmNlXT1cInZtLmRhdGFTb3VyY2VcIlxuICAgICAgICAoc2VsZWN0ZWRSb3dzQ2hhbmdlKT1cImhhbmRsZVNlbGVjdGVkUm93c0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKG9uUm93Q2xpY2spPVwiaGFuZGxlUm93Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgIChvblJvd0RiQ2xpY2spPVwiaGFuZGxlUm93RGJDbGljaygkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPCEtLSA8YXgtc2VsZWN0LWNvbHVtbiBmaXhlZD1cInN0YXJ0XCIgW3dpZHRoXT1cIic1MHB4J1wiPjwvYXgtc2VsZWN0LWNvbHVtbj4gLS0+XG4gICAgICAgIEBmb3IoY29sIG9mIHZtLmNvbHVtbnMoKTt0cmFjayBjb2wubmFtZSkgeyBAaWYoY29sLnZpc2libGUpIHtcbiAgICAgICAgPGF4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyIFtjYXB0aW9uXT1cImNvbC50aXRsZVwiIFtub2RlXT1cImNvbC5ub2RlKClcIj48L2F4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyPlxuICAgICAgICB9IH1cbiAgICAgIDwvYXgtZGF0YS10YWJsZT5cbiAgICA8L2Rpdj5cbiAgICA8YXgtZm9vdGVyPlxuICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwic29saWRcIiBjb2xvcj1cImdob3N0XCIgdGV4dD1cIkNsb3NlXCIgKG9uQ2xpY2spPVwiaGFuZGxlQ2xvc2VDbGljaygpXCI+IDwvYXgtYnV0dG9uPlxuICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIGNvbG9yPVwicHJpbWFyeVwiIHRleHQ9XCJTZWxlY3RcIiAob25DbGljayk9XCJoYW5kbGVTZWxlY3RDbGljaygpXCIgW2Rpc2FibGVkXT1cImZvY3VzZWRSb3cgPT0gbnVsbFwiPiA8L2F4LWJ1dHRvbj5cbiAgICAgICAgQGlmKCF2bS5jYW5DcmVhdGUoKSkge1xuICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIGNvbG9yPVwicHJpbWFyeVwiIFt0ZXh0XT1cIidDcmVhdGUtTmV3JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCIgKG9uQ2xpY2spPVwiaGFuZGxlQ3JlYXRlTmV3Q2xpY2soKVwiPlxuICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtYWRkXCI+PC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9heC1zdWZmaXg+XG4gICAgPC9heC1mb290ZXI+XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYQ29tbW9uTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRm9ybU1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWERyb3Bkb3duQnV0dG9uTW9kdWxlLFxuICAgIEFYRGF0YVRhYmxlTW9kdWxlLFxuICAgIEFYU2VhcmNoQm94TW9kdWxlLFxuICAgIEFYUExheW91dEJ1aWxkZXJNb2R1bGUsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgXSxcbiAgaW5wdXRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VQYWdlQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHZtOiBBWFBMb29rdXBXaWRnZXRTZWxlY3RvclZpZXdNb2RlbDtcbiAgcHJvdGVjdGVkIHNlYXJjaFRlcm06IHN0cmluZztcbiAgcHJvdGVjdGVkIGZvY3VzZWRSb3c6IGFueTtcblxuICAvLyBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gIC8vICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAvLyB9XG5cbiAgcHJvdGVjdGVkIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5zZWFyY2hUZXJtKSB7XG4gICAgICB0aGlzLnZtLmFwcGx5SW5saW5lRmlsdGVyKHRoaXMuc2VhcmNoVGVybSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudm0uYXBwbHlGaWx0ZXJBbmRTb3J0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0RiQ2xpY2soZTogQVhEYXRhVGFibGVSb3dEYkNsaWNrKSB7XG4gICAgdGhpcy5jbG9zZSh7IGl0ZW1zOiBbZS5kYXRhXSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSb3dDbGljayhlOiBBWERhdGFUYWJsZVJvd0NsaWNrKSB7XG4gICAgdGhpcy5mb2N1c2VkUm93ID0gZS5kYXRhO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNlbGVjdGVkUm93c0NoYW5nZShyb3dzOiB1bmtub3duW10pIHtcbiAgICAvL3RoaXMudm0uc2VsZWN0ZWRJdGVtcy5zZXQocm93cyk7XG4gIH1cblxuICBoYW5kbGVDaGFuZ2VTZWFyY2hWYWx1ZShlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50KSB7XG4gICAgaWYgKGUuaXNVc2VySW50ZXJhY3Rpb24pIHtcbiAgICAgIHRoaXMudm0uYXBwbHlJbmxpbmVGaWx0ZXIoZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUNyZWF0ZU5ld0NsaWNrKCkge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgICBhd2FpdCB0aGlzLnZtLmNyZWF0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNsb3NlQ2xpY2soKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVNlbGVjdENsaWNrKCkge1xuICAgIGlmICh0aGlzLmZvY3VzZWRSb3cpIHtcbiAgICAgIHRoaXMuY2xvc2UoeyBpdGVtczogW3RoaXMuZm9jdXNlZFJvd10gfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|