@acorex/platform 19.2.3 → 19.2.5

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.
Files changed (101) hide show
  1. package/common/lib/layout/menu/menu.types.d.ts +2 -1
  2. package/common/lib/search/search-definition.builder.d.ts +1 -1
  3. package/common/lib/search/search-definition.provider.d.ts +1 -0
  4. package/common/lib/search/search.types.d.ts +1 -0
  5. package/common/lib/utils/export-popup.d.ts +19 -0
  6. package/common/lib/utils/export.service.d.ts +21 -0
  7. package/common/lib/utils/index.d.ts +1 -1
  8. package/core/lib/types.d.ts +2 -2
  9. package/fesm2022/acorex-platform-common.mjs +248 -104
  10. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  12. package/fesm2022/acorex-platform-layout-builder.mjs +23 -7
  13. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  14. package/fesm2022/acorex-platform-layout-designer.mjs +8 -8
  15. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  16. package/fesm2022/acorex-platform-layout-entity.mjs +42 -67
  17. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  18. package/fesm2022/acorex-platform-layout-search.mjs +10 -6
  19. package/fesm2022/acorex-platform-layout-search.mjs.map +1 -1
  20. package/fesm2022/acorex-platform-layout-setting.mjs +1 -1
  21. package/fesm2022/acorex-platform-layout-setting.mjs.map +1 -1
  22. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CgyBuwTc.mjs +108 -0
  23. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CgyBuwTc.mjs.map +1 -0
  24. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-DarhCaO1.mjs → acorex-platform-themes-default-entity-master-list-view.component-Btza4YAZ.mjs} +6 -6
  25. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-DarhCaO1.mjs.map → acorex-platform-themes-default-entity-master-list-view.component-Btza4YAZ.mjs.map} +1 -1
  26. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-U8aBv1Ql.mjs +87 -0
  27. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-U8aBv1Ql.mjs.map +1 -0
  28. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-Bwgawuvl.mjs → acorex-platform-themes-default-entity-master-single-view.component-63iOyFsf.mjs} +4 -4
  29. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-63iOyFsf.mjs.map +1 -0
  30. package/fesm2022/acorex-platform-themes-default-search-popup.component-DZHRY0aM.mjs +129 -0
  31. package/fesm2022/acorex-platform-themes-default-search-popup.component-DZHRY0aM.mjs.map +1 -0
  32. package/fesm2022/{acorex-platform-themes-default-setting-page.component-CGjDwlvq.mjs → acorex-platform-themes-default-setting-page.component-Cj83wZbs.mjs} +3 -3
  33. package/fesm2022/{acorex-platform-themes-default-setting-page.component-CGjDwlvq.mjs.map → acorex-platform-themes-default-setting-page.component-Cj83wZbs.mjs.map} +1 -1
  34. package/fesm2022/{acorex-platform-themes-default-setting-view.component-DK9j13yV.mjs → acorex-platform-themes-default-setting-view.component-Ypj7RgOU.mjs} +2 -2
  35. package/fesm2022/{acorex-platform-themes-default-setting-view.component-DK9j13yV.mjs.map → acorex-platform-themes-default-setting-view.component-Ypj7RgOU.mjs.map} +1 -1
  36. package/fesm2022/{acorex-platform-themes-default-theme-palette-preview.page-Cet1sYXJ.mjs → acorex-platform-themes-default-theme-palette-preview.page-D994cHWW.mjs} +4 -4
  37. package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-D994cHWW.mjs.map +1 -0
  38. package/fesm2022/acorex-platform-themes-default.mjs +21 -21
  39. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  40. package/fesm2022/acorex-platform-themes-shared.mjs +11 -6
  41. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  42. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-B53z9A_A.mjs → acorex-platform-widgets-button-widget-designer.component-2iWPztWW.mjs} +2 -2
  43. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-B53z9A_A.mjs.map → acorex-platform-widgets-button-widget-designer.component-2iWPztWW.mjs.map} +1 -1
  44. package/fesm2022/{acorex-platform-widgets-rich-text-popup.component-CHDMlorX.mjs → acorex-platform-widgets-rich-text-popup.component-DYExfz5U.mjs} +2 -2
  45. package/fesm2022/{acorex-platform-widgets-rich-text-popup.component-CHDMlorX.mjs.map → acorex-platform-widgets-rich-text-popup.component-DYExfz5U.mjs.map} +1 -1
  46. package/fesm2022/acorex-platform-widgets.mjs +1236 -59
  47. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  48. package/layout/builder/lib/builder/widget-groups.d.ts +2 -1
  49. package/layout/builder/lib/builder/widget-map.d.ts +9 -0
  50. package/layout/builder/lib/builder/widget.types.d.ts +1 -1
  51. package/layout/search/lib/search.viewmodel.d.ts +2 -1
  52. package/package.json +6 -6
  53. package/themes/default/lib/layouts/search-layout/search-popup.component.d.ts +2 -1
  54. package/themes/shared/lib/components/layout-elements/layout-blocks.component.d.ts +1 -1
  55. package/themes/shared/lib/components/layout-elements/layout-header.component.d.ts +1 -1
  56. package/themes/shared/lib/components/layout-elements/layout-list.component.d.ts +1 -1
  57. package/widgets/lib/properties/groups.d.ts +2 -1
  58. package/widgets/lib/properties/validation.props.d.ts +10 -0
  59. package/widgets/lib/widgets/editors/contact/contact-widget-edit.component.d.ts +1 -0
  60. package/widgets/lib/widgets/editors/text/text-box-widget-edit.component.d.ts +1 -0
  61. package/widgets/lib/widgets/filters/boolean-filter/boolean-filter-widget-edit.component.d.ts +1 -0
  62. package/widgets/lib/widgets/index.d.ts +9 -0
  63. package/widgets/lib/widgets/layout/advanced-grid/advanced-grid-widget-designer.component.d.ts +0 -1
  64. package/widgets/lib/widgets/validations/base-validation/base-validation.component.d.ts +13 -0
  65. package/widgets/lib/widgets/validations/base-validation/base-validation.d.ts +8 -0
  66. package/widgets/lib/widgets/validations/between-validation/between-validation-widget-edit.component.d.ts +25 -0
  67. package/widgets/lib/widgets/validations/between-validation/between-validation-widget.config.d.ts +7 -0
  68. package/widgets/lib/widgets/validations/between-validation/index.d.ts +2 -0
  69. package/widgets/lib/widgets/validations/callback-validation/callback-validation-widget-edit.component.d.ts +23 -0
  70. package/widgets/lib/widgets/validations/callback-validation/callback-validation-widget.config.d.ts +7 -0
  71. package/widgets/lib/widgets/validations/callback-validation/index.d.ts +2 -0
  72. package/widgets/lib/widgets/validations/equal-validation/equal-validation-widget-edit.component.d.ts +23 -0
  73. package/widgets/lib/widgets/validations/equal-validation/equal-validation-widget.config.d.ts +7 -0
  74. package/widgets/lib/widgets/validations/equal-validation/index.d.ts +2 -0
  75. package/widgets/lib/widgets/validations/greater-than-validation/greater-than-validation-widget-edit.component.d.ts +24 -0
  76. package/widgets/lib/widgets/validations/greater-than-validation/greater-than-validation-widget.config.d.ts +7 -0
  77. package/widgets/lib/widgets/validations/greater-than-validation/index.d.ts +2 -0
  78. package/widgets/lib/widgets/validations/less-than-validation/index.d.ts +2 -0
  79. package/widgets/lib/widgets/validations/less-than-validation/less-than-validation-widget-edit.component.d.ts +24 -0
  80. package/widgets/lib/widgets/validations/less-than-validation/less-than-validation-widget.config.d.ts +7 -0
  81. package/widgets/lib/widgets/validations/max-length-validation/index.d.ts +2 -0
  82. package/widgets/lib/widgets/validations/max-length-validation/max-length-validation-widget-edit.component.d.ts +23 -0
  83. package/widgets/lib/widgets/validations/max-length-validation/max-length-validation-widget.config.d.ts +7 -0
  84. package/widgets/lib/widgets/validations/min-length-validation/index.d.ts +2 -0
  85. package/widgets/lib/widgets/validations/min-length-validation/min-length-validation-widget-edit.component.d.ts +23 -0
  86. package/widgets/lib/widgets/validations/min-length-validation/min-length-validation-widget.config.d.ts +7 -0
  87. package/widgets/lib/widgets/validations/regular-expression-validation/index.d.ts +2 -0
  88. package/widgets/lib/widgets/validations/regular-expression-validation/regular-expression-validation-widget-edit.component.d.ts +23 -0
  89. package/widgets/lib/widgets/validations/regular-expression-validation/regular-expression-validation-widget.config.d.ts +7 -0
  90. package/widgets/lib/widgets/validations/required-validation/index.d.ts +2 -0
  91. package/widgets/lib/widgets/validations/required-validation/required-validation-widget-edit.component.d.ts +21 -0
  92. package/widgets/lib/widgets/validations/required-validation/required-validation-widget.config.d.ts +7 -0
  93. package/common/lib/utils/pdf.service.d.ts +0 -25
  94. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Yq3pzh9K.mjs +0 -108
  95. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Yq3pzh9K.mjs.map +0 -1
  96. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-CPG4i72f.mjs +0 -87
  97. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-CPG4i72f.mjs.map +0 -1
  98. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Bwgawuvl.mjs.map +0 -1
  99. package/fesm2022/acorex-platform-themes-default-search-popup.component-ChZHzvG4.mjs +0 -122
  100. package/fesm2022/acorex-platform-themes-default-search-popup.component-ChZHzvG4.mjs.map +0 -1
  101. package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-Cet1sYXJ.mjs.map +0 -1
@@ -0,0 +1,87 @@
1
+ import * as i4 from '@acorex/components/button';
2
+ import { AXButtonModule } from '@acorex/components/button';
3
+ import * as i5 from '@acorex/components/decorators';
4
+ import { AXDecoratorModule } from '@acorex/components/decorators';
5
+ import { AXDialogModule } from '@acorex/components/dialog';
6
+ import { AXDropdownModule } from '@acorex/components/dropdown';
7
+ import * as i7 from '@acorex/components/dropdown-button';
8
+ import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
9
+ import * as i2 from '@acorex/components/form';
10
+ import { AXFormModule } from '@acorex/components/form';
11
+ import * as i6 from '@acorex/components/label';
12
+ import { AXLabelModule } from '@acorex/components/label';
13
+ import * as i5$1 from '@acorex/components/loading';
14
+ import { AXLoadingModule } from '@acorex/components/loading';
15
+ import { AXBasePageComponent } from '@acorex/components/page';
16
+ import { AXTabsModule } from '@acorex/components/tabs';
17
+ import { AXTooltipModule } from '@acorex/components/tooltip';
18
+ import * as i6$2 from '@acorex/core/translation';
19
+ import { AXTranslationModule } from '@acorex/core/translation';
20
+ import { AXValidationModule } from '@acorex/core/validation';
21
+ import { AXPGridLayoutDirective } from '@acorex/platform/common';
22
+ import * as i6$1 from '@acorex/platform/layout/builder';
23
+ import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
24
+ import { AXPWidgetsModule } from '@acorex/platform/widgets';
25
+ import { AXPWorkflowService } from '@acorex/platform/workflow';
26
+ import * as i1 from '@angular/common';
27
+ import { CommonModule } from '@angular/common';
28
+ import * as i0 from '@angular/core';
29
+ import { inject, Component, ChangeDetectionStrategy } from '@angular/core';
30
+ import { FormsModule } from '@angular/forms';
31
+
32
+ class AXPEntityMasterModifyViewComponent extends AXBasePageComponent {
33
+ constructor() {
34
+ super(...arguments);
35
+ this.workflow = inject(AXPWorkflowService);
36
+ }
37
+ handleCloseClick() {
38
+ this.close();
39
+ }
40
+ async handleSaveClick(form) {
41
+ const formResult = await form.validate();
42
+ if (formResult.result) {
43
+ await this.vm.save();
44
+ this.close({ result: true, context: this.vm.context() });
45
+ }
46
+ }
47
+ async handleSectionDiscard(form) {
48
+ this.close({ result: false });
49
+ }
50
+ async handleSectionReset(form) {
51
+ this.vm.reset();
52
+ }
53
+ async handleContextChange(e) {
54
+ this.vm.context.set(e.data);
55
+ }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPEntityMasterModifyViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
57
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPEntityMasterModifyViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"ax-p-4 ax-pb-8\">\n <axp-widgets-container [context]=\"vm.context()\" (onContextChanged)=\"handleContextChange($event)\">\n <ax-form #form [messageStyle]=\"'bottom'\" [updateOn]=\"'blur'\">\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(attr of vm.elements(); track $index) {\n <ax-form-field\n class=\"ax-flex ax-flex-col ax-gap-1\"\n [gridLayout]=\"attr.layout()\"\n [class.ax-hidden]=\"widget.options()['visibility'] == false\"\n >\n <ax-label class=\"ax-font-semibold ax-text-sm\" [required]=\"attr.isRequired()\">\n @if(attr.title()) {\n {{ attr.title() | translate | async }}\n }@else { &nbsp; }\n </ax-label>\n <ng-container\n axp-widget-renderer\n [node]=\"attr.node()\"\n [mode]=\"'edit'\"\n #widget=\"widgetRenderer\"\n ></ng-container>\n </ax-form-field>\n }\n </div>\n </ax-form>\n </axp-widgets-container>\n <ax-footer>\n <ax-suffix>\n <ax-dropdown-button [text]=\"'discard' | translate | async\" (onClick)=\"handleSectionDiscard(form)\">\n <ax-button-item-list>\n <ax-button-item [text]=\"('reset' | translate | async) ?? ' '\" (onClick)=\"handleSectionReset(form)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-rotate-left fa-flip-horizontal\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n <ax-button\n [disabled]=\"vm.isInProgress()\"\n color=\"primary\"\n [text]=\"'apply' | translate | async\"\n (onClick)=\"handleSaveClick(form)\"\n >\n <ax-loading *ngIf=\"vm.isInProgress()\"></ax-loading>\n </ax-button>\n </ax-suffix>\n </ax-footer>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i2.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i2.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i4.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: "component", type: i4.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i4.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i5$1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXTooltipModule }, { kind: "ngmodule", type: AXValidationModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i6.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type: i7.AXDropdownButtonComponent, selector: "ax-dropdown-button", inputs: ["disabled", "size", "color", "look", "text", "type", "mode"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "ngmodule", type:
58
+ //
59
+ AXPLayoutBuilderModule }, { kind: "component", type: i6$1.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i6$1.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXPWidgetsModule }, { kind: "directive", type: AXPGridLayoutDirective, selector: "[gridLayout]", inputs: ["gridLayout"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6$2.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
60
+ }
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPEntityMasterModifyViewComponent, decorators: [{
62
+ type: Component,
63
+ args: [{ imports: [
64
+ CommonModule,
65
+ FormsModule,
66
+ AXFormModule,
67
+ AXDecoratorModule,
68
+ CommonModule,
69
+ AXButtonModule,
70
+ AXDialogModule,
71
+ AXLoadingModule,
72
+ AXTabsModule,
73
+ AXTooltipModule,
74
+ AXValidationModule,
75
+ AXLabelModule,
76
+ AXDropdownModule,
77
+ AXDropdownButtonModule,
78
+ //
79
+ AXPLayoutBuilderModule,
80
+ AXPWidgetsModule,
81
+ AXPGridLayoutDirective,
82
+ AXTranslationModule,
83
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-p-4 ax-pb-8\">\n <axp-widgets-container [context]=\"vm.context()\" (onContextChanged)=\"handleContextChange($event)\">\n <ax-form #form [messageStyle]=\"'bottom'\" [updateOn]=\"'blur'\">\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(attr of vm.elements(); track $index) {\n <ax-form-field\n class=\"ax-flex ax-flex-col ax-gap-1\"\n [gridLayout]=\"attr.layout()\"\n [class.ax-hidden]=\"widget.options()['visibility'] == false\"\n >\n <ax-label class=\"ax-font-semibold ax-text-sm\" [required]=\"attr.isRequired()\">\n @if(attr.title()) {\n {{ attr.title() | translate | async }}\n }@else { &nbsp; }\n </ax-label>\n <ng-container\n axp-widget-renderer\n [node]=\"attr.node()\"\n [mode]=\"'edit'\"\n #widget=\"widgetRenderer\"\n ></ng-container>\n </ax-form-field>\n }\n </div>\n </ax-form>\n </axp-widgets-container>\n <ax-footer>\n <ax-suffix>\n <ax-dropdown-button [text]=\"'discard' | translate | async\" (onClick)=\"handleSectionDiscard(form)\">\n <ax-button-item-list>\n <ax-button-item [text]=\"('reset' | translate | async) ?? ' '\" (onClick)=\"handleSectionReset(form)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-rotate-left fa-flip-horizontal\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n <ax-button\n [disabled]=\"vm.isInProgress()\"\n color=\"primary\"\n [text]=\"'apply' | translate | async\"\n (onClick)=\"handleSaveClick(form)\"\n >\n <ax-loading *ngIf=\"vm.isInProgress()\"></ax-loading>\n </ax-button>\n </ax-suffix>\n </ax-footer>\n</div>\n" }]
84
+ }] });
85
+
86
+ export { AXPEntityMasterModifyViewComponent };
87
+ //# sourceMappingURL=acorex-platform-themes-default-entity-master-modify-view.component-U8aBv1Ql.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-themes-default-entity-master-modify-view.component-U8aBv1Ql.mjs","sources":["../../../../libs/platform/themes/default/src/lib/layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component.html"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogModule } from '@acorex/components/dialog';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXFormComponent, AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPGridLayoutDirective } from '@acorex/platform/common';\nimport { AXPLayoutBuilderModule, AXPLayoutContextChangeEvent } from '@acorex/platform/layout/builder';\nimport { AXPEntityMasterUpdateViewModel } from '@acorex/platform/layout/entity';\nimport { AXPWidgetsModule } from '@acorex/platform/widgets';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n templateUrl: './entity-master-modify-view.component.html',\n imports: [\n CommonModule,\n FormsModule,\n AXFormModule,\n AXDecoratorModule,\n CommonModule,\n AXButtonModule,\n AXDialogModule,\n AXLoadingModule,\n AXTabsModule,\n AXTooltipModule,\n AXValidationModule,\n AXLabelModule,\n AXDropdownModule,\n AXDropdownButtonModule,\n //\n AXPLayoutBuilderModule,\n AXPWidgetsModule,\n AXPGridLayoutDirective,\n AXTranslationModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPEntityMasterModifyViewComponent extends AXBasePageComponent {\n protected vm!: AXPEntityMasterUpdateViewModel;\n\n protected workflow = inject(AXPWorkflowService);\n\n protected handleCloseClick() {\n this.close();\n }\n\n protected async handleSaveClick(form: AXFormComponent) {\n const formResult = await form.validate();\n if (formResult.result) {\n await this.vm.save();\n this.close({ result: true, context: this.vm.context() });\n }\n }\n\n protected async handleSectionDiscard(form: AXFormComponent) {\n this.close({ result: false });\n }\n\n protected async handleSectionReset(form: AXFormComponent) {\n this.vm.reset();\n }\n\n protected async handleContextChange(e: AXPLayoutContextChangeEvent) {\n this.vm.context.set(e.data);\n }\n}\n","<div class=\"ax-p-4 ax-pb-8\">\n <axp-widgets-container [context]=\"vm.context()\" (onContextChanged)=\"handleContextChange($event)\">\n <ax-form #form [messageStyle]=\"'bottom'\" [updateOn]=\"'blur'\">\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(attr of vm.elements(); track $index) {\n <ax-form-field\n class=\"ax-flex ax-flex-col ax-gap-1\"\n [gridLayout]=\"attr.layout()\"\n [class.ax-hidden]=\"widget.options()['visibility'] == false\"\n >\n <ax-label class=\"ax-font-semibold ax-text-sm\" [required]=\"attr.isRequired()\">\n @if(attr.title()) {\n {{ attr.title() | translate | async }}\n }@else { &nbsp; }\n </ax-label>\n <ng-container\n axp-widget-renderer\n [node]=\"attr.node()\"\n [mode]=\"'edit'\"\n #widget=\"widgetRenderer\"\n ></ng-container>\n </ax-form-field>\n }\n </div>\n </ax-form>\n </axp-widgets-container>\n <ax-footer>\n <ax-suffix>\n <ax-dropdown-button [text]=\"'discard' | translate | async\" (onClick)=\"handleSectionDiscard(form)\">\n <ax-button-item-list>\n <ax-button-item [text]=\"('reset' | translate | async) ?? ' '\" (onClick)=\"handleSectionReset(form)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-rotate-left fa-flip-horizontal\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n <ax-button\n [disabled]=\"vm.isInProgress()\"\n color=\"primary\"\n [text]=\"'apply' | translate | async\"\n (onClick)=\"handleSaveClick(form)\"\n >\n <ax-loading *ngIf=\"vm.isInProgress()\"></ax-loading>\n </ax-button>\n </ax-suffix>\n </ax-footer>\n</div>\n"],"names":["i3","i5","i8","i9"],"mappings":"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"}
@@ -43,7 +43,7 @@ class AXPEntitySingleOverviewComponent {
43
43
  this.selectedRelatedIEntityTabIndex.set(e.index);
44
44
  }
45
45
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPEntitySingleOverviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPEntitySingleOverviewComponent, isStandalone: true, selector: "axp-entity-single-overview", ngImport: i0, template: "<div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-card ax-mt-2\" [gridLayout]=\"section.layout()\">\n <ax-form #form>\n <axp-widgets-container [context]=\"vm.context()\">\n <div class=\"ax-card-header !ax-py-2 !ax-px-4\">\n <p>\n <span class=\"!ax-text-lg ax-font-semibold\">{{ section.title() | translate | async }}</span>\n <br />\n @if(section.description()) {\n <span class=\"ax-text-sm ax-font-normal ax-text-gray-500\">{{ section.description() }}</span>\n }\n </p>\n @if(section.editable()) {\n <ax-button class=\"ax-xs\" color=\"ghost\" [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\">\n <ax-icon class=\"fa-solid fa-pen ax-text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.props(); track $index) {\n <div class=\"ax-flex ax-flex-col ax-gap-1\" [gridLayout]=\"attr.layout()\">\n <div>\n <div>\n @if(attr.showLabel()) {\n <span class=\"ax-font-semibold\">{{ attr.title() | translate | async }}</span>\n }\n </div>\n </div>\n <div class=\"ax-text-neutral-500\">\n <ng-container axp-widget-renderer [node]=\"attr.node()\" [mode]=\"'view'\"></ng-container>\n </div>\n </div>\n }\n </div>\n </axp-widgets-container>\n </ax-form>\n </div>\n }\n</div>\n\n@if(vm.relatedEntities().length) {\n<ax-tabs [look]=\"'classic'\" class=\"ax-mt-4 ax-font-semibold\" #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\">\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <ax-tab-item [text]=\"(e.title() | translate | async)!\" [key]=\"index.toString()\"> </ax-tab-item>\n }\n</ax-tabs>\n@for(e of vm.relatedEntities();track $index;let index= $index){\n<div [class.ax-hidden]=\"$index != selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view [viewModel]=\"e\"></axp-entity-detail-list-view>\n</div>\n} }", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i2.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i8.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i8.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i4.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: AXBreadcrumbsModule }, { kind: "ngmodule", type:
46
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPEntitySingleOverviewComponent, isStandalone: true, selector: "axp-entity-single-overview", ngImport: i0, template: "<div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-card ax-mt-2\" [gridLayout]=\"section.layout()\">\n <ax-form #form>\n <axp-widgets-container [context]=\"vm.context()\">\n <div class=\"ax-card-header !ax-py-2 !ax-px-4\">\n <p>\n <span class=\"!ax-text-lg ax-font-semibold\">{{ section.title() | translate | async }}</span>\n <br />\n @if(section.description()) {\n <span class=\"ax-text-sm ax-font-normal ax-text-gray-500\">{{ section.description() }}</span>\n }\n </p>\n @if(section.editable()) {\n <ax-button\n class=\"ax-xs\"\n color=\"ghost\"\n [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\"\n >\n <ax-icon class=\"fa-solid fa-pen ax-text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.props(); track $index) {\n <div\n class=\"ax-flex ax-flex-col ax-gap-1\"\n [gridLayout]=\"attr.layout()\"\n [class.ax-hidden]=\"widget.options()['visibility'] == false\"\n >\n <div>\n <div>\n @if(attr.showLabel()) {\n <span class=\"ax-font-semibold\">{{ attr.title() | translate | async }}</span>\n }\n </div>\n </div>\n <div class=\"ax-text-neutral-500\">\n <ng-container\n axp-widget-renderer\n [node]=\"attr.node()\"\n [mode]=\"'view'\"\n #widget=\"widgetRenderer\"\n ></ng-container>\n </div>\n </div>\n }\n </div>\n </axp-widgets-container>\n </ax-form>\n </div>\n }\n</div>\n\n@if(vm.relatedEntities().length) {\n<ax-tabs\n [look]=\"'classic'\"\n class=\"ax-mt-4 ax-font-semibold\"\n #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\"\n>\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <ax-tab-item [text]=\"(e.title() | translate | async)!\" [key]=\"index.toString()\"> </ax-tab-item>\n }\n</ax-tabs>\n@for(e of vm.relatedEntities();track $index;let index= $index){\n<div [class.ax-hidden]=\"$index != selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view [viewModel]=\"e\"></axp-entity-detail-list-view>\n</div>\n} }\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i2.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i8.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i8.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i4.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: AXBreadcrumbsModule }, { kind: "ngmodule", type:
47
47
  //
48
48
  AXPLayoutBuilderModule }, { kind: "component", type: i6.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i6.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXPWidgetsModule }, { kind: "directive", type: AXPGridLayoutDirective, selector: "[gridLayout]", inputs: ["gridLayout"] }, { kind: "component", type: AXPEntityDetailListViewComponent, selector: "axp-entity-detail-list-view", inputs: ["viewModel"] }, { kind: "ngmodule", type:
49
49
  //
@@ -72,7 +72,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
72
72
  AXPEntityDetailListViewComponent,
73
73
  //
74
74
  AXTranslationModule,
75
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-card ax-mt-2\" [gridLayout]=\"section.layout()\">\n <ax-form #form>\n <axp-widgets-container [context]=\"vm.context()\">\n <div class=\"ax-card-header !ax-py-2 !ax-px-4\">\n <p>\n <span class=\"!ax-text-lg ax-font-semibold\">{{ section.title() | translate | async }}</span>\n <br />\n @if(section.description()) {\n <span class=\"ax-text-sm ax-font-normal ax-text-gray-500\">{{ section.description() }}</span>\n }\n </p>\n @if(section.editable()) {\n <ax-button class=\"ax-xs\" color=\"ghost\" [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\">\n <ax-icon class=\"fa-solid fa-pen ax-text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.props(); track $index) {\n <div class=\"ax-flex ax-flex-col ax-gap-1\" [gridLayout]=\"attr.layout()\">\n <div>\n <div>\n @if(attr.showLabel()) {\n <span class=\"ax-font-semibold\">{{ attr.title() | translate | async }}</span>\n }\n </div>\n </div>\n <div class=\"ax-text-neutral-500\">\n <ng-container axp-widget-renderer [node]=\"attr.node()\" [mode]=\"'view'\"></ng-container>\n </div>\n </div>\n }\n </div>\n </axp-widgets-container>\n </ax-form>\n </div>\n }\n</div>\n\n@if(vm.relatedEntities().length) {\n<ax-tabs [look]=\"'classic'\" class=\"ax-mt-4 ax-font-semibold\" #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\">\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <ax-tab-item [text]=\"(e.title() | translate | async)!\" [key]=\"index.toString()\"> </ax-tab-item>\n }\n</ax-tabs>\n@for(e of vm.relatedEntities();track $index;let index= $index){\n<div [class.ax-hidden]=\"$index != selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view [viewModel]=\"e\"></axp-entity-detail-list-view>\n</div>\n} }" }]
75
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-card ax-mt-2\" [gridLayout]=\"section.layout()\">\n <ax-form #form>\n <axp-widgets-container [context]=\"vm.context()\">\n <div class=\"ax-card-header !ax-py-2 !ax-px-4\">\n <p>\n <span class=\"!ax-text-lg ax-font-semibold\">{{ section.title() | translate | async }}</span>\n <br />\n @if(section.description()) {\n <span class=\"ax-text-sm ax-font-normal ax-text-gray-500\">{{ section.description() }}</span>\n }\n </p>\n @if(section.editable()) {\n <ax-button\n class=\"ax-xs\"\n color=\"ghost\"\n [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\"\n >\n <ax-icon class=\"fa-solid fa-pen ax-text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.props(); track $index) {\n <div\n class=\"ax-flex ax-flex-col ax-gap-1\"\n [gridLayout]=\"attr.layout()\"\n [class.ax-hidden]=\"widget.options()['visibility'] == false\"\n >\n <div>\n <div>\n @if(attr.showLabel()) {\n <span class=\"ax-font-semibold\">{{ attr.title() | translate | async }}</span>\n }\n </div>\n </div>\n <div class=\"ax-text-neutral-500\">\n <ng-container\n axp-widget-renderer\n [node]=\"attr.node()\"\n [mode]=\"'view'\"\n #widget=\"widgetRenderer\"\n ></ng-container>\n </div>\n </div>\n }\n </div>\n </axp-widgets-container>\n </ax-form>\n </div>\n }\n</div>\n\n@if(vm.relatedEntities().length) {\n<ax-tabs\n [look]=\"'classic'\"\n class=\"ax-mt-4 ax-font-semibold\"\n #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\"\n>\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <ax-tab-item [text]=\"(e.title() | translate | async)!\" [key]=\"index.toString()\"> </ax-tab-item>\n }\n</ax-tabs>\n@for(e of vm.relatedEntities();track $index;let index= $index){\n<div [class.ax-hidden]=\"$index != selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view [viewModel]=\"e\"></axp-entity-detail-list-view>\n</div>\n} }\n" }]
76
76
  }] });
77
77
 
78
78
  class AXPEntityMasterSingleViewComponent {
@@ -90,7 +90,7 @@ class AXPEntityMasterSingleViewComponent {
90
90
  this.vm.destroy();
91
91
  }
92
92
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPEntityMasterSingleViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
93
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPEntityMasterSingleViewComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<ax-drawer-container>\n <!-- <ax-drawer #drawer location=\"start\" [collapsed]=\"!(isOpen | async)\" [mode]=\" (isSM | async) ? 'overlay' : 'push'\"\n *ngIf=\"loader.hasSections$ | async\" (collapsedChange)=\"handleCollapsedChange($event)\">\n <ax-content class=\"ax-border-e ax-p-6 ax-w-64\">\n <p class=\"ax-text-xl ax-font-bold ax-mb-6\">{{loader.sectionTitle}}</p>\n <ax-tabs look=\"with-line\" location=\"start\">\n @for(tab of (loader.sections$ | async); track tab.name)\n {\n <ax-tab-item [text]=\"tab.title\" [active]=\"isActive(tab)\" (onClick)=\"handleMenuClick($event,tab)\"\n [disabled]=\"editForm.context\">\n </ax-tab-item>\n }\n </ax-tabs>\n </ax-content>\n </ax-drawer> -->\n <ax-content #content class=\"ax-overflow-x-hidden\">\n <div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-min-h-full ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface-lowest ax-border-b md:ax-border-0 md:ax-bg-default\">\n <div class=\"ax-flex ax-flex-col ax-pt-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\" #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface-lowest ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\" [stickyOffset]=\"30\"\n [stickyParent]=\"content.getHostElement()\">\n <!-------- Begin Toolbar -------->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <!-------- Begin Title -------->\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-transition\">\n <div class=\"ax-text-xl md:ax-text-2xl ax-font-bold\">{{ vm.title() }}</div>\n @if(vm.description()) {\n <div class=\"ax-text-sm ax-text-neutral-600\" [class.ax-hidden]=\"sticky.isSticky\">\n {{ vm.description() }}\n </div>\n }\n <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\"\n [class.ax-hidden]=\"store.isSmall()\">\n <ng-template #divider>\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\n </ng-template>\n @for(b of vm.beardcrumbs();track $index;let last=$last) {\n <ax-breadcrumbs-item [active]=\"last\" [class.!ax-font-semibold]=\"last\"\n [class.!ax-text-neutral-600]=\"last\" [routerLink]=\"b.url\">\n @if(b.icon) {\n <i [class]=\"b.icon\"></i>\n }\n {{ b.title | translate | async }}\n </ax-breadcrumbs-item>\n }\n </ax-breadcrumbs>\n </div>\n </div>\n <!-------- Finish Title -------->\n <!--------------------------------------------------------------->\n <!-- Begin Action Menu -->\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n @for(action of vm.primaryActions();track $index) {\n <ax-button [text]=\"(action.title | translate | async)!\" [color]=\"action.color\"\n (onClick)=\"vm.executeCommand(action.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"action.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n } @if(vm.secondaryActions().length) {\n <ax-button [text]=\"store.isSmall() ? null : 'Actions'\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(action of vm.secondaryActions();track $index) {\n <ng-container>\n @if(action.separated) {\n <ax-divider></ax-divider>\n }\n <ax-button-item [text]=\"(action.title | translate | async)!\" [color]=\"action.color\"\n (onClick)=\"vm.executeCommand(action.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"action.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n <!-- Finish Action Menu -->\n </div>\n <!----- Finish Toolbar ----->\n <!--------------------------------------------------------------->\n <!-- Begin Sections -->\n <ax-tabs (onActiveTabChanged)=\"handleActiveDetailTabChanged($event)\" [look]=\"'classic'\"\n class=\"ax-mt-4 ax-font-semibold\" [class.ax-hidden]=\"sticky.isSticky\">\n <ax-tab-item [key]=\"'overview'\" [text]=\"('overview' | translate | async) ?? 'Overview'\"> </ax-tab-item>\n <ax-tab-item *feature=\"'entity-history'\" [key]=\"'history'\"\n [text]=\"('history' | translate | async) ?? 'History'\">\n </ax-tab-item>\n <ax-tab-item *feature=\"'entity-comment'\" [key]=\"'comments'\"\n [text]=\"('comments' | translate | async) ?? 'Comments'\">\n </ax-tab-item>\n </ax-tabs>\n </div>\n\n @switch (selectedDetailTabIndex()) { @case('history'){\n <div></div>\n } @case('comments'){\n <div></div>\n <!-- <axm-comment-list-view vm=\"vm\"></axm-comment-list-view> -->\n } @default {\n <axp-entity-single-overview></axp-entity-single-overview>\n } }\n <!-- Finish Sections -->\n </div>\n </ax-content>\n</ax-drawer-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5.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: AXDropdownModule }, { kind: "component", type: i4$1.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i2$1.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i8.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i8.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i4.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: "component", type: i4.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i4.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: i1$1.AXBreadCrumbsComponent, selector: "ax-breadcrumbs" }, { kind: "component", type: i1$1.AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: ["disabled", "active"] }, { kind: "ngmodule", type:
93
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPEntityMasterSingleViewComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<ax-drawer-container>\n <!-- <ax-drawer #drawer location=\"start\" [collapsed]=\"!(isOpen | async)\" [mode]=\" (isSM | async) ? 'overlay' : 'push'\"\n *ngIf=\"loader.hasSections$ | async\" (collapsedChange)=\"handleCollapsedChange($event)\">\n <ax-content class=\"ax-border-e ax-p-6 ax-w-64\">\n <p class=\"ax-text-xl ax-font-bold ax-mb-6\">{{loader.sectionTitle}}</p>\n <ax-tabs look=\"with-line\" location=\"start\">\n @for(tab of (loader.sections$ | async); track tab.name)\n {\n <ax-tab-item [text]=\"tab.title\" [active]=\"isActive(tab)\" (onClick)=\"handleMenuClick($event,tab)\"\n [disabled]=\"editForm.context\">\n </ax-tab-item>\n }\n </ax-tabs>\n </ax-content>\n </ax-drawer> -->\n <ax-content #content class=\"ax-overflow-x-hidden\">\n <div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-min-h-full ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface-lowest ax-border-b md:ax-border-0 md:ax-bg-default\">\n <div class=\"ax-flex ax-flex-col ax-pt-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\" #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface-lowest ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\" [stickyOffset]=\"30\"\n [stickyParent]=\"content.getHostElement()\">\n <!-------- Begin Toolbar -------->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <!-------- Begin Title -------->\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-transition\">\n <div class=\"ax-text-xl md:ax-text-2xl ax-font-bold\">{{ vm.title() }}</div>\n @if(vm.description()) {\n <div class=\"ax-text-sm ax-text-neutral-600\" [class.ax-hidden]=\"sticky.isSticky\">\n {{ vm.description() }}\n </div>\n }\n <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\"\n [class.ax-hidden]=\"store.isSmall()\">\n <ng-template #divider>\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\n </ng-template>\n @for(b of vm.beardcrumbs();track $index;let last=$last) {\n <ax-breadcrumbs-item [active]=\"last\" [class.!ax-font-semibold]=\"last\"\n [class.!ax-text-neutral-600]=\"last\" [routerLink]=\"b.url\">\n @if(b.icon) {\n <i [class]=\"b.icon\"></i>\n }\n {{ b.title | translate | async }}\n </ax-breadcrumbs-item>\n }\n </ax-breadcrumbs>\n </div>\n </div>\n <!-------- Finish Title -------->\n <!--------------------------------------------------------------->\n <!-- Begin Action Menu -->\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n @for(action of vm.primaryActions();track $index) {\n <ax-button [text]=\"(action.title | translate | async)!\" [color]=\"action.color\"\n (onClick)=\"vm.executeCommand(action.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"action.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n } @if(vm.secondaryActions().length) {\n <ax-button [text]=\"store.isSmall() ? null : 'Actions'\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(action of vm.secondaryActions();track $index) {\n <ng-container>\n @if(action.separated) {\n <ax-divider></ax-divider>\n }\n <ax-button-item [text]=\"(action.title | translate | async)!\" [color]=\"action.color\"\n (onClick)=\"vm.executeCommand(action.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"action.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n <!-- Finish Action Menu -->\n </div>\n <!----- Finish Toolbar ----->\n <!--------------------------------------------------------------->\n <!-- Begin Sections -->\n <ax-tabs (onActiveTabChanged)=\"handleActiveDetailTabChanged($event)\" [look]=\"'classic'\"\n class=\"ax-mt-4 ax-font-semibold\" [class.ax-hidden]=\"sticky.isSticky\">\n <ax-tab-item [key]=\"'overview'\" [text]=\"('overview' | translate | async) ?? 'Overview'\"> </ax-tab-item>\n <ax-tab-item *feature=\"'entity-history'\" [key]=\"'history'\"\n [text]=\"('history' | translate | async) ?? 'History'\">\n </ax-tab-item>\n <ax-tab-item *feature=\"'entity-comment'\" [key]=\"'comments'\"\n [text]=\"('comments' | translate | async) ?? 'Comments'\">\n </ax-tab-item>\n </ax-tabs>\n </div>\n\n @switch (selectedDetailTabIndex()) { @case('history'){\n <div></div>\n } @case('comments'){\n <div></div>\n <!-- <axm-comment-list-view vm=\"vm\"></axm-comment-list-view> -->\n } @default {\n <axp-entity-single-overview></axp-entity-single-overview>\n } }\n <!-- Finish Sections -->\n </div>\n </ax-content>\n</ax-drawer-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i4$1.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i2$1.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i8.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i8.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i4.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: "component", type: i4.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i4.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: i1$1.AXBreadCrumbsComponent, selector: "ax-breadcrumbs" }, { kind: "component", type: i1$1.AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: ["disabled", "active"] }, { kind: "ngmodule", type:
94
94
  //
95
95
  AXPLayoutBuilderModule }, { kind: "ngmodule", type: AXPWidgetsModule }, { kind: "directive", type: AXPStickyDirective, selector: "[axpSticky]", inputs: ["axpSticky", "stickyOffset", "stickyParent", "stickyTarget"], outputs: ["isStickyChange"], exportAs: ["axpSticky"] }, { kind: "component", type: AXPEntitySingleOverviewComponent, selector: "axp-entity-single-overview" }, { kind: "ngmodule", type:
96
96
  // AXMCommentModule,
@@ -127,4 +127,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
127
127
  }] });
128
128
 
129
129
  export { AXPEntityMasterSingleViewComponent };
130
- //# sourceMappingURL=acorex-platform-themes-default-entity-master-single-view.component-Bwgawuvl.mjs.map
130
+ //# sourceMappingURL=acorex-platform-themes-default-entity-master-single-view.component-63iOyFsf.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-themes-default-entity-master-single-view.component-63iOyFsf.mjs","sources":["../../../../libs/platform/themes/default/src/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.html","../../../../libs/platform/themes/default/src/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.html"],"sourcesContent":["import { AXActionSheetModule } from '@acorex/components/action-sheet';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogModule } from '@acorex/components/dialog';\nimport { AXDrawerModule } from '@acorex/components/drawer';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXTabsModule, AXTabStripChangedEvent } from '@acorex/components/tabs';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPGridLayoutDirective } from '@acorex/platform/common';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { AXPEntityMasterSingleViewModel } from '@acorex/platform/layout/entity';\nimport { AXPWidgetsModule } from '@acorex/platform/widgets';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\nimport { ActivatedRoute, RouterModule } from '@angular/router';\nimport { AXPEntityDetailListViewComponent } from '../../entity-detail-list-view/entity-detail-list-view.component';\n\n@Component({\n templateUrl: './entity-single-overview.component.html',\n selector: 'axp-entity-single-overview',\n imports: [\n CommonModule,\n RouterModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXPopoverModule,\n AXFormModule,\n AXActionSheetModule,\n AXDrawerModule,\n AXDialogModule,\n AXLoadingModule,\n AXTabsModule,\n AXButtonModule,\n AXBreadcrumbsModule,\n //\n AXPLayoutBuilderModule,\n AXPWidgetsModule,\n AXPGridLayoutDirective,\n AXPEntityDetailListViewComponent,\n //\n AXTranslationModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPEntitySingleOverviewComponent {\n private activeRoute = inject(ActivatedRoute);\n protected readonly vm = this.activeRoute.snapshot.data['vm'] as AXPEntityMasterSingleViewModel;\n\n protected selectedRelatedIEntityTabIndex = signal(0);\n\n handleActiveRelatedEntityChanged(e: AXTabStripChangedEvent) {\n this.selectedRelatedIEntityTabIndex.set(e.index);\n }\n}\n","<div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-card ax-mt-2\" [gridLayout]=\"section.layout()\">\n <ax-form #form>\n <axp-widgets-container [context]=\"vm.context()\">\n <div class=\"ax-card-header !ax-py-2 !ax-px-4\">\n <p>\n <span class=\"!ax-text-lg ax-font-semibold\">{{ section.title() | translate | async }}</span>\n <br />\n @if(section.description()) {\n <span class=\"ax-text-sm ax-font-normal ax-text-gray-500\">{{ section.description() }}</span>\n }\n </p>\n @if(section.editable()) {\n <ax-button\n class=\"ax-xs\"\n color=\"ghost\"\n [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\"\n >\n <ax-icon class=\"fa-solid fa-pen ax-text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.props(); track $index) {\n <div\n class=\"ax-flex ax-flex-col ax-gap-1\"\n [gridLayout]=\"attr.layout()\"\n [class.ax-hidden]=\"widget.options()['visibility'] == false\"\n >\n <div>\n <div>\n @if(attr.showLabel()) {\n <span class=\"ax-font-semibold\">{{ attr.title() | translate | async }}</span>\n }\n </div>\n </div>\n <div class=\"ax-text-neutral-500\">\n <ng-container\n axp-widget-renderer\n [node]=\"attr.node()\"\n [mode]=\"'view'\"\n #widget=\"widgetRenderer\"\n ></ng-container>\n </div>\n </div>\n }\n </div>\n </axp-widgets-container>\n </ax-form>\n </div>\n }\n</div>\n\n@if(vm.relatedEntities().length) {\n<ax-tabs\n [look]=\"'classic'\"\n class=\"ax-mt-4 ax-font-semibold\"\n #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\"\n>\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <ax-tab-item [text]=\"(e.title() | translate | async)!\" [key]=\"index.toString()\"> </ax-tab-item>\n }\n</ax-tabs>\n@for(e of vm.relatedEntities();track $index;let index= $index){\n<div [class.ax-hidden]=\"$index != selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view [viewModel]=\"e\"></axp-entity-detail-list-view>\n</div>\n} }\n","import { AXActionSheetModule } from '@acorex/components/action-sheet';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogModule } from '@acorex/components/dialog';\nimport { AXDrawerModule } from '@acorex/components/drawer';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXTabsModule, AXTabStripChangedEvent } from '@acorex/components/tabs';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPAuthModule } from '@acorex/platform/auth';\nimport { AXPStickyDirective } from '@acorex/platform/common';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { AXPEntityMasterSingleViewModel } from '@acorex/platform/layout/entity';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXPWidgetsModule } from '@acorex/platform/widgets';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\nimport { ActivatedRoute, RouterModule } from '@angular/router';\nimport { AXPEntitySingleOverviewComponent } from './overview/entity-single-overview.component';\n\n@Component({\n templateUrl: './entity-master-single-view.component.html',\n imports: [\n CommonModule,\n RouterModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXPopoverModule,\n AXFormModule,\n AXActionSheetModule,\n AXDrawerModule,\n AXDialogModule,\n AXLoadingModule,\n AXTabsModule,\n AXButtonModule,\n AXBreadcrumbsModule,\n //\n AXPLayoutBuilderModule,\n AXPWidgetsModule,\n AXPStickyDirective,\n AXPEntitySingleOverviewComponent,\n // AXMCommentModule,\n AXPAuthModule,\n //\n AXTranslationModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPEntityMasterSingleViewComponent {\n private activeRoute = inject(ActivatedRoute);\n protected readonly vm = this.activeRoute.snapshot.data['vm'] as AXPEntityMasterSingleViewModel;\n //\n protected store = inject(AXPLayoutThemeService);\n\n protected selectedDetailTabIndex = signal('Overview');\n\n handleActiveDetailTabChanged(e: AXTabStripChangedEvent) {\n this.selectedDetailTabIndex.set(e.tab.key);\n }\n\n ngOnDestroy(): void {\n this.vm.destroy();\n }\n}\n","<ax-drawer-container>\n <!-- <ax-drawer #drawer location=\"start\" [collapsed]=\"!(isOpen | async)\" [mode]=\" (isSM | async) ? 'overlay' : 'push'\"\n *ngIf=\"loader.hasSections$ | async\" (collapsedChange)=\"handleCollapsedChange($event)\">\n <ax-content class=\"ax-border-e ax-p-6 ax-w-64\">\n <p class=\"ax-text-xl ax-font-bold ax-mb-6\">{{loader.sectionTitle}}</p>\n <ax-tabs look=\"with-line\" location=\"start\">\n @for(tab of (loader.sections$ | async); track tab.name)\n {\n <ax-tab-item [text]=\"tab.title\" [active]=\"isActive(tab)\" (onClick)=\"handleMenuClick($event,tab)\"\n [disabled]=\"editForm.context\">\n </ax-tab-item>\n }\n </ax-tabs>\n </ax-content>\n </ax-drawer> -->\n <ax-content #content class=\"ax-overflow-x-hidden\">\n <div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-min-h-full ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface-lowest ax-border-b md:ax-border-0 md:ax-bg-default\">\n <div class=\"ax-flex ax-flex-col ax-pt-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\" #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface-lowest ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\" [stickyOffset]=\"30\"\n [stickyParent]=\"content.getHostElement()\">\n <!-------- Begin Toolbar -------->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <!-------- Begin Title -------->\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-transition\">\n <div class=\"ax-text-xl md:ax-text-2xl ax-font-bold\">{{ vm.title() }}</div>\n @if(vm.description()) {\n <div class=\"ax-text-sm ax-text-neutral-600\" [class.ax-hidden]=\"sticky.isSticky\">\n {{ vm.description() }}\n </div>\n }\n <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\"\n [class.ax-hidden]=\"store.isSmall()\">\n <ng-template #divider>\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\n </ng-template>\n @for(b of vm.beardcrumbs();track $index;let last=$last) {\n <ax-breadcrumbs-item [active]=\"last\" [class.!ax-font-semibold]=\"last\"\n [class.!ax-text-neutral-600]=\"last\" [routerLink]=\"b.url\">\n @if(b.icon) {\n <i [class]=\"b.icon\"></i>\n }\n {{ b.title | translate | async }}\n </ax-breadcrumbs-item>\n }\n </ax-breadcrumbs>\n </div>\n </div>\n <!-------- Finish Title -------->\n <!--------------------------------------------------------------->\n <!-- Begin Action Menu -->\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n @for(action of vm.primaryActions();track $index) {\n <ax-button [text]=\"(action.title | translate | async)!\" [color]=\"action.color\"\n (onClick)=\"vm.executeCommand(action.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"action.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n } @if(vm.secondaryActions().length) {\n <ax-button [text]=\"store.isSmall() ? null : 'Actions'\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(action of vm.secondaryActions();track $index) {\n <ng-container>\n @if(action.separated) {\n <ax-divider></ax-divider>\n }\n <ax-button-item [text]=\"(action.title | translate | async)!\" [color]=\"action.color\"\n (onClick)=\"vm.executeCommand(action.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"action.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n <!-- Finish Action Menu -->\n </div>\n <!----- Finish Toolbar ----->\n <!--------------------------------------------------------------->\n <!-- Begin Sections -->\n <ax-tabs (onActiveTabChanged)=\"handleActiveDetailTabChanged($event)\" [look]=\"'classic'\"\n class=\"ax-mt-4 ax-font-semibold\" [class.ax-hidden]=\"sticky.isSticky\">\n <ax-tab-item [key]=\"'overview'\" [text]=\"('overview' | translate | async) ?? 'Overview'\"> </ax-tab-item>\n <ax-tab-item *feature=\"'entity-history'\" [key]=\"'history'\"\n [text]=\"('history' | translate | async) ?? 'History'\">\n </ax-tab-item>\n <ax-tab-item *feature=\"'entity-comment'\" [key]=\"'comments'\"\n [text]=\"('comments' | translate | async) ?? 'Comments'\">\n </ax-tab-item>\n </ax-tabs>\n </div>\n\n @switch (selectedDetailTabIndex()) { @case('history'){\n <div></div>\n } @case('comments'){\n <div></div>\n <!-- <axm-comment-list-view vm=\"vm\"></axm-comment-list-view> -->\n } @default {\n <axp-entity-single-overview></axp-entity-single-overview>\n } }\n <!-- Finish Sections -->\n </div>\n </ax-content>\n</ax-drawer-container>"],"names":["i2","i3","i4","i5","i7","i6","i8","i9","i10"],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ import { AXChipsModule } from '@acorex/components/chips';
2
+ import * as i4 from '@acorex/components/common';
3
+ import { AXCommonModule } from '@acorex/components/common';
4
+ import * as i5 from '@acorex/components/decorators';
5
+ import { AXDecoratorModule } from '@acorex/components/decorators';
6
+ import { AXBasePageComponent } from '@acorex/components/page';
7
+ import * as i7 from '@acorex/components/search-box';
8
+ import { AXSearchBoxComponent, AXSearchBoxModule } from '@acorex/components/search-box';
9
+ import * as i9 from '@acorex/components/skeleton';
10
+ import { AXSkeletonModule } from '@acorex/components/skeleton';
11
+ import * as i6 from '@acorex/core/translation';
12
+ import { AXTranslationModule } from '@acorex/core/translation';
13
+ import { AXPGlobalSearchViewModel } from '@acorex/platform/layout/search';
14
+ import { AXPThemeLayoutBlockComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutHeaderTemplateComponent } from '@acorex/platform/themes/shared';
15
+ import * as i1 from '@angular/common';
16
+ import { CommonModule } from '@angular/common';
17
+ import * as i0 from '@angular/core';
18
+ import { inject, viewChild, viewChildren, Component, ChangeDetectionStrategy } from '@angular/core';
19
+ import * as i2 from '@angular/forms';
20
+ import { FormsModule } from '@angular/forms';
21
+ import { first } from 'rxjs';
22
+ import * as i7$1 from '@acorex/cdk/list-navigation';
23
+ import { AXListNavigationDirective, AXListNavigationItemDirective, AXListNavigationModule } from '@acorex/cdk/list-navigation';
24
+ import * as i4$1 from '@acorex/components/button';
25
+ import { AXButtonModule } from '@acorex/components/button';
26
+
27
+ class AXPGlobalSearchPopupComponent extends AXBasePageComponent {
28
+ constructor() {
29
+ super(...arguments);
30
+ this.vm = inject(AXPGlobalSearchViewModel);
31
+ this.text = null;
32
+ this.list = viewChild(AXListNavigationDirective);
33
+ this.searchBox = viewChild(AXSearchBoxComponent);
34
+ this.items = viewChildren(AXListNavigationItemDirective);
35
+ }
36
+ async handleTextChanged(e) {
37
+ if (e.isUserInteraction) {
38
+ await this.vm.search(e.value);
39
+ }
40
+ }
41
+ ngOnInit() {
42
+ super.ngOnInit();
43
+ //
44
+ this.vm.onItemSelected.pipe(first()).subscribe(item => {
45
+ this.close(item);
46
+ });
47
+ }
48
+ handleSearchKeyDown(e) {
49
+ const event = e.nativeEvent;
50
+ switch (event.code) {
51
+ case 'ArrowDown':
52
+ const item = this.items()[0];
53
+ if (item && this.list()) {
54
+ this.list()?.navigateTo(item);
55
+ }
56
+ event.preventDefault();
57
+ event.stopPropagation();
58
+ break;
59
+ }
60
+ }
61
+ handleClearClick($event) {
62
+ this.vm.clearRecentItems();
63
+ }
64
+ handleListKeyDown(e) {
65
+ switch (e.code) {
66
+ case 'ArrowUp':
67
+ {
68
+ const item = this.items()[0];
69
+ if (item && this.list() && item.isActive()) {
70
+ this.searchBox()?.focus();
71
+ }
72
+ break;
73
+ }
74
+ case 'Escape': {
75
+ this.searchBox()?.focus();
76
+ e.preventDefault();
77
+ e.stopPropagation();
78
+ break;
79
+ }
80
+ }
81
+ }
82
+ handleItemKeyDown(e, item) {
83
+ switch (e.code) {
84
+ case 'Enter':
85
+ case 'Space':
86
+ {
87
+ e.preventDefault();
88
+ e.stopPropagation();
89
+ this.vm.execute(item);
90
+ break;
91
+ }
92
+ }
93
+ }
94
+ handlePinClick(e, item) {
95
+ e.stopPropagation();
96
+ this.vm.togglePin(item);
97
+ }
98
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
99
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPGlobalSearchPopupComponent, isStandalone: true, selector: "ng-component", providers: [AXPGlobalSearchViewModel], viewQueries: [{ propertyName: "list", first: true, predicate: AXListNavigationDirective, descendants: true, isSignal: true }, { propertyName: "searchBox", first: true, predicate: AXSearchBoxComponent, descendants: true, isSignal: true }, { propertyName: "items", predicate: AXListNavigationItemDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-layout-content *translate=\"let t\">\n\n <axp-layout-header-container class=\"ax-lg\">\n <ax-search-box [axAutoFocus] [look]=\"'none'\" [ngModel]=\"vm.text()\" (onValueChanged)=\"handleTextChanged($event)\"\n [placeholder]=\"'Type anything to search...'\" (onKeyDown)=\"handleSearchKeyDown($event)\"></ax-search-box>\n <ax-close-button></ax-close-button>\n </axp-layout-header-container>\n\n <!-- Results Area -->\n <axp-layout-body>\n @if(vm.isBusy())\n {\n <ng-container *ngTemplateOutlet=\"skeleton\"></ng-container>\n }\n @else if(vm.isEmpty())\n {\n <ng-container *ngTemplateOutlet=\"empty\"></ng-container>\n }\n @else if(vm.isWelcome())\n {\n <ng-container *ngTemplateOutlet=\"welcome\"></ng-container>\n }\n @else if(vm.isStart())\n {\n <ng-container *ngTemplateOutlet=\"start\"></ng-container>\n }\n @else {\n <ng-container *ngTemplateOutlet=\"result\"></ng-container>\n }\n </axp-layout-body>\n\n <!-- Skeleton Template -->\n <ng-template #skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-10 ax-p-8\">\n @for (item of [1,2,3,4,5]; track $index) {\n <div class=\"ax-flex ax-items-center ax-gap-4\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-4 ax-h-4 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-flex-1\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/4 ax-h-2 ax-rounded\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/2 ax-h-2 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n </ng-template>\n\n <!-- Empty Template -->\n <ng-template #empty>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-rounded-md ax-p-8\">\n <!-- Icon -->\n <div class=\"ax-mb-4\">\n <i class=\"fas fa-search ax-text-gray-400 ax-text-4xl\"></i>\n </div>\n <!-- Message -->\n <div class=\"ax-text-center\">\n <h2 class=\"ax-text-lg ax-font-semibold \">No Results Found</h2>\n <p class=\"ax-mt-2\">\n We couldn\u2019t find anything matching your search. Please refine your keywords or try different terms.\n </p>\n </div>\n </div>\n\n </ng-template>\n\n\n <!-- Welcome Template -->\n <ng-template #welcome>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-rounded-md ax-p-8\">\n <!-- Icon -->\n <div class=\"ax-mb-4\">\n <i class=\"fas fa-search ax-text-gray-400 ax-text-4xl\"></i>\n </div>\n <!-- Message -->\n <div class=\"ax-text-center\">\n <h2 class=\"ax-text-lg ax-font-semibold \">Welcome!</h2>\n <p class=\"ax-mt-2\">\n You can search for anything here. Start typing to find what you need.\n </p>\n </div>\n </div>\n </ng-template>\n\n <!-- Start Template -->\n <ng-template #start>\n\n <axp-layout-list *translate=\"let t\" class=\"ax-p-4 ax-divide-none\" (keydown)=\"handleListKeyDown($event)\"\n axListNavigation #list=\"axListNavigation\">\n\n @if(vm.pinnedItems().length>0)\n {\n <axp-layout-list-group>\n <axp-layout-title>Pinned</axp-layout-title>\n @for (item of vm.pinnedItems(); track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n @if(vm.recentItems().length>0)\n {\n <axp-layout-list-group>\n <axp-layout-header>\n <axp-layout-prefix>\n <axp-layout-title>Recents</axp-layout-title>\n </axp-layout-prefix>\n <axp-layout-prefix class=\"ax-xs\">\n <ax-button [text]=\"'Clear'\" look=\"blank\" color=\"ghost\" (onClick)=\"handleClearClick($event)\"></ax-button>\n </axp-layout-prefix>\n </axp-layout-header>\n @for (item of vm.recentItems(); track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n </axp-layout-list>\n\n </ng-template>\n\n <!-- Result Template -->\n <ng-template #result>\n\n <axp-layout-list class=\"ax-p-4 ax-divide-none\" (keydown)=\"handleListKeyDown($event)\" axListNavigation\n #list=\"axListNavigation\">\n\n @for (group of vm.results(); track $index) {\n <axp-layout-list-group>\n <axp-layout-title> {{ t(group.title) | async}}</axp-layout-title>\n @for (item of group.children; track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n </axp-layout-list>\n\n </ng-template>\n\n <ng-template #listItem let-item=\"item\">\n <axp-layout-prefix>\n <ax-icon icon=\"fal {{item.icon}}\"></ax-icon>\n </axp-layout-prefix>\n <axp-layout-content>\n <axp-layout-title>\n <span>{{ t(item.title) | async}}</span>\n <span class=\"ax-ms-3 group-hover:ax-visible\" (click)=\"handlePinClick($event,item)\">\n <i class=\"fa-light fa-thumbtack ax-rotate-45\" [class.fa-solid]=\"vm.isPinned(item)\"\n [class.ax-invisible]=\"!vm.isPinned(item)\"></i>\n </span>\n </axp-layout-title>\n @if(item.parent)\n {\n <axp-layout-description>\n {{ t(item.parent.title) | async}}\n </axp-layout-description>\n }@else if (item.description) {\n <axp-layout-description>\n {{ t(item.description) | async}}\n </axp-layout-description>\n }\n </axp-layout-content>\n <axp-layout-suffix>\n <i class=\"far fa-chevron-right\"></i>\n </axp-layout-suffix>\n </ng-template>\n</axp-layout-content>", styles: ["axp-layout-title{display:block;font-weight:600}axp-layout-description{color:rgba(var(--ax-color-text-default),.7);display:block;font-size:.875rem;line-height:1.25rem}axp-layout-side-container{display:block;height:100%;min-width:16rem;border-inline-end-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface-lowest),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface-lowest),var(--tw-bg-opacity, 1))}@media (min-width: 1536px){axp-layout-side-container{min-width:18rem}}axp-layout-side-container axp-layout-header-container{gap:.5rem!important;padding:1rem!important}axp-layout-side-container axp-layout-header-container axp-layout-title{font-size:1.25rem;line-height:1.75rem}axp-layout-side-container axp-layout-header-container axp-layout-toolbar{margin-top:.5rem;display:block;padding-left:0;padding-right:0}axp-layout-header-container{display:flex;flex-direction:column;gap:1rem}axp-layout-actions{display:flex;align-items:center;gap:.75rem}axp-layout-title-bar{display:flex;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:.75rem 1rem}@media (min-width: 1280px){axp-layout-title-bar{border-width:0px}}axp-layout-title-bar ax-layout-nav-button{display:flex;align-items:center;justify-content:space-between}axp-layout-toolbar{display:flex;justify-content:space-between;padding-left:1rem;padding-right:1rem}axp-layout-toolbar ax-suffix,axp-layout-toolbar ax-prefix{display:flex;gap:.5rem}axp-layout-toolbar ax-suffix{margin-inline-start:auto;justify-self:end}axp-layout-list{display:flex;flex-direction:column}axp-layout-list>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse));border-style:dashed}axp-layout-list:focus{outline:none}axp-layout-list-group{display:flex;flex-direction:column;padding-top:.5rem;padding-bottom:.5rem}axp-layout-list-group>axp-layout-title{padding-bottom:.5rem;font-size:.875rem;line-height:1.25rem;font-weight:600}axp-layout-list-group>axp-layout-header{display:flex;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}axp-layout-list-item{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:1rem;padding:.5rem;font-size:.875rem;line-height:1.25rem}axp-layout-list-item:focus{outline:none}axp-layout-list-item.axp-state-focused,axp-layout-list-item:hover{cursor:pointer;border-radius:.25rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-100),var(--tw-bg-opacity, 1))}axp-layout-list-item.axp-state-focused:is(.ax-dark *),axp-layout-list-item:hover:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-700),var(--tw-bg-opacity, 1))}axp-layout-list-item>axp-layout-prefix{margin-inline-end:auto;display:flex;flex-direction:row;gap:.5rem}axp-layout-list-item>axp-layout-content{flex:1 1 0%}axp-layout-list-item>axp-layout-content axp-layout-description{font-size:.75rem!important;line-height:1rem!important;opacity:.65!important}axp-layout-list-item>axp-layout-suffix{margin-inline-start:auto;display:flex;flex-direction:row;gap:.5rem}:host axp-layout-content{display:flex;flex-direction:column;width:90vw;max-width:36rem}@media (min-width: 640px){:host axp-layout-content{width:80vw}}@media (min-width: 768px){:host axp-layout-content{width:60vw}}@media (min-width: 1024px){:host axp-layout-content{width:40vw}}@media (min-width: 1280px){:host axp-layout-content{width:30vw}}:host axp-layout-content>axp-layout-header-container{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:.5rem 1rem}:host axp-layout-content>axp-layout-body{display:flex;flex-direction:column}:host axp-layout-content>axp-layout-body>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}:host axp-layout-content>axp-layout-body{overflow-y:auto;border-radius:.375rem;max-height:50vh;min-height:30vh}@media (min-width: 640px){:host axp-layout-content>axp-layout-body{max-height:60vh;min-height:40vh}}@media (min-width: 768px){:host axp-layout-content>axp-layout-body{max-height:70vh;min-height:50vh}}@media (min-width: 1024px){:host axp-layout-content>axp-layout-body{max-height:80vh;min-height:40vh}}:host axp-layout-content>axp-layout-body .axp-search-recent{display:flex;flex-direction:column;padding:1rem}:host axp-layout-content>axp-layout-body .axp-search-recent>axp-layout-header-container{margin-bottom:.5rem;display:flex;flex-direction:row;align-items:center;justify-content:space-between;font-size:.875rem;line-height:1.25rem;font-weight:600}:host axp-layout-content>axp-layout-body .axp-search-recent>axp-layout-body{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem;border-radius:.375rem}:host axp-layout-content axp-layout-list-item axp-layout-prefix ax-icon{display:flex;height:2.25rem;width:2.25rem;align-items:center;justify-content:center;border-radius:.375rem;border-width:1px;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface-high),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-surface-high),var(--tw-text-opacity, 1));font-size:1rem}:host axp-layout-content axp-layout-list-item.axp-state-focused axp-layout-prefix ax-icon,:host axp-layout-content axp-layout-list-item:hover axp-layout-prefix ax-icon{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface-low),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-surface-low),var(--tw-text-opacity, 1))}:host ax-search-box{--ax-comp-editor-placeholder-color: var(--ax-sys-color-input-surface-placeholder)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type:
100
+ //
101
+ AXSearchBoxModule }, { kind: "component", type: i7.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXCommonModule }, { kind: "directive", type: i4.AXAutoFocusDirective, selector: "[axAutoFocus]", inputs: ["axAutoFocus", "axAutoFocusTime"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5.AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["closeAll", "icon"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i6.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXListNavigationModule }, { kind: "directive", type: i7$1.AXListNavigationDirective, selector: "[axListNavigation]", inputs: ["orientation"], outputs: ["onNavigationChanged", "onPressEnterOrSpace"], exportAs: ["axListNavigation"] }, { kind: "directive", type: i7$1.AXListNavigationItemDirective, selector: "[axListNavigationItem]", exportAs: ["axListNavigationItem"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i4$1.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: "component", type:
102
+ //
103
+ AXPThemeLayoutBlockComponent, selector: " axp-layout-content, axp-layout-header-container, axp-layout-footer-container, axp-layout-side-container, axp-layout-sections, axp-layout-section-container, axp-layout-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title, axp-layout-nav-button, axp-layout-description, axp-layout-toolbar, axp-layout-title-bar, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i9.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "ngmodule", type: AXChipsModule }, { kind: "component", type: AXPThemeLayoutListComponent, selector: "axp-layout-list" }, { kind: "component", type: AXPThemeLayoutListItemComponent, selector: "axp-layout-list-item" }, { kind: "component", type: AXPThemeLayoutListItemsGroupComponent, selector: "axp-layout-list-group" }, { kind: "component", type: AXPThemeLayoutHeaderTemplateComponent, selector: "axp-layout-header" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104
+ }
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchPopupComponent, decorators: [{
106
+ type: Component,
107
+ args: [{ imports: [
108
+ CommonModule,
109
+ FormsModule,
110
+ //
111
+ AXSearchBoxModule,
112
+ AXCommonModule,
113
+ AXDecoratorModule,
114
+ AXTranslationModule,
115
+ AXListNavigationModule,
116
+ AXButtonModule,
117
+ //
118
+ AXPThemeLayoutBlockComponent,
119
+ AXSkeletonModule,
120
+ AXChipsModule,
121
+ AXPThemeLayoutListComponent,
122
+ AXPThemeLayoutListItemComponent,
123
+ AXPThemeLayoutListItemsGroupComponent,
124
+ AXPThemeLayoutHeaderTemplateComponent
125
+ ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [AXPGlobalSearchViewModel], template: "<axp-layout-content *translate=\"let t\">\n\n <axp-layout-header-container class=\"ax-lg\">\n <ax-search-box [axAutoFocus] [look]=\"'none'\" [ngModel]=\"vm.text()\" (onValueChanged)=\"handleTextChanged($event)\"\n [placeholder]=\"'Type anything to search...'\" (onKeyDown)=\"handleSearchKeyDown($event)\"></ax-search-box>\n <ax-close-button></ax-close-button>\n </axp-layout-header-container>\n\n <!-- Results Area -->\n <axp-layout-body>\n @if(vm.isBusy())\n {\n <ng-container *ngTemplateOutlet=\"skeleton\"></ng-container>\n }\n @else if(vm.isEmpty())\n {\n <ng-container *ngTemplateOutlet=\"empty\"></ng-container>\n }\n @else if(vm.isWelcome())\n {\n <ng-container *ngTemplateOutlet=\"welcome\"></ng-container>\n }\n @else if(vm.isStart())\n {\n <ng-container *ngTemplateOutlet=\"start\"></ng-container>\n }\n @else {\n <ng-container *ngTemplateOutlet=\"result\"></ng-container>\n }\n </axp-layout-body>\n\n <!-- Skeleton Template -->\n <ng-template #skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-10 ax-p-8\">\n @for (item of [1,2,3,4,5]; track $index) {\n <div class=\"ax-flex ax-items-center ax-gap-4\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-4 ax-h-4 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-flex-1\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/4 ax-h-2 ax-rounded\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/2 ax-h-2 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n </ng-template>\n\n <!-- Empty Template -->\n <ng-template #empty>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-rounded-md ax-p-8\">\n <!-- Icon -->\n <div class=\"ax-mb-4\">\n <i class=\"fas fa-search ax-text-gray-400 ax-text-4xl\"></i>\n </div>\n <!-- Message -->\n <div class=\"ax-text-center\">\n <h2 class=\"ax-text-lg ax-font-semibold \">No Results Found</h2>\n <p class=\"ax-mt-2\">\n We couldn\u2019t find anything matching your search. Please refine your keywords or try different terms.\n </p>\n </div>\n </div>\n\n </ng-template>\n\n\n <!-- Welcome Template -->\n <ng-template #welcome>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-rounded-md ax-p-8\">\n <!-- Icon -->\n <div class=\"ax-mb-4\">\n <i class=\"fas fa-search ax-text-gray-400 ax-text-4xl\"></i>\n </div>\n <!-- Message -->\n <div class=\"ax-text-center\">\n <h2 class=\"ax-text-lg ax-font-semibold \">Welcome!</h2>\n <p class=\"ax-mt-2\">\n You can search for anything here. Start typing to find what you need.\n </p>\n </div>\n </div>\n </ng-template>\n\n <!-- Start Template -->\n <ng-template #start>\n\n <axp-layout-list *translate=\"let t\" class=\"ax-p-4 ax-divide-none\" (keydown)=\"handleListKeyDown($event)\"\n axListNavigation #list=\"axListNavigation\">\n\n @if(vm.pinnedItems().length>0)\n {\n <axp-layout-list-group>\n <axp-layout-title>Pinned</axp-layout-title>\n @for (item of vm.pinnedItems(); track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n @if(vm.recentItems().length>0)\n {\n <axp-layout-list-group>\n <axp-layout-header>\n <axp-layout-prefix>\n <axp-layout-title>Recents</axp-layout-title>\n </axp-layout-prefix>\n <axp-layout-prefix class=\"ax-xs\">\n <ax-button [text]=\"'Clear'\" look=\"blank\" color=\"ghost\" (onClick)=\"handleClearClick($event)\"></ax-button>\n </axp-layout-prefix>\n </axp-layout-header>\n @for (item of vm.recentItems(); track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n </axp-layout-list>\n\n </ng-template>\n\n <!-- Result Template -->\n <ng-template #result>\n\n <axp-layout-list class=\"ax-p-4 ax-divide-none\" (keydown)=\"handleListKeyDown($event)\" axListNavigation\n #list=\"axListNavigation\">\n\n @for (group of vm.results(); track $index) {\n <axp-layout-list-group>\n <axp-layout-title> {{ t(group.title) | async}}</axp-layout-title>\n @for (item of group.children; track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n </axp-layout-list>\n\n </ng-template>\n\n <ng-template #listItem let-item=\"item\">\n <axp-layout-prefix>\n <ax-icon icon=\"fal {{item.icon}}\"></ax-icon>\n </axp-layout-prefix>\n <axp-layout-content>\n <axp-layout-title>\n <span>{{ t(item.title) | async}}</span>\n <span class=\"ax-ms-3 group-hover:ax-visible\" (click)=\"handlePinClick($event,item)\">\n <i class=\"fa-light fa-thumbtack ax-rotate-45\" [class.fa-solid]=\"vm.isPinned(item)\"\n [class.ax-invisible]=\"!vm.isPinned(item)\"></i>\n </span>\n </axp-layout-title>\n @if(item.parent)\n {\n <axp-layout-description>\n {{ t(item.parent.title) | async}}\n </axp-layout-description>\n }@else if (item.description) {\n <axp-layout-description>\n {{ t(item.description) | async}}\n </axp-layout-description>\n }\n </axp-layout-content>\n <axp-layout-suffix>\n <i class=\"far fa-chevron-right\"></i>\n </axp-layout-suffix>\n </ng-template>\n</axp-layout-content>", styles: ["axp-layout-title{display:block;font-weight:600}axp-layout-description{color:rgba(var(--ax-color-text-default),.7);display:block;font-size:.875rem;line-height:1.25rem}axp-layout-side-container{display:block;height:100%;min-width:16rem;border-inline-end-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface-lowest),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface-lowest),var(--tw-bg-opacity, 1))}@media (min-width: 1536px){axp-layout-side-container{min-width:18rem}}axp-layout-side-container axp-layout-header-container{gap:.5rem!important;padding:1rem!important}axp-layout-side-container axp-layout-header-container axp-layout-title{font-size:1.25rem;line-height:1.75rem}axp-layout-side-container axp-layout-header-container axp-layout-toolbar{margin-top:.5rem;display:block;padding-left:0;padding-right:0}axp-layout-header-container{display:flex;flex-direction:column;gap:1rem}axp-layout-actions{display:flex;align-items:center;gap:.75rem}axp-layout-title-bar{display:flex;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:.75rem 1rem}@media (min-width: 1280px){axp-layout-title-bar{border-width:0px}}axp-layout-title-bar ax-layout-nav-button{display:flex;align-items:center;justify-content:space-between}axp-layout-toolbar{display:flex;justify-content:space-between;padding-left:1rem;padding-right:1rem}axp-layout-toolbar ax-suffix,axp-layout-toolbar ax-prefix{display:flex;gap:.5rem}axp-layout-toolbar ax-suffix{margin-inline-start:auto;justify-self:end}axp-layout-list{display:flex;flex-direction:column}axp-layout-list>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse));border-style:dashed}axp-layout-list:focus{outline:none}axp-layout-list-group{display:flex;flex-direction:column;padding-top:.5rem;padding-bottom:.5rem}axp-layout-list-group>axp-layout-title{padding-bottom:.5rem;font-size:.875rem;line-height:1.25rem;font-weight:600}axp-layout-list-group>axp-layout-header{display:flex;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}axp-layout-list-item{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:1rem;padding:.5rem;font-size:.875rem;line-height:1.25rem}axp-layout-list-item:focus{outline:none}axp-layout-list-item.axp-state-focused,axp-layout-list-item:hover{cursor:pointer;border-radius:.25rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-100),var(--tw-bg-opacity, 1))}axp-layout-list-item.axp-state-focused:is(.ax-dark *),axp-layout-list-item:hover:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-700),var(--tw-bg-opacity, 1))}axp-layout-list-item>axp-layout-prefix{margin-inline-end:auto;display:flex;flex-direction:row;gap:.5rem}axp-layout-list-item>axp-layout-content{flex:1 1 0%}axp-layout-list-item>axp-layout-content axp-layout-description{font-size:.75rem!important;line-height:1rem!important;opacity:.65!important}axp-layout-list-item>axp-layout-suffix{margin-inline-start:auto;display:flex;flex-direction:row;gap:.5rem}:host axp-layout-content{display:flex;flex-direction:column;width:90vw;max-width:36rem}@media (min-width: 640px){:host axp-layout-content{width:80vw}}@media (min-width: 768px){:host axp-layout-content{width:60vw}}@media (min-width: 1024px){:host axp-layout-content{width:40vw}}@media (min-width: 1280px){:host axp-layout-content{width:30vw}}:host axp-layout-content>axp-layout-header-container{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:.5rem 1rem}:host axp-layout-content>axp-layout-body{display:flex;flex-direction:column}:host axp-layout-content>axp-layout-body>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}:host axp-layout-content>axp-layout-body{overflow-y:auto;border-radius:.375rem;max-height:50vh;min-height:30vh}@media (min-width: 640px){:host axp-layout-content>axp-layout-body{max-height:60vh;min-height:40vh}}@media (min-width: 768px){:host axp-layout-content>axp-layout-body{max-height:70vh;min-height:50vh}}@media (min-width: 1024px){:host axp-layout-content>axp-layout-body{max-height:80vh;min-height:40vh}}:host axp-layout-content>axp-layout-body .axp-search-recent{display:flex;flex-direction:column;padding:1rem}:host axp-layout-content>axp-layout-body .axp-search-recent>axp-layout-header-container{margin-bottom:.5rem;display:flex;flex-direction:row;align-items:center;justify-content:space-between;font-size:.875rem;line-height:1.25rem;font-weight:600}:host axp-layout-content>axp-layout-body .axp-search-recent>axp-layout-body{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem;border-radius:.375rem}:host axp-layout-content axp-layout-list-item axp-layout-prefix ax-icon{display:flex;height:2.25rem;width:2.25rem;align-items:center;justify-content:center;border-radius:.375rem;border-width:1px;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface-high),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-surface-high),var(--tw-text-opacity, 1));font-size:1rem}:host axp-layout-content axp-layout-list-item.axp-state-focused axp-layout-prefix ax-icon,:host axp-layout-content axp-layout-list-item:hover axp-layout-prefix ax-icon{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface-low),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-surface-low),var(--tw-text-opacity, 1))}:host ax-search-box{--ax-comp-editor-placeholder-color: var(--ax-sys-color-input-surface-placeholder)}\n"] }]
126
+ }] });
127
+
128
+ export { AXPGlobalSearchPopupComponent };
129
+ //# sourceMappingURL=acorex-platform-themes-default-search-popup.component-DZHRY0aM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-themes-default-search-popup.component-DZHRY0aM.mjs","sources":["../../../../libs/platform/themes/default/src/lib/layouts/search-layout/search-popup.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/search-layout/search-popup.component.html"],"sourcesContent":["import { AXChipsModule } from '@acorex/components/chips';\nimport { AXClickEvent, AXCommonModule, AXHtmlEvent, AXValueChangedEvent } from '@acorex/components/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSearchBoxComponent, AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPGlobalSearchViewModel } from '@acorex/platform/layout/search';\nimport {\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutListComponent,\n AXPThemeLayoutListItemComponent,\n AXPThemeLayoutListItemsGroupComponent,\n AXPThemeLayoutHeaderTemplateComponent\n} from '@acorex/platform/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport { Component, ChangeDetectionStrategy, inject, viewChild, viewChildren } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { first } from 'rxjs';\nimport { AXListNavigationDirective, AXListNavigationItemDirective, AXListNavigationModule } from '@acorex/cdk/list-navigation';\nimport { AXPSearchDisplayResult } from '@acorex/platform/common';\nimport { AXButtonModule } from '@acorex/components/button';\n\n\n@Component({\n templateUrl: 'search-popup.component.html',\n styleUrl: 'search-popup.component.scss',\n imports: [\n CommonModule,\n FormsModule,\n //\n AXSearchBoxModule,\n AXCommonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXListNavigationModule,\n AXButtonModule,\n //\n AXPThemeLayoutBlockComponent,\n AXSkeletonModule,\n AXChipsModule,\n AXPThemeLayoutListComponent,\n AXPThemeLayoutListItemComponent,\n AXPThemeLayoutListItemsGroupComponent,\n AXPThemeLayoutHeaderTemplateComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [AXPGlobalSearchViewModel]\n})\nexport class AXPGlobalSearchPopupComponent extends AXBasePageComponent {\n\n\n\n protected vm = inject(AXPGlobalSearchViewModel);\n\n protected text: string | null = null;\n\n private list = viewChild(AXListNavigationDirective);\n private searchBox = viewChild(AXSearchBoxComponent);\n private items = viewChildren(AXListNavigationItemDirective);\n\n async handleTextChanged(e: AXValueChangedEvent<string>) {\n if (e.isUserInteraction) {\n await this.vm.search(e.value!);\n }\n }\n\n protected override ngOnInit() {\n super.ngOnInit();\n //\n this.vm.onItemSelected.pipe(first()).subscribe(item => {\n this.close(item)\n })\n }\n\n protected handleSearchKeyDown(e: AXHtmlEvent<KeyboardEvent>) {\n const event = e.nativeEvent!;\n switch (event.code) {\n case 'ArrowDown':\n const item = this.items()[0];\n if (item && this.list()) {\n this.list()?.navigateTo(item);\n }\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n }\n\n protected handleClearClick($event: AXClickEvent) {\n this.vm.clearRecentItems();\n }\n\n\n protected handleListKeyDown(e: KeyboardEvent) {\n switch (e.code) {\n case 'ArrowUp':\n {\n const item = this.items()[0];\n if (item && this.list() && item.isActive()) {\n this.searchBox()?.focus();\n }\n break;\n }\n case 'Escape': {\n this.searchBox()?.focus();\n e.preventDefault();\n e.stopPropagation();\n break\n }\n }\n }\n\n protected handleItemKeyDown(e: KeyboardEvent, item: AXPSearchDisplayResult) {\n switch (e.code) {\n case 'Enter':\n case 'Space':\n {\n e.preventDefault();\n e.stopPropagation();\n this.vm.execute(item);\n break;\n }\n }\n }\n\n protected handlePinClick(e: Event, item: any) {\n e.stopPropagation();\n this.vm.togglePin(item);\n }\n}\n","<axp-layout-content *translate=\"let t\">\n\n <axp-layout-header-container class=\"ax-lg\">\n <ax-search-box [axAutoFocus] [look]=\"'none'\" [ngModel]=\"vm.text()\" (onValueChanged)=\"handleTextChanged($event)\"\n [placeholder]=\"'Type anything to search...'\" (onKeyDown)=\"handleSearchKeyDown($event)\"></ax-search-box>\n <ax-close-button></ax-close-button>\n </axp-layout-header-container>\n\n <!-- Results Area -->\n <axp-layout-body>\n @if(vm.isBusy())\n {\n <ng-container *ngTemplateOutlet=\"skeleton\"></ng-container>\n }\n @else if(vm.isEmpty())\n {\n <ng-container *ngTemplateOutlet=\"empty\"></ng-container>\n }\n @else if(vm.isWelcome())\n {\n <ng-container *ngTemplateOutlet=\"welcome\"></ng-container>\n }\n @else if(vm.isStart())\n {\n <ng-container *ngTemplateOutlet=\"start\"></ng-container>\n }\n @else {\n <ng-container *ngTemplateOutlet=\"result\"></ng-container>\n }\n </axp-layout-body>\n\n <!-- Skeleton Template -->\n <ng-template #skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-10 ax-p-8\">\n @for (item of [1,2,3,4,5]; track $index) {\n <div class=\"ax-flex ax-items-center ax-gap-4\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-4 ax-h-4 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-flex-1\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/4 ax-h-2 ax-rounded\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/2 ax-h-2 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n </ng-template>\n\n <!-- Empty Template -->\n <ng-template #empty>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-rounded-md ax-p-8\">\n <!-- Icon -->\n <div class=\"ax-mb-4\">\n <i class=\"fas fa-search ax-text-gray-400 ax-text-4xl\"></i>\n </div>\n <!-- Message -->\n <div class=\"ax-text-center\">\n <h2 class=\"ax-text-lg ax-font-semibold \">No Results Found</h2>\n <p class=\"ax-mt-2\">\n We couldn’t find anything matching your search. Please refine your keywords or try different terms.\n </p>\n </div>\n </div>\n\n </ng-template>\n\n\n <!-- Welcome Template -->\n <ng-template #welcome>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-rounded-md ax-p-8\">\n <!-- Icon -->\n <div class=\"ax-mb-4\">\n <i class=\"fas fa-search ax-text-gray-400 ax-text-4xl\"></i>\n </div>\n <!-- Message -->\n <div class=\"ax-text-center\">\n <h2 class=\"ax-text-lg ax-font-semibold \">Welcome!</h2>\n <p class=\"ax-mt-2\">\n You can search for anything here. Start typing to find what you need.\n </p>\n </div>\n </div>\n </ng-template>\n\n <!-- Start Template -->\n <ng-template #start>\n\n <axp-layout-list *translate=\"let t\" class=\"ax-p-4 ax-divide-none\" (keydown)=\"handleListKeyDown($event)\"\n axListNavigation #list=\"axListNavigation\">\n\n @if(vm.pinnedItems().length>0)\n {\n <axp-layout-list-group>\n <axp-layout-title>Pinned</axp-layout-title>\n @for (item of vm.pinnedItems(); track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n @if(vm.recentItems().length>0)\n {\n <axp-layout-list-group>\n <axp-layout-header>\n <axp-layout-prefix>\n <axp-layout-title>Recents</axp-layout-title>\n </axp-layout-prefix>\n <axp-layout-prefix class=\"ax-xs\">\n <ax-button [text]=\"'Clear'\" look=\"blank\" color=\"ghost\" (onClick)=\"handleClearClick($event)\"></ax-button>\n </axp-layout-prefix>\n </axp-layout-header>\n @for (item of vm.recentItems(); track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n </axp-layout-list>\n\n </ng-template>\n\n <!-- Result Template -->\n <ng-template #result>\n\n <axp-layout-list class=\"ax-p-4 ax-divide-none\" (keydown)=\"handleListKeyDown($event)\" axListNavigation\n #list=\"axListNavigation\">\n\n @for (group of vm.results(); track $index) {\n <axp-layout-list-group>\n <axp-layout-title> {{ t(group.title) | async}}</axp-layout-title>\n @for (item of group.children; track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n </axp-layout-list>\n\n </ng-template>\n\n <ng-template #listItem let-item=\"item\">\n <axp-layout-prefix>\n <ax-icon icon=\"fal {{item.icon}}\"></ax-icon>\n </axp-layout-prefix>\n <axp-layout-content>\n <axp-layout-title>\n <span>{{ t(item.title) | async}}</span>\n <span class=\"ax-ms-3 group-hover:ax-visible\" (click)=\"handlePinClick($event,item)\">\n <i class=\"fa-light fa-thumbtack ax-rotate-45\" [class.fa-solid]=\"vm.isPinned(item)\"\n [class.ax-invisible]=\"!vm.isPinned(item)\"></i>\n </span>\n </axp-layout-title>\n @if(item.parent)\n {\n <axp-layout-description>\n {{ t(item.parent.title) | async}}\n </axp-layout-description>\n }@else if (item.description) {\n <axp-layout-description>\n {{ t(item.description) | async}}\n </axp-layout-description>\n }\n </axp-layout-content>\n <axp-layout-suffix>\n <i class=\"far fa-chevron-right\"></i>\n </axp-layout-suffix>\n </ng-template>\n</axp-layout-content>"],"names":["i3","i7","i8"],"mappings":"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"}