@gnggln/ng-ui-system 1.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/gnggln-ng-ui-system.mjs +5 -0
- package/esm2022/lib/components/accordion/accordion.component.mjs +353 -0
- package/esm2022/lib/components/accordion/accordion.types.mjs +6 -0
- package/esm2022/lib/components/accordion/index.mjs +2 -0
- package/esm2022/lib/components/base-layout/base-layout.component.mjs +218 -0
- package/esm2022/lib/components/base-layout/base-layout.types.mjs +6 -0
- package/esm2022/lib/components/base-layout/index.mjs +14 -0
- package/esm2022/lib/components/button/button-area.component.mjs +196 -0
- package/esm2022/lib/components/button/button.component.mjs +164 -0
- package/esm2022/lib/components/button/button.types.mjs +6 -0
- package/esm2022/lib/components/button/index.mjs +16 -0
- package/esm2022/lib/components/crud-table/crud-table.component.mjs +789 -0
- package/esm2022/lib/components/crud-table/crud-table.types.mjs +6 -0
- package/esm2022/lib/components/crud-table/index.mjs +16 -0
- package/esm2022/lib/components/form-builder/adapters/it-date-adapter.mjs +82 -0
- package/esm2022/lib/components/form-builder/directives/currency-input.directive.mjs +184 -0
- package/esm2022/lib/components/form-builder/form-builder.component.mjs +824 -0
- package/esm2022/lib/components/form-builder/form-wizard.component.mjs +510 -0
- package/esm2022/lib/components/form-builder/index.mjs +19 -0
- package/esm2022/lib/components/form-builder/services/form-condition.service.mjs +132 -0
- package/esm2022/lib/components/form-builder/services/form-validation.service.mjs +381 -0
- package/esm2022/lib/components/form-builder/services/location.service.mjs +140 -0
- package/esm2022/lib/components/form-builder/services/wizard-sync.service.mjs +84 -0
- package/esm2022/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +161 -0
- package/esm2022/lib/components/form-builder/sub-components/file-input/file-input.component.mjs +310 -0
- package/esm2022/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +648 -0
- package/esm2022/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +432 -0
- package/esm2022/lib/components/form-builder/types/condition.types.mjs +6 -0
- package/esm2022/lib/components/form-builder/types/field.types.mjs +6 -0
- package/esm2022/lib/components/form-builder/types/index.mjs +2 -0
- package/esm2022/lib/components/form-builder/types/schema.types.mjs +6 -0
- package/esm2022/lib/components/form-builder/types/territoriale.types.mjs +6 -0
- package/esm2022/lib/components/form-builder/types/validation.types.mjs +6 -0
- package/esm2022/lib/components/form-builder-editor/form-builder-editor.component.mjs +730 -0
- package/esm2022/lib/components/form-builder-editor/form-builder-editor.service.mjs +56 -0
- package/esm2022/lib/components/form-builder-editor/index.mjs +21 -0
- package/esm2022/lib/components/form-builder-editor/services/editor-persistence.service.mjs +190 -0
- package/esm2022/lib/components/form-builder-editor/services/editor-state.service.mjs +324 -0
- package/esm2022/lib/components/form-builder-editor/services/field-factory.service.mjs +188 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/condition-editor/condition-editor.component.mjs +667 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/editor-toolbar/editor-toolbar.component.mjs +317 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/field-config-panel/field-config-panel.component.mjs +611 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/field-palette/field-palette.component.mjs +267 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/form-values-panel/form-values-panel.component.mjs +276 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/options-editor/options-editor.component.mjs +323 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.mjs +238 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.mjs +472 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/validation-editor/validation-editor.component.mjs +473 -0
- package/esm2022/lib/components/form-builder-editor/types/editor.types.mjs +6 -0
- package/esm2022/lib/components/layout-builder/index.mjs +18 -0
- package/esm2022/lib/components/layout-builder/layout-builder.component.mjs +1730 -0
- package/esm2022/lib/components/layout-builder/layout-builder.types.mjs +9 -0
- package/esm2022/lib/components/layout-builder/layout.service.mjs +239 -0
- package/esm2022/lib/components/modal/confirm-dialog.component.mjs +151 -0
- package/esm2022/lib/components/modal/index.mjs +4 -0
- package/esm2022/lib/components/modal/modal.component.mjs +139 -0
- package/esm2022/lib/components/modal/modal.service.mjs +194 -0
- package/esm2022/lib/components/modal/modal.types.mjs +6 -0
- package/esm2022/lib/components/page-header/breadcrumb.service.mjs +242 -0
- package/esm2022/lib/components/page-header/index.mjs +20 -0
- package/esm2022/lib/components/page-header/page-header.component.mjs +243 -0
- package/esm2022/lib/components/page-header/page-header.types.mjs +21 -0
- package/esm2022/lib/components/table/index.mjs +2 -0
- package/esm2022/lib/components/table/paginated-table.component.mjs +407 -0
- package/esm2022/lib/components/table/table.types.mjs +6 -0
- package/esm2022/lib/core/types/index.mjs +6 -0
- package/esm2022/lib/core/utils/index.mjs +53 -0
- package/esm2022/lib/sources/location-data.opt.json +8942 -0
- package/esm2022/lib/sources/nazioni.opt.json +215 -0
- package/esm2022/public-api.mjs +34 -0
- package/fesm2022/gnggln-ng-ui-system.mjs +55752 -0
- package/fesm2022/gnggln-ng-ui-system.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/accordion/accordion.component.d.ts +118 -0
- package/lib/components/accordion/accordion.types.d.ts +62 -0
- package/lib/components/accordion/index.d.ts +2 -0
- package/lib/components/base-layout/base-layout.component.d.ts +83 -0
- package/lib/components/base-layout/base-layout.types.d.ts +26 -0
- package/lib/components/base-layout/index.d.ts +13 -0
- package/lib/components/button/button-area.component.d.ts +88 -0
- package/lib/components/button/button.component.d.ts +55 -0
- package/lib/components/button/button.types.d.ts +70 -0
- package/lib/components/button/index.d.ts +15 -0
- package/lib/components/crud-table/crud-table.component.d.ts +143 -0
- package/lib/components/crud-table/crud-table.types.d.ts +207 -0
- package/lib/components/crud-table/index.d.ts +15 -0
- package/lib/components/form-builder/adapters/it-date-adapter.d.ts +32 -0
- package/lib/components/form-builder/directives/currency-input.directive.d.ts +48 -0
- package/lib/components/form-builder/form-builder.component.d.ts +183 -0
- package/lib/components/form-builder/form-wizard.component.d.ts +87 -0
- package/lib/components/form-builder/index.d.ts +13 -0
- package/lib/components/form-builder/services/form-condition.service.d.ts +46 -0
- package/lib/components/form-builder/services/form-validation.service.d.ts +63 -0
- package/lib/components/form-builder/services/location.service.d.ts +83 -0
- package/lib/components/form-builder/services/wizard-sync.service.d.ts +63 -0
- package/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +28 -0
- package/lib/components/form-builder/sub-components/file-input/file-input.component.d.ts +41 -0
- package/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +145 -0
- package/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.d.ts +108 -0
- package/lib/components/form-builder/types/condition.types.d.ts +51 -0
- package/lib/components/form-builder/types/field.types.d.ts +288 -0
- package/lib/components/form-builder/types/index.d.ts +5 -0
- package/lib/components/form-builder/types/schema.types.d.ts +227 -0
- package/lib/components/form-builder/types/territoriale.types.d.ts +170 -0
- package/lib/components/form-builder/types/validation.types.d.ts +174 -0
- package/lib/components/form-builder-editor/form-builder-editor.component.d.ts +117 -0
- package/lib/components/form-builder-editor/form-builder-editor.service.d.ts +38 -0
- package/lib/components/form-builder-editor/index.d.ts +15 -0
- package/lib/components/form-builder-editor/services/editor-persistence.service.d.ts +42 -0
- package/lib/components/form-builder-editor/services/editor-state.service.d.ts +66 -0
- package/lib/components/form-builder-editor/services/field-factory.service.d.ts +28 -0
- package/lib/components/form-builder-editor/sub-components/condition-editor/condition-editor.component.d.ts +139 -0
- package/lib/components/form-builder-editor/sub-components/editor-toolbar/editor-toolbar.component.d.ts +43 -0
- package/lib/components/form-builder-editor/sub-components/field-config-panel/field-config-panel.component.d.ts +83 -0
- package/lib/components/form-builder-editor/sub-components/field-palette/field-palette.component.d.ts +40 -0
- package/lib/components/form-builder-editor/sub-components/form-values-panel/form-values-panel.component.d.ts +51 -0
- package/lib/components/form-builder-editor/sub-components/options-editor/options-editor.component.d.ts +63 -0
- package/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.d.ts +68 -0
- package/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.d.ts +82 -0
- package/lib/components/form-builder-editor/sub-components/validation-editor/validation-editor.component.d.ts +112 -0
- package/lib/components/form-builder-editor/types/editor.types.d.ts +124 -0
- package/lib/components/layout-builder/index.d.ts +16 -0
- package/lib/components/layout-builder/layout-builder.component.d.ts +85 -0
- package/lib/components/layout-builder/layout-builder.types.d.ts +436 -0
- package/lib/components/layout-builder/layout.service.d.ts +100 -0
- package/lib/components/modal/confirm-dialog.component.d.ts +46 -0
- package/lib/components/modal/index.d.ts +4 -0
- package/lib/components/modal/modal.component.d.ts +44 -0
- package/lib/components/modal/modal.service.d.ts +93 -0
- package/lib/components/modal/modal.types.d.ts +110 -0
- package/lib/components/page-header/breadcrumb.service.d.ts +96 -0
- package/lib/components/page-header/index.d.ts +16 -0
- package/lib/components/page-header/page-header.component.d.ts +59 -0
- package/lib/components/page-header/page-header.types.d.ts +96 -0
- package/lib/components/table/index.d.ts +2 -0
- package/lib/components/table/paginated-table.component.d.ts +85 -0
- package/lib/components/table/table.types.d.ts +81 -0
- package/lib/core/types/index.d.ts +57 -0
- package/lib/core/utils/index.d.ts +29 -0
- package/package.json +44 -0
- package/public-api.d.ts +22 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module ng-ui-system/layout-builder
|
|
3
|
+
* Types and interfaces for the UiLayoutBuilder shell component.
|
|
4
|
+
*
|
|
5
|
+
* The layout builder uses a schema-driven approach (similar to UiFormBuilder)
|
|
6
|
+
* to materialize a full responsive application shell from a single descriptor.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWJ1aWxkZXIudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy11aS1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2xheW91dC1idWlsZGVyL2xheW91dC1idWlsZGVyLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbW9kdWxlIG5nLXVpLXN5c3RlbS9sYXlvdXQtYnVpbGRlclxyXG4gKiBUeXBlcyBhbmQgaW50ZXJmYWNlcyBmb3IgdGhlIFVpTGF5b3V0QnVpbGRlciBzaGVsbCBjb21wb25lbnQuXHJcbiAqXHJcbiAqIFRoZSBsYXlvdXQgYnVpbGRlciB1c2VzIGEgc2NoZW1hLWRyaXZlbiBhcHByb2FjaCAoc2ltaWxhciB0byBVaUZvcm1CdWlsZGVyKVxyXG4gKiB0byBtYXRlcmlhbGl6ZSBhIGZ1bGwgcmVzcG9uc2l2ZSBhcHBsaWNhdGlvbiBzaGVsbCBmcm9tIGEgc2luZ2xlIGRlc2NyaXB0b3IuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgVWlJY29uTmFtZSwgVWlWYXJpYW50IH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcy9pbmRleCc7XHJcblxyXG4vLyDilIDilIDilIAgTGF5b3V0IE1vZGUgJiBDb250ZW50IFR5cGUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4vKiogTGF5b3V0IG1vZGUgY29udHJvbGxpbmcgdGhlIG92ZXJhbGwgbmF2aWdhdGlvbiBzdHJhdGVneS4gKi9cclxuZXhwb3J0IHR5cGUgVWlMYXlvdXRNb2RlID0gJ3NpZGViYXInIHwgJ3RvcGJhcic7XHJcblxyXG4vKiogQ29udGVudCBhcmVhIHNpemluZyBzdHJhdGVneS4gKi9cclxuZXhwb3J0IHR5cGUgVWlDb250ZW50VHlwZSA9ICdmbHVpZCcgfCAnYm94ZWQnIHwgJ2Z1bGxzY3JlZW4nO1xyXG5cclxuLy8g4pSA4pSA4pSAIEJyZWFkY3J1bWIg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4vKiogU2luZ2xlIGJyZWFkY3J1bWIgZW50cnkgZGVyaXZlZCBmcm9tIHRoZSBuYXZpZ2F0aW9uIHNjaGVtYS4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBVaUxheW91dEJyZWFkY3J1bWIge1xyXG4gIC8qKiBEaXNwbGF5IGxhYmVsLiAqL1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgLyoqIFJvdXRlIFVSTCAob21pdHRlZCBmb3IgdGhlIGN1cnJlbnQvbGFzdCBjcnVtYikuICovXHJcbiAgdXJsPzogc3RyaW5nO1xyXG4gIC8qKiBXaGV0aGVyIHRoaXMgaXMgdGhlIGxhc3QgKGN1cnJlbnQpIGJyZWFkY3J1bWIgaW4gdGhlIHRyYWlsLiAqL1xyXG4gIGlzTGFzdDogYm9vbGVhbjtcclxufVxyXG5cclxuLy8g4pSA4pSA4pSAIE5hdmlnYXRpb24g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4vKiogRGlzY3JpbWluYXRvciBmb3IgbmF2aWdhdGlvbiBpdGVtIGJlaGF2aW91ci4gKi9cclxuZXhwb3J0IHR5cGUgVWlOYXZJdGVtVHlwZSA9ICdyb3V0ZScgfCAnZXh0ZXJuYWwnIHwgJ2RpdmlkZXInO1xyXG5cclxuLyoqXHJcbiAqIFNpbmdsZSBuYXZpZ2F0aW9uIGl0ZW0gZGVzY3JpcHRvci5cclxuICpcclxuICogQHVzYWdlTm90ZXNcclxuICogIyMjIEludGVybmFsIHJvdXRlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogeyBpZDogJ3VzZXJzJywgbGFiZWw6ICdVdGVudGknLCBpY29uOiAndXNlcnMnLCByb3V0ZTogJy91c2VycycgfVxyXG4gKiBgYGBcclxuICpcclxuICogIyMjIEV4dGVybmFsIGxpbmtcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiB7IGlkOiAnZG9jcycsIGxhYmVsOiAnRG9jcycsIGljb246ICdleHRlcm5hbC1saW5rJywgdHlwZTogJ2V4dGVybmFsJyxcclxuICogICBocmVmOiAnaHR0cHM6Ly9kb2NzLmV4YW1wbGUuY29tJywgdGFyZ2V0OiAnX2JsYW5rJyB9XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiAjIyMgRXhwYW5kYWJsZSB3aXRoIGNoaWxkcmVuXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICoge1xyXG4gKiAgIGlkOiAnZm9ybS1idWlsZGVyJywgbGFiZWw6ICdGb3JtIEJ1aWxkZXInLCBpY29uOiAnZmlsZS10ZXh0JyxcclxuICogICByb3V0ZTogJy9mb3JtLWJ1aWxkZXInLFxyXG4gKiAgIGNoaWxkcmVuOiBbXHJcbiAqICAgICB7IGxhYmVsOiAnUGFub3JhbWljYScsIGl0ZW1zOiBbXHJcbiAqICAgICAgIHsgaWQ6ICdmYi1hbGwnLCBsYWJlbDogJ1R1dHRpIGkgY2FtcGknLCByb3V0ZTogJy9mb3JtLWJ1aWxkZXIvYWxsLWZpZWxkcycgfVxyXG4gKiAgICAgXX1cclxuICogICBdXHJcbiAqIH1cclxuICogYGBgXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFVpTmF2SXRlbSB7XHJcbiAgLyoqIFVuaXF1ZSBpdGVtIGlkZW50aWZpZXIuICovXHJcbiAgaWQ6IHN0cmluZztcclxuICAvKiogRGlzcGxheSBsYWJlbC4gKi9cclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIC8qKiBMdWNpZGUgaWNvbiBuYW1lLiAqL1xyXG4gIGljb24/OiBVaUljb25OYW1lO1xyXG4gIC8qKiBJdGVtIGJlaGF2aW91ciB0eXBlLiBAZGVmYXVsdCAncm91dGUnICovXHJcbiAgdHlwZT86IFVpTmF2SXRlbVR5cGU7XHJcbiAgLyoqIEFuZ3VsYXIgcm91dGVyIHBhdGggKGZvciBgdHlwZTogJ3JvdXRlJ2ApLiAqL1xyXG4gIHJvdXRlPzogc3RyaW5nO1xyXG4gIC8qKiBXaGV0aGVyIHRvIHVzZSBleGFjdCBtYXRjaGluZyBmb3IgYWN0aXZlIHN0YXRlLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gIHJvdXRlQWN0aXZlRXhhY3Q/OiBib29sZWFuO1xyXG4gIC8qKiBFeHRlcm5hbCBVUkwgKGZvciBgdHlwZTogJ2V4dGVybmFsJ2ApLiAqL1xyXG4gIGhyZWY/OiBzdHJpbmc7XHJcbiAgLyoqIExpbmsgdGFyZ2V0IGZvciBleHRlcm5hbCBsaW5rcy4gQGRlZmF1bHQgJ19ibGFuaycgKi9cclxuICB0YXJnZXQ/OiAnX2JsYW5rJyB8ICdfc2VsZic7XHJcbiAgLyoqIE5lc3RlZCBjaGlsZCBncm91cHMgZm9yIGV4cGFuZGFibGUgbmF2aWdhdGlvbi4gKi9cclxuICBjaGlsZHJlbj86IFVpTmF2R3JvdXBbXTtcclxuICAvKiogV2hldGhlciB0aGlzIGl0ZW0gaXMgaGlkZGVuLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgLyoqIEJhZGdlIHRleHQgb3IgY291bnQgZGlzcGxheWVkIG5leHQgdG8gdGhlIGxhYmVsLiAqL1xyXG4gIGJhZGdlPzogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIC8qKiBXaGV0aGVyIHRvIGluY2x1ZGUgdGhpcyBpdGVtIGluIHRoZSBtb2JpbGUgYm90dG9tIG5hdmlnYXRpb24gYmFyLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gIGJvdHRvbU5hdj86IGJvb2xlYW47XHJcbiAgLyoqIFNvcnQgb3JkZXIgaW4gdGhlIGJvdHRvbSBuYXZpZ2F0aW9uIGJhciAobG93ZXIgPSBmaXJzdCkuICovXHJcbiAgYm90dG9tTmF2T3JkZXI/OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBMYWJlbGxlZCBncm91cCBvZiBuYXZpZ2F0aW9uIGl0ZW1zIChuZXN0ZWQgdW5kZXIgYSBwYXJlbnQgYFVpTmF2SXRlbWApLlxyXG4gKlxyXG4gKiBAdXNhZ2VOb3Rlc1xyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGdyb3VwOiBVaU5hdkdyb3VwID0ge1xyXG4gKiAgIGxhYmVsOiAnVmFsaWRhemlvbmknLFxyXG4gKiAgIGl0ZW1zOiBbXHJcbiAqICAgICB7IGlkOiAndi1zdGQnLCBsYWJlbDogJ1N0YW5kYXJkJywgcm91dGU6ICcvZm9ybS1idWlsZGVyL3ZhbGlkYXRpb25zLXN0YW5kYXJkJyB9LFxyXG4gKiAgICAgeyBpZDogJ3YtY3Jvc3MnLCBsYWJlbDogJ0Nyb3NzLWZpZWxkJywgcm91dGU6ICcvZm9ybS1idWlsZGVyL3ZhbGlkYXRpb25zLWNyb3NzZmllbGQnIH0sXHJcbiAqICAgXVxyXG4gKiB9O1xyXG4gKiBgYGBcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVWlOYXZHcm91cCB7XHJcbiAgLyoqIEdyb3VwIGhlYWRpbmcgZGlzcGxheWVkIGFib3ZlIHRoZSBpdGVtcy4gKi9cclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIC8qKiBJdGVtcyBiZWxvbmdpbmcgdG8gdGhpcyBncm91cC4gKi9cclxuICBpdGVtczogVWlOYXZJdGVtW107XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUb3AtbGV2ZWwgZ3JvdXBpbmcgdXNlZCB0byBwYXJ0aXRpb24gYFVpTmF2SXRlbVtdYCBpbnRvIGxhYmVsbGVkIHNlY3Rpb25zXHJcbiAqIGluIHRoZSBzaWRlYmFyIChlLmcuIFwiT3ZlcnZpZXdcIiwgXCJDb21wb25lbnRzXCIpLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBVaU5hdlNlY3Rpb24ge1xyXG4gIC8qKiBVbmlxdWUgc2VjdGlvbiBpZGVudGlmaWVyLiAqL1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgLyoqIFNlY3Rpb24gaGVhZGluZyBkaXNwbGF5ZWQgaW4gdGhlIHNpZGViYXIuICovXHJcbiAgbGFiZWw6IHN0cmluZztcclxuICAvKiogSURzIG9mIGBVaU5hdkl0ZW1gcyBiZWxvbmdpbmcgdG8gdGhpcyBzZWN0aW9uIChvcmRlciBwcmVzZXJ2ZWQpLiAqL1xyXG4gIGl0ZW1JZHM6IHN0cmluZ1tdO1xyXG59XHJcblxyXG4vKipcclxuICogQXV0by1kaXNjb3ZlcnkgY29uZmlndXJhdGlvbiBmb3IgZ2VuZXJhdGluZyBuYXZpZ2F0aW9uIGl0ZW1zIGZyb20gQW5ndWxhciByb3V0ZXMuXHJcbiAqXHJcbiAqIFdoZW4gZW5hYmxlZCwgdGhlIGxheW91dCBidWlsZGVyIHNjYW5zIHRoZSByb3V0ZSB0cmVlIGFuZCBjcmVhdGVzXHJcbiAqIGBVaU5hdkl0ZW1gIGVudHJpZXMgZnJvbSByb3V0ZXMgdGhhdCBkZWNsYXJlIGBkYXRhLmlkYCBhbmQgYGRhdGEudGl0bGVgLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBVaU5hdkF1dG9EaXNjb3ZlcnlDb25maWcge1xyXG4gIC8qKiBXaGV0aGVyIGF1dG8tZGlzY292ZXJ5IGlzIGVuYWJsZWQuICovXHJcbiAgZW5hYmxlZDogYm9vbGVhbjtcclxuICAvKiogUm91dGUgcGF0aHMgdG8gZXhjbHVkZSBmcm9tIGRpc2NvdmVyeSAoZXhhY3QgbWF0Y2gpLiAqL1xyXG4gIGV4Y2x1ZGVQYXRocz86IHN0cmluZ1tdO1xyXG4gIC8qKiBIb3cgdG8gbWVyZ2UgZGlzY292ZXJlZCBpdGVtcyB3aXRoIG1hbnVhbGx5IGRlZmluZWQgaXRlbXMuIEBkZWZhdWx0ICdhcHBlbmQnICovXHJcbiAgbWVyZ2VTdHJhdGVneT86ICdwcmVwZW5kJyB8ICdhcHBlbmQnIHwgJ3JlcGxhY2UnO1xyXG59XHJcblxyXG4vKiogTmF2aWdhdGlvbiBjb25maWd1cmF0aW9uIGJsb2NrIHdpdGhpbiBgVWlMYXlvdXRTY2hlbWFgLiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFVpTGF5b3V0TmF2aWdhdGlvbkNvbmZpZyB7XHJcbiAgLyoqIEZsYXQgbGlzdCBvZiBhbGwgbmF2aWdhdGlvbiBpdGVtcy4gKi9cclxuICBpdGVtczogVWlOYXZJdGVtW107XHJcbiAgLyoqIE9wdGlvbmFsIGdyb3VwaW5nIGludG8gbGFiZWxsZWQgc2lkZWJhciBzZWN0aW9ucy4gKi9cclxuICBzZWN0aW9ucz86IFVpTmF2U2VjdGlvbltdO1xyXG4gIC8qKiBXaGV0aGVyIHRoZSBkZXNrdG9wIHNpZGViYXIgY2FuIGNvbGxhcHNlIHRvIGljb24tb25seSBtb2RlLiBAZGVmYXVsdCB0cnVlICovXHJcbiAgY29sbGFwc2libGU/OiBib29sZWFuO1xyXG4gIC8qKiBNb2JpbGUgbmF2aWdhdGlvbiBiZWhhdmlvdXIuIEBkZWZhdWx0ICdib3RoJyAqL1xyXG4gIG1vYmlsZU1vZGU/OiAnZHJhd2VyJyB8ICdib3R0b20tbmF2JyB8ICdib3RoJztcclxuICAvKiogQXV0by1kaXNjb3Zlcnkgc2V0dGluZ3MgZm9yIHJvdXRlLWRyaXZlbiBuYXZpZ2F0aW9uLiAqL1xyXG4gIGF1dG9EaXNjb3Zlcnk/OiBVaU5hdkF1dG9EaXNjb3ZlcnlDb25maWc7XHJcbn1cclxuXHJcbi8vIOKUgOKUgOKUgCBIZWFkZXIg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4vKiogTG9nbyBjb25maWd1cmF0aW9uIGZvciB0aGUgbGF5b3V0IGhlYWRlci4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBVaUxheW91dExvZ28ge1xyXG4gIC8qKiBTaG9ydCB0ZXh0IHJlbmRlcmVkIGluc2lkZSBhIHN0eWxlZCBiYWRnZSAoZS5nLiBcIlVJXCIpLiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgc3JjYC4gKi9cclxuICB0ZXh0Pzogc3RyaW5nO1xyXG4gIC8qKiBJbWFnZSBVUkwgZm9yIHRoZSBsb2dvLiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgdGV4dGAuICovXHJcbiAgc3JjPzogc3RyaW5nO1xyXG4gIC8qKiBBbHQgdGV4dCBmb3IgdGhlIGxvZ28gaW1hZ2UuICovXHJcbiAgYWx0Pzogc3RyaW5nO1xyXG59XHJcblxyXG4vKiogSGVhZGVyIC8gdG9wLWJhciBjb25maWd1cmF0aW9uLiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFVpTGF5b3V0SGVhZGVyQ29uZmlnIHtcclxuICAvKiogTG9nbyBkaXNwbGF5ZWQgaW4gdGhlIHNpZGViYXIgaGVhZGVyIGFuZCBtb2JpbGUgdG9wLWJhci4gKi9cclxuICBsb2dvPzogVWlMYXlvdXRMb2dvO1xyXG4gIC8qKiBBcHBsaWNhdGlvbiB0aXRsZS4gKi9cclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIC8qKiBPcHRpb25hbCBzdWJ0aXRsZSBvciB0YWdsaW5lLiAqL1xyXG4gIHN1YnRpdGxlPzogc3RyaW5nO1xyXG59XHJcblxyXG4vLyDilIDilIDilIAgRm9vdGVyIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuLyoqIFNpbmdsZSBsaW5rIHJlbmRlcmVkIGluIHRoZSBsYXlvdXQgZm9vdGVyLiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFVpRm9vdGVyTGluayB7XHJcbiAgLyoqIERpc3BsYXkgbGFiZWwuICovXHJcbiAgbGFiZWw6IHN0cmluZztcclxuICAvKiogRXh0ZXJuYWwgVVJMLiAqL1xyXG4gIGhyZWY/OiBzdHJpbmc7XHJcbiAgLyoqIEFuZ3VsYXIgcm91dGVyIHBhdGggKGFsdGVybmF0aXZlIHRvIGBocmVmYCkuICovXHJcbiAgcm91dGU/OiBzdHJpbmc7XHJcbiAgLyoqIEx1Y2lkZSBpY29uIG5hbWUuICovXHJcbiAgaWNvbj86IFVpSWNvbk5hbWU7XHJcbiAgLyoqIExpbmsgdGFyZ2V0IGZvciBleHRlcm5hbCBsaW5rcy4gQGRlZmF1bHQgJ19zZWxmJyAqL1xyXG4gIHRhcmdldD86ICdfYmxhbmsnIHwgJ19zZWxmJztcclxufVxyXG5cclxuLyoqIEZvb3RlciBjb25maWd1cmF0aW9uLiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFVpTGF5b3V0Rm9vdGVyQ29uZmlnIHtcclxuICAvKiogTGlua3MgcmVuZGVyZWQgaW4gdGhlIGZvb3Rlci4gKi9cclxuICBsaW5rcz86IFVpRm9vdGVyTGlua1tdO1xyXG4gIC8qKiBTdGF0aWMgdGV4dCAoZS5nLiBjb3B5cmlnaHQsIHZlcnNpb24pLiAqL1xyXG4gIHRleHQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8vIOKUgOKUgOKUgCBGQUIgKEZsb2F0aW5nIEFjdGlvbiBCdXR0b24gLyBTcGVlZCBEaWFsKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbi8qKlxyXG4gKiBTaW5nbGUgYWN0aW9uIHdpdGhpbiB0aGUgc3BlZWQtZGlhbCBGQUIuXHJcbiAqXHJcbiAqIEB1c2FnZU5vdGVzXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgYWN0aW9uOiBVaUZhYkFjdGlvbiA9IHtcclxuICogICBpZDogJ25ldy11c2VyJyxcclxuICogICBsYWJlbDogJ051b3ZvIHV0ZW50ZScsXHJcbiAqICAgaWNvbjogJ3VzZXInLFxyXG4gKiAgIHZhcmlhbnQ6ICdwcmltYXJ5JyxcclxuICogICBhY3Rpb246ICgpID0+IHJvdXRlci5uYXZpZ2F0ZShbJy91c2Vycy9uZXcnXSksXHJcbiAqIH07XHJcbiAqIGBgYFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBVaUZhYkFjdGlvbiB7XHJcbiAgLyoqIFVuaXF1ZSBhY3Rpb24gaWRlbnRpZmllci4gKi9cclxuICBpZDogc3RyaW5nO1xyXG4gIC8qKiBUb29sdGlwIC8gbGFiZWwgdGV4dC4gKi9cclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIC8qKiBMdWNpZGUgaWNvbiBuYW1lLiAqL1xyXG4gIGljb246IFVpSWNvbk5hbWU7XHJcbiAgLyoqIENhbGxiYWNrIGludm9rZWQgb24gY2xpY2suICovXHJcbiAgYWN0aW9uPzogKCkgPT4gdm9pZDtcclxuICAvKiogVmlzdWFsIHZhcmlhbnQgZm9yIHRoZSBidXR0b24uIEBkZWZhdWx0ICdwcmltYXJ5JyAqL1xyXG4gIHZhcmlhbnQ/OiBVaVZhcmlhbnQ7XHJcbiAgLyoqIEFjY2Vzc2libGUgbGFiZWwgKGZhbGxzIGJhY2sgdG8gYGxhYmVsYCBpZiBvbWl0dGVkKS4gKi9cclxuICBhcmlhTGFiZWw/OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKiBTcGVlZC1kaWFsIEZBQiBjb25maWd1cmF0aW9uLiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFVpTGF5b3V0RmFiQ29uZmlnIHtcclxuICAvKiogUHJpbWFyeSBGQUIgYWN0aW9uIChhbHdheXMgdmlzaWJsZSkuICovXHJcbiAgbWFpbkFjdGlvbjogVWlGYWJBY3Rpb247XHJcbiAgLyoqIFNlY29uZGFyeSBhY3Rpb25zIHJldmVhbGVkIG9uIGV4cGFuZC4gKi9cclxuICBzZWNvbmRhcnlBY3Rpb25zPzogVWlGYWJBY3Rpb25bXTtcclxuICAvKiogU2NyZWVuIGNvcm5lciBwb3NpdGlvbi4gQGRlZmF1bHQgJ2JvdHRvbS1yaWdodCcgKi9cclxuICBwb3NpdGlvbj86ICdib3R0b20tcmlnaHQnIHwgJ2JvdHRvbS1sZWZ0JztcclxufVxyXG5cclxuLy8g4pSA4pSA4pSAIFBhZ2UgSGVhZGVyIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuLyoqIERlZmF1bHQgcGFnZS1oZWFkZXIgc2V0dGluZ3MgYXBwbGllZCB0byBldmVyeSByb3V0ZSB1bmxlc3Mgb3ZlcnJpZGRlbi4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBVaUxheW91dFBhZ2VIZWFkZXJDb25maWcge1xyXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIHBhZ2UgaGVhZGVyIChicmVhZGNydW1icyArIHRpdGxlKS4gQGRlZmF1bHQgdHJ1ZSAqL1xyXG4gIHNob3c/OiBib29sZWFuO1xyXG4gIC8qKiBIb21lIGJyZWFkY3J1bWIgcm91dGUgcGF0aC4gQGRlZmF1bHQgJy8nICovXHJcbiAgaG9tZVJvdXRlPzogc3RyaW5nO1xyXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIEhvbWUgbGluayBpbiBicmVhZGNydW1icy4gQGRlZmF1bHQgdHJ1ZSAqL1xyXG4gIHNob3dIb21lPzogYm9vbGVhbjtcclxuICAvKiogV2hldGhlciB0byBzeW5jIGBkb2N1bWVudC50aXRsZWAgd2l0aCB0aGUgY3VycmVudCBwYWdlLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gIHVwZGF0ZURvY3VtZW50VGl0bGU/OiBib29sZWFuO1xyXG4gIC8qKiBTdWZmaXggYXBwZW5kZWQgdG8gYGRvY3VtZW50LnRpdGxlYC4gKi9cclxuICB0aXRsZVN1ZmZpeD86IHN0cmluZztcclxufVxyXG5cclxuLy8g4pSA4pSA4pSAIExvYWRlciDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbi8qKiBPdmVybGF5IGxvYWRlciBjb25maWd1cmF0aW9uLiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFVpTGF5b3V0TG9hZGVyQ29uZmlnIHtcclxuICAvKiogU2hvdyB0aGUgbG9hZGVyIHdoZW4gdGhlIGxheW91dCBtb3VudHMgKGhpZGVzIG9uIGZpcnN0IE5hdmlnYXRpb25FbmQpLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gIHNob3dPbkluaXQ/OiBib29sZWFuO1xyXG4gIC8qKiBNaW5pbXVtIGRpc3BsYXkgZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzIChwcmV2ZW50cyBmbGlja2VyKS4gQGRlZmF1bHQgMCAqL1xyXG4gIG1pbkR1cmF0aW9uPzogbnVtYmVyO1xyXG59XHJcblxyXG4vLyDilIDilIDilIAgVG9wYmFyIChtdWx0aS1iYXIgaGVhZGVyKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbi8qKiBEaXNjcmltaW5hdG9yIGZvciB0b3BiYXIgYmFyIHR5cGUuICovXHJcbmV4cG9ydCB0eXBlIFVpQmFyVHlwZSA9ICdub3RpZmljYXRpb24nIHwgJ2JyYW5kJyB8ICduYXZpZ2F0aW9uJyB8ICdsaW5rcyc7XHJcblxyXG4vKipcclxuICogTm90aWZpY2F0aW9uIGJhciBkaXNwbGF5ZWQgYXQgdGhlIHRvcCBvZiB0aGUgcGFnZS5cclxuICpcclxuICogQHVzYWdlTm90ZXNcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiB7IHRleHQ6ICdNYW51dGVuemlvbmUgcHJldmlzdGEgYWxsZSAyMjowMCcsIHZhcmlhbnQ6ICd3YXJuJywgZGlzbWlzc2libGU6IHRydWUgfVxyXG4gKiBgYGBcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVWlOb3RpZmljYXRpb25CYXJDb25maWcge1xyXG4gIC8qKiBOb3RpZmljYXRpb24gbWVzc2FnZSB0ZXh0LiAqL1xyXG4gIHRleHQ6IHN0cmluZztcclxuICAvKiogVmlzdWFsIHZhcmlhbnQuIEBkZWZhdWx0ICdwcmltYXJ5JyAqL1xyXG4gIHZhcmlhbnQ/OiBVaVZhcmlhbnQ7XHJcbiAgLyoqIFdoZXRoZXIgdGhlIHVzZXIgY2FuIGRpc21pc3MgdGhpcyBiYXIuIEBkZWZhdWx0IHRydWUgKi9cclxuICBkaXNtaXNzaWJsZT86IGJvb2xlYW47XHJcbiAgLyoqIEx1Y2lkZSBpY29uIHNob3duIGJlZm9yZSB0aGUgdGV4dC4gKi9cclxuICBpY29uPzogVWlJY29uTmFtZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEJyYW5kIGJhciB3aXRoIGxvZ28sIHRpdGxlLCBhbmQgb3B0aW9uYWwgdXNlciBkcm9wZG93bi5cclxuICpcclxuICogQHVzYWdlTm90ZXNcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiB7XHJcbiAqICAgbG9nbzogeyBzcmM6ICcvYXNzZXRzL2xvZ28uc3ZnJywgYWx0OiAnTXkgQXBwJyB9LFxyXG4gKiAgIHRpdGxlOiAnTXkgQXBwJyxcclxuICogICB1c2VyRHJvcGRvd246IHtcclxuICogICAgIGxhYmVsOiAnTWFyaW8gUm9zc2knLFxyXG4gKiAgICAgYXZhdGFyOiB7IHNyYzogJy9hdmF0YXIuanBnJyB9LFxyXG4gKiAgICAgaXRlbXM6IFtcclxuICogICAgICAgeyBpZDogJ3Byb2ZpbGUnLCBsYWJlbDogJ1Byb2ZpbG8nLCBpY29uOiAndXNlcicsIHJvdXRlOiAnL3Byb2ZpbGUnIH0sXHJcbiAqICAgICAgIHsgaWQ6ICdsb2dvdXQnLCBsYWJlbDogJ0xvZ291dCcsIGljb246ICdsb2ctb3V0JywgYWN0aW9uOiAoKSA9PiBhdXRoLmxvZ291dCgpIH0sXHJcbiAqICAgICBdLFxyXG4gKiAgIH0sXHJcbiAqIH1cclxuICogYGBgXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFVpQnJhbmRCYXJDb25maWcge1xyXG4gIC8qKiBMb2dvIGRpc3BsYXllZCBvbiB0aGUgbGVmdC4gKi9cclxuICBsb2dvPzogVWlMYXlvdXRMb2dvO1xyXG4gIC8qKiBBcHBsaWNhdGlvbiB0aXRsZS4gKi9cclxuICB0aXRsZT86IHN0cmluZztcclxuICAvKiogVXNlciBkcm9wZG93biBhbGlnbmVkIHRvIHRoZSByaWdodC4gKi9cclxuICB1c2VyRHJvcGRvd24/OiBVaVVzZXJEcm9wZG93bkNvbmZpZztcclxufVxyXG5cclxuLyoqIFVzZXIgZHJvcGRvd24gbWVudSBjb25maWd1cmF0aW9uIGZvciB0aGUgYnJhbmQgYmFyLiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFVpVXNlckRyb3Bkb3duQ29uZmlnIHtcclxuICAvKiogRGlzcGxheSBsYWJlbCAoZS5nLiB1c2VyJ3MgbmFtZSkuICovXHJcbiAgbGFiZWw6IHN0cmluZztcclxuICAvKiogTHVjaWRlIGljb24gbmFtZSAoZmFsbGJhY2sgd2hlbiBubyBhdmF0YXIpLiAqL1xyXG4gIGljb24/OiBVaUljb25OYW1lO1xyXG4gIC8qKiBVc2VyIGF2YXRhciBpbWFnZS4gKi9cclxuICBhdmF0YXI/OiB7IHNyYzogc3RyaW5nOyBhbHQ/OiBzdHJpbmcgfTtcclxuICAvKiogRHJvcGRvd24gbWVudSBpdGVtcy4gKi9cclxuICBpdGVtczogVWlEcm9wZG93bkl0ZW1bXTtcclxufVxyXG5cclxuLyoqIFNpbmdsZSBpdGVtIGluIGEgZHJvcGRvd24gbWVudS4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBVaURyb3Bkb3duSXRlbSB7XHJcbiAgLyoqIFVuaXF1ZSBpdGVtIGlkZW50aWZpZXIuICovXHJcbiAgaWQ6IHN0cmluZztcclxuICAvKiogRGlzcGxheSBsYWJlbC4gKi9cclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIC8qKiBMdWNpZGUgaWNvbiBuYW1lLiAqL1xyXG4gIGljb24/OiBVaUljb25OYW1lO1xyXG4gIC8qKiBBbmd1bGFyIHJvdXRlciBwYXRoLiAqL1xyXG4gIHJvdXRlPzogc3RyaW5nO1xyXG4gIC8qKiBDYWxsYmFjayBpbnZva2VkIG9uIGNsaWNrLiAqL1xyXG4gIGFjdGlvbj86ICgpID0+IHZvaWQ7XHJcbiAgLyoqIFJlbmRlciBhIGRpdmlkZXIgYWJvdmUgdGhpcyBpdGVtLiAqL1xyXG4gIGRpdmlkZXI/OiBib29sZWFuO1xyXG59XHJcblxyXG4vKiogTmF2aWdhdGlvbiBiYXIgKHVzZWQgaW4gdG9wYmFyIG1vZGUgdG8gcmVuZGVyIGhvcml6b250YWwgbmF2IGxpbmtzKS4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBVaU5hdmlnYXRpb25CYXJDb25maWcge1xyXG4gIC8qKiBPdmVycmlkZSBpdGVtcyBmb3IgdGhpcyBiYXIgKGRlZmF1bHRzIHRvIGBzY2hlbWEubmF2aWdhdGlvbi5pdGVtc2ApLiAqL1xyXG4gIGl0ZW1zPzogVWlOYXZJdGVtW107XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBMaW5rcyBiYXIgd2l0aCBpY29uIGxpbmtzIChlLmcuIHNvY2lhbCBtZWRpYSwgZXh0ZXJuYWwgcmVzb3VyY2VzKS5cclxuICpcclxuICogQHVzYWdlTm90ZXNcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiB7XHJcbiAqICAgYWxpZ246ICdlbmQnLFxyXG4gKiAgIGl0ZW1zOiBbXHJcbiAqICAgICB7IGljb246ICdnaXRodWInLCBocmVmOiAnaHR0cHM6Ly9naXRodWIuY29tLy4uLicsIGFyaWFMYWJlbDogJ0dpdEh1YicgfSxcclxuICogICAgIHsgbGFiZWw6ICdEb2NzJywgaWNvbjogJ2Jvb2stb3BlbicsIGhyZWY6ICdodHRwczovL2RvY3MuZXhhbXBsZS5jb20nIH0sXHJcbiAqICAgXSxcclxuICogfVxyXG4gKiBgYGBcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVWlMaW5rc0JhckNvbmZpZyB7XHJcbiAgLyoqIEhvcml6b250YWwgYWxpZ25tZW50IG9mIGl0ZW1zLiBAZGVmYXVsdCAnZW5kJyAqL1xyXG4gIGFsaWduPzogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCcgfCAnc3BhY2UtYmV0d2Vlbic7XHJcbiAgLyoqIExpbmsgaXRlbXMuICovXHJcbiAgaXRlbXM6IFVpQmFyTGlua0l0ZW1bXTtcclxufVxyXG5cclxuLyoqIFNpbmdsZSBsaW5rIGl0ZW0gaW4gYSBsaW5rcyBiYXIuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVWlCYXJMaW5rSXRlbSB7XHJcbiAgLyoqIERpc3BsYXkgbGFiZWwgKG9wdGlvbmFsLCBpY29uLW9ubHkgaWYgb21pdHRlZCkuICovXHJcbiAgbGFiZWw/OiBzdHJpbmc7XHJcbiAgLyoqIEx1Y2lkZSBpY29uIG5hbWUuICovXHJcbiAgaWNvbj86IFVpSWNvbk5hbWU7XHJcbiAgLyoqIEV4dGVybmFsIFVSTC4gKi9cclxuICBocmVmPzogc3RyaW5nO1xyXG4gIC8qKiBBbmd1bGFyIHJvdXRlciBwYXRoLiAqL1xyXG4gIHJvdXRlPzogc3RyaW5nO1xyXG4gIC8qKiBMaW5rIHRhcmdldC4gQGRlZmF1bHQgJ19zZWxmJyAqL1xyXG4gIHRhcmdldD86ICdfYmxhbmsnIHwgJ19zZWxmJztcclxuICAvKiogQWNjZXNzaWJsZSBsYWJlbCBmb3IgaWNvbi1vbmx5IGl0ZW1zLiAqL1xyXG4gIGFyaWFMYWJlbD86IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIFNpbmdsZSBiYXIgZGVzY3JpcHRvciBpbiB0aGUgdG9wYmFyIGJhciBzdGFjay5cclxuICpcclxuICogQHVzYWdlTm90ZXNcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBiYXJzOiBVaUJhckNvbmZpZ1tdID0gW1xyXG4gKiAgIHsgaWQ6ICdwcm9tbycsIHR5cGU6ICdub3RpZmljYXRpb24nLCBub3RpZmljYXRpb246IHsgdGV4dDogJ1Byb21vIGF0dGl2YSEnLCBkaXNtaXNzaWJsZTogdHJ1ZSB9IH0sXHJcbiAqICAgeyBpZDogJ21haW4nLCB0eXBlOiAnYnJhbmQnLCBicmFuZDogeyBsb2dvOiB7IHRleHQ6ICdVSScgfSwgdGl0bGU6ICdNeSBBcHAnIH0gfSxcclxuICogICB7IGlkOiAnbmF2JywgdHlwZTogJ25hdmlnYXRpb24nIH0sXHJcbiAqICAgeyBpZDogJ3NvY2lhbCcsIHR5cGU6ICdsaW5rcycsIGxpbmtzOiB7IGFsaWduOiAnZW5kJywgaXRlbXM6IFsuLi5dIH0gfSxcclxuICogXTtcclxuICogYGBgXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFVpQmFyQ29uZmlnIHtcclxuICAvKiogVW5pcXVlIGJhciBpZGVudGlmaWVyLiAqL1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgLyoqIEJhciB0eXBlIGRpc2NyaW1pbmF0b3IuICovXHJcbiAgdHlwZTogVWlCYXJUeXBlO1xyXG4gIC8qKiBXaGV0aGVyIHRoZSBiYXIgaXMgaW5pdGlhbGx5IHZpc2libGUuIEBkZWZhdWx0IHRydWUgKi9cclxuICB2aXNpYmxlPzogYm9vbGVhbjtcclxuICAvKiogQ29uZmlndXJhdGlvbiB3aGVuIGB0eXBlID09PSAnbm90aWZpY2F0aW9uJ2AuICovXHJcbiAgbm90aWZpY2F0aW9uPzogVWlOb3RpZmljYXRpb25CYXJDb25maWc7XHJcbiAgLyoqIENvbmZpZ3VyYXRpb24gd2hlbiBgdHlwZSA9PT0gJ2JyYW5kJ2AuICovXHJcbiAgYnJhbmQ/OiBVaUJyYW5kQmFyQ29uZmlnO1xyXG4gIC8qKiBDb25maWd1cmF0aW9uIHdoZW4gYHR5cGUgPT09ICduYXZpZ2F0aW9uJ2AuICovXHJcbiAgbmF2aWdhdGlvbj86IFVpTmF2aWdhdGlvbkJhckNvbmZpZztcclxuICAvKiogQ29uZmlndXJhdGlvbiB3aGVuIGB0eXBlID09PSAnbGlua3MnYC4gKi9cclxuICBsaW5rcz86IFVpTGlua3NCYXJDb25maWc7XHJcbn1cclxuXHJcbi8qKiBUb3BiYXIgY29uZmlndXJhdGlvbiAoYmFyIHN0YWNrKS4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBVaVRvcGJhckNvbmZpZyB7XHJcbiAgLyoqIE9yZGVyZWQgbGlzdCBvZiBiYXJzIHJlbmRlcmVkIHRvcC10by1ib3R0b20uICovXHJcbiAgYmFyczogVWlCYXJDb25maWdbXTtcclxufVxyXG5cclxuLy8g4pSA4pSA4pSAIFJvb3QgU2NoZW1hIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuLyoqXHJcbiAqIFJvb3QgZGVzY3JpcHRvciBmb3IgdGhlIGB1aS1sYXlvdXQtYnVpbGRlcmAgY29tcG9uZW50LlxyXG4gKlxyXG4gKiBAdXNhZ2VOb3Rlc1xyXG4gKiAjIyMgTWluaW1hbCBzaWRlYmFyIGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBzY2hlbWE6IFVpTGF5b3V0U2NoZW1hID0ge1xyXG4gKiAgIGhlYWRlcjogeyB0aXRsZTogJ015IEFwcCcgfSxcclxuICogICBuYXZpZ2F0aW9uOiB7XHJcbiAqICAgICBpdGVtczogW1xyXG4gKiAgICAgICB7IGlkOiAnaG9tZScsIGxhYmVsOiAnSG9tZScsIGljb246ICdob21lJywgcm91dGU6ICcvJywgcm91dGVBY3RpdmVFeGFjdDogdHJ1ZSB9LFxyXG4gKiAgICAgICB7IGlkOiAndXNlcnMnLCBsYWJlbDogJ1V0ZW50aScsIGljb246ICd1c2VycycsIHJvdXRlOiAnL3VzZXJzJyB9LFxyXG4gKiAgICAgXSxcclxuICogICB9LFxyXG4gKiB9O1xyXG4gKiBgYGBcclxuICpcclxuICogIyMjIFRvcGJhciBtb2RlIGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBzY2hlbWE6IFVpTGF5b3V0U2NoZW1hID0ge1xyXG4gKiAgIG1vZGU6ICd0b3BiYXInLFxyXG4gKiAgIGhlYWRlcjogeyBsb2dvOiB7IHRleHQ6ICdVSScgfSwgdGl0bGU6ICdNeSBBcHAnIH0sXHJcbiAqICAgbmF2aWdhdGlvbjogeyBpdGVtczogWy4uLl0gfSxcclxuICogICB0b3BiYXI6IHtcclxuICogICAgIGJhcnM6IFtcclxuICogICAgICAgeyBpZDogJ2FsZXJ0JywgdHlwZTogJ25vdGlmaWNhdGlvbicsIG5vdGlmaWNhdGlvbjogeyB0ZXh0OiAnQmV0YSEnLCBkaXNtaXNzaWJsZTogdHJ1ZSB9IH0sXHJcbiAqICAgICAgIHsgaWQ6ICdtYWluJywgdHlwZTogJ2JyYW5kJywgYnJhbmQ6IHsgbG9nbzogeyB0ZXh0OiAnVUknIH0sIHRpdGxlOiAnTXkgQXBwJyB9IH0sXHJcbiAqICAgICAgIHsgaWQ6ICduYXYnLCB0eXBlOiAnbmF2aWdhdGlvbicgfSxcclxuICogICAgIF0sXHJcbiAqICAgfSxcclxuICogfTtcclxuICogYGBgXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFVpTGF5b3V0U2NoZW1hIHtcclxuICAvKiogTGF5b3V0IG1vZGUuIEBkZWZhdWx0ICdzaWRlYmFyJyAqL1xyXG4gIG1vZGU/OiBVaUxheW91dE1vZGU7XHJcbiAgLyoqIEhlYWRlciAvIHRvcC1iYXIgYnJhbmRpbmcgKHVzZWQgaW4gc2lkZWJhciBtb2RlIGFuZCBhcyBmYWxsYmFjaykuICovXHJcbiAgaGVhZGVyOiBVaUxheW91dEhlYWRlckNvbmZpZztcclxuICAvKiogTmF2aWdhdGlvbiBzdHJ1Y3R1cmUgYW5kIGJlaGF2aW91ci4gKi9cclxuICBuYXZpZ2F0aW9uOiBVaUxheW91dE5hdmlnYXRpb25Db25maWc7XHJcbiAgLyoqIEZvb3RlciBjb250ZW50IChvcHRpb25hbCkuICovXHJcbiAgZm9vdGVyPzogVWlMYXlvdXRGb290ZXJDb25maWc7XHJcbiAgLyoqIEZsb2F0aW5nIGFjdGlvbiBidXR0b24gLyBzcGVlZCBkaWFsIChvcHRpb25hbCkuICovXHJcbiAgZmFiPzogVWlMYXlvdXRGYWJDb25maWc7XHJcbiAgLyoqIFBhZ2UgaGVhZGVyIGRlZmF1bHRzIGFwcGxpZWQgdG8gZXZlcnkgcGFnZSAob3B0aW9uYWwpLiAqL1xyXG4gIHBhZ2VIZWFkZXI/OiBVaUxheW91dFBhZ2VIZWFkZXJDb25maWc7XHJcbiAgLyoqIE92ZXJsYXkgbG9hZGVyIGNvbmZpZ3VyYXRpb24gKG9wdGlvbmFsKS4gKi9cclxuICBsb2FkZXI/OiBVaUxheW91dExvYWRlckNvbmZpZztcclxuICAvKiogQ29udGVudCBhcmVhIHNpemluZyBzdHJhdGVneS4gQGRlZmF1bHQgJ2ZsdWlkJyAqL1xyXG4gIGNvbnRlbnRUeXBlPzogVWlDb250ZW50VHlwZTtcclxuICAvKiogVG9wYmFyIGNvbmZpZ3VyYXRpb24gKG9ubHkgdXNlZCB3aGVuIGBtb2RlID09PSAndG9wYmFyJ2ApLiAqL1xyXG4gIHRvcGJhcj86IFVpVG9wYmFyQ29uZmlnO1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Central service for programmatic control of the `ui-layout-builder` shell.
|
|
3
|
+
*
|
|
4
|
+
* Provides reactive state management for:
|
|
5
|
+
* - Overlay loader (with body scroll locking)
|
|
6
|
+
* - Sidebar open / collapsed state
|
|
7
|
+
* - Context-sensitive FAB actions
|
|
8
|
+
* - Navigation badge and visibility overrides
|
|
9
|
+
* - Layout mode switching (sidebar / topbar)
|
|
10
|
+
* - Content type (fluid / boxed / fullscreen)
|
|
11
|
+
* - Topbar bar visibility (notification bars show/hide)
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* export class MyPageComponent {
|
|
16
|
+
* private layout = inject(UiLayoutService);
|
|
17
|
+
*
|
|
18
|
+
* async loadData() {
|
|
19
|
+
* this.layout.showLoader();
|
|
20
|
+
* try {
|
|
21
|
+
* await this.api.fetchAll();
|
|
22
|
+
* } finally {
|
|
23
|
+
* this.layout.hideLoader();
|
|
24
|
+
* }
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
import { Injectable, inject, PLATFORM_ID } from '@angular/core';
|
|
30
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
31
|
+
import { BehaviorSubject } from 'rxjs';
|
|
32
|
+
import * as i0 from "@angular/core";
|
|
33
|
+
export class UiLayoutService {
|
|
34
|
+
constructor() {
|
|
35
|
+
this.platformId = inject(PLATFORM_ID);
|
|
36
|
+
// ── Loader ───────────────────────────────────────────────────────
|
|
37
|
+
this._loading$ = new BehaviorSubject(false);
|
|
38
|
+
/** Whether the overlay loader is currently visible. */
|
|
39
|
+
this.loading$ = this._loading$.asObservable();
|
|
40
|
+
// ── Layout Mode ─────────────────────────────────────────────────
|
|
41
|
+
this._layoutMode$ = new BehaviorSubject('sidebar');
|
|
42
|
+
/** Current layout mode (sidebar or topbar). */
|
|
43
|
+
this.layoutMode$ = this._layoutMode$.asObservable();
|
|
44
|
+
// ── Content Type ────────────────────────────────────────────────
|
|
45
|
+
this._contentType$ = new BehaviorSubject('fluid');
|
|
46
|
+
/** Current content type (fluid, boxed, fullscreen). */
|
|
47
|
+
this.contentType$ = this._contentType$.asObservable();
|
|
48
|
+
// ── Sidebar ──────────────────────────────────────────────────────
|
|
49
|
+
this._sidebarOpen$ = new BehaviorSubject(false);
|
|
50
|
+
/** Whether the mobile sidebar drawer is open. */
|
|
51
|
+
this.sidebarOpen$ = this._sidebarOpen$.asObservable();
|
|
52
|
+
this._sidebarCollapsed$ = new BehaviorSubject(false);
|
|
53
|
+
/** Whether the desktop sidebar is in collapsed (icon-only) mode. */
|
|
54
|
+
this.sidebarCollapsed$ = this._sidebarCollapsed$.asObservable();
|
|
55
|
+
// ── FAB (context-sensitive) ──────────────────────────────────────
|
|
56
|
+
this._defaultFabConfig = null;
|
|
57
|
+
this._fabConfig$ = new BehaviorSubject(null);
|
|
58
|
+
/** Current FAB configuration (schema default merged with page overrides). */
|
|
59
|
+
this.fabConfig$ = this._fabConfig$.asObservable();
|
|
60
|
+
// ── Navigation helpers ───────────────────────────────────────────
|
|
61
|
+
this._navBadges$ = new BehaviorSubject(new Map());
|
|
62
|
+
/** Observable map of nav-item badges keyed by item ID. */
|
|
63
|
+
this.navBadges$ = this._navBadges$.asObservable();
|
|
64
|
+
this._navVisibility$ = new BehaviorSubject(new Map());
|
|
65
|
+
/** Observable map of nav-item visibility overrides keyed by item ID. */
|
|
66
|
+
this.navVisibility$ = this._navVisibility$.asObservable();
|
|
67
|
+
// ── Bar visibility (topbar notification bars) ───────────────────
|
|
68
|
+
this._barVisibility$ = new BehaviorSubject(new Map());
|
|
69
|
+
/** Observable map of topbar bar visibility keyed by bar ID. */
|
|
70
|
+
this.barVisibility$ = this._barVisibility$.asObservable();
|
|
71
|
+
}
|
|
72
|
+
/** Show the full-screen overlay loader and block body scroll. */
|
|
73
|
+
showLoader() {
|
|
74
|
+
this._loading$.next(true);
|
|
75
|
+
this.setBodyOverflow(true);
|
|
76
|
+
}
|
|
77
|
+
/** Hide the overlay loader and restore body scroll. */
|
|
78
|
+
hideLoader() {
|
|
79
|
+
this._loading$.next(false);
|
|
80
|
+
this.setBodyOverflow(false);
|
|
81
|
+
}
|
|
82
|
+
/** Toggle the overlay loader. */
|
|
83
|
+
toggleLoader() {
|
|
84
|
+
if (this._loading$.value) {
|
|
85
|
+
this.hideLoader();
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
this.showLoader();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/** Synchronous snapshot of the loading state. */
|
|
92
|
+
isLoading() {
|
|
93
|
+
return this._loading$.value;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Switch layout mode with loader masking the transition.
|
|
97
|
+
* Shows the loader, applies the mode change, then hides the loader
|
|
98
|
+
* after a short delay to prevent visible layout shift.
|
|
99
|
+
*/
|
|
100
|
+
setLayoutMode(mode, transitionMs = 300) {
|
|
101
|
+
if (this._layoutMode$.value === mode)
|
|
102
|
+
return;
|
|
103
|
+
this.showLoader();
|
|
104
|
+
this._layoutMode$.next(mode);
|
|
105
|
+
setTimeout(() => this.hideLoader(), transitionMs);
|
|
106
|
+
}
|
|
107
|
+
/** Synchronous snapshot of the current layout mode. */
|
|
108
|
+
getLayoutMode() {
|
|
109
|
+
return this._layoutMode$.value;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* @internal Called by the layout-builder component to set the initial mode
|
|
113
|
+
* from the schema without triggering the loader transition.
|
|
114
|
+
*/
|
|
115
|
+
_setInitialLayoutMode(mode) {
|
|
116
|
+
this._layoutMode$.next(mode);
|
|
117
|
+
}
|
|
118
|
+
/** Set the content type per-route or globally. */
|
|
119
|
+
setContentType(type) {
|
|
120
|
+
this._contentType$.next(type);
|
|
121
|
+
}
|
|
122
|
+
/** Synchronous snapshot of the current content type. */
|
|
123
|
+
getContentType() {
|
|
124
|
+
return this._contentType$.value;
|
|
125
|
+
}
|
|
126
|
+
/** @internal */
|
|
127
|
+
_setInitialContentType(type) {
|
|
128
|
+
this._contentType$.next(type);
|
|
129
|
+
}
|
|
130
|
+
/** Toggle the desktop sidebar between expanded and collapsed. */
|
|
131
|
+
toggleSidebar() {
|
|
132
|
+
this._sidebarCollapsed$.next(!this._sidebarCollapsed$.value);
|
|
133
|
+
}
|
|
134
|
+
/** Set the desktop sidebar collapsed state explicitly. */
|
|
135
|
+
collapseSidebar(collapsed = true) {
|
|
136
|
+
this._sidebarCollapsed$.next(collapsed);
|
|
137
|
+
}
|
|
138
|
+
/** Open the mobile sidebar drawer. */
|
|
139
|
+
openMobileSidebar() {
|
|
140
|
+
this._sidebarOpen$.next(true);
|
|
141
|
+
}
|
|
142
|
+
/** Close the mobile sidebar drawer. */
|
|
143
|
+
closeMobileSidebar() {
|
|
144
|
+
this._sidebarOpen$.next(false);
|
|
145
|
+
}
|
|
146
|
+
/** Synchronous snapshot: is the mobile sidebar open? */
|
|
147
|
+
isSidebarOpen() {
|
|
148
|
+
return this._sidebarOpen$.value;
|
|
149
|
+
}
|
|
150
|
+
/** Synchronous snapshot: is the desktop sidebar collapsed? */
|
|
151
|
+
isSidebarCollapsed() {
|
|
152
|
+
return this._sidebarCollapsed$.value;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Called internally by the layout-builder component to register the
|
|
156
|
+
* schema-level default FAB config.
|
|
157
|
+
* @internal
|
|
158
|
+
*/
|
|
159
|
+
_setDefaultFabConfig(config) {
|
|
160
|
+
this._defaultFabConfig = config;
|
|
161
|
+
this._fabConfig$.next(config);
|
|
162
|
+
}
|
|
163
|
+
/** Override the FAB main action for the current page context. */
|
|
164
|
+
setMainFabAction(action) {
|
|
165
|
+
const current = this._fabConfig$.value;
|
|
166
|
+
this._fabConfig$.next({
|
|
167
|
+
mainAction: action,
|
|
168
|
+
secondaryActions: current?.secondaryActions ?? [],
|
|
169
|
+
position: current?.position ?? 'bottom-right',
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
/** Override all FAB actions for the current page context. */
|
|
173
|
+
setFabActions(main, secondary) {
|
|
174
|
+
const current = this._fabConfig$.value;
|
|
175
|
+
this._fabConfig$.next({
|
|
176
|
+
mainAction: main,
|
|
177
|
+
secondaryActions: secondary ?? [],
|
|
178
|
+
position: current?.position ?? 'bottom-right',
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
/** Reset FAB to the schema-level default configuration. */
|
|
182
|
+
clearFabActions() {
|
|
183
|
+
this._fabConfig$.next(this._defaultFabConfig);
|
|
184
|
+
}
|
|
185
|
+
/** Set or clear a badge on a navigation item. Pass `null` to remove. */
|
|
186
|
+
setNavBadge(itemId, badge) {
|
|
187
|
+
const map = new Map(this._navBadges$.value);
|
|
188
|
+
if (badge === null) {
|
|
189
|
+
map.delete(itemId);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
map.set(itemId, badge);
|
|
193
|
+
}
|
|
194
|
+
this._navBadges$.next(map);
|
|
195
|
+
}
|
|
196
|
+
/** Override visibility of a navigation item. */
|
|
197
|
+
setNavItemVisibility(itemId, visible) {
|
|
198
|
+
const map = new Map(this._navVisibility$.value);
|
|
199
|
+
map.set(itemId, visible);
|
|
200
|
+
this._navVisibility$.next(map);
|
|
201
|
+
}
|
|
202
|
+
/** Show a topbar bar by ID. */
|
|
203
|
+
showBar(barId) {
|
|
204
|
+
const map = new Map(this._barVisibility$.value);
|
|
205
|
+
map.set(barId, true);
|
|
206
|
+
this._barVisibility$.next(map);
|
|
207
|
+
}
|
|
208
|
+
/** Hide a topbar bar by ID. */
|
|
209
|
+
hideBar(barId) {
|
|
210
|
+
const map = new Map(this._barVisibility$.value);
|
|
211
|
+
map.set(barId, false);
|
|
212
|
+
this._barVisibility$.next(map);
|
|
213
|
+
}
|
|
214
|
+
/** Toggle visibility of a topbar bar by ID. */
|
|
215
|
+
toggleBar(barId) {
|
|
216
|
+
const map = new Map(this._barVisibility$.value);
|
|
217
|
+
const current = map.get(barId);
|
|
218
|
+
map.set(barId, current === undefined ? false : !current);
|
|
219
|
+
this._barVisibility$.next(map);
|
|
220
|
+
}
|
|
221
|
+
/** Synchronous check of bar visibility (schema `visible` fallback). */
|
|
222
|
+
isBarVisible(barId, schemaVisible = true) {
|
|
223
|
+
const override = this._barVisibility$.value.get(barId);
|
|
224
|
+
return override !== undefined ? override : schemaVisible;
|
|
225
|
+
}
|
|
226
|
+
// ── Private helpers ──────────────────────────────────────────────
|
|
227
|
+
setBodyOverflow(locked) {
|
|
228
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
229
|
+
document.body.style.overflow = locked ? 'hidden' : '';
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiLayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
233
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiLayoutService, providedIn: 'root' }); }
|
|
234
|
+
}
|
|
235
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiLayoutService, decorators: [{
|
|
236
|
+
type: Injectable,
|
|
237
|
+
args: [{ providedIn: 'root' }]
|
|
238
|
+
}] });
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy11aS1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2xheW91dC1idWlsZGVyL2xheW91dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFDSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7QUFTbkQsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFFbUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVsRCxvRUFBb0U7UUFFbkQsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLHVEQUF1RDtRQUM5QyxhQUFRLEdBQXdCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7UUE0QnZFLG1FQUFtRTtRQUVsRCxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFlLFNBQVMsQ0FBQyxDQUFDO1FBQzdFLCtDQUErQztRQUN0QyxnQkFBVyxHQUE2QixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBMkJsRixtRUFBbUU7UUFFbEQsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsT0FBTyxDQUFDLENBQUM7UUFDN0UsdURBQXVEO1FBQzlDLGlCQUFZLEdBQThCLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7UUFpQnJGLG9FQUFvRTtRQUVuRCxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLGlEQUFpRDtRQUN4QyxpQkFB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QUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCx1RUFBdUU7SUFDdkUsWUFBWSxDQUFDLEtBQWEsRUFBRSxhQUFhLEdBQUcsSUFBSTtRQUM5QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkQsT0FBTyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztJQUMzRCxDQUFDO0lBRUQsb0VBQW9FO0lBRTVELGVBQWUsQ0FBQyxNQUFlO1FBQ3JDLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7K0dBN09VLGVBQWU7bUhBQWYsZUFBZSxjQURGLE1BQU07OzRGQUNuQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBDZW50cmFsIHNlcnZpY2UgZm9yIHByb2dyYW1tYXRpYyBjb250cm9sIG9mIHRoZSBgdWktbGF5b3V0LWJ1aWxkZXJgIHNoZWxsLlxyXG4gKlxyXG4gKiBQcm92aWRlcyByZWFjdGl2ZSBzdGF0ZSBtYW5hZ2VtZW50IGZvcjpcclxuICogLSBPdmVybGF5IGxvYWRlciAod2l0aCBib2R5IHNjcm9sbCBsb2NraW5nKVxyXG4gKiAtIFNpZGViYXIgb3BlbiAvIGNvbGxhcHNlZCBzdGF0ZVxyXG4gKiAtIENvbnRleHQtc2Vuc2l0aXZlIEZBQiBhY3Rpb25zXHJcbiAqIC0gTmF2aWdhdGlvbiBiYWRnZSBhbmQgdmlzaWJpbGl0eSBvdmVycmlkZXNcclxuICogLSBMYXlvdXQgbW9kZSBzd2l0Y2hpbmcgKHNpZGViYXIgLyB0b3BiYXIpXHJcbiAqIC0gQ29udGVudCB0eXBlIChmbHVpZCAvIGJveGVkIC8gZnVsbHNjcmVlbilcclxuICogLSBUb3BiYXIgYmFyIHZpc2liaWxpdHkgKG5vdGlmaWNhdGlvbiBiYXJzIHNob3cvaGlkZSlcclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBleHBvcnQgY2xhc3MgTXlQYWdlQ29tcG9uZW50IHtcclxuICogICBwcml2YXRlIGxheW91dCA9IGluamVjdChVaUxheW91dFNlcnZpY2UpO1xyXG4gKlxyXG4gKiAgIGFzeW5jIGxvYWREYXRhKCkge1xyXG4gKiAgICAgdGhpcy5sYXlvdXQuc2hvd0xvYWRlcigpO1xyXG4gKiAgICAgdHJ5IHtcclxuICogICAgICAgYXdhaXQgdGhpcy5hcGkuZmV0Y2hBbGwoKTtcclxuICogICAgIH0gZmluYWxseSB7XHJcbiAqICAgICAgIHRoaXMubGF5b3V0LmhpZGVMb2FkZXIoKTtcclxuICogICAgIH1cclxuICogICB9XHJcbiAqIH1cclxuICogYGBgXHJcbiAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgVWlGYWJBY3Rpb24sXHJcbiAgVWlMYXlvdXRGYWJDb25maWcsXHJcbiAgVWlMYXlvdXRNb2RlLFxyXG4gIFVpQ29udGVudFR5cGUsXHJcbn0gZnJvbSAnLi9sYXlvdXQtYnVpbGRlci50eXBlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgVWlMYXlvdXRTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xyXG5cclxuICAvLyDilIDilIAgTG9hZGVyIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIC8qKiBXaGV0aGVyIHRoZSBvdmVybGF5IGxvYWRlciBpcyBjdXJyZW50bHkgdmlzaWJsZS4gKi9cclxuICByZWFkb25seSBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX2xvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAvKiogU2hvdyB0aGUgZnVsbC1zY3JlZW4gb3ZlcmxheSBsb2FkZXIgYW5kIGJsb2NrIGJvZHkgc2Nyb2xsLiAqL1xyXG4gIHNob3dMb2FkZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5zZXRCb2R5T3ZlcmZsb3codHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvKiogSGlkZSB0aGUgb3ZlcmxheSBsb2FkZXIgYW5kIHJlc3RvcmUgYm9keSBzY3JvbGwuICovXHJcbiAgaGlkZUxvYWRlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2xvYWRpbmckLm5leHQoZmFsc2UpO1xyXG4gICAgdGhpcy5zZXRCb2R5T3ZlcmZsb3coZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRvZ2dsZSB0aGUgb3ZlcmxheSBsb2FkZXIuICovXHJcbiAgdG9nZ2xlTG9hZGVyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2xvYWRpbmckLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMuaGlkZUxvYWRlcigpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93TG9hZGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogU3luY2hyb25vdXMgc25hcHNob3Qgb2YgdGhlIGxvYWRpbmcgc3RhdGUuICovXHJcbiAgaXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmckLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy8g4pSA4pSAIExheW91dCBNb2RlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9sYXlvdXRNb2RlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VWlMYXlvdXRNb2RlPignc2lkZWJhcicpO1xyXG4gIC8qKiBDdXJyZW50IGxheW91dCBtb2RlIChzaWRlYmFyIG9yIHRvcGJhcikuICovXHJcbiAgcmVhZG9ubHkgbGF5b3V0TW9kZSQ6IE9ic2VydmFibGU8VWlMYXlvdXRNb2RlPiA9IHRoaXMuX2xheW91dE1vZGUkLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAvKipcclxuICAgKiBTd2l0Y2ggbGF5b3V0IG1vZGUgd2l0aCBsb2FkZXIgbWFza2luZyB0aGUgdHJhbnNpdGlvbi5cclxuICAgKiBTaG93cyB0aGUgbG9hZGVyLCBhcHBsaWVzIHRoZSBtb2RlIGNoYW5nZSwgdGhlbiBoaWRlcyB0aGUgbG9hZGVyXHJcbiAgICogYWZ0ZXIgYSBzaG9ydCBkZWxheSB0byBwcmV2ZW50IHZpc2libGUgbGF5b3V0IHNoaWZ0LlxyXG4gICAqL1xyXG4gIHNldExheW91dE1vZGUobW9kZTogVWlMYXlvdXRNb2RlLCB0cmFuc2l0aW9uTXMgPSAzMDApOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9sYXlvdXRNb2RlJC52YWx1ZSA9PT0gbW9kZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5zaG93TG9hZGVyKCk7XHJcbiAgICB0aGlzLl9sYXlvdXRNb2RlJC5uZXh0KG1vZGUpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmhpZGVMb2FkZXIoKSwgdHJhbnNpdGlvbk1zKTtcclxuICB9XHJcblxyXG4gIC8qKiBTeW5jaHJvbm91cyBzbmFwc2hvdCBvZiB0aGUgY3VycmVudCBsYXlvdXQgbW9kZS4gKi9cclxuICBnZXRMYXlvdXRNb2RlKCk6IFVpTGF5b3V0TW9kZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGF5b3V0TW9kZSQudmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaW50ZXJuYWwgQ2FsbGVkIGJ5IHRoZSBsYXlvdXQtYnVpbGRlciBjb21wb25lbnQgdG8gc2V0IHRoZSBpbml0aWFsIG1vZGVcclxuICAgKiBmcm9tIHRoZSBzY2hlbWEgd2l0aG91dCB0cmlnZ2VyaW5nIHRoZSBsb2FkZXIgdHJhbnNpdGlvbi5cclxuICAgKi9cclxuICBfc2V0SW5pdGlhbExheW91dE1vZGUobW9kZTogVWlMYXlvdXRNb2RlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9sYXlvdXRNb2RlJC5uZXh0KG1vZGUpO1xyXG4gIH1cclxuXHJcbiAgLy8g4pSA4pSAIENvbnRlbnQgVHlwZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudFR5cGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVaUNvbnRlbnRUeXBlPignZmx1aWQnKTtcclxuICAvKiogQ3VycmVudCBjb250ZW50IHR5cGUgKGZsdWlkLCBib3hlZCwgZnVsbHNjcmVlbikuICovXHJcbiAgcmVhZG9ubHkgY29udGVudFR5cGUkOiBPYnNlcnZhYmxlPFVpQ29udGVudFR5cGU+ID0gdGhpcy5fY29udGVudFR5cGUkLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAvKiogU2V0IHRoZSBjb250ZW50IHR5cGUgcGVyLXJvdXRlIG9yIGdsb2JhbGx5LiAqL1xyXG4gIHNldENvbnRlbnRUeXBlKHR5cGU6IFVpQ29udGVudFR5cGUpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NvbnRlbnRUeXBlJC5uZXh0KHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFN5bmNocm9ub3VzIHNuYXBzaG90IG9mIHRoZSBjdXJyZW50IGNvbnRlbnQgdHlwZS4gKi9cclxuICBnZXRDb250ZW50VHlwZSgpOiBVaUNvbnRlbnRUeXBlIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250ZW50VHlwZSQudmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogQGludGVybmFsICovXHJcbiAgX3NldEluaXRpYWxDb250ZW50VHlwZSh0eXBlOiBVaUNvbnRlbnRUeXBlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb250ZW50VHlwZSQubmV4dCh0eXBlKTtcclxuICB9XHJcblxyXG4gIC8vIOKUgOKUgCBTaWRlYmFyIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9zaWRlYmFyT3BlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAvKiogV2hldGhlciB0aGUgbW9iaWxlIHNpZGViYXIgZHJhd2VyIGlzIG9wZW4uICovXHJcbiAgcmVhZG9ubHkgc2lkZWJhck9wZW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5fc2lkZWJhck9wZW4kLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9zaWRlYmFyQ29sbGFwc2VkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIC8qKiBXaGV0aGVyIHRoZSBkZXNrdG9wIHNpZGViYXIgaXMgaW4gY29sbGFwc2VkIChpY29uLW9ubHkpIG1vZGUuICovXHJcbiAgcmVhZG9ubHkgc2lkZWJhckNvbGxhcHNlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9zaWRlYmFyQ29sbGFwc2VkJC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgLyoqIFRvZ2dsZSB0aGUgZGVza3RvcCBzaWRlYmFyIGJldHdlZW4gZXhwYW5kZWQgYW5kIGNvbGxhcHNlZC4gKi9cclxuICB0b2dnbGVTaWRlYmFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2lkZWJhckNvbGxhcHNlZCQubmV4dCghdGhpcy5fc2lkZWJhckNvbGxhcHNlZCQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFNldCB0aGUgZGVza3RvcCBzaWRlYmFyIGNvbGxhcHNlZCBzdGF0ZSBleHBsaWNpdGx5LiAqL1xyXG4gIGNvbGxhcHNlU2lkZWJhcihjb2xsYXBzZWQgPSB0cnVlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zaWRlYmFyQ29sbGFwc2VkJC5uZXh0KGNvbGxhcHNlZCk7XHJcbiAgfVxyXG5cclxuICAvKiogT3BlbiB0aGUgbW9iaWxlIHNpZGViYXIgZHJhd2VyLiAqL1xyXG4gIG9wZW5Nb2JpbGVTaWRlYmFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2lkZWJhck9wZW4kLm5leHQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvKiogQ2xvc2UgdGhlIG1vYmlsZSBzaWRlYmFyIGRyYXdlci4gKi9cclxuICBjbG9zZU1vYmlsZVNpZGViYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zaWRlYmFyT3BlbiQubmV4dChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKiogU3luY2hyb25vdXMgc25hcHNob3Q6IGlzIHRoZSBtb2JpbGUgc2lkZWJhciBvcGVuPyAqL1xyXG4gIGlzU2lkZWJhck9wZW4oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2lkZWJhck9wZW4kLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqIFN5bmNocm9ub3VzIHNuYXBzaG90OiBpcyB0aGUgZGVza3RvcCBzaWRlYmFyIGNvbGxhcHNlZD8gKi9cclxuICBpc1NpZGViYXJDb2xsYXBzZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2lkZWJhckNvbGxhcHNlZCQudmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIAgRkFCIChjb250ZXh0LXNlbnNpdGl2ZSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIHByaXZhdGUgX2RlZmF1bHRGYWJDb25maWc6IFVpTGF5b3V0RmFiQ29uZmlnIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZmFiQ29uZmlnJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VWlMYXlvdXRGYWJDb25maWcgfCBudWxsPihudWxsKTtcclxuICAvKiogQ3VycmVudCBGQUIgY29uZmlndXJhdGlvbiAoc2NoZW1hIGRlZmF1bHQgbWVyZ2VkIHdpdGggcGFnZSBvdmVycmlkZXMpLiAqL1xyXG4gIHJlYWRvbmx5IGZhYkNvbmZpZyQ6IE9ic2VydmFibGU8VWlMYXlvdXRGYWJDb25maWcgfCBudWxsPiA9IHRoaXMuX2ZhYkNvbmZpZyQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGxlZCBpbnRlcm5hbGx5IGJ5IHRoZSBsYXlvdXQtYnVpbGRlciBjb21wb25lbnQgdG8gcmVnaXN0ZXIgdGhlXHJcbiAgICogc2NoZW1hLWxldmVsIGRlZmF1bHQgRkFCIGNvbmZpZy5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBfc2V0RGVmYXVsdEZhYkNvbmZpZyhjb25maWc6IFVpTGF5b3V0RmFiQ29uZmlnIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVmYXVsdEZhYkNvbmZpZyA9IGNvbmZpZztcclxuICAgIHRoaXMuX2ZhYkNvbmZpZyQubmV4dChjb25maWcpO1xyXG4gIH1cclxuXHJcbiAgLyoqIE92ZXJyaWRlIHRoZSBGQUIgbWFpbiBhY3Rpb24gZm9yIHRoZSBjdXJyZW50IHBhZ2UgY29udGV4dC4gKi9cclxuICBzZXRNYWluRmFiQWN0aW9uKGFjdGlvbjogVWlGYWJBY3Rpb24pOiB2b2lkIHtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9mYWJDb25maWckLnZhbHVlO1xyXG4gICAgdGhpcy5fZmFiQ29uZmlnJC5uZXh0KHtcclxuICAgICAgbWFpbkFjdGlvbjogYWN0aW9uLFxyXG4gICAgICBzZWNvbmRhcnlBY3Rpb25zOiBjdXJyZW50Py5zZWNvbmRhcnlBY3Rpb25zID8/IFtdLFxyXG4gICAgICBwb3NpdGlvbjogY3VycmVudD8ucG9zaXRpb24gPz8gJ2JvdHRvbS1yaWdodCcsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBPdmVycmlkZSBhbGwgRkFCIGFjdGlvbnMgZm9yIHRoZSBjdXJyZW50IHBhZ2UgY29udGV4dC4gKi9cclxuICBzZXRGYWJBY3Rpb25zKG1haW46IFVpRmFiQWN0aW9uLCBzZWNvbmRhcnk/OiBVaUZhYkFjdGlvbltdKTogdm9pZCB7XHJcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fZmFiQ29uZmlnJC52YWx1ZTtcclxuICAgIHRoaXMuX2ZhYkNvbmZpZyQubmV4dCh7XHJcbiAgICAgIG1haW5BY3Rpb246IG1haW4sXHJcbiAgICAgIHNlY29uZGFyeUFjdGlvbnM6IHNlY29uZGFyeSA/PyBbXSxcclxuICAgICAgcG9zaXRpb246IGN1cnJlbnQ/LnBvc2l0aW9uID8/ICdib3R0b20tcmlnaHQnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiogUmVzZXQgRkFCIHRvIHRoZSBzY2hlbWEtbGV2ZWwgZGVmYXVsdCBjb25maWd1cmF0aW9uLiAqL1xyXG4gIGNsZWFyRmFiQWN0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZhYkNvbmZpZyQubmV4dCh0aGlzLl9kZWZhdWx0RmFiQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIC8vIOKUgOKUgCBOYXZpZ2F0aW9uIGhlbHBlcnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX25hdkJhZGdlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IG51bGw+PihuZXcgTWFwKCkpO1xyXG4gIC8qKiBPYnNlcnZhYmxlIG1hcCBvZiBuYXYtaXRlbSBiYWRnZXMga2V5ZWQgYnkgaXRlbSBJRC4gKi9cclxuICByZWFkb25seSBuYXZCYWRnZXMkOiBPYnNlcnZhYmxlPE1hcDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IG51bGw+PiA9IHRoaXMuX25hdkJhZGdlcyQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX25hdlZpc2liaWxpdHkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXA8c3RyaW5nLCBib29sZWFuPj4obmV3IE1hcCgpKTtcclxuICAvKiogT2JzZXJ2YWJsZSBtYXAgb2YgbmF2LWl0ZW0gdmlzaWJpbGl0eSBvdmVycmlkZXMga2V5ZWQgYnkgaXRlbSBJRC4gKi9cclxuICByZWFkb25seSBuYXZWaXNpYmlsaXR5JDogT2JzZXJ2YWJsZTxNYXA8c3RyaW5nLCBib29sZWFuPj4gPSB0aGlzLl9uYXZWaXNpYmlsaXR5JC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgLyoqIFNldCBvciBjbGVhciBhIGJhZGdlIG9uIGEgbmF2aWdhdGlvbiBpdGVtLiBQYXNzIGBudWxsYCB0byByZW1vdmUuICovXHJcbiAgc2V0TmF2QmFkZ2UoaXRlbUlkOiBzdHJpbmcsIGJhZGdlOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsKTogdm9pZCB7XHJcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwKHRoaXMuX25hdkJhZGdlcyQudmFsdWUpO1xyXG4gICAgaWYgKGJhZGdlID09PSBudWxsKSB7XHJcbiAgICAgIG1hcC5kZWxldGUoaXRlbUlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG1hcC5zZXQoaXRlbUlkLCBiYWRnZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9uYXZCYWRnZXMkLm5leHQobWFwKTtcclxuICB9XHJcblxyXG4gIC8qKiBPdmVycmlkZSB2aXNpYmlsaXR5IG9mIGEgbmF2aWdhdGlvbiBpdGVtLiAqL1xyXG4gIHNldE5hdkl0ZW1WaXNpYmlsaXR5KGl0ZW1JZDogc3RyaW5nLCB2aXNpYmxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwKHRoaXMuX25hdlZpc2liaWxpdHkkLnZhbHVlKTtcclxuICAgIG1hcC5zZXQoaXRlbUlkLCB2aXNpYmxlKTtcclxuICAgIHRoaXMuX25hdlZpc2liaWxpdHkkLm5leHQobWFwKTtcclxuICB9XHJcblxyXG4gIC8vIOKUgOKUgCBCYXIgdmlzaWJpbGl0eSAodG9wYmFyIG5vdGlmaWNhdGlvbiBiYXJzKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYmFyVmlzaWJpbGl0eSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxzdHJpbmcsIGJvb2xlYW4+PihuZXcgTWFwKCkpO1xyXG4gIC8qKiBPYnNlcnZhYmxlIG1hcCBvZiB0b3BiYXIgYmFyIHZpc2liaWxpdHkga2V5ZWQgYnkgYmFyIElELiAqL1xyXG4gIHJlYWRvbmx5IGJhclZpc2liaWxpdHkkOiBPYnNlcnZhYmxlPE1hcDxzdHJpbmcsIGJvb2xlYW4+PiA9IHRoaXMuX2JhclZpc2liaWxpdHkkLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAvKiogU2hvdyBhIHRvcGJhciBiYXIgYnkgSUQuICovXHJcbiAgc2hvd0JhcihiYXJJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwKHRoaXMuX2JhclZpc2liaWxpdHkkLnZhbHVlKTtcclxuICAgIG1hcC5zZXQoYmFySWQsIHRydWUpO1xyXG4gICAgdGhpcy5fYmFyVmlzaWJpbGl0eSQubmV4dChtYXApO1xyXG4gIH1cclxuXHJcbiAgLyoqIEhpZGUgYSB0b3BiYXIgYmFyIGJ5IElELiAqL1xyXG4gIGhpZGVCYXIoYmFySWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgbWFwID0gbmV3IE1hcCh0aGlzLl9iYXJWaXNpYmlsaXR5JC52YWx1ZSk7XHJcbiAgICBtYXAuc2V0KGJhcklkLCBmYWxzZSk7XHJcbiAgICB0aGlzLl9iYXJWaXNpYmlsaXR5JC5uZXh0KG1hcCk7XHJcbiAgfVxyXG5cclxuICAvKiogVG9nZ2xlIHZpc2liaWxpdHkgb2YgYSB0b3BiYXIgYmFyIGJ5IElELiAqL1xyXG4gIHRvZ2dsZUJhcihiYXJJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwKHRoaXMuX2JhclZpc2liaWxpdHkkLnZhbHVlKTtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSBtYXAuZ2V0KGJhcklkKTtcclxuICAgIG1hcC5zZXQoYmFySWQsIGN1cnJlbnQgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogIWN1cnJlbnQpO1xyXG4gICAgdGhpcy5fYmFyVmlzaWJpbGl0eSQubmV4dChtYXApO1xyXG4gIH1cclxuXHJcbiAgLyoqIFN5bmNocm9ub3VzIGNoZWNrIG9mIGJhciB2aXNpYmlsaXR5IChzY2hlbWEgYHZpc2libGVgIGZhbGxiYWNrKS4gKi9cclxuICBpc0JhclZpc2libGUoYmFySWQ6IHN0cmluZywgc2NoZW1hVmlzaWJsZSA9IHRydWUpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IG92ZXJyaWRlID0gdGhpcy5fYmFyVmlzaWJpbGl0eSQudmFsdWUuZ2V0KGJhcklkKTtcclxuICAgIHJldHVybiBvdmVycmlkZSAhPT0gdW5kZWZpbmVkID8gb3ZlcnJpZGUgOiBzY2hlbWFWaXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgLy8g4pSA4pSAIFByaXZhdGUgaGVscGVycyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbiAgcHJpdmF0ZSBzZXRCb2R5T3ZlcmZsb3cobG9ja2VkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gbG9ja2VkID8gJ2hpZGRlbicgOiAnJztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy, ViewEncapsulation, inject } from '@angular/core';
|
|
2
|
+
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
|
3
|
+
import { LucideAngularModule } from 'lucide-angular';
|
|
4
|
+
import { UiButtonComponent } from '../button/button.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "lucide-angular";
|
|
7
|
+
/** @internal Mappatura variante -> icona Lucide di default. */
|
|
8
|
+
const VARIANT_ICON_MAP = {
|
|
9
|
+
confirm: 'check-circle',
|
|
10
|
+
delete: 'trash-2',
|
|
11
|
+
warn: 'alert-triangle',
|
|
12
|
+
info: 'info',
|
|
13
|
+
};
|
|
14
|
+
/** @internal Mappatura variante -> colore pulsante di conferma. */
|
|
15
|
+
const VARIANT_BUTTON_MAP = {
|
|
16
|
+
confirm: 'primary',
|
|
17
|
+
delete: 'warn',
|
|
18
|
+
warn: 'warn',
|
|
19
|
+
info: 'primary',
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Dialogo di conferma leggero per azioni condizionali.
|
|
23
|
+
*
|
|
24
|
+
* Non va utilizzato direttamente nel template: viene aperto
|
|
25
|
+
* programmaticamente tramite `UiModalService.confirm()` e i suoi
|
|
26
|
+
* metodi scorciatoia (`confirmDelete`, `confirmDiscard`, `confirmSave`).
|
|
27
|
+
*
|
|
28
|
+
* Supporta quattro varianti semantiche — confirm, delete, warn, info —
|
|
29
|
+
* ciascuna con icona e colore preconfigurati.
|
|
30
|
+
*
|
|
31
|
+
* @selector ui-confirm-dialog
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* // Apertura tramite servizio
|
|
36
|
+
* this.modalService.confirm({
|
|
37
|
+
* title: 'Conferma eliminazione',
|
|
38
|
+
* message: 'Questa azione non puo essere annullata.',
|
|
39
|
+
* variant: 'delete',
|
|
40
|
+
* }).subscribe(confirmed => {
|
|
41
|
+
* if (confirmed) this.deleteItem();
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export class UiConfirmDialogComponent {
|
|
46
|
+
constructor() {
|
|
47
|
+
/** @internal Dati iniettati dal servizio modale. */
|
|
48
|
+
this.data = inject(MAT_DIALOG_DATA);
|
|
49
|
+
/** @internal Riferimento al dialogo per la chiusura. */
|
|
50
|
+
this.dialogRef = inject(MatDialogRef);
|
|
51
|
+
}
|
|
52
|
+
/** Variante semantica corrente. */
|
|
53
|
+
get variant() {
|
|
54
|
+
return this.data.variant || 'confirm';
|
|
55
|
+
}
|
|
56
|
+
/** Nome icona Lucide da visualizzare. */
|
|
57
|
+
get iconName() {
|
|
58
|
+
return this.data.icon || VARIANT_ICON_MAP[this.variant];
|
|
59
|
+
}
|
|
60
|
+
/** Variante del pulsante di conferma. */
|
|
61
|
+
get confirmButtonVariant() {
|
|
62
|
+
return VARIANT_BUTTON_MAP[this.variant];
|
|
63
|
+
}
|
|
64
|
+
/** Classi CSS per il contenitore icona. */
|
|
65
|
+
get iconClasses() {
|
|
66
|
+
return `ui-confirm-dialog__icon ui-confirm-dialog__icon--${this.variant}`;
|
|
67
|
+
}
|
|
68
|
+
/** Conferma e chiude il dialogo con `true`. */
|
|
69
|
+
confirm() {
|
|
70
|
+
this.dialogRef.close(true);
|
|
71
|
+
}
|
|
72
|
+
/** Annulla e chiude il dialogo con `false`. */
|
|
73
|
+
cancel() {
|
|
74
|
+
this.dialogRef.close(false);
|
|
75
|
+
}
|
|
76
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiConfirmDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
77
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: UiConfirmDialogComponent, isStandalone: true, selector: "ui-confirm-dialog", host: { attributes: { "role": "alertdialog", "aria-modal": "true" }, properties: { "attr.aria-labelledby": "\"ui-confirm-title\"", "attr.aria-describedby": "\"ui-confirm-message\"" }, classAttribute: "ui-confirm-dialog-host" }, ngImport: i0, template: `
|
|
78
|
+
<div class="ui-confirm-dialog">
|
|
79
|
+
<!-- Icona -->
|
|
80
|
+
<div [class]="iconClasses">
|
|
81
|
+
<lucide-icon [name]="iconName" [size]="32" aria-hidden="true" />
|
|
82
|
+
</div>
|
|
83
|
+
|
|
84
|
+
<!-- Contenuto -->
|
|
85
|
+
<div class="ui-confirm-dialog__content">
|
|
86
|
+
@if (data.title) {
|
|
87
|
+
<h3 class="ui-confirm-dialog__title" id="ui-confirm-title">{{ data.title }}</h3>
|
|
88
|
+
}
|
|
89
|
+
<p class="ui-confirm-dialog__message" id="ui-confirm-message">{{ data.message }}</p>
|
|
90
|
+
</div>
|
|
91
|
+
|
|
92
|
+
<!-- Azioni -->
|
|
93
|
+
<div class="ui-confirm-dialog__actions">
|
|
94
|
+
<ui-button
|
|
95
|
+
[label]="data.cancelText || 'Annulla'"
|
|
96
|
+
variant="ghost"
|
|
97
|
+
size="md"
|
|
98
|
+
(click)="cancel()"
|
|
99
|
+
/>
|
|
100
|
+
<ui-button
|
|
101
|
+
[label]="data.confirmText || 'Conferma'"
|
|
102
|
+
[variant]="confirmButtonVariant"
|
|
103
|
+
size="md"
|
|
104
|
+
(click)="confirm()"
|
|
105
|
+
/>
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
`, isInline: true, styles: [".ui-confirm-dialog-host{display:block}.ui-confirm-dialog{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--ui-spacing-8) var(--ui-spacing-6);background:var(--ui-color-surface);border-radius:var(--ui-radius-lg);box-shadow:var(--ui-shadow-lg)}.ui-confirm-dialog__icon{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:var(--ui-radius-full);margin-bottom:var(--ui-spacing-4)}.ui-confirm-dialog__icon--confirm{background:var(--ui-color-primary-light);color:var(--ui-color-primary)}.ui-confirm-dialog__icon--delete{background:var(--ui-color-warn-light);color:var(--ui-color-warn)}.ui-confirm-dialog__icon--warn{background:var(--ui-color-warning-light);color:var(--ui-color-warning)}.ui-confirm-dialog__icon--info{background:var(--ui-color-info-light);color:var(--ui-color-info)}.ui-confirm-dialog__content{margin-bottom:var(--ui-spacing-6)}.ui-confirm-dialog__title{margin:0 0 var(--ui-spacing-2);font-size:var(--ui-font-size-lg);font-weight:var(--ui-font-weight-semibold);color:var(--ui-color-text);line-height:var(--ui-line-height-tight)}.ui-confirm-dialog__message{margin:0;font-size:var(--ui-font-size-sm);color:var(--ui-color-text-secondary);line-height:var(--ui-line-height-normal);max-width:340px}.ui-confirm-dialog__actions{display:flex;gap:var(--ui-spacing-2);width:100%;justify-content:center}.ui-confirm-panel .mat-mdc-dialog-container{--mdc-dialog-container-color: transparent;--mdc-dialog-container-shape: var(--ui-radius-lg)}.ui-confirm-panel .mat-mdc-dialog-container .mdc-dialog__surface{background:transparent!important;box-shadow:none!important;border-radius:var(--ui-radius-lg)!important;overflow:visible}@media (max-width: 480px){.ui-confirm-dialog{padding:var(--ui-spacing-6) var(--ui-spacing-4)}.ui-confirm-dialog__actions{flex-direction:column-reverse;gap:var(--ui-spacing-2)}.ui-confirm-dialog__actions .ui-button-host{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: LucideAngularModule }, { kind: "component", type: i1.LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: ["class", "name", "img", "color", "absoluteStrokeWidth", "size", "strokeWidth"] }, { kind: "component", type: UiButtonComponent, selector: "ui-button", inputs: ["label", "tooltip", "variant", "size", "icon", "iconPosition", "loading", "disabled", "fullWidth", "type", "ariaLabel", "customClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
109
|
+
}
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiConfirmDialogComponent, decorators: [{
|
|
111
|
+
type: Component,
|
|
112
|
+
args: [{ selector: 'ui-confirm-dialog', standalone: true, imports: [LucideAngularModule, UiButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
113
|
+
class: 'ui-confirm-dialog-host',
|
|
114
|
+
role: 'alertdialog',
|
|
115
|
+
'aria-modal': 'true',
|
|
116
|
+
'[attr.aria-labelledby]': '"ui-confirm-title"',
|
|
117
|
+
'[attr.aria-describedby]': '"ui-confirm-message"',
|
|
118
|
+
}, template: `
|
|
119
|
+
<div class="ui-confirm-dialog">
|
|
120
|
+
<!-- Icona -->
|
|
121
|
+
<div [class]="iconClasses">
|
|
122
|
+
<lucide-icon [name]="iconName" [size]="32" aria-hidden="true" />
|
|
123
|
+
</div>
|
|
124
|
+
|
|
125
|
+
<!-- Contenuto -->
|
|
126
|
+
<div class="ui-confirm-dialog__content">
|
|
127
|
+
@if (data.title) {
|
|
128
|
+
<h3 class="ui-confirm-dialog__title" id="ui-confirm-title">{{ data.title }}</h3>
|
|
129
|
+
}
|
|
130
|
+
<p class="ui-confirm-dialog__message" id="ui-confirm-message">{{ data.message }}</p>
|
|
131
|
+
</div>
|
|
132
|
+
|
|
133
|
+
<!-- Azioni -->
|
|
134
|
+
<div class="ui-confirm-dialog__actions">
|
|
135
|
+
<ui-button
|
|
136
|
+
[label]="data.cancelText || 'Annulla'"
|
|
137
|
+
variant="ghost"
|
|
138
|
+
size="md"
|
|
139
|
+
(click)="cancel()"
|
|
140
|
+
/>
|
|
141
|
+
<ui-button
|
|
142
|
+
[label]="data.confirmText || 'Conferma'"
|
|
143
|
+
[variant]="confirmButtonVariant"
|
|
144
|
+
size="md"
|
|
145
|
+
(click)="confirm()"
|
|
146
|
+
/>
|
|
147
|
+
</div>
|
|
148
|
+
</div>
|
|
149
|
+
`, styles: [".ui-confirm-dialog-host{display:block}.ui-confirm-dialog{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--ui-spacing-8) var(--ui-spacing-6);background:var(--ui-color-surface);border-radius:var(--ui-radius-lg);box-shadow:var(--ui-shadow-lg)}.ui-confirm-dialog__icon{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:var(--ui-radius-full);margin-bottom:var(--ui-spacing-4)}.ui-confirm-dialog__icon--confirm{background:var(--ui-color-primary-light);color:var(--ui-color-primary)}.ui-confirm-dialog__icon--delete{background:var(--ui-color-warn-light);color:var(--ui-color-warn)}.ui-confirm-dialog__icon--warn{background:var(--ui-color-warning-light);color:var(--ui-color-warning)}.ui-confirm-dialog__icon--info{background:var(--ui-color-info-light);color:var(--ui-color-info)}.ui-confirm-dialog__content{margin-bottom:var(--ui-spacing-6)}.ui-confirm-dialog__title{margin:0 0 var(--ui-spacing-2);font-size:var(--ui-font-size-lg);font-weight:var(--ui-font-weight-semibold);color:var(--ui-color-text);line-height:var(--ui-line-height-tight)}.ui-confirm-dialog__message{margin:0;font-size:var(--ui-font-size-sm);color:var(--ui-color-text-secondary);line-height:var(--ui-line-height-normal);max-width:340px}.ui-confirm-dialog__actions{display:flex;gap:var(--ui-spacing-2);width:100%;justify-content:center}.ui-confirm-panel .mat-mdc-dialog-container{--mdc-dialog-container-color: transparent;--mdc-dialog-container-shape: var(--ui-radius-lg)}.ui-confirm-panel .mat-mdc-dialog-container .mdc-dialog__surface{background:transparent!important;box-shadow:none!important;border-radius:var(--ui-radius-lg)!important;overflow:visible}@media (max-width: 480px){.ui-confirm-dialog{padding:var(--ui-spacing-6) var(--ui-spacing-4)}.ui-confirm-dialog__actions{flex-direction:column-reverse;gap:var(--ui-spacing-2)}.ui-confirm-dialog__actions .ui-button-host{width:100%}}\n"] }]
|
|
150
|
+
}] });
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctdWktc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbC9jb25maXJtLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBRy9ELCtEQUErRDtBQUMvRCxNQUFNLGdCQUFnQixHQUF5QztJQUM3RCxPQUFPLEVBQUUsY0FBYztJQUN2QixNQUFNLEVBQUUsU0FBUztJQUNqQixJQUFJLEVBQUUsZ0JBQWdCO0lBQ3RCLElBQUksRUFBRSxNQUFNO0NBQ2IsQ0FBQztBQUVGLG1FQUFtRTtBQUNuRSxNQUFNLGtCQUFrQixHQUF3QztJQUM5RCxPQUFPLEVBQUUsU0FBUztJQUNsQixNQUFNLEVBQUUsTUFBTTtJQUNkLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLFNBQVM7Q0FDaEIsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQWdESCxNQUFNLE9BQU8sd0JBQXdCO0lBL0NyQztRQWdERSxvREFBb0Q7UUFDM0MsU0FBSSxHQUF3QixNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFN0Qsd0RBQXdEO1FBQ3ZDLGNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7S0ErQm5EO0lBN0JDLG1DQUFtQztJQUNuQyxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLFNBQVMsQ0FBQztJQUN4QyxDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELDJDQUEyQztJQUMzQyxJQUFJLFdBQVc7UUFDYixPQUFPLG9EQUFvRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUUsQ0FBQztJQUVELCtDQUErQztJQUMvQyxPQUFPO1FBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELCtDQUErQztJQUMvQyxNQUFNO1FBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQzsrR0FuQ1Usd0JBQXdCO21HQUF4Qix3QkFBd0IsaVRBbEN6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVCxtOURBekNTLG1CQUFtQixnUEFBRSxpQkFBaUI7OzRGQTRDckMsd0JBQXdCO2tCQS9DcEMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUMsbUJBQ2hDLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osS0FBSyxFQUFFLHdCQUF3Qjt3QkFDL0IsSUFBSSxFQUFFLGFBQWE7d0JBQ25CLFlBQVksRUFBRSxNQUFNO3dCQUNwQix3QkFBd0IsRUFBRSxvQkFBb0I7d0JBQzlDLHlCQUF5QixFQUFFLHNCQUFzQjtxQkFDbEQsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBMdWNpZGVBbmd1bGFyTW9kdWxlIH0gZnJvbSAnbHVjaWRlLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBVaUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVWlDb25maXJtRGlhbG9nRGF0YSwgVWlDb25maXJtVmFyaWFudCwgVWlJY29uTmFtZSwgVWlWYXJpYW50IH0gZnJvbSAnLi9tb2RhbC50eXBlcyc7XHJcblxyXG4vKiogQGludGVybmFsIE1hcHBhdHVyYSB2YXJpYW50ZSAtPiBpY29uYSBMdWNpZGUgZGkgZGVmYXVsdC4gKi9cclxuY29uc3QgVkFSSUFOVF9JQ09OX01BUDogUmVjb3JkPFVpQ29uZmlybVZhcmlhbnQsIFVpSWNvbk5hbWU+ID0ge1xyXG4gIGNvbmZpcm06ICdjaGVjay1jaXJjbGUnLFxyXG4gIGRlbGV0ZTogJ3RyYXNoLTInLFxyXG4gIHdhcm46ICdhbGVydC10cmlhbmdsZScsXHJcbiAgaW5mbzogJ2luZm8nLFxyXG59O1xyXG5cclxuLyoqIEBpbnRlcm5hbCBNYXBwYXR1cmEgdmFyaWFudGUgLT4gY29sb3JlIHB1bHNhbnRlIGRpIGNvbmZlcm1hLiAqL1xyXG5jb25zdCBWQVJJQU5UX0JVVFRPTl9NQVA6IFJlY29yZDxVaUNvbmZpcm1WYXJpYW50LCBVaVZhcmlhbnQ+ID0ge1xyXG4gIGNvbmZpcm06ICdwcmltYXJ5JyxcclxuICBkZWxldGU6ICd3YXJuJyxcclxuICB3YXJuOiAnd2FybicsXHJcbiAgaW5mbzogJ3ByaW1hcnknLFxyXG59O1xyXG5cclxuLyoqXHJcbiAqIERpYWxvZ28gZGkgY29uZmVybWEgbGVnZ2VybyBwZXIgYXppb25pIGNvbmRpemlvbmFsaS5cclxuICpcclxuICogTm9uIHZhIHV0aWxpenphdG8gZGlyZXR0YW1lbnRlIG5lbCB0ZW1wbGF0ZTogdmllbmUgYXBlcnRvXHJcbiAqIHByb2dyYW1tYXRpY2FtZW50ZSB0cmFtaXRlIGBVaU1vZGFsU2VydmljZS5jb25maXJtKClgIGUgaSBzdW9pXHJcbiAqIG1ldG9kaSBzY29yY2lhdG9pYSAoYGNvbmZpcm1EZWxldGVgLCBgY29uZmlybURpc2NhcmRgLCBgY29uZmlybVNhdmVgKS5cclxuICpcclxuICogU3VwcG9ydGEgcXVhdHRybyB2YXJpYW50aSBzZW1hbnRpY2hlIOKAlCBjb25maXJtLCBkZWxldGUsIHdhcm4sIGluZm8g4oCUXHJcbiAqIGNpYXNjdW5hIGNvbiBpY29uYSBlIGNvbG9yZSBwcmVjb25maWd1cmF0aS5cclxuICpcclxuICogQHNlbGVjdG9yIHVpLWNvbmZpcm0tZGlhbG9nXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogLy8gQXBlcnR1cmEgdHJhbWl0ZSBzZXJ2aXppb1xyXG4gKiB0aGlzLm1vZGFsU2VydmljZS5jb25maXJtKHtcclxuICogICB0aXRsZTogJ0NvbmZlcm1hIGVsaW1pbmF6aW9uZScsXHJcbiAqICAgbWVzc2FnZTogJ1F1ZXN0YSBhemlvbmUgbm9uIHB1byBlc3NlcmUgYW5udWxsYXRhLicsXHJcbiAqICAgdmFyaWFudDogJ2RlbGV0ZScsXHJcbiAqIH0pLnN1YnNjcmliZShjb25maXJtZWQgPT4ge1xyXG4gKiAgIGlmIChjb25maXJtZWQpIHRoaXMuZGVsZXRlSXRlbSgpO1xyXG4gKiB9KTtcclxuICogYGBgXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VpLWNvbmZpcm0tZGlhbG9nJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtMdWNpZGVBbmd1bGFyTW9kdWxlLCBVaUJ1dHRvbkNvbXBvbmVudF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ3VpLWNvbmZpcm0tZGlhbG9nLWhvc3QnLFxyXG4gICAgcm9sZTogJ2FsZXJ0ZGlhbG9nJyxcclxuICAgICdhcmlhLW1vZGFsJzogJ3RydWUnLFxyXG4gICAgJ1thdHRyLmFyaWEtbGFiZWxsZWRieV0nOiAnXCJ1aS1jb25maXJtLXRpdGxlXCInLFxyXG4gICAgJ1thdHRyLmFyaWEtZGVzY3JpYmVkYnldJzogJ1widWktY29uZmlybS1tZXNzYWdlXCInLFxyXG4gIH0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJ1aS1jb25maXJtLWRpYWxvZ1wiPlxyXG4gICAgICA8IS0tIEljb25hIC0tPlxyXG4gICAgICA8ZGl2IFtjbGFzc109XCJpY29uQ2xhc3Nlc1wiPlxyXG4gICAgICAgIDxsdWNpZGUtaWNvbiBbbmFtZV09XCJpY29uTmFtZVwiIFtzaXplXT1cIjMyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIENvbnRlbnV0byAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cInVpLWNvbmZpcm0tZGlhbG9nX19jb250ZW50XCI+XHJcbiAgICAgICAgQGlmIChkYXRhLnRpdGxlKSB7XHJcbiAgICAgICAgICA8aDMgY2xhc3M9XCJ1aS1jb25maXJtLWRpYWxvZ19fdGl0bGVcIiBpZD1cInVpLWNvbmZpcm0tdGl0bGVcIj57eyBkYXRhLnRpdGxlIH19PC9oMz5cclxuICAgICAgICB9XHJcbiAgICAgICAgPHAgY2xhc3M9XCJ1aS1jb25maXJtLWRpYWxvZ19fbWVzc2FnZVwiIGlkPVwidWktY29uZmlybS1tZXNzYWdlXCI+e3sgZGF0YS5tZXNzYWdlIH19PC9wPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gQXppb25pIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidWktY29uZmlybS1kaWFsb2dfX2FjdGlvbnNcIj5cclxuICAgICAgICA8dWktYnV0dG9uXHJcbiAgICAgICAgICBbbGFiZWxdPVwiZGF0YS5jYW5jZWxUZXh0IHx8ICdBbm51bGxhJ1wiXHJcbiAgICAgICAgICB2YXJpYW50PVwiZ2hvc3RcIlxyXG4gICAgICAgICAgc2l6ZT1cIm1kXCJcclxuICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8dWktYnV0dG9uXHJcbiAgICAgICAgICBbbGFiZWxdPVwiZGF0YS5jb25maXJtVGV4dCB8fCAnQ29uZmVybWEnXCJcclxuICAgICAgICAgIFt2YXJpYW50XT1cImNvbmZpcm1CdXR0b25WYXJpYW50XCJcclxuICAgICAgICAgIHNpemU9XCJtZFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiY29uZmlybSgpXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVVcmw6ICcuL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5zY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFVpQ29uZmlybURpYWxvZ0NvbXBvbmVudCB7XHJcbiAgLyoqIEBpbnRlcm5hbCBEYXRpIGluaWV0dGF0aSBkYWwgc2Vydml6aW8gbW9kYWxlLiAqL1xyXG4gIHJlYWRvbmx5IGRhdGE6IFVpQ29uZmlybURpYWxvZ0RhdGEgPSBpbmplY3QoTUFUX0RJQUxPR19EQVRBKTtcclxuXHJcbiAgLyoqIEBpbnRlcm5hbCBSaWZlcmltZW50byBhbCBkaWFsb2dvIHBlciBsYSBjaGl1c3VyYS4gKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1JlZiA9IGluamVjdChNYXREaWFsb2dSZWYpO1xyXG5cclxuICAvKiogVmFyaWFudGUgc2VtYW50aWNhIGNvcnJlbnRlLiAqL1xyXG4gIGdldCB2YXJpYW50KCk6IFVpQ29uZmlybVZhcmlhbnQge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YS52YXJpYW50IHx8ICdjb25maXJtJztcclxuICB9XHJcblxyXG4gIC8qKiBOb21lIGljb25hIEx1Y2lkZSBkYSB2aXN1YWxpenphcmUuICovXHJcbiAgZ2V0IGljb25OYW1lKCk6IFVpSWNvbk5hbWUge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YS5pY29uIHx8IFZBUklBTlRfSUNPTl9NQVBbdGhpcy52YXJpYW50XTtcclxuICB9XHJcblxyXG4gIC8qKiBWYXJpYW50ZSBkZWwgcHVsc2FudGUgZGkgY29uZmVybWEuICovXHJcbiAgZ2V0IGNvbmZpcm1CdXR0b25WYXJpYW50KCk6IFVpVmFyaWFudCB7XHJcbiAgICByZXR1cm4gVkFSSUFOVF9CVVRUT05fTUFQW3RoaXMudmFyaWFudF07XHJcbiAgfVxyXG5cclxuICAvKiogQ2xhc3NpIENTUyBwZXIgaWwgY29udGVuaXRvcmUgaWNvbmEuICovXHJcbiAgZ2V0IGljb25DbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYHVpLWNvbmZpcm0tZGlhbG9nX19pY29uIHVpLWNvbmZpcm0tZGlhbG9nX19pY29uLS0ke3RoaXMudmFyaWFudH1gO1xyXG4gIH1cclxuXHJcbiAgLyoqIENvbmZlcm1hIGUgY2hpdWRlIGlsIGRpYWxvZ28gY29uIGB0cnVlYC4gKi9cclxuICBjb25maXJtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvKiogQW5udWxsYSBlIGNoaXVkZSBpbCBkaWFsb2dvIGNvbiBgZmFsc2VgLiAqL1xyXG4gIGNhbmNlbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGZhbHNlKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { UiModalComponent } from './modal.component';
|
|
2
|
+
export { UiConfirmDialogComponent } from './confirm-dialog.component';
|
|
3
|
+
export { UiModalService } from './modal.service';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy11aS1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL21vZGFsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFVpTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL21vZGFsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCB7IFVpQ29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcclxuZXhwb3J0IHsgVWlNb2RhbFNlcnZpY2UgfSBmcm9tICcuL21vZGFsLnNlcnZpY2UnO1xyXG5leHBvcnQge1xyXG4gIFVpTW9kYWxDb25maWcsXHJcbiAgVWlNb2RhbE9wZW5Db25maWcsXHJcbiAgVWlNb2RhbFNpemUsXHJcbiAgVWlDb25maXJtRGlhbG9nRGF0YSxcclxuICBVaUNvbmZpcm1WYXJpYW50LFxyXG59IGZyb20gJy4vbW9kYWwudHlwZXMnO1xyXG4iXX0=
|