@codetectonics/mantle 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -49
- package/bundles/codetectonics-mantle.umd.js +6907 -0
- package/bundles/codetectonics-mantle.umd.js.map +1 -0
- package/esm2015/codetectonics-mantle.js +5 -0
- package/esm2015/lib/components/dashboard/containers/dynamic-dashboard-container/dynamic-dashboard-container.component.js +24 -0
- package/esm2015/lib/components/dashboard/containers/plain-dashboard-container/plain-dashboard-container.component.js +35 -0
- package/esm2015/lib/components/dashboard/dashboard-card/dashboard-card.component.js +133 -0
- package/esm2015/lib/components/dashboard/dashboard-card-search-menu/dashboard-card-search-menu.component.js +55 -0
- package/esm2015/lib/components/dashboard/dynamic-dashboard/dynamic-dashboard.component.js +23 -0
- package/esm2015/lib/components/dashboard/sections/dashboard-section/dashboard-section.component.js +71 -0
- package/esm2015/lib/components/dashboard/widgets/dashboard-info-card/dashboard-info-card.component.js +26 -0
- package/esm2015/lib/components/dashboard/widgets/dashboard-table/dashboard-table-datasource.js +30 -0
- package/esm2015/lib/components/dashboard/widgets/dashboard-table/dashboard-table.component.js +58 -0
- package/esm2015/lib/components/dashboard/widgets/dynamic-chart/dynamic-chart.component.js +85 -0
- package/esm2015/lib/components/dashboard/widgets/dynamic-widget-display/dynamic-widget-display.component.js +29 -0
- package/esm2015/lib/components/details/containers/accordion-details-container/accordion-details-container.component.js +26 -0
- package/esm2015/lib/components/details/containers/dynamic-details-container/dynamic-details-container.component.js +25 -0
- package/esm2015/lib/components/details/containers/plain-details-container/plain-details-container.component.js +25 -0
- package/esm2015/lib/components/details/dialog-details/dialog-details.component.js +77 -0
- package/esm2015/lib/components/details/dialog-nested-details/dialog-nested-details.component.js +40 -0
- package/esm2015/lib/components/details/dynamic-details/dynamic-details.component.js +23 -0
- package/esm2015/lib/components/details/fields/actions-attribute-display/actions-attribute-display.component.js +27 -0
- package/esm2015/lib/components/details/fields/chip-attribute-display/chip-attribute-display.component.js +40 -0
- package/esm2015/lib/components/details/fields/dynamic-attribute-display/dynamic-attribute-display.component.js +46 -0
- package/esm2015/lib/components/details/fields/file-attribute-display/file-attribute-display.component.js +37 -0
- package/esm2015/lib/components/details/fields/image-attribute-display/image-attribute-display.component.js +36 -0
- package/esm2015/lib/components/details/fields/link-attribute-display/link-attribute-display.component.js +30 -0
- package/esm2015/lib/components/details/fields/markdown-attribute-display/markdown-attribute-display.component.js +21 -0
- package/esm2015/lib/components/details/fields/thumbnail-display/thumbnail-display.component.js +33 -0
- package/esm2015/lib/components/details/sections/dynamic-details-section/dynamic-details-section.component.js +42 -0
- package/esm2015/lib/components/details/sections/grid-details-section/grid-details-section.component.js +53 -0
- package/esm2015/lib/components/details/sections/markdown-details-section/markdown-details-section.component.js +19 -0
- package/esm2015/lib/components/details/sections/table-details-section/table-details-section.component.js +37 -0
- package/esm2015/lib/components/form/containers/accordion-form-container/accordion-form-container.component.js +29 -0
- package/esm2015/lib/components/form/containers/dynamic-form-container/dynamic-form-container.component.js +28 -0
- package/esm2015/lib/components/form/containers/plain-form-container/plain-form-container.component.js +28 -0
- package/esm2015/lib/components/form/dialog-form/dialog-form.component.js +91 -0
- package/esm2015/lib/components/form/dialog-nested-form/dialog-nested-form.component.js +57 -0
- package/esm2015/lib/components/form/dynamic-form/dynamic-form.component.js +52 -0
- package/esm2015/lib/components/form/fields/autocomplete-input/autocomplete-input.component.js +69 -0
- package/esm2015/lib/components/form/fields/chip-input/chip-input.component.js +84 -0
- package/esm2015/lib/components/form/fields/datepicker/datepicker.component.js +91 -0
- package/esm2015/lib/components/form/fields/datetimepicker/datetimepicker.component.js +92 -0
- package/esm2015/lib/components/form/fields/dropdown/dropdown.component.js +73 -0
- package/esm2015/lib/components/form/fields/dynamic-form-field/dynamic-form-field.component.js +37 -0
- package/esm2015/lib/components/form/fields/filepicker/filepicker.component.js +97 -0
- package/esm2015/lib/components/form/fields/image-cropper/image-cropper.component.js +52 -0
- package/esm2015/lib/components/form/fields/imagepicker/imagepicker.component.js +139 -0
- package/esm2015/lib/components/form/fields/markdown-input/markdown-input.component.js +53 -0
- package/esm2015/lib/components/form/fields/number-input/number-input.component.js +91 -0
- package/esm2015/lib/components/form/fields/password-input/password-input.component.js +58 -0
- package/esm2015/lib/components/form/fields/text-input/text-input.component.js +55 -0
- package/esm2015/lib/components/form/fields/textarea/textarea.component.js +58 -0
- package/esm2015/lib/components/form/sections/dynamic-form-section/dynamic-form-section.component.js +47 -0
- package/esm2015/lib/components/form/sections/grid-form-section/grid-form-section.component.js +69 -0
- package/esm2015/lib/components/form/sections/table-form-section/table-form-section.component.js +107 -0
- package/esm2015/lib/components/layout-editor/containers/accordion-layout-editor-container/accordion-layout-editor-container.component.js +24 -0
- package/esm2015/lib/components/layout-editor/containers/dynamic-layout-editor-container/dynamic-layout-editor-container.component.js +23 -0
- package/esm2015/lib/components/layout-editor/containers/plain-layout-editor-container/plain-layout-editor-container.component.js +24 -0
- package/esm2015/lib/components/layout-editor/dynamic-layout-editor/dynamic-layout-editor.component.js +23 -0
- package/esm2015/lib/components/layout-editor/elements/dynamic-layout-editor-element/dynamic-layout-editor-element.component.js +38 -0
- package/esm2015/lib/components/layout-editor/elements/layout-editor-field-element/layout-editor-field-element.component.js +76 -0
- package/esm2015/lib/components/layout-editor/elements/layout-editor-table-column-element/layout-editor-table-column-element.component.js +76 -0
- package/esm2015/lib/components/layout-editor/elements/layout-editor-widget-element/layout-editor-widget-element.component.js +19 -0
- package/esm2015/lib/components/layout-editor/sections/dashboard-layout-editor-section/dashboard-layout-editor-section.component.js +21 -0
- package/esm2015/lib/components/layout-editor/sections/dynamic-layout-editor-section/dynamic-layout-editor-section.component.js +25 -0
- package/esm2015/lib/components/layout-editor/sections/grid-layout-editor-section/grid-layout-editor-section.component.js +102 -0
- package/esm2015/lib/components/layout-editor/sections/markdown-layout-editor-section/markdown-layout-editor-section.component.js +19 -0
- package/esm2015/lib/components/layout-editor/sections/table-layout-editor-section/table-layout-editor-section.component.js +74 -0
- package/esm2015/lib/components/navigation/nav-tree/nav-tree.component.js +65 -0
- package/esm2015/lib/components/navigation/reroute/reroute.component.js +28 -0
- package/esm2015/lib/components/pages/dashboard-page/dashboard-page.component.js +34 -0
- package/esm2015/lib/components/pages/detail-page/detail-page.component.js +101 -0
- package/esm2015/lib/components/pages/documents-page/documents-page.component.js +109 -0
- package/esm2015/lib/components/pages/export-page/export-page.component.js +65 -0
- package/esm2015/lib/components/pages/form-page/form-page.component.js +133 -0
- package/esm2015/lib/components/pages/layout-editor-page/layout-editor-page.component.js +72 -0
- package/esm2015/lib/components/pages/list-page/list-page-datasource.js +62 -0
- package/esm2015/lib/components/pages/list-page/list-page.component.js +159 -0
- package/esm2015/lib/components/pages/tabbed-page/tabbed-page.component.js +35 -0
- package/esm2015/lib/components/titles/content-title/content-title.component.js +23 -0
- package/esm2015/lib/components/titles/page-title/page-title.component.js +28 -0
- package/esm2015/lib/components/titles/section-title/section-title.component.js +18 -0
- package/esm2015/lib/components/widgets/delete-confirmation-dialog/delete-confirmation-dialog.component.js +36 -0
- package/esm2015/lib/components/widgets/dynamic-table/dynamic-table-datasource.js +89 -0
- package/esm2015/lib/components/widgets/dynamic-table/dynamic-table.component.js +67 -0
- package/esm2015/lib/components/widgets/file-preview-dialog/file-preview-dialog.component.js +42 -0
- package/esm2015/lib/components/widgets/loader/loader.component.js +21 -0
- package/esm2015/lib/components/widgets/save-confirmation-dialog/save-confirmation-dialog.component.js +35 -0
- package/esm2015/lib/components/widgets/search-panel/search-panel.component.js +67 -0
- package/esm2015/lib/components/widgets/snackbar/snackbar.component.js +42 -0
- package/esm2015/lib/config/charts/column-chart.data.js +38 -0
- package/esm2015/lib/config/charts/gantt-chart.data.js +18 -0
- package/esm2015/lib/config/charts/pie-chart.data.js +21 -0
- package/esm2015/lib/config/charts/progress-bar-chart.data.js +50 -0
- package/esm2015/lib/config/charts/spline-chart.data.js +24 -0
- package/esm2015/lib/data-structures/dynamic-layout.structure.js +2 -0
- package/esm2015/lib/data-structures/file-attachment.structure.js +2 -0
- package/esm2015/lib/directives/click-stop-propagation.directive.js +19 -0
- package/esm2015/lib/directives/file-dropzone.directive.js +53 -0
- package/esm2015/lib/guards/feature.guard.js +42 -0
- package/esm2015/lib/guards/password-check.guard.js +21 -0
- package/esm2015/lib/guards/session.guard.js +21 -0
- package/esm2015/lib/mantle.module.js +518 -0
- package/esm2015/lib/material.module.js +290 -0
- package/esm2015/lib/models/screen-size-map.model.js +9 -0
- package/esm2015/lib/pipes/dynamic.pipe.js +45 -0
- package/esm2015/lib/pipes/secure-image.pipe.js +35 -0
- package/esm2015/lib/services/adapters/web-api-crud.adapter.js +22 -0
- package/esm2015/lib/services/adapters/websocket.adapter.js +2 -0
- package/esm2015/lib/services/announcement.service.js +43 -0
- package/esm2015/lib/services/array.service.js +82 -0
- package/esm2015/lib/services/chart.service.js +45 -0
- package/esm2015/lib/services/confirmation.service.js +45 -0
- package/esm2015/lib/services/current-user.service.js +120 -0
- package/esm2015/lib/services/dynamic-form.service.js +59 -0
- package/esm2015/lib/services/feature-config.service.js +240 -0
- package/esm2015/lib/services/interfaces/authorisable-feature.service.js +2 -0
- package/esm2015/lib/services/interfaces/dashboard-page.service.js +2 -0
- package/esm2015/lib/services/interfaces/dashboard-widget.service.js +2 -0
- package/esm2015/lib/services/interfaces/detail-page.service.js +2 -0
- package/esm2015/lib/services/interfaces/export-page.service.js +2 -0
- package/esm2015/lib/services/interfaces/form-page.service.js +2 -0
- package/esm2015/lib/services/interfaces/layout-editor-page.service.js +2 -0
- package/esm2015/lib/services/interfaces/list-page.service.js +2 -0
- package/esm2015/lib/services/interfaces/nav-tabs.service.js +2 -0
- package/esm2015/lib/services/interfaces/reroute.service.js +2 -0
- package/esm2015/lib/services/object.service.js +69 -0
- package/esm2015/lib/services/password-check.service.js +93 -0
- package/esm2015/lib/services/screen-size.service.js +41 -0
- package/esm2015/lib/services/web-api.service.js +99 -0
- package/esm2015/lib/services/websocket.service.js +58 -0
- package/esm2015/lib/tokens/environment.token.js +3 -0
- package/esm2015/public-api.js +133 -0
- package/fesm2015/codetectonics-mantle.js +5940 -0
- package/fesm2015/codetectonics-mantle.js.map +1 -0
- package/lib/components/dashboard/containers/dynamic-dashboard-container/dynamic-dashboard-container.component.d.ts +11 -0
- package/lib/components/dashboard/containers/plain-dashboard-container/plain-dashboard-container.component.d.ts +14 -0
- package/lib/components/dashboard/dashboard-card/dashboard-card.component.d.ts +41 -0
- package/lib/components/dashboard/dashboard-card-search-menu/dashboard-card-search-menu.component.d.ts +20 -0
- package/lib/components/dashboard/dynamic-dashboard/dynamic-dashboard.component.d.ts +10 -0
- package/lib/components/dashboard/sections/dashboard-section/dashboard-section.component.d.ts +27 -0
- package/lib/components/dashboard/widgets/dashboard-info-card/dashboard-info-card.component.d.ts +8 -0
- package/lib/components/dashboard/widgets/dashboard-table/dashboard-table-datasource.d.ts +22 -0
- package/lib/components/dashboard/widgets/dashboard-table/dashboard-table.component.d.ts +28 -0
- package/lib/components/dashboard/widgets/dynamic-chart/dynamic-chart.component.d.ts +20 -0
- package/lib/components/dashboard/widgets/dynamic-widget-display/dynamic-widget-display.component.d.ts +9 -0
- package/lib/components/details/containers/accordion-details-container/accordion-details-container.component.d.ts +11 -0
- package/lib/components/details/containers/dynamic-details-container/dynamic-details-container.component.d.ts +11 -0
- package/lib/components/details/containers/plain-details-container/plain-details-container.component.d.ts +11 -0
- package/lib/components/details/dialog-details/dialog-details.component.d.ts +36 -0
- package/lib/components/details/dialog-nested-details/dialog-nested-details.component.d.ts +22 -0
- package/lib/components/details/dynamic-details/dynamic-details.component.d.ts +10 -0
- package/lib/components/details/fields/actions-attribute-display/actions-attribute-display.component.d.ts +7 -0
- package/lib/components/details/fields/chip-attribute-display/chip-attribute-display.component.d.ts +9 -0
- package/lib/components/details/fields/dynamic-attribute-display/dynamic-attribute-display.component.d.ts +15 -0
- package/lib/components/details/fields/file-attribute-display/file-attribute-display.component.d.ts +12 -0
- package/lib/components/details/fields/image-attribute-display/image-attribute-display.component.d.ts +12 -0
- package/lib/components/details/fields/link-attribute-display/link-attribute-display.component.d.ts +10 -0
- package/lib/components/details/fields/markdown-attribute-display/markdown-attribute-display.component.d.ts +6 -0
- package/lib/components/details/fields/thumbnail-display/thumbnail-display.component.d.ts +10 -0
- package/lib/components/details/sections/dynamic-details-section/dynamic-details-section.component.d.ts +17 -0
- package/lib/components/details/sections/grid-details-section/grid-details-section.component.d.ts +17 -0
- package/lib/components/details/sections/markdown-details-section/markdown-details-section.component.d.ts +7 -0
- package/lib/components/details/sections/table-details-section/table-details-section.component.d.ts +12 -0
- package/lib/components/form/containers/accordion-form-container/accordion-form-container.component.d.ts +13 -0
- package/lib/components/form/containers/dynamic-form-container/dynamic-form-container.component.d.ts +13 -0
- package/lib/components/form/containers/plain-form-container/plain-form-container.component.d.ts +13 -0
- package/lib/components/form/dialog-form/dialog-form.component.d.ts +39 -0
- package/lib/components/form/dialog-nested-form/dialog-nested-form.component.d.ts +31 -0
- package/lib/components/form/dynamic-form/dynamic-form.component.d.ts +21 -0
- package/lib/components/form/fields/autocomplete-input/autocomplete-input.component.d.ts +32 -0
- package/lib/components/form/fields/chip-input/chip-input.component.d.ts +27 -0
- package/lib/components/form/fields/datepicker/datepicker.component.d.ts +24 -0
- package/lib/components/form/fields/datetimepicker/datetimepicker.component.d.ts +24 -0
- package/lib/components/form/fields/dropdown/dropdown.component.d.ts +31 -0
- package/lib/components/form/fields/dynamic-form-field/dynamic-form-field.component.d.ts +10 -0
- package/lib/components/form/fields/filepicker/filepicker.component.d.ts +27 -0
- package/lib/components/form/fields/image-cropper/image-cropper.component.d.ts +27 -0
- package/lib/components/form/fields/imagepicker/imagepicker.component.d.ts +41 -0
- package/lib/components/form/fields/markdown-input/markdown-input.component.d.ts +17 -0
- package/lib/components/form/fields/number-input/number-input.component.d.ts +27 -0
- package/lib/components/form/fields/password-input/password-input.component.d.ts +19 -0
- package/lib/components/form/fields/text-input/text-input.component.d.ts +18 -0
- package/lib/components/form/fields/textarea/textarea.component.d.ts +19 -0
- package/lib/components/form/sections/dynamic-form-section/dynamic-form-section.component.d.ts +19 -0
- package/lib/components/form/sections/grid-form-section/grid-form-section.component.d.ts +23 -0
- package/lib/components/form/sections/table-form-section/table-form-section.component.d.ts +22 -0
- package/lib/components/layout-editor/containers/accordion-layout-editor-container/accordion-layout-editor-container.component.d.ts +10 -0
- package/lib/components/layout-editor/containers/dynamic-layout-editor-container/dynamic-layout-editor-container.component.d.ts +10 -0
- package/lib/components/layout-editor/containers/plain-layout-editor-container/plain-layout-editor-container.component.d.ts +10 -0
- package/lib/components/layout-editor/dynamic-layout-editor/dynamic-layout-editor.component.d.ts +10 -0
- package/lib/components/layout-editor/elements/dynamic-layout-editor-element/dynamic-layout-editor-element.component.d.ts +13 -0
- package/lib/components/layout-editor/elements/layout-editor-field-element/layout-editor-field-element.component.d.ts +14 -0
- package/lib/components/layout-editor/elements/layout-editor-table-column-element/layout-editor-table-column-element.component.d.ts +14 -0
- package/lib/components/layout-editor/elements/layout-editor-widget-element/layout-editor-widget-element.component.d.ts +8 -0
- package/lib/components/layout-editor/sections/dashboard-layout-editor-section/dashboard-layout-editor-section.component.d.ts +8 -0
- package/lib/components/layout-editor/sections/dynamic-layout-editor-section/dynamic-layout-editor-section.component.d.ts +10 -0
- package/lib/components/layout-editor/sections/grid-layout-editor-section/grid-layout-editor-section.component.d.ts +21 -0
- package/lib/components/layout-editor/sections/markdown-layout-editor-section/markdown-layout-editor-section.component.d.ts +7 -0
- package/lib/components/layout-editor/sections/table-layout-editor-section/table-layout-editor-section.component.d.ts +14 -0
- package/lib/components/navigation/nav-tree/nav-tree.component.d.ts +46 -0
- package/lib/components/navigation/reroute/reroute.component.d.ts +14 -0
- package/lib/components/pages/dashboard-page/dashboard-page.component.d.ts +16 -0
- package/lib/components/pages/detail-page/detail-page.component.d.ts +35 -0
- package/lib/components/pages/documents-page/documents-page.component.d.ts +41 -0
- package/lib/components/pages/export-page/export-page.component.d.ts +29 -0
- package/lib/components/pages/form-page/form-page.component.d.ts +37 -0
- package/lib/components/pages/layout-editor-page/layout-editor-page.component.d.ts +26 -0
- package/lib/components/pages/list-page/list-page-datasource.d.ts +32 -0
- package/lib/components/pages/list-page/list-page.component.d.ts +46 -0
- package/lib/components/pages/tabbed-page/tabbed-page.component.d.ts +16 -0
- package/lib/components/titles/content-title/content-title.component.d.ts +8 -0
- package/lib/components/titles/page-title/page-title.component.d.ts +10 -0
- package/lib/components/titles/section-title/section-title.component.d.ts +7 -0
- package/lib/components/widgets/delete-confirmation-dialog/delete-confirmation-dialog.component.d.ts +20 -0
- package/lib/components/widgets/dynamic-table/dynamic-table-datasource.d.ts +40 -0
- package/lib/components/widgets/dynamic-table/dynamic-table.component.d.ts +30 -0
- package/lib/components/widgets/file-preview-dialog/file-preview-dialog.component.d.ts +17 -0
- package/lib/components/widgets/loader/loader.component.d.ts +6 -0
- package/lib/components/widgets/save-confirmation-dialog/save-confirmation-dialog.component.d.ts +16 -0
- package/lib/components/widgets/search-panel/search-panel.component.d.ts +21 -0
- package/lib/components/widgets/snackbar/snackbar.component.d.ts +11 -0
- package/lib/config/charts/column-chart.data.d.ts +37 -0
- package/lib/config/charts/gantt-chart.data.d.ts +17 -0
- package/lib/config/charts/pie-chart.data.d.ts +20 -0
- package/lib/config/charts/progress-bar-chart.data.d.ts +49 -0
- package/lib/config/charts/spline-chart.data.d.ts +23 -0
- package/lib/data-structures/dynamic-layout.structure.d.ts +161 -0
- package/lib/data-structures/file-attachment.structure.d.ts +6 -0
- package/lib/directives/click-stop-propagation.directive.d.ts +6 -0
- package/lib/directives/file-dropzone.directive.d.ts +12 -0
- package/lib/guards/feature.guard.d.ts +15 -0
- package/lib/guards/password-check.guard.d.ts +11 -0
- package/lib/guards/session.guard.d.ts +10 -0
- package/lib/mantle.module.d.ts +106 -0
- package/lib/material.module.d.ts +34 -0
- package/lib/models/screen-size-map.model.d.ts +13 -0
- package/lib/pipes/dynamic.pipe.d.ts +12 -0
- package/lib/pipes/secure-image.pipe.d.ts +11 -0
- package/lib/services/adapters/web-api-crud.adapter.d.ts +63 -0
- package/lib/services/adapters/websocket.adapter.d.ts +6 -0
- package/lib/services/announcement.service.d.ts +11 -0
- package/lib/services/array.service.d.ts +21 -0
- package/lib/services/chart.service.d.ts +14 -0
- package/lib/services/confirmation.service.d.ts +11 -0
- package/lib/services/current-user.service.d.ts +28 -0
- package/lib/services/dynamic-form.service.d.ts +30 -0
- package/lib/services/feature-config.service.d.ts +82 -0
- package/lib/services/interfaces/authorisable-feature.service.d.ts +5 -0
- package/lib/services/interfaces/dashboard-page.service.d.ts +13 -0
- package/lib/services/interfaces/dashboard-widget.service.d.ts +34 -0
- package/lib/services/interfaces/detail-page.service.d.ts +36 -0
- package/lib/services/interfaces/export-page.service.d.ts +6 -0
- package/lib/services/interfaces/form-page.service.d.ts +30 -0
- package/lib/services/interfaces/layout-editor-page.service.d.ts +14 -0
- package/lib/services/interfaces/list-page.service.d.ts +44 -0
- package/lib/services/interfaces/nav-tabs.service.d.ts +7 -0
- package/lib/services/interfaces/reroute.service.d.ts +3 -0
- package/lib/services/object.service.d.ts +11 -0
- package/lib/services/password-check.service.d.ts +21 -0
- package/lib/services/screen-size.service.d.ts +14 -0
- package/lib/services/web-api.service.d.ts +21 -0
- package/lib/services/websocket.service.d.ts +20 -0
- package/lib/tokens/environment.token.d.ts +2 -0
- package/package.json +33 -15
- package/public-api.d.ts +129 -2
- package/fesm2022/codetectonics-mantle.mjs +0 -42
- package/fesm2022/codetectonics-mantle.mjs.map +0 -1
- package/lib/mantle.component.d.ts +0 -5
- package/lib/mantle.service.d.ts +0 -6
- /package/{index.d.ts → codetectonics-mantle.d.ts} +0 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Component, Inject, ViewChild } from '@angular/core';
|
|
2
|
+
import { MAT_DIALOG_DATA, MatDialogRef } from "@angular/material/dialog";
|
|
3
|
+
import { of as observableOf } from 'rxjs';
|
|
4
|
+
import { map } from 'rxjs/operators';
|
|
5
|
+
import { DynamicFormComponent } from '../../../components/form/dynamic-form/dynamic-form.component';
|
|
6
|
+
import { AnnouncementService } from '../../../services/announcement.service';
|
|
7
|
+
import { ObjectService } from '../../../services/object.service';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/material/dialog";
|
|
10
|
+
import * as i2 from "../../../services/announcement.service";
|
|
11
|
+
import * as i3 from "../../../services/object.service";
|
|
12
|
+
import * as i4 from "../../titles/section-title/section-title.component";
|
|
13
|
+
import * as i5 from "@angular/material/button";
|
|
14
|
+
import * as i6 from "@angular/material/icon";
|
|
15
|
+
import * as i7 from "../dynamic-form/dynamic-form.component";
|
|
16
|
+
import * as i8 from "@angular/material/progress-spinner";
|
|
17
|
+
import * as i9 from "@angular/flex-layout/flex";
|
|
18
|
+
import * as i10 from "@angular/common";
|
|
19
|
+
import * as i11 from "@angular/material/form-field";
|
|
20
|
+
export class DialogFormComponent {
|
|
21
|
+
constructor(dialogRef, dialogFormParams, changeDetectorRef, announcementService, objectService) {
|
|
22
|
+
this.dialogRef = dialogRef;
|
|
23
|
+
this.dialogFormParams = dialogFormParams;
|
|
24
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
25
|
+
this.announcementService = announcementService;
|
|
26
|
+
this.objectService = objectService;
|
|
27
|
+
this.formPageService = this.dialogFormParams.formPageService;
|
|
28
|
+
this.id = this.dialogFormParams.id;
|
|
29
|
+
this.title = this.dialogFormParams.title;
|
|
30
|
+
let responseObservable = this.id ? this.formPageService.getEdit(this.id) : this.formPageService.getNew();
|
|
31
|
+
this.content$ = responseObservable.pipe(map((res) => {
|
|
32
|
+
if (this.dialogFormParams.initData) {
|
|
33
|
+
res.content.data = this.objectService.deepMerge(res.content.data, this.dialogFormParams.initData);
|
|
34
|
+
}
|
|
35
|
+
return res.content;
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
ngAfterViewChecked() {
|
|
39
|
+
this.changeDetectorRef.detectChanges();
|
|
40
|
+
}
|
|
41
|
+
onCancelClicked() {
|
|
42
|
+
this.close();
|
|
43
|
+
}
|
|
44
|
+
onSaveClicked() {
|
|
45
|
+
this.isSaveInProgress = true;
|
|
46
|
+
let responseObservable = this.id ? this.formPageService.update(this.id, this.dynamicForm.value) :
|
|
47
|
+
this.formPageService.create(this.dynamicForm.value);
|
|
48
|
+
responseObservable.subscribe(res => { this.onSaveSuccess(res); }, res => { this.onSaveFailure(res); });
|
|
49
|
+
}
|
|
50
|
+
onSaveSuccess(res) {
|
|
51
|
+
this.id = res.id;
|
|
52
|
+
this.content$ = observableOf(res.content);
|
|
53
|
+
this.announcementService.success('Save successful!');
|
|
54
|
+
this.close(res.content.data);
|
|
55
|
+
this.isSaveInProgress = false;
|
|
56
|
+
}
|
|
57
|
+
onSaveFailure(res) {
|
|
58
|
+
var _a;
|
|
59
|
+
if (res.error.content) {
|
|
60
|
+
this.content$ = observableOf(res.error.content);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
this.close();
|
|
64
|
+
}
|
|
65
|
+
this.announcementService.error('Save failed!');
|
|
66
|
+
if (!!((_a = res.error.alert) === null || _a === void 0 ? void 0 : _a.message)) {
|
|
67
|
+
this.announcementService.error(res.error.alert.message);
|
|
68
|
+
}
|
|
69
|
+
this.isSaveInProgress = false;
|
|
70
|
+
}
|
|
71
|
+
close(result = false) {
|
|
72
|
+
this.dialogRef.close(result);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
DialogFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DialogFormComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i0.ChangeDetectorRef }, { token: i2.AnnouncementService }, { token: i3.ObjectService }], target: i0.ɵɵFactoryTarget.Component });
|
|
76
|
+
DialogFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DialogFormComponent, selector: "mantle-dialog-form", viewQueries: [{ propertyName: "dynamicForm", first: true, predicate: DynamicFormComponent, descendants: true }], ngImport: i0, template: "<div mat-dialog-title fxLayout=\"row\" fxLayoutAlign=\"start\" fxLayoutGap=\"8px\" class=\"dialog-title-section\">\n <mantle-section-title fxFlex=\"1 0 1px\" [title]=\"title\"></mantle-section-title>\n <button fxFlex=\"0 0 auto\" mat-icon-button tabindex=\"-1\" (click)=\"onCancelClicked()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n <mantle-dynamic-form #dynamicForm [content]=\"content$ | async\"></mantle-dynamic-form>\n</mat-dialog-content>\n\n<mat-dialog-actions fxLayout=\"row\" class=\"actions-section\">\n <div fxFlex=\"1 1 auto\"></div>\n\n <div fxFlex=\"0 0 auto\">\n <button mat-raised-button\n *ngIf=\"!isSaveInProgress\"\n color=\"primary\"\n type=\"button\"\n class=\"save-button\"\n (click)=\"onSaveClicked()\"\n [disabled]=\"!dynamicForm?.valid\">\n Save\n </button>\n\n <button mat-raised-button\n *ngIf=\"isSaveInProgress\"\n color=\"primary\"\n type=\"button\"\n class=\"saving-button\"\n (click)=\"onSaveClicked()\"\n [disabled]=\"true\">\n Saving\n <mat-spinner matSuffix [diameter]=\"16\"></mat-spinner>\n </button>\n </div>\n</mat-dialog-actions>\n", styles: [".save-button,.saving-button{width:140px}.saving-button .mat-spinner{position:absolute;top:10px;right:12px}\n"], components: [{ type: i4.SectionTitleComponent, selector: "mantle-section-title", inputs: ["title"] }, { type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.DynamicFormComponent, selector: "mantle-dynamic-form", inputs: ["formPageService", "content"] }, { type: i8.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i9.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i9.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i9.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { type: i9.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.MatSuffix, selector: "[matSuffix]" }], pipes: { "async": i10.AsyncPipe } });
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DialogFormComponent, decorators: [{
|
|
78
|
+
type: Component,
|
|
79
|
+
args: [{
|
|
80
|
+
selector: 'mantle-dialog-form',
|
|
81
|
+
templateUrl: './dialog-form.component.html',
|
|
82
|
+
styleUrls: ['./dialog-form.component.scss']
|
|
83
|
+
}]
|
|
84
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
85
|
+
type: Inject,
|
|
86
|
+
args: [MAT_DIALOG_DATA]
|
|
87
|
+
}] }, { type: i0.ChangeDetectorRef }, { type: i2.AnnouncementService }, { type: i3.ObjectService }]; }, propDecorators: { dynamicForm: [{
|
|
88
|
+
type: ViewChild,
|
|
89
|
+
args: [DynamicFormComponent]
|
|
90
|
+
}] } });
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2RpYWxvZy1mb3JtL2RpYWxvZy1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hbnRsZS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9kaWFsb2ctZm9ybS9kaWFsb2ctZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFjLEVBQUUsSUFBSSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7OztBQWVqRSxNQUFNLE9BQU8sbUJBQW1CO0lBVTlCLFlBQW9CLFNBQTRDLEVBQ25CLGdCQUFrQyxFQUMzRCxpQkFBb0MsRUFDcEMsbUJBQXdDLEVBQVUsYUFBNEI7UUFIOUUsY0FBUyxHQUFULFNBQVMsQ0FBbUM7UUFDbkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUMzRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNoRyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUM7UUFDN0QsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUV6QyxJQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUV6RyxJQUFJLENBQUMsUUFBUSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FDckMsR0FBRyxDQUFDLENBQUMsR0FBdUIsRUFBRSxFQUFFO1lBQzlCLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRTtnQkFDbEMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ25HO1lBQ0QsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUU3QixJQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkYsa0JBQWtCLENBQUMsU0FBUyxDQUMxQixHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ25DLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDcEMsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhLENBQUMsR0FBdUI7UUFDbkMsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFrQzs7UUFDOUMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2pEO2FBQ0k7WUFDSCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDZDtRQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLENBQUMsQ0FBQSxNQUFBLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSywwQ0FBRSxPQUFPLENBQUEsRUFBRTtZQUM5QixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3pEO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQWMsS0FBSztRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDOztpSEE5RVUsbUJBQW1CLDhDQVdWLGVBQWU7cUdBWHhCLG1CQUFtQix1R0FFbkIsb0JBQW9CLGdEQ3hCakMsNnNDQXFDQTs0RkRmYSxtQkFBbUI7a0JBTC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsV0FBVyxFQUFFLDhCQUE4QjtvQkFDM0MsU0FBUyxFQUFFLENBQUMsOEJBQThCLENBQUM7aUJBQzVDOzswQkFZYyxNQUFNOzJCQUFDLGVBQWU7MElBVEYsV0FBVztzQkFBM0MsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdDaGVja2VkLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbmplY3QsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiBhcyBvYnNlcnZhYmxlT2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFdlYkFwaUZvcm1SZXNwb25zZSwgV2ViQXBpU2F2ZVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYWRhcHRlcnMvd2ViLWFwaS1jcnVkLmFkYXB0ZXInO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2Zvcm0vZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQW5ub3VuY2VtZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Fubm91bmNlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IE9iamVjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vYmplY3Quc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtUGFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pbnRlcmZhY2VzL2Zvcm0tcGFnZS5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dGb3JtUGFyYW1zIHtcbiAgZm9ybVBhZ2VTZXJ2aWNlOiBGb3JtUGFnZVNlcnZpY2U7XG4gIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGluaXREYXRhOiBhbnk7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hbnRsZS1kaWFsb2ctZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2ctZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RpYWxvZy1mb3JtLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGlhbG9nRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQge1xuXG4gIEBWaWV3Q2hpbGQoRHluYW1pY0Zvcm1Db21wb25lbnQpIGR5bmFtaWNGb3JtITogRHluYW1pY0Zvcm1Db21wb25lbnQ7XG5cbiAgcHVibGljIGZvcm1QYWdlU2VydmljZTogRm9ybVBhZ2VTZXJ2aWNlO1xuICBwdWJsaWMgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyBjb250ZW50JCE6IE9ic2VydmFibGU8YW55PjtcbiAgcHVibGljIGlzU2F2ZUluUHJvZ3Jlc3MhOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGlhbG9nRm9ybUNvbXBvbmVudD4sXG4gICAgICAgICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIGRpYWxvZ0Zvcm1QYXJhbXM6IERpYWxvZ0Zvcm1QYXJhbXMsXG4gICAgICAgICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIGFubm91bmNlbWVudFNlcnZpY2U6IEFubm91bmNlbWVudFNlcnZpY2UsIHByaXZhdGUgb2JqZWN0U2VydmljZTogT2JqZWN0U2VydmljZSkge1xuICAgIHRoaXMuZm9ybVBhZ2VTZXJ2aWNlID0gdGhpcy5kaWFsb2dGb3JtUGFyYW1zLmZvcm1QYWdlU2VydmljZTtcbiAgICB0aGlzLmlkID0gdGhpcy5kaWFsb2dGb3JtUGFyYW1zLmlkO1xuICAgIHRoaXMudGl0bGUgPSB0aGlzLmRpYWxvZ0Zvcm1QYXJhbXMudGl0bGU7XG5cbiAgICBsZXQgcmVzcG9uc2VPYnNlcnZhYmxlID0gdGhpcy5pZCA/IHRoaXMuZm9ybVBhZ2VTZXJ2aWNlLmdldEVkaXQodGhpcy5pZCkgOiB0aGlzLmZvcm1QYWdlU2VydmljZS5nZXROZXcoKTtcblxuICAgIHRoaXMuY29udGVudCQgPSByZXNwb25zZU9ic2VydmFibGUucGlwZShcbiAgICAgIG1hcCgocmVzOiBXZWJBcGlGb3JtUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nRm9ybVBhcmFtcy5pbml0RGF0YSkge1xuICAgICAgICAgIHJlcy5jb250ZW50LmRhdGEgPSB0aGlzLm9iamVjdFNlcnZpY2UuZGVlcE1lcmdlKHJlcy5jb250ZW50LmRhdGEsIHRoaXMuZGlhbG9nRm9ybVBhcmFtcy5pbml0RGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcy5jb250ZW50O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25DYW5jZWxDbGlja2VkKCkge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIG9uU2F2ZUNsaWNrZWQoKSB7XG4gICAgdGhpcy5pc1NhdmVJblByb2dyZXNzID0gdHJ1ZTtcblxuICAgIGxldCByZXNwb25zZU9ic2VydmFibGUgPSB0aGlzLmlkID8gdGhpcy5mb3JtUGFnZVNlcnZpY2UudXBkYXRlKHRoaXMuaWQsIHRoaXMuZHluYW1pY0Zvcm0udmFsdWUpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybVBhZ2VTZXJ2aWNlLmNyZWF0ZSh0aGlzLmR5bmFtaWNGb3JtLnZhbHVlKTtcblxuICAgIHJlc3BvbnNlT2JzZXJ2YWJsZS5zdWJzY3JpYmUoXG4gICAgICByZXMgPT4geyB0aGlzLm9uU2F2ZVN1Y2Nlc3MocmVzKTsgfSxcbiAgICAgIHJlcyA9PiB7IHRoaXMub25TYXZlRmFpbHVyZShyZXMpOyB9XG4gICAgKTtcbiAgfVxuXG4gIG9uU2F2ZVN1Y2Nlc3MocmVzOiBXZWJBcGlTYXZlUmVzcG9uc2UpOiB2b2lkIHtcbiAgICB0aGlzLmlkID0gcmVzLmlkO1xuICAgIHRoaXMuY29udGVudCQgPSBvYnNlcnZhYmxlT2YocmVzLmNvbnRlbnQpO1xuICAgIHRoaXMuYW5ub3VuY2VtZW50U2VydmljZS5zdWNjZXNzKCdTYXZlIHN1Y2Nlc3NmdWwhJyk7XG4gICAgdGhpcy5jbG9zZShyZXMuY29udGVudC5kYXRhKTtcblxuICAgIHRoaXMuaXNTYXZlSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICB9XG5cbiAgb25TYXZlRmFpbHVyZShyZXM6IHsgZXJyb3I6IFdlYkFwaVNhdmVSZXNwb25zZSB9KTogdm9pZCB7XG4gICAgaWYgKHJlcy5lcnJvci5jb250ZW50KSB7XG4gICAgICB0aGlzLmNvbnRlbnQkID0gb2JzZXJ2YWJsZU9mKHJlcy5lcnJvci5jb250ZW50KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5hbm5vdW5jZW1lbnRTZXJ2aWNlLmVycm9yKCdTYXZlIGZhaWxlZCEnKTtcblxuICAgIGlmICghIXJlcy5lcnJvci5hbGVydD8ubWVzc2FnZSkge1xuICAgICAgdGhpcy5hbm5vdW5jZW1lbnRTZXJ2aWNlLmVycm9yKHJlcy5lcnJvci5hbGVydC5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzU2F2ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgfVxuXG4gIGNsb3NlKHJlc3VsdDogYW55ID0gZmFsc2UpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShyZXN1bHQpO1xuICB9XG5cbn1cbiIsIjxkaXYgbWF0LWRpYWxvZy10aXRsZSBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydFwiIGZ4TGF5b3V0R2FwPVwiOHB4XCIgY2xhc3M9XCJkaWFsb2ctdGl0bGUtc2VjdGlvblwiPlxuICA8bWFudGxlLXNlY3Rpb24tdGl0bGUgZnhGbGV4PVwiMSAwIDFweFwiIFt0aXRsZV09XCJ0aXRsZVwiPjwvbWFudGxlLXNlY3Rpb24tdGl0bGU+XG4gIDxidXR0b24gZnhGbGV4PVwiMCAwIGF1dG9cIiBtYXQtaWNvbi1idXR0b24gdGFiaW5kZXg9XCItMVwiIChjbGljayk9XCJvbkNhbmNlbENsaWNrZWQoKVwiPlxuICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuXG48bWF0LWRpYWxvZy1jb250ZW50PlxuICA8bWFudGxlLWR5bmFtaWMtZm9ybSAjZHluYW1pY0Zvcm0gW2NvbnRlbnRdPVwiY29udGVudCQgfCBhc3luY1wiPjwvbWFudGxlLWR5bmFtaWMtZm9ybT5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuXG48bWF0LWRpYWxvZy1hY3Rpb25zIGZ4TGF5b3V0PVwicm93XCIgY2xhc3M9XCJhY3Rpb25zLXNlY3Rpb25cIj5cbiAgPGRpdiBmeEZsZXg9XCIxIDEgYXV0b1wiPjwvZGl2PlxuXG4gIDxkaXYgZnhGbGV4PVwiMCAwIGF1dG9cIj5cbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICpuZ0lmPVwiIWlzU2F2ZUluUHJvZ3Jlc3NcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJzYXZlLWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJvblNhdmVDbGlja2VkKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWR5bmFtaWNGb3JtPy52YWxpZFwiPlxuICAgICAgU2F2ZVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAqbmdJZj1cImlzU2F2ZUluUHJvZ3Jlc3NcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJzYXZpbmctYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uU2F2ZUNsaWNrZWQoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+XG4gICAgICBTYXZpbmdcbiAgICAgIDxtYXQtc3Bpbm5lciBtYXRTdWZmaXggW2RpYW1ldGVyXT1cIjE2XCI+PC9tYXQtc3Bpbm5lcj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L21hdC1kaWFsb2ctYWN0aW9ucz5cbiJdfQ==
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Component, ChangeDetectorRef, Inject } from '@angular/core';
|
|
2
|
+
import { MAT_DIALOG_DATA, MatDialogRef } from "@angular/material/dialog";
|
|
3
|
+
import { DynamicFormService } from '../../../services/dynamic-form.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/dialog";
|
|
6
|
+
import * as i2 from "../../../services/dynamic-form.service";
|
|
7
|
+
import * as i3 from "../../titles/section-title/section-title.component";
|
|
8
|
+
import * as i4 from "@angular/material/button";
|
|
9
|
+
import * as i5 from "@angular/material/icon";
|
|
10
|
+
import * as i6 from "../sections/grid-form-section/grid-form-section.component";
|
|
11
|
+
import * as i7 from "@angular/flex-layout/flex";
|
|
12
|
+
import * as i8 from "@angular/common";
|
|
13
|
+
export class DialogNestedFormComponent {
|
|
14
|
+
constructor(changeDetectorRef, dialogRef, dialogNestedFormParams, dynamicFormService) {
|
|
15
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
16
|
+
this.dialogRef = dialogRef;
|
|
17
|
+
this.dialogNestedFormParams = dialogNestedFormParams;
|
|
18
|
+
this.dynamicFormService = dynamicFormService;
|
|
19
|
+
this.title = this.dialogNestedFormParams.title;
|
|
20
|
+
this.section = this.dialogNestedFormParams.section;
|
|
21
|
+
this.showDeleteButton = this.dialogNestedFormParams.showDeleteButton;
|
|
22
|
+
if (!this.dialogNestedFormParams.data) {
|
|
23
|
+
this.dialogNestedFormParams.data = this.dynamicFormService.generateFormInitData(this.dialogNestedFormParams.section.elements);
|
|
24
|
+
}
|
|
25
|
+
this.saveButtonText = this.dialogNestedFormParams.saveButtonText || 'Save';
|
|
26
|
+
this.form = this.dynamicFormService.toFormGroup(this.dialogNestedFormParams.data);
|
|
27
|
+
}
|
|
28
|
+
ngAfterViewChecked() {
|
|
29
|
+
this.changeDetectorRef.detectChanges();
|
|
30
|
+
}
|
|
31
|
+
onSave() {
|
|
32
|
+
let formData = this.form.getRawValue();
|
|
33
|
+
this.dialogRef.close(formData);
|
|
34
|
+
}
|
|
35
|
+
onDelete() {
|
|
36
|
+
let formData = this.form.getRawValue();
|
|
37
|
+
formData._destroy = 1;
|
|
38
|
+
this.dialogRef.close(formData);
|
|
39
|
+
}
|
|
40
|
+
onCancel() {
|
|
41
|
+
this.dialogRef.close();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
DialogNestedFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DialogNestedFormComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.DynamicFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
45
|
+
DialogNestedFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DialogNestedFormComponent, selector: "mantle-dialog-nested-form", ngImport: i0, template: "<div mat-dialog-title fxLayout=\"row\" fxLayoutAlign=\"start\" fxLayoutGap=\"8px\" class=\"dialog-title-section\">\n <mantle-section-title fxFlex=\"1 0 1px\" [title]=\"title\"></mantle-section-title>\n <button fxFlex=\"0 0 auto\" mat-icon-button tabindex=\"-1\" (click)=\"onCancel()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n <mantle-grid-form-section\n [section]=\"section\"\n [form]=\"form\">\n </mantle-grid-form-section>\n\n</mat-dialog-content>\n\n<mat-dialog-actions fxLayout=\"row\" class=\"actions-section\">\n <button fxFlex=\"0 0 auto\" *ngIf=\"showDeleteButton\" mat-button (click)=\"onDelete()\" color=\"warn\">Delete</button>\n <div fxFlex=\"1 1 auto\"></div>\n <button fxFlex=\"0 0 auto\" mat-button (click)=\"onSave()\" [disabled]=\"!form.valid\">{{ saveButtonText }}</button>\n</mat-dialog-actions>\n", styles: [""], components: [{ type: i3.SectionTitleComponent, selector: "mantle-section-title", inputs: ["title"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6.GridFormSectionComponent, selector: "mantle-grid-form-section", inputs: ["title", "section", "form", "errors", "defaultRowHeight"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i7.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i7.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i7.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { type: i7.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DialogNestedFormComponent, decorators: [{
|
|
47
|
+
type: Component,
|
|
48
|
+
args: [{
|
|
49
|
+
selector: 'mantle-dialog-nested-form',
|
|
50
|
+
templateUrl: './dialog-nested-form.component.html',
|
|
51
|
+
styleUrls: ['./dialog-nested-form.component.scss']
|
|
52
|
+
}]
|
|
53
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
54
|
+
type: Inject,
|
|
55
|
+
args: [MAT_DIALOG_DATA]
|
|
56
|
+
}] }, { type: i2.DynamicFormService }]; } });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLW5lc3RlZC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hbnRsZS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9kaWFsb2ctbmVzdGVkLWZvcm0vZGlhbG9nLW5lc3RlZC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hbnRsZS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9kaWFsb2ctbmVzdGVkLWZvcm0vZGlhbG9nLW5lc3RlZC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7Ozs7O0FBZTVFLE1BQU0sT0FBTyx5QkFBeUI7SUFRcEMsWUFBb0IsaUJBQW9DLEVBQVUsU0FBa0QsRUFDdkUsc0JBQThDLEVBQ3ZFLGtCQUFzQztRQUZ0QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBeUM7UUFDdkUsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUN2RSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3hELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUM7UUFDbkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQztRQUVyRSxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRTtZQUNyQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQy9IO1FBRUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQztRQUUzRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkMsUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7O3VIQXpDVSx5QkFBeUIsK0VBU2hCLGVBQWU7MkdBVHhCLHlCQUF5QixpRUNuQnRDLDYyQkFxQkE7NEZERmEseUJBQXlCO2tCQUxyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFdBQVcsRUFBRSxxQ0FBcUM7b0JBQ2xELFNBQVMsRUFBRSxDQUFDLHFDQUFxQyxDQUFDO2lCQUNuRDs7MEJBVWMsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBBZnRlclZpZXdDaGVja2VkLCBDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbmltcG9ydCB7IER5bmFtaWNMYXlvdXRHcmlkU2VjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2RhdGEtc3RydWN0dXJlcy9keW5hbWljLWxheW91dC5zdHJ1Y3R1cmUnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZHluYW1pYy1mb3JtLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ05lc3RlZEZvcm1QYXJhbXMge1xuICB0aXRsZTogc3RyaW5nO1xuICBzZWN0aW9uOiBEeW5hbWljTGF5b3V0R3JpZFNlY3Rpb247XG4gIGRhdGE6IGFueTtcbiAgc2hvd0RlbGV0ZUJ1dHRvbjogYm9vbGVhbjtcbiAgc2F2ZUJ1dHRvblRleHQ6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWFudGxlLWRpYWxvZy1uZXN0ZWQtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2ctbmVzdGVkLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kaWFsb2ctbmVzdGVkLWZvcm0uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dOZXN0ZWRGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG5cbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyBzZWN0aW9uOiBEeW5hbWljTGF5b3V0R3JpZFNlY3Rpb247XG4gIHB1YmxpYyBzaG93RGVsZXRlQnV0dG9uOiBib29sZWFuO1xuICBwdWJsaWMgc2F2ZUJ1dHRvblRleHQ6IHN0cmluZztcbiAgcHVibGljIGZvcm0hOiBGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGlhbG9nTmVzdGVkRm9ybUNvbXBvbmVudD4sXG4gICAgICAgICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIGRpYWxvZ05lc3RlZEZvcm1QYXJhbXM6IERpYWxvZ05lc3RlZEZvcm1QYXJhbXMsXG4gICAgICAgICAgICAgIHByaXZhdGUgZHluYW1pY0Zvcm1TZXJ2aWNlOiBEeW5hbWljRm9ybVNlcnZpY2UpIHtcbiAgICB0aGlzLnRpdGxlID0gdGhpcy5kaWFsb2dOZXN0ZWRGb3JtUGFyYW1zLnRpdGxlO1xuICAgIHRoaXMuc2VjdGlvbiA9IHRoaXMuZGlhbG9nTmVzdGVkRm9ybVBhcmFtcy5zZWN0aW9uO1xuICAgIHRoaXMuc2hvd0RlbGV0ZUJ1dHRvbiA9IHRoaXMuZGlhbG9nTmVzdGVkRm9ybVBhcmFtcy5zaG93RGVsZXRlQnV0dG9uO1xuXG4gICAgaWYgKCF0aGlzLmRpYWxvZ05lc3RlZEZvcm1QYXJhbXMuZGF0YSkge1xuICAgICAgdGhpcy5kaWFsb2dOZXN0ZWRGb3JtUGFyYW1zLmRhdGEgPSB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5nZW5lcmF0ZUZvcm1Jbml0RGF0YSh0aGlzLmRpYWxvZ05lc3RlZEZvcm1QYXJhbXMuc2VjdGlvbi5lbGVtZW50cyk7XG4gICAgfVxuXG4gICAgdGhpcy5zYXZlQnV0dG9uVGV4dCA9IHRoaXMuZGlhbG9nTmVzdGVkRm9ybVBhcmFtcy5zYXZlQnV0dG9uVGV4dCB8fCAnU2F2ZSc7XG5cbiAgICB0aGlzLmZvcm0gPSB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS50b0Zvcm1Hcm91cCh0aGlzLmRpYWxvZ05lc3RlZEZvcm1QYXJhbXMuZGF0YSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBvblNhdmUoKSB7XG4gICAgbGV0IGZvcm1EYXRhID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZm9ybURhdGEpO1xuICB9XG5cbiAgb25EZWxldGUoKSB7XG4gICAgbGV0IGZvcm1EYXRhID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgZm9ybURhdGEuX2Rlc3Ryb3kgPSAxO1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGZvcm1EYXRhKTtcbiAgfVxuXG4gIG9uQ2FuY2VsKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cblxufVxuIiwiPGRpdiBtYXQtZGlhbG9nLXRpdGxlIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0XCIgZnhMYXlvdXRHYXA9XCI4cHhcIiBjbGFzcz1cImRpYWxvZy10aXRsZS1zZWN0aW9uXCI+XG4gIDxtYW50bGUtc2VjdGlvbi10aXRsZSBmeEZsZXg9XCIxIDAgMXB4XCIgW3RpdGxlXT1cInRpdGxlXCI+PC9tYW50bGUtc2VjdGlvbi10aXRsZT5cbiAgPGJ1dHRvbiBmeEZsZXg9XCIwIDAgYXV0b1wiIG1hdC1pY29uLWJ1dHRvbiB0YWJpbmRleD1cIi0xXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj5cbiAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPG1hdC1kaWFsb2ctY29udGVudD5cblxuICA8bWFudGxlLWdyaWQtZm9ybS1zZWN0aW9uXG4gICAgICBbc2VjdGlvbl09XCJzZWN0aW9uXCJcbiAgICAgIFtmb3JtXT1cImZvcm1cIj5cbiAgPC9tYW50bGUtZ3JpZC1mb3JtLXNlY3Rpb24+XG5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuXG48bWF0LWRpYWxvZy1hY3Rpb25zIGZ4TGF5b3V0PVwicm93XCIgY2xhc3M9XCJhY3Rpb25zLXNlY3Rpb25cIj5cbiAgPGJ1dHRvbiBmeEZsZXg9XCIwIDAgYXV0b1wiICpuZ0lmPVwic2hvd0RlbGV0ZUJ1dHRvblwiIG1hdC1idXR0b24gKGNsaWNrKT1cIm9uRGVsZXRlKClcIiBjb2xvcj1cIndhcm5cIj5EZWxldGU8L2J1dHRvbj5cbiAgPGRpdiBmeEZsZXg9XCIxIDEgYXV0b1wiPjwvZGl2PlxuICA8YnV0dG9uIGZ4RmxleD1cIjAgMCBhdXRvXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwib25TYXZlKClcIiBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWRcIj57eyBzYXZlQnV0dG9uVGV4dCB9fTwvYnV0dG9uPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Component, ChangeDetectorRef, Input } from '@angular/core';
|
|
2
|
+
import { DynamicFormService } from '../../../services/dynamic-form.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../../services/dynamic-form.service";
|
|
5
|
+
import * as i2 from "../containers/dynamic-form-container/dynamic-form-container.component";
|
|
6
|
+
import * as i3 from "../../widgets/loader/loader.component";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
export class DynamicFormComponent {
|
|
9
|
+
constructor(changeDetectorRef, dynamicFormService) {
|
|
10
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
11
|
+
this.dynamicFormService = dynamicFormService;
|
|
12
|
+
}
|
|
13
|
+
ngOnChanges() {
|
|
14
|
+
if (this.content) {
|
|
15
|
+
this.form = this.dynamicFormService.toFormGroup(this.content.data);
|
|
16
|
+
if (this.formPageService) {
|
|
17
|
+
this.form.valueChanges.subscribe(val => {
|
|
18
|
+
this.formPageService.onFormValueChanged(this.content, this.form.getRawValue());
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
ngAfterViewChecked() {
|
|
24
|
+
this.changeDetectorRef.detectChanges();
|
|
25
|
+
}
|
|
26
|
+
get valid() {
|
|
27
|
+
var _a;
|
|
28
|
+
return (_a = this.form) === null || _a === void 0 ? void 0 : _a.valid;
|
|
29
|
+
}
|
|
30
|
+
get value() {
|
|
31
|
+
var _a;
|
|
32
|
+
return this.dynamicFormService.transformFormValue((_a = this.form) === null || _a === void 0 ? void 0 : _a.getRawValue());
|
|
33
|
+
}
|
|
34
|
+
reset() {
|
|
35
|
+
this.form.reset();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
DynamicFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicFormComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DynamicFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
39
|
+
DynamicFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicFormComponent, selector: "mantle-dynamic-form", inputs: { formPageService: "formPageService", content: "content" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"content; else loader\">\n <ng-container *ngFor=\"let container of content.containers\">\n <mantle-dynamic-form-container [formPageService]=\"formPageService\" [container]=\"container\" [content]=\"content\" [form]=\"form\">\n </mantle-dynamic-form-container>\n </ng-container>\n</ng-container>\n\n<ng-template #loader>\n <mantle-loader></mantle-loader>\n</ng-template>\n", styles: [""], components: [{ type: i2.DynamicFormContainerComponent, selector: "mantle-dynamic-form-container", inputs: ["formPageService", "content", "container", "form"] }, { type: i3.LoaderComponent, selector: "mantle-loader", inputs: ["delay"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicFormComponent, decorators: [{
|
|
41
|
+
type: Component,
|
|
42
|
+
args: [{
|
|
43
|
+
selector: 'mantle-dynamic-form',
|
|
44
|
+
templateUrl: './dynamic-form.component.html',
|
|
45
|
+
styleUrls: ['./dynamic-form.component.scss']
|
|
46
|
+
}]
|
|
47
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.DynamicFormService }]; }, propDecorators: { formPageService: [{
|
|
48
|
+
type: Input
|
|
49
|
+
}], content: [{
|
|
50
|
+
type: Input
|
|
51
|
+
}] } });
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hbnRsZS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hbnRsZS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQStCLGlCQUFpQixFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7O0FBUTVFLE1BQU0sT0FBTyxvQkFBb0I7SUFPL0IsWUFBb0IsaUJBQW9DLEVBQVUsa0JBQXNDO1FBQXBGLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFBVSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO0lBQUksQ0FBQztJQUU3RyxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRW5FLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRixDQUFDLENBQUMsQ0FBQzthQUNKO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxLQUFLOztRQUNQLE9BQU8sTUFBQSxJQUFJLENBQUMsSUFBSSwwQ0FBRSxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksS0FBSzs7UUFDUCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFBLElBQUksQ0FBQyxJQUFJLDBDQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3BCLENBQUM7O2tIQW5DVSxvQkFBb0I7c0dBQXBCLG9CQUFvQixvSkNYakMsbVpBVUE7NEZEQ2Esb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFdBQVcsRUFBRSwrQkFBK0I7b0JBQzVDLFNBQVMsRUFBRSxDQUFDLCtCQUErQixDQUFDO2lCQUM3Qzt5SUFHVSxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25DaGFuZ2VzLCBBZnRlclZpZXdDaGVja2VkLCBDaGFuZ2VEZXRlY3RvclJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IER5bmFtaWNGb3JtQ29udGVudCB9IGZyb20gJy4uLy4uLy4uL2RhdGEtc3RydWN0dXJlcy9keW5hbWljLWxheW91dC5zdHJ1Y3R1cmUnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZHluYW1pYy1mb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybVBhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaW50ZXJmYWNlcy9mb3JtLXBhZ2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hbnRsZS1keW5hbWljLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0NoZWNrZWQge1xuXG4gIEBJbnB1dCgpIGZvcm1QYWdlU2VydmljZSE6IEZvcm1QYWdlU2VydmljZTtcbiAgQElucHV0KCkgY29udGVudCE6IER5bmFtaWNGb3JtQ29udGVudDtcblxuICBwdWJsaWMgZm9ybSE6IEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBkeW5hbWljRm9ybVNlcnZpY2U6IER5bmFtaWNGb3JtU2VydmljZSkgeyB9XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgdGhpcy5mb3JtID0gdGhpcy5keW5hbWljRm9ybVNlcnZpY2UudG9Gb3JtR3JvdXAodGhpcy5jb250ZW50LmRhdGEpO1xuXG4gICAgICBpZiAodGhpcy5mb3JtUGFnZVNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgICAgICB0aGlzLmZvcm1QYWdlU2VydmljZS5vbkZvcm1WYWx1ZUNoYW5nZWQodGhpcy5jb250ZW50LCB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCB2YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtPy52YWxpZDtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS50cmFuc2Zvcm1Gb3JtVmFsdWUodGhpcy5mb3JtPy5nZXRSYXdWYWx1ZSgpKTtcbiAgfVxuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50OyBlbHNlIGxvYWRlclwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb250YWluZXIgb2YgY29udGVudC5jb250YWluZXJzXCI+XG4gICAgPG1hbnRsZS1keW5hbWljLWZvcm0tY29udGFpbmVyIFtmb3JtUGFnZVNlcnZpY2VdPVwiZm9ybVBhZ2VTZXJ2aWNlXCIgW2NvbnRhaW5lcl09XCJjb250YWluZXJcIiBbY29udGVudF09XCJjb250ZW50XCIgW2Zvcm1dPVwiZm9ybVwiPlxuICAgIDwvbWFudGxlLWR5bmFtaWMtZm9ybS1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGVyPlxuICA8bWFudGxlLWxvYWRlcj48L21hbnRsZS1sb2FkZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Component, Input, forwardRef } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { of as observableOf } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/form-field";
|
|
6
|
+
import * as i2 from "@angular/material/autocomplete";
|
|
7
|
+
import * as i3 from "@angular/material/core";
|
|
8
|
+
import * as i4 from "@angular/material/input";
|
|
9
|
+
import * as i5 from "@angular/forms";
|
|
10
|
+
import * as i6 from "@angular/common";
|
|
11
|
+
export class AutocompleteInputComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.value = '';
|
|
14
|
+
this.onChange = (newValue) => { };
|
|
15
|
+
this.onTouched = () => { };
|
|
16
|
+
}
|
|
17
|
+
registerOnChange(fn) { this.onChange = fn; }
|
|
18
|
+
registerOnTouched(fn) { this.onTouched = fn; }
|
|
19
|
+
writeValue(newValue) {
|
|
20
|
+
this.value = newValue;
|
|
21
|
+
if (this.value !== null && this.value !== undefined) {
|
|
22
|
+
this.value = String(this.value);
|
|
23
|
+
}
|
|
24
|
+
this.filteredOptions$ = observableOf(this.filterAutocompleteValues(this.value || ''));
|
|
25
|
+
this.onChange(this.value);
|
|
26
|
+
}
|
|
27
|
+
onValueChanged(event) {
|
|
28
|
+
this.filteredOptions$ = observableOf(this.filterAutocompleteValues(this.value || ''));
|
|
29
|
+
this.onChange(this.value);
|
|
30
|
+
}
|
|
31
|
+
filterAutocompleteValues(value) {
|
|
32
|
+
const filterValue = value.toLowerCase();
|
|
33
|
+
return this.options.values.filter(item => item.value.toLowerCase().includes(filterValue));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
AutocompleteInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AutocompleteInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
37
|
+
AutocompleteInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: AutocompleteInputComponent, selector: "mantle-autocomplete-input", inputs: { label: "label", options: "options", disable: "disable", required: "required", error: "error" }, providers: [
|
|
38
|
+
{
|
|
39
|
+
provide: NG_VALUE_ACCESSOR,
|
|
40
|
+
useExisting: forwardRef(() => AutocompleteInputComponent),
|
|
41
|
+
multi: true
|
|
42
|
+
}
|
|
43
|
+
], ngImport: i0, template: "<mat-form-field [class.mat-form-field-invalid]=\"error\">\n <mat-label>{{ label }}</mat-label>\n <input matInput\n type=\"text\"\n [(ngModel)]=\"value\"\n (keyup)=\"onValueChanged($event)\"\n (change)=\"onValueChanged($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n [matAutocomplete]=\"auto\">\n\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onValueChanged($event)\">\n <mat-option *ngFor=\"let option of filteredOptions$ | async\" [value]=\"option.value\">\n {{option.label}}\n </mat-option>\n </mat-autocomplete>\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: [""], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i1.MatLabel, selector: "mat-label" }, { type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], pipes: { "async": i6.AsyncPipe } });
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AutocompleteInputComponent, decorators: [{
|
|
45
|
+
type: Component,
|
|
46
|
+
args: [{
|
|
47
|
+
selector: 'mantle-autocomplete-input',
|
|
48
|
+
templateUrl: './autocomplete-input.component.html',
|
|
49
|
+
styleUrls: ['./autocomplete-input.component.scss'],
|
|
50
|
+
providers: [
|
|
51
|
+
{
|
|
52
|
+
provide: NG_VALUE_ACCESSOR,
|
|
53
|
+
useExisting: forwardRef(() => AutocompleteInputComponent),
|
|
54
|
+
multi: true
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
}]
|
|
58
|
+
}], propDecorators: { label: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], options: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], disable: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], required: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], error: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}] } });
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hbnRsZS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9maWVsZHMvYXV0b2NvbXBsZXRlLWlucHV0L2F1dG9jb21wbGV0ZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZmllbGRzL2F1dG9jb21wbGV0ZS1pbnB1dC9hdXRvY29tcGxldGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQWMsRUFBRSxJQUFJLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFjdEQsTUFBTSxPQUFPLDBCQUEwQjtJQVp2QztRQW9CUyxVQUFLLEdBQVEsRUFBRSxDQUFDO1FBR3ZCLGFBQVEsR0FBRyxDQUFDLFFBQWdCLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUdyQyxjQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBd0J2QjtJQTFCQyxnQkFBZ0IsQ0FBQyxFQUE4QixJQUFVLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUc5RSxpQkFBaUIsQ0FBQyxFQUFjLElBQVUsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRWhFLFVBQVUsQ0FBQyxRQUFhO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDbkQsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELHdCQUF3QixDQUFDLEtBQWE7UUFDcEMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXhDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM1RixDQUFDOzt3SEFwQ1UsMEJBQTBCOzRHQUExQiwwQkFBMEIsOEpBUjFCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMEJBQTBCLENBQUM7WUFDekQsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLDBCQ2RILDJyQkFtQkE7NEZESGEsMEJBQTBCO2tCQVp0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFdBQVcsRUFBRSxxQ0FBcUM7b0JBQ2xELFNBQVMsRUFBRSxDQUFDLHFDQUFxQyxDQUFDO29CQUNsRCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMkJBQTJCLENBQUM7NEJBQ3pELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOzhCQUdVLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgYXMgb2JzZXJ2YWJsZU9mIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hbnRsZS1hdXRvY29tcGxldGUtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXV0b2NvbXBsZXRlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXV0b2NvbXBsZXRlSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgQElucHV0KCkgbGFiZWwhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9wdGlvbnMhOiB7IHZhbHVlczogeyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH1bXSB9O1xuICBASW5wdXQoKSBkaXNhYmxlITogYm9vbGVhbjtcbiAgQElucHV0KCkgcmVxdWlyZWQhOiBib29sZWFuO1xuICBASW5wdXQoKSBlcnJvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyB2YWx1ZTogYW55ID0gJyc7XG4gIHB1YmxpYyBmaWx0ZXJlZE9wdGlvbnMkITogT2JzZXJ2YWJsZTx7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfVtdPjtcblxuICBvbkNoYW5nZSA9IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7IH07XG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuXG4gIG9uVG91Y2hlZCA9ICgpID0+IHsgfTtcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfVxuXG4gIHdyaXRlVmFsdWUobmV3VmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICBpZiAodGhpcy52YWx1ZSAhPT0gbnVsbCAmJiB0aGlzLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBTdHJpbmcodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMkID0gb2JzZXJ2YWJsZU9mKHRoaXMuZmlsdGVyQXV0b2NvbXBsZXRlVmFsdWVzKHRoaXMudmFsdWUgfHwgJycpKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgb25WYWx1ZUNoYW5nZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zJCA9IG9ic2VydmFibGVPZih0aGlzLmZpbHRlckF1dG9jb21wbGV0ZVZhbHVlcyh0aGlzLnZhbHVlIHx8ICcnKSk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIGZpbHRlckF1dG9jb21wbGV0ZVZhbHVlcyh2YWx1ZTogc3RyaW5nKTogeyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH1bXSB7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy52YWx1ZXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS52YWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSk7XG4gIH1cblxufVxuIiwiPG1hdC1mb3JtLWZpZWxkIFtjbGFzcy5tYXQtZm9ybS1maWVsZC1pbnZhbGlkXT1cImVycm9yXCI+XG4gIDxtYXQtbGFiZWw+e3sgbGFiZWwgfX08L21hdC1sYWJlbD5cbiAgPGlucHV0IG1hdElucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAgIChrZXl1cCk9XCJvblZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVcIlxuICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCI+XG5cbiAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwib25WYWx1ZUNoYW5nZWQoJGV2ZW50KVwiPlxuICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zJCB8IGFzeW5jXCIgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPlxuICAgICAge3tvcHRpb24ubGFiZWx9fVxuICAgIDwvbWF0LW9wdGlvbj5cbiAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuXG4gIDxtYXQtaGludCAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+e3sgZXJyb3IgfX08L21hdC1oaW50PlxuPC9tYXQtZm9ybS1maWVsZD5cbiJdfQ==
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Component, Input, forwardRef } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/material/form-field";
|
|
5
|
+
import * as i2 from "@angular/material/chips";
|
|
6
|
+
import * as i3 from "@angular/material/icon";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
export class ChipInputComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.removable = true;
|
|
11
|
+
this.value = null;
|
|
12
|
+
this.chips = [];
|
|
13
|
+
this.onChange = (newValue) => { };
|
|
14
|
+
this.onTouched = () => { };
|
|
15
|
+
}
|
|
16
|
+
registerOnChange(fn) { this.onChange = fn; }
|
|
17
|
+
registerOnTouched(fn) { this.onTouched = fn; }
|
|
18
|
+
writeValue(newValue) {
|
|
19
|
+
this.value = newValue;
|
|
20
|
+
this.setChipsFromValue();
|
|
21
|
+
this.onChange(newValue);
|
|
22
|
+
}
|
|
23
|
+
add(event) {
|
|
24
|
+
const chipName = (event.value || '').trim();
|
|
25
|
+
if (chipName) {
|
|
26
|
+
this.chips.push({ name: chipName });
|
|
27
|
+
}
|
|
28
|
+
this.setValueFromChips();
|
|
29
|
+
this.onChange(this.value);
|
|
30
|
+
event.chipInput.clear();
|
|
31
|
+
}
|
|
32
|
+
remove(chip) {
|
|
33
|
+
const index = this.chips.indexOf(chip);
|
|
34
|
+
if (index >= 0) {
|
|
35
|
+
this.chips.splice(index, 1);
|
|
36
|
+
}
|
|
37
|
+
this.setValueFromChips();
|
|
38
|
+
this.onChange(this.value);
|
|
39
|
+
}
|
|
40
|
+
setValueFromChips() {
|
|
41
|
+
this.value = this.chips.map((chip) => {
|
|
42
|
+
return chip.name.trim();
|
|
43
|
+
}).join(',');
|
|
44
|
+
}
|
|
45
|
+
setChipsFromValue() {
|
|
46
|
+
if (!this.value || !this.value.trim())
|
|
47
|
+
return;
|
|
48
|
+
this.chips = this.value.split(',').map((chipName) => {
|
|
49
|
+
return { name: chipName.trim() };
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
ChipInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ChipInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
54
|
+
ChipInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ChipInputComponent, selector: "mantle-chip-input", inputs: { label: "label", disable: "disable", required: "required", error: "error" }, providers: [
|
|
55
|
+
{
|
|
56
|
+
provide: NG_VALUE_ACCESSOR,
|
|
57
|
+
useExisting: forwardRef(() => ChipInputComponent),
|
|
58
|
+
multi: true
|
|
59
|
+
}
|
|
60
|
+
], ngImport: i0, template: "<mat-form-field [class.mat-form-field-invalid]=\"error\">\n <mat-label>{{ label }}</mat-label>\n <mat-chip-list #chipList\n [disabled]=\"disable\">\n <mat-chip *ngFor=\"let chip of chips\"\n color=\"accent\" selected\n [removable]=\"removable\"\n (removed)=\"remove(chip)\">\n {{ chip.name }}\n <mat-icon matChipRemove *ngIf=\"removable\">cancel</mat-icon>\n </mat-chip>\n\n <input [matChipInputFor]=\"chipList\"\n [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"add($event)\"\n autocomplete=\"off\">\n </mat-chip-list>\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: [""], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i2.MatChipList, selector: "mat-chip-list", inputs: ["aria-orientation", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "selectable", "tabIndex", "errorStateMatcher"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1.MatLabel, selector: "mat-label" }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatChipRemove, selector: "[matChipRemove]" }, { type: i2.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputSeparatorKeyCodes", "placeholder", "id", "matChipInputFor", "matChipInputAddOnBlur", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }] });
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ChipInputComponent, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{
|
|
64
|
+
selector: 'mantle-chip-input',
|
|
65
|
+
templateUrl: './chip-input.component.html',
|
|
66
|
+
styleUrls: ['./chip-input.component.scss'],
|
|
67
|
+
providers: [
|
|
68
|
+
{
|
|
69
|
+
provide: NG_VALUE_ACCESSOR,
|
|
70
|
+
useExisting: forwardRef(() => ChipInputComponent),
|
|
71
|
+
multi: true
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
}]
|
|
75
|
+
}], ctorParameters: function () { return []; }, propDecorators: { label: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], disable: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}], required: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}], error: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}] } });
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZmllbGRzL2NoaXAtaW5wdXQvY2hpcC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZmllbGRzL2NoaXAtaW5wdXQvY2hpcC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFtQnpFLE1BQU0sT0FBTyxrQkFBa0I7SUFZN0I7UUFMTyxjQUFTLEdBQVksSUFBSSxDQUFDO1FBRXpCLFVBQUssR0FBUSxJQUFJLENBQUM7UUFDbkIsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUkxQixhQUFRLEdBQUcsQ0FBQyxRQUFnQixFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFHckMsY0FBUyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUxOLENBQUM7SUFHakIsZ0JBQWdCLENBQUMsRUFBOEIsSUFBVSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFHOUUsaUJBQWlCLENBQUMsRUFBYyxJQUFVLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVoRSxVQUFVLENBQUMsUUFBYTtRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztRQUN0QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxHQUFHLENBQUMsS0FBd0I7UUFDMUIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTVDLElBQUksUUFBUSxFQUFFO1lBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQztTQUNuQztRQUVELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFCLEtBQUssQ0FBQyxTQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFVO1FBQ2YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzdCO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQ3pCLENBQUMsSUFBVSxFQUFFLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUNGLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFBRSxPQUFPO1FBRTlDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUNwQyxDQUFDLFFBQWdCLEVBQUUsRUFBRTtZQUNuQixPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ25DLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7Z0hBbEVVLGtCQUFrQjtvR0FBbEIsa0JBQWtCLGtJQVJsQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRiwwQkNsQkgsc3NCQW9CQTs0RkRBYSxrQkFBa0I7a0JBWjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsV0FBVyxFQUFFLDZCQUE2QjtvQkFDMUMsU0FBUyxFQUFFLENBQUMsNkJBQTZCLENBQUM7b0JBQzFDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQzs0QkFDakQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7MEVBR1UsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoaXAge1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hbnRsZS1jaGlwLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoaXAtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGlwLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2hpcElucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENoaXBJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICBASW5wdXQoKSBsYWJlbCE6IHN0cmluZztcbiAgQElucHV0KCkgZGlzYWJsZSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHJlcXVpcmVkITogYm9vbGVhbjtcbiAgQElucHV0KCkgZXJyb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgcmVtb3ZhYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICBwcml2YXRlIHZhbHVlOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgY2hpcHM6IENoaXBbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgb25DaGFuZ2UgPSAobmV3VmFsdWU6IHN0cmluZykgPT4geyB9O1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAobmV3VmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQgeyB0aGlzLm9uQ2hhbmdlID0gZm47IH1cblxuICBvblRvdWNoZWQgPSAoKSA9PiB7IH07XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cblxuICB3cml0ZVZhbHVlKG5ld1ZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5zZXRDaGlwc0Zyb21WYWx1ZSgpO1xuICAgIHRoaXMub25DaGFuZ2UobmV3VmFsdWUpO1xuICB9XG5cbiAgYWRkKGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGNoaXBOYW1lID0gKGV2ZW50LnZhbHVlIHx8ICcnKS50cmltKCk7XG5cbiAgICBpZiAoY2hpcE5hbWUpIHtcbiAgICAgIHRoaXMuY2hpcHMucHVzaCh7bmFtZTogY2hpcE5hbWV9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFZhbHVlRnJvbUNoaXBzKCk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcblxuICAgIGV2ZW50LmNoaXBJbnB1dCEuY2xlYXIoKTtcbiAgfVxuXG4gIHJlbW92ZShjaGlwOiBDaGlwKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmNoaXBzLmluZGV4T2YoY2hpcCk7XG5cbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdGhpcy5jaGlwcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0VmFsdWVGcm9tQ2hpcHMoKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgc2V0VmFsdWVGcm9tQ2hpcHMoKSB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuY2hpcHMubWFwKFxuICAgICAgKGNoaXA6IENoaXApID0+IHtcbiAgICAgICAgcmV0dXJuIGNoaXAubmFtZS50cmltKCk7XG4gICAgICB9XG4gICAgKS5qb2luKCcsJyk7XG4gIH1cblxuICBzZXRDaGlwc0Zyb21WYWx1ZSgpIHtcbiAgICBpZiAoIXRoaXMudmFsdWUgfHwgIXRoaXMudmFsdWUudHJpbSgpKSByZXR1cm47XG5cbiAgICB0aGlzLmNoaXBzID0gdGhpcy52YWx1ZS5zcGxpdCgnLCcpLm1hcChcbiAgICAgIChjaGlwTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiB7IG5hbWU6IGNoaXBOYW1lLnRyaW0oKSB9O1xuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBbY2xhc3MubWF0LWZvcm0tZmllbGQtaW52YWxpZF09XCJlcnJvclwiPlxuICA8bWF0LWxhYmVsPnt7IGxhYmVsIH19PC9tYXQtbGFiZWw+XG4gIDxtYXQtY2hpcC1saXN0ICNjaGlwTGlzdFxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVcIj5cbiAgICA8bWF0LWNoaXAgKm5nRm9yPVwibGV0IGNoaXAgb2YgY2hpcHNcIlxuICAgICAgICBjb2xvcj1cImFjY2VudFwiIHNlbGVjdGVkXG4gICAgICAgIFtyZW1vdmFibGVdPVwicmVtb3ZhYmxlXCJcbiAgICAgICAgKHJlbW92ZWQpPVwicmVtb3ZlKGNoaXApXCI+XG4gICAgICB7eyBjaGlwLm5hbWUgfX1cbiAgICAgIDxtYXQtaWNvbiBtYXRDaGlwUmVtb3ZlICpuZ0lmPVwicmVtb3ZhYmxlXCI+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICA8L21hdC1jaGlwPlxuXG4gICAgPGlucHV0IFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcExpc3RcIlxuICAgICAgICAgICBbbWF0Q2hpcElucHV0QWRkT25CbHVyXT1cInRydWVcIlxuICAgICAgICAgICAobWF0Q2hpcElucHV0VG9rZW5FbmQpPVwiYWRkKCRldmVudClcIlxuICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIj5cbiAgPC9tYXQtY2hpcC1saXN0PlxuXG4gIDxtYXQtaGludCAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+e3sgZXJyb3IgfX08L21hdC1oaW50PlxuPC9tYXQtZm9ybS1maWVsZD5cbiJdfQ==
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Component, forwardRef, Input } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import * as moment from 'moment';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/form-field";
|
|
6
|
+
import * as i2 from "@angular/material/datepicker";
|
|
7
|
+
import * as i3 from "@angular/material/input";
|
|
8
|
+
import * as i4 from "@angular/forms";
|
|
9
|
+
import * as i5 from "@angular/common";
|
|
10
|
+
export class DatepickerComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.selectedDate = null;
|
|
13
|
+
this.modelFormat = 'YYYY-MM-DD';
|
|
14
|
+
this.displayFormat = 'DD/MM/YYYY';
|
|
15
|
+
this.parseFormats = [this.modelFormat, this.displayFormat];
|
|
16
|
+
this.onChange = (newDate) => { };
|
|
17
|
+
this.onTouched = () => { };
|
|
18
|
+
}
|
|
19
|
+
registerOnChange(fn) { this.onChange = fn; }
|
|
20
|
+
registerOnTouched(fn) { this.onTouched = fn; }
|
|
21
|
+
get modelValue() {
|
|
22
|
+
if (!this.selectedDate)
|
|
23
|
+
return '';
|
|
24
|
+
if (this.selectedDate.isValid())
|
|
25
|
+
return this.selectedDate.format(this.modelFormat);
|
|
26
|
+
return 'Invalid date';
|
|
27
|
+
}
|
|
28
|
+
writeValue(newValue) {
|
|
29
|
+
if (typeof newValue == 'string') {
|
|
30
|
+
newValue = moment(newValue, this.parseFormats).format(this.displayFormat);
|
|
31
|
+
}
|
|
32
|
+
this.onDateEntered(newValue);
|
|
33
|
+
}
|
|
34
|
+
onDateSelected(newValue) {
|
|
35
|
+
if (newValue)
|
|
36
|
+
newValue = newValue.format(this.displayFormat);
|
|
37
|
+
this.onDateEntered(newValue);
|
|
38
|
+
}
|
|
39
|
+
onDateEntered(newValue) {
|
|
40
|
+
if (newValue && newValue.type == 'change')
|
|
41
|
+
newValue = newValue.target.value;
|
|
42
|
+
this.selectedDate = this.getMoment(newValue);
|
|
43
|
+
var value = this.modelValue;
|
|
44
|
+
this.onChange(value);
|
|
45
|
+
if (value == 'Invalid date') {
|
|
46
|
+
setTimeout(() => {
|
|
47
|
+
this.onDateEntered(null);
|
|
48
|
+
}, 0);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
getMoment(value) {
|
|
52
|
+
if (!value)
|
|
53
|
+
return null;
|
|
54
|
+
if (typeof value == 'string') {
|
|
55
|
+
value = moment(value, this.parseFormats);
|
|
56
|
+
}
|
|
57
|
+
return value;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
DatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
61
|
+
DatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DatepickerComponent, selector: "mantle-datepicker", inputs: { label: "label", disable: "disable", required: "required", error: "error" }, providers: [
|
|
62
|
+
{
|
|
63
|
+
provide: NG_VALUE_ACCESSOR,
|
|
64
|
+
useExisting: forwardRef(() => DatepickerComponent),
|
|
65
|
+
multi: true
|
|
66
|
+
}
|
|
67
|
+
], ngImport: i0, template: "<mat-form-field [class.mat-form-field-invalid]=\"error\">\n <mat-label>{{ label }}</mat-label>\n <input matInput\n [matDatepicker]=\"picker\"\n [(ngModel)]=\"selectedDate\"\n (change)=\"onDateEntered($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n (dateChange)=\"onDateSelected($event.value)\"\n autocomplete=\"off\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: [""], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["tabIndex", "disabled", "for", "aria-label", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { type: i2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }], directives: [{ type: i1.MatLabel, selector: "mat-label" }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1.MatSuffix, selector: "[matSuffix]" }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }] });
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DatepickerComponent, decorators: [{
|
|
69
|
+
type: Component,
|
|
70
|
+
args: [{
|
|
71
|
+
selector: 'mantle-datepicker',
|
|
72
|
+
templateUrl: './datepicker.component.html',
|
|
73
|
+
styleUrls: ['./datepicker.component.scss'],
|
|
74
|
+
providers: [
|
|
75
|
+
{
|
|
76
|
+
provide: NG_VALUE_ACCESSOR,
|
|
77
|
+
useExisting: forwardRef(() => DatepickerComponent),
|
|
78
|
+
multi: true
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
}]
|
|
82
|
+
}], propDecorators: { label: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], disable: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], required: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], error: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}] } });
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZmllbGRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZmllbGRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7Ozs7O0FBY2pDLE1BQU0sT0FBTyxtQkFBbUI7SUFaaEM7UUFtQlMsaUJBQVksR0FBa0IsSUFBSSxDQUFDO1FBRWxDLGdCQUFXLEdBQVcsWUFBWSxDQUFDO1FBQ25DLGtCQUFhLEdBQVcsWUFBWSxDQUFDO1FBQ3JDLGlCQUFZLEdBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV4RSxhQUFRLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUdwQyxjQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBOEN2QjtJQWhEQyxnQkFBZ0IsQ0FBQyxFQUE2QixJQUFVLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUc3RSxpQkFBaUIsQ0FBQyxFQUFjLElBQVUsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRWhFLElBQUksVUFBVTtRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2xDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRixPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQWE7UUFDdEIsSUFBSSxPQUFPLFFBQVEsSUFBSSxRQUFRLEVBQUU7WUFDL0IsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDM0U7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFFRCxjQUFjLENBQUMsUUFBYTtRQUMxQixJQUFJLFFBQVE7WUFBRSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQWE7UUFDekIsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRO1lBQUUsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBRTVFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckIsSUFBSSxLQUFLLElBQUksY0FBYyxFQUFFO1lBQzNCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDUDtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsS0FBc0I7UUFDOUIsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV4QixJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsRUFBRTtZQUM1QixLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDMUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7O2lIQTVEVSxtQkFBbUI7cUdBQW5CLG1CQUFtQixrSUFSbkI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztZQUNsRCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsMEJDZkgsaWxCQWVBOzRGREVhLG1CQUFtQjtrQkFaL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixXQUFXLEVBQUUsNkJBQTZCO29CQUMxQyxTQUFTLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDMUMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjs4QkFHVSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYW50bGUtZGF0ZXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVwaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICBASW5wdXQoKSBsYWJlbCE6IHN0cmluZztcbiAgQElucHV0KCkgZGlzYWJsZSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHJlcXVpcmVkITogYm9vbGVhbjtcbiAgQElucHV0KCkgZXJyb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgc2VsZWN0ZWREYXRlOiBNb21lbnQgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIG1vZGVsRm9ybWF0OiBzdHJpbmcgPSAnWVlZWS1NTS1ERCc7XG4gIHByaXZhdGUgZGlzcGxheUZvcm1hdDogc3RyaW5nID0gJ0REL01NL1lZWVknO1xuICBwcml2YXRlIHBhcnNlRm9ybWF0czogc3RyaW5nW10gPSBbdGhpcy5tb2RlbEZvcm1hdCwgdGhpcy5kaXNwbGF5Rm9ybWF0XTtcblxuICBvbkNoYW5nZSA9IChuZXdEYXRlOiBzdHJpbmcpID0+IHsgfTtcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKG5ld0RhdGU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQgeyB0aGlzLm9uQ2hhbmdlID0gZm47IH1cblxuICBvblRvdWNoZWQgPSAoKSA9PiB7IH07XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cblxuICBnZXQgbW9kZWxWYWx1ZSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZERhdGUpIHJldHVybiAnJztcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUuaXNWYWxpZCgpKSByZXR1cm4gdGhpcy5zZWxlY3RlZERhdGUuZm9ybWF0KHRoaXMubW9kZWxGb3JtYXQpO1xuICAgIHJldHVybiAnSW52YWxpZCBkYXRlJztcbiAgfVxuXG4gIHdyaXRlVmFsdWUobmV3VmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgbmV3VmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICAgIG5ld1ZhbHVlID0gbW9tZW50KG5ld1ZhbHVlLCB0aGlzLnBhcnNlRm9ybWF0cykuZm9ybWF0KHRoaXMuZGlzcGxheUZvcm1hdCk7XG4gICAgfVxuICAgIHRoaXMub25EYXRlRW50ZXJlZChuZXdWYWx1ZSlcbiAgfVxuXG4gIG9uRGF0ZVNlbGVjdGVkKG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAobmV3VmFsdWUpIG5ld1ZhbHVlID0gbmV3VmFsdWUuZm9ybWF0KHRoaXMuZGlzcGxheUZvcm1hdCk7XG4gICAgdGhpcy5vbkRhdGVFbnRlcmVkKG5ld1ZhbHVlKVxuICB9XG5cbiAgb25EYXRlRW50ZXJlZChuZXdWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKG5ld1ZhbHVlICYmIG5ld1ZhbHVlLnR5cGUgPT0gJ2NoYW5nZScpIG5ld1ZhbHVlID0gbmV3VmFsdWUudGFyZ2V0LnZhbHVlO1xuXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSB0aGlzLmdldE1vbWVudChuZXdWYWx1ZSk7XG5cbiAgICB2YXIgdmFsdWUgPSB0aGlzLm1vZGVsVmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG5cbiAgICBpZiAodmFsdWUgPT0gJ0ludmFsaWQgZGF0ZScpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLm9uRGF0ZUVudGVyZWQobnVsbCk7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cblxuICBnZXRNb21lbnQodmFsdWU6IHN0cmluZyB8IE1vbWVudCk6IE1vbWVudCB8IG51bGwge1xuICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgICAgdmFsdWUgPSBtb21lbnQodmFsdWUsIHRoaXMucGFyc2VGb3JtYXRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxufVxuIiwiPG1hdC1mb3JtLWZpZWxkIFtjbGFzcy5tYXQtZm9ybS1maWVsZC1pbnZhbGlkXT1cImVycm9yXCI+XG4gIDxtYXQtbGFiZWw+e3sgbGFiZWwgfX08L21hdC1sYWJlbD5cbiAgPGlucHV0IG1hdElucHV0XG4gICAgICBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIlxuICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZERhdGVcIlxuICAgICAgKGNoYW5nZSk9XCJvbkRhdGVFbnRlcmVkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlXCJcbiAgICAgIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZVNlbGVjdGVkKCRldmVudC52YWx1ZSlcIlxuICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XG4gIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwicGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gIDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyPjwvbWF0LWRhdGVwaWNrZXI+XG5cbiAgPG1hdC1oaW50ICpuZ0lmPVwiZXJyb3JcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj57eyBlcnJvciB9fTwvbWF0LWhpbnQ+XG48L21hdC1mb3JtLWZpZWxkPlxuIl19
|