@codetectonics/mantle 0.0.2 → 0.0.3
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 +34 -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,139 @@
|
|
|
1
|
+
import { Component, ElementRef, forwardRef, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { MatDialog } from '@angular/material/dialog';
|
|
4
|
+
import { ImageCropperComponent } from '../../../../components/form/fields/image-cropper/image-cropper.component';
|
|
5
|
+
import { WebApiService } from '../../../../services/web-api.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/material/dialog";
|
|
8
|
+
import * as i2 from "../../../../services/web-api.service";
|
|
9
|
+
import * as i3 from "@angular/material/form-field";
|
|
10
|
+
import * as i4 from "@angular/material/button";
|
|
11
|
+
import * as i5 from "@angular/material/icon";
|
|
12
|
+
import * as i6 from "@angular/material/progress-spinner";
|
|
13
|
+
import * as i7 from "@angular/material/input";
|
|
14
|
+
import * as i8 from "@angular/common";
|
|
15
|
+
import * as i9 from "../../../../directives/click-stop-propagation.directive";
|
|
16
|
+
export class ImagepickerComponent {
|
|
17
|
+
constructor(dialog, webApiService) {
|
|
18
|
+
this.dialog = dialog;
|
|
19
|
+
this.webApiService = webApiService;
|
|
20
|
+
this.defaultCropperConfig = {
|
|
21
|
+
maintainAspectRatio: true,
|
|
22
|
+
aspectRatio: 1,
|
|
23
|
+
resizeToWidth: 256,
|
|
24
|
+
uploadFormat: 'png'
|
|
25
|
+
};
|
|
26
|
+
this.cropperConfig = this.defaultCropperConfig;
|
|
27
|
+
this.onChange = (newValue) => { };
|
|
28
|
+
this.onTouched = () => { };
|
|
29
|
+
}
|
|
30
|
+
registerOnChange(fn) { this.onChange = fn; }
|
|
31
|
+
registerOnTouched(fn) { this.onTouched = fn; }
|
|
32
|
+
ngOnChanges() {
|
|
33
|
+
this.cropperConfig = Object.assign(Object.assign({}, this.defaultCropperConfig), this.options);
|
|
34
|
+
}
|
|
35
|
+
writeValue(newValue) {
|
|
36
|
+
this.currentAttachment = this.previousAttachment = newValue;
|
|
37
|
+
this.onChange(newValue);
|
|
38
|
+
}
|
|
39
|
+
onFileSelected(event) {
|
|
40
|
+
if (!event.target.files || !event.target.files[0])
|
|
41
|
+
return;
|
|
42
|
+
const file = event.target.files[0];
|
|
43
|
+
const dialogRef = this.dialog.open(ImageCropperComponent, {
|
|
44
|
+
data: {
|
|
45
|
+
imageChangedEvent: event,
|
|
46
|
+
maintainAspectRatio: this.cropperConfig.maintainAspectRatio,
|
|
47
|
+
aspectRatio: this.cropperConfig.aspectRatio,
|
|
48
|
+
resizeToWidth: this.cropperConfig.resizeToWidth,
|
|
49
|
+
format: this.cropperConfig.uploadFormat
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
dialogRef.afterClosed().subscribe((croppedImage) => {
|
|
53
|
+
this.onImageCropped(croppedImage, file.name);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
onImageCropped(croppedImage, filename) {
|
|
57
|
+
if (!croppedImage) {
|
|
58
|
+
this.reset();
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
filename = filename.split('.').slice(0, -1).join('.') + '.' + this.cropperConfig.uploadFormat;
|
|
62
|
+
let file = this.blobToFile(croppedImage, filename);
|
|
63
|
+
this.uploadInProgress = true;
|
|
64
|
+
this.webApiService.upload(file, (response) => {
|
|
65
|
+
this.currentAttachment = {
|
|
66
|
+
filename: filename,
|
|
67
|
+
source_url: '',
|
|
68
|
+
preview_url: '',
|
|
69
|
+
signed_id: response.signed_id
|
|
70
|
+
};
|
|
71
|
+
this.onChange(this.currentAttachment);
|
|
72
|
+
this.uploadInProgress = false;
|
|
73
|
+
}, (response) => {
|
|
74
|
+
this.reset();
|
|
75
|
+
this.error = 'Unable to upload file';
|
|
76
|
+
this.uploadInProgress = false;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
clearAttachment() {
|
|
80
|
+
if (this.fileInput)
|
|
81
|
+
this.fileInput.nativeElement.value = '';
|
|
82
|
+
this.currentAttachment = {
|
|
83
|
+
filename: '',
|
|
84
|
+
source_url: '',
|
|
85
|
+
preview_url: '',
|
|
86
|
+
signed_id: null
|
|
87
|
+
};
|
|
88
|
+
this.onChange(this.currentAttachment);
|
|
89
|
+
}
|
|
90
|
+
reset() {
|
|
91
|
+
if (this.fileInput)
|
|
92
|
+
this.fileInput.nativeElement.value = '';
|
|
93
|
+
this.currentAttachment = this.previousAttachment;
|
|
94
|
+
this.onChange(undefined);
|
|
95
|
+
}
|
|
96
|
+
blobToFile(blob, filename) {
|
|
97
|
+
var blobData = blob;
|
|
98
|
+
blobData.lastModifiedDate = new Date();
|
|
99
|
+
blobData.name = filename;
|
|
100
|
+
return blob;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
ImagepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ImagepickerComponent, deps: [{ token: i1.MatDialog }, { token: i2.WebApiService }], target: i0.ɵɵFactoryTarget.Component });
|
|
104
|
+
ImagepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ImagepickerComponent, selector: "mantle-imagepicker", inputs: { label: "label", options: "options", disable: "disable", required: "required", error: "error" }, providers: [
|
|
105
|
+
{
|
|
106
|
+
provide: NG_VALUE_ACCESSOR,
|
|
107
|
+
useExisting: forwardRef(() => ImagepickerComponent),
|
|
108
|
+
multi: true
|
|
109
|
+
}
|
|
110
|
+
], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], usesOnChanges: true, 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 [attr.value]=\"currentAttachment?.filename\"\n (click)=\"fileInput.click()\"\n [required]=\"required\"\n [disabled]=\"disable\"\n autocomplete=\"off\">\n\n <button *ngIf=\"currentAttachment?.filename\" mat-icon-button matSuffix (click)=\"clearAttachment()\" [disabled]=\"disable\" click-stop-propagation>\n <mat-icon>close</mat-icon>\n </button>\n\n <button *ngIf=\"!uploadInProgress\" mat-icon-button matSuffix (click)=\"fileInput.click()\" [disabled]=\"disable\">\n <mat-icon>image</mat-icon>\n </button>\n\n <mat-spinner *ngIf=\"uploadInProgress\" matSuffix [diameter]=\"18\"></mat-spinner>\n\n <input #fileInput\n type=\"file\"\n accept=\"image/*\"\n hidden\n (change)=\"onFileSelected($event)\">\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: [""], components: [{ type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { 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.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i3.MatLabel, selector: "mat-label" }, { type: i7.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: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.MatSuffix, selector: "[matSuffix]" }, { type: i9.ClickStopPropagationDirective, selector: "[click-stop-propagation]" }, { type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }] });
|
|
111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ImagepickerComponent, decorators: [{
|
|
112
|
+
type: Component,
|
|
113
|
+
args: [{
|
|
114
|
+
selector: 'mantle-imagepicker',
|
|
115
|
+
templateUrl: './imagepicker.component.html',
|
|
116
|
+
styleUrls: ['./imagepicker.component.scss'],
|
|
117
|
+
providers: [
|
|
118
|
+
{
|
|
119
|
+
provide: NG_VALUE_ACCESSOR,
|
|
120
|
+
useExisting: forwardRef(() => ImagepickerComponent),
|
|
121
|
+
multi: true
|
|
122
|
+
}
|
|
123
|
+
]
|
|
124
|
+
}]
|
|
125
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.WebApiService }]; }, propDecorators: { fileInput: [{
|
|
126
|
+
type: ViewChild,
|
|
127
|
+
args: ['fileInput']
|
|
128
|
+
}], label: [{
|
|
129
|
+
type: Input
|
|
130
|
+
}], options: [{
|
|
131
|
+
type: Input
|
|
132
|
+
}], disable: [{
|
|
133
|
+
type: Input
|
|
134
|
+
}], required: [{
|
|
135
|
+
type: Input
|
|
136
|
+
}], error: [{
|
|
137
|
+
type: Input
|
|
138
|
+
}] } });
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2VwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2ZpZWxkcy9pbWFnZXBpY2tlci9pbWFnZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZmllbGRzL2ltYWdlcGlja2VyL2ltYWdlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDakgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7OztBQW9CckUsTUFBTSxPQUFPLG9CQUFvQjtJQXNCL0IsWUFBb0IsTUFBaUIsRUFBVSxhQUE0QjtRQUF2RCxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFabkUseUJBQW9CLEdBQXdCO1lBQ2xELG1CQUFtQixFQUFFLElBQUk7WUFDekIsV0FBVyxFQUFFLENBQUM7WUFDZCxhQUFhLEVBQUUsR0FBRztZQUNsQixZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFBO1FBQ00sa0JBQWEsR0FBd0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBUXRFLGFBQVEsR0FBRyxDQUFDLFFBQW9DLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztR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QVpoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFdBQVcsRUFBRSw4QkFBOEI7b0JBQzNDLFNBQVMsRUFBRSxDQUFDLDhCQUE4QixDQUFDO29CQUMzQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOzRIQUd5QixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBRWIsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIElucHV0LCBPbkNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEZpbGVBdHRhY2htZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vZGF0YS1zdHJ1Y3R1cmVzL2ZpbGUtYXR0YWNobWVudC5zdHJ1Y3R1cmUnO1xuaW1wb3J0IHsgSW1hZ2VDcm9wcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9mb3JtL2ZpZWxkcy9pbWFnZS1jcm9wcGVyL2ltYWdlLWNyb3BwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFdlYkFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy93ZWItYXBpLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlQ3JvcHBlck9wdGlvbnMge1xuICBtYWludGFpbkFzcGVjdFJhdGlvPzogYm9vbGVhbixcbiAgYXNwZWN0UmF0aW8/OiBudW1iZXIsXG4gIHJlc2l6ZVRvV2lkdGg/OiBudW1iZXIsXG4gIHVwbG9hZEZvcm1hdD86IHN0cmluZyB9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hbnRsZS1pbWFnZXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbWFnZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ltYWdlcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW1hZ2VwaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSW1hZ2VwaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzIHtcblxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQhOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIGxhYmVsITogc3RyaW5nO1xuICBASW5wdXQoKSBvcHRpb25zITogSW1hZ2VDcm9wcGVyT3B0aW9ucztcbiAgQElucHV0KCkgZGlzYWJsZSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHJlcXVpcmVkITogYm9vbGVhbjtcbiAgQElucHV0KCkgZXJyb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIGRlZmF1bHRDcm9wcGVyQ29uZmlnOiBJbWFnZUNyb3BwZXJPcHRpb25zID0ge1xuICAgIG1haW50YWluQXNwZWN0UmF0aW86IHRydWUsXG4gICAgYXNwZWN0UmF0aW86IDEsXG4gICAgcmVzaXplVG9XaWR0aDogMjU2LFxuICAgIHVwbG9hZEZvcm1hdDogJ3BuZydcbiAgfVxuICBwdWJsaWMgY3JvcHBlckNvbmZpZzogSW1hZ2VDcm9wcGVyT3B0aW9ucyA9IHRoaXMuZGVmYXVsdENyb3BwZXJDb25maWc7XG5cbiAgcHVibGljIHByZXZpb3VzQXR0YWNobWVudDogRmlsZUF0dGFjaG1lbnQgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBjdXJyZW50QXR0YWNobWVudDogRmlsZUF0dGFjaG1lbnQgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyB1cGxvYWRJblByb2dyZXNzITogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLCBwcml2YXRlIHdlYkFwaVNlcnZpY2U6IFdlYkFwaVNlcnZpY2UpIHsgfVxuXG4gIG9uQ2hhbmdlID0gKG5ld1ZhbHVlOiBGaWxlQXR0YWNobWVudCB8IHVuZGVmaW5lZCkgPT4geyB9O1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAobmV3VmFsdWU6IEZpbGVBdHRhY2htZW50IHwgdW5kZWZpbmVkKSA9PiB2b2lkKTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuXG4gIG9uVG91Y2hlZCA9ICgpID0+IHsgfTtcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuY3JvcHBlckNvbmZpZyA9IHsgLi4udGhpcy5kZWZhdWx0Q3JvcHBlckNvbmZpZywgLi4udGhpcy5vcHRpb25zIH07XG4gIH1cblxuICB3cml0ZVZhbHVlKG5ld1ZhbHVlOiBGaWxlQXR0YWNobWVudCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEF0dGFjaG1lbnQgPSB0aGlzLnByZXZpb3VzQXR0YWNobWVudCA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UobmV3VmFsdWUpO1xuICB9XG5cbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IGFueSkge1xuICAgIGlmICghZXZlbnQudGFyZ2V0LmZpbGVzIHx8ICFldmVudC50YXJnZXQuZmlsZXNbMF0pIHJldHVybjtcblxuICAgIGNvbnN0IGZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbMF07XG5cbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEltYWdlQ3JvcHBlckNvbXBvbmVudCwge1xuICAgICAgZGF0YToge1xuICAgICAgICBpbWFnZUNoYW5nZWRFdmVudDogZXZlbnQsXG4gICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IHRoaXMuY3JvcHBlckNvbmZpZy5tYWludGFpbkFzcGVjdFJhdGlvLFxuICAgICAgICBhc3BlY3RSYXRpbzogdGhpcy5jcm9wcGVyQ29uZmlnLmFzcGVjdFJhdGlvLFxuICAgICAgICByZXNpemVUb1dpZHRoOiB0aGlzLmNyb3BwZXJDb25maWcucmVzaXplVG9XaWR0aCxcbiAgICAgICAgZm9ybWF0OiB0aGlzLmNyb3BwZXJDb25maWcudXBsb2FkRm9ybWF0XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoXG4gICAgICAoY3JvcHBlZEltYWdlOiBCbG9iKSA9PiB7XG4gICAgICAgIHRoaXMub25JbWFnZUNyb3BwZWQoY3JvcHBlZEltYWdlLCBmaWxlLm5hbWUpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBvbkltYWdlQ3JvcHBlZChjcm9wcGVkSW1hZ2U6IEJsb2IsIGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoIWNyb3BwZWRJbWFnZSkge1xuICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZpbGVuYW1lID0gZmlsZW5hbWUuc3BsaXQoJy4nKS5zbGljZSgwLCAtMSkuam9pbignLicpICsgJy4nICsgdGhpcy5jcm9wcGVyQ29uZmlnLnVwbG9hZEZvcm1hdDtcbiAgICBsZXQgZmlsZTogRmlsZSA9IHRoaXMuYmxvYlRvRmlsZShjcm9wcGVkSW1hZ2UsIGZpbGVuYW1lKTtcblxuICAgIHRoaXMudXBsb2FkSW5Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICB0aGlzLndlYkFwaVNlcnZpY2UudXBsb2FkKGZpbGUsXG4gICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRBdHRhY2htZW50ID0ge1xuICAgICAgICAgIGZpbGVuYW1lOiBmaWxlbmFtZSxcbiAgICAgICAgICBzb3VyY2VfdXJsOiAnJyxcbiAgICAgICAgICBwcmV2aWV3X3VybDogJycsXG4gICAgICAgICAgc2lnbmVkX2lkOiByZXNwb25zZS5zaWduZWRfaWRcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuY3VycmVudEF0dGFjaG1lbnQpO1xuICAgICAgICB0aGlzLnVwbG9hZEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHRoaXMuZXJyb3IgPSAnVW5hYmxlIHRvIHVwbG9hZCBmaWxlJztcbiAgICAgICAgdGhpcy51cGxvYWRJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGNsZWFyQXR0YWNobWVudCgpIHtcbiAgICBpZiAodGhpcy5maWxlSW5wdXQpIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB0aGlzLmN1cnJlbnRBdHRhY2htZW50ID0ge1xuICAgICAgZmlsZW5hbWU6ICcnLFxuICAgICAgc291cmNlX3VybDogJycsXG4gICAgICBwcmV2aWV3X3VybDogJycsXG4gICAgICBzaWduZWRfaWQ6IG51bGxcbiAgICB9XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLmN1cnJlbnRBdHRhY2htZW50KTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIGlmICh0aGlzLmZpbGVJbnB1dCkgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMuY3VycmVudEF0dGFjaG1lbnQgPSB0aGlzLnByZXZpb3VzQXR0YWNobWVudDtcbiAgICB0aGlzLm9uQ2hhbmdlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBibG9iVG9GaWxlKGJsb2I6IEJsb2IsIGZpbGVuYW1lOiBzdHJpbmcpOiBGaWxlIHtcbiAgICB2YXIgYmxvYkRhdGE6IGFueSA9IGJsb2I7XG5cbiAgICBibG9iRGF0YS5sYXN0TW9kaWZpZWREYXRlID0gbmV3IERhdGUoKTtcbiAgICBibG9iRGF0YS5uYW1lID0gZmlsZW5hbWU7XG5cbiAgICByZXR1cm4gPEZpbGU+YmxvYjtcbiAgfVxuXG59XG4iLCI8bWF0LWZvcm0tZmllbGQgW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWludmFsaWRdPVwiZXJyb3JcIj5cbiAgPG1hdC1sYWJlbD57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxuICA8aW5wdXQgbWF0SW5wdXRcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIFthdHRyLnZhbHVlXT1cImN1cnJlbnRBdHRhY2htZW50Py5maWxlbmFtZVwiXG4gICAgICAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlXCJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxuXG4gIDxidXR0b24gKm5nSWY9XCJjdXJyZW50QXR0YWNobWVudD8uZmlsZW5hbWVcIiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4IChjbGljayk9XCJjbGVhckF0dGFjaG1lbnQoKVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlXCIgY2xpY2stc3RvcC1wcm9wYWdhdGlvbj5cbiAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uICpuZ0lmPVwiIXVwbG9hZEluUHJvZ3Jlc3NcIiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4IChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlXCI+XG4gICAgPG1hdC1pY29uPmltYWdlPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG5cbiAgPG1hdC1zcGlubmVyICpuZ0lmPVwidXBsb2FkSW5Qcm9ncmVzc1wiIG1hdFN1ZmZpeCBbZGlhbWV0ZXJdPVwiMThcIj48L21hdC1zcGlubmVyPlxuXG4gIDxpbnB1dCAjZmlsZUlucHV0XG4gICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICBhY2NlcHQ9XCJpbWFnZS8qXCJcbiAgICAgIGhpZGRlblxuICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCI+XG5cbiAgPG1hdC1oaW50ICpuZ0lmPVwiZXJyb3JcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj57eyBlcnJvciB9fTwvbWF0LWhpbnQ+XG48L21hdC1mb3JtLWZpZWxkPlxuIl19
|
|
@@ -0,0 +1,53 @@
|
|
|
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 "ngx-markdown";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
import * as i4 from "@angular/material/input";
|
|
8
|
+
import * as i5 from "@angular/forms";
|
|
9
|
+
export class MarkdownInputComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.value = null;
|
|
12
|
+
this.onChange = (newValue) => { };
|
|
13
|
+
this.onTouched = () => { };
|
|
14
|
+
}
|
|
15
|
+
registerOnChange(fn) { this.onChange = fn; }
|
|
16
|
+
registerOnTouched(fn) { this.onTouched = fn; }
|
|
17
|
+
writeValue(newValue) {
|
|
18
|
+
this.value = newValue;
|
|
19
|
+
this.onChange(newValue);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
MarkdownInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MarkdownInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
+
MarkdownInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MarkdownInputComponent, selector: "mantle-markdown-input", inputs: { label: "label", disable: "disable", required: "required", error: "error" }, providers: [
|
|
24
|
+
{
|
|
25
|
+
provide: NG_VALUE_ACCESSOR,
|
|
26
|
+
useExisting: forwardRef(() => MarkdownInputComponent),
|
|
27
|
+
multi: true
|
|
28
|
+
}
|
|
29
|
+
], ngImport: i0, template: "<div class=\"markdown-input-disabled\" *ngIf=\"disable\">\n <mat-form-field [class.mat-form-field-invalid]=\"error\">\n <mat-label>{{ label }}</mat-label>\n\n <markdown ngPreserveWhitespaces>\n {{ value }}\n </markdown>\n\n <input matInput\n type=\"text\"\n [(ngModel)]=\"value\"\n [required]=\"required\"\n [disabled]=true\n [hidden]=true\n autocomplete=\"off\">\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n </mat-form-field>\n</div>\n", styles: [".markdown-input-disabled ::ng-deep .mat-form-field-underline{display:none}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i2.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "emoji", "katex", "katexOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start"], outputs: ["error", "load", "ready"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: 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: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }] });
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MarkdownInputComponent, decorators: [{
|
|
31
|
+
type: Component,
|
|
32
|
+
args: [{
|
|
33
|
+
selector: 'mantle-markdown-input',
|
|
34
|
+
templateUrl: './markdown-input.component.html',
|
|
35
|
+
styleUrls: ['./markdown-input.component.scss'],
|
|
36
|
+
providers: [
|
|
37
|
+
{
|
|
38
|
+
provide: NG_VALUE_ACCESSOR,
|
|
39
|
+
useExisting: forwardRef(() => MarkdownInputComponent),
|
|
40
|
+
multi: true
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}]
|
|
44
|
+
}], ctorParameters: function () { return []; }, propDecorators: { label: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}], disable: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], required: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], error: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}] } });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24taW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2ZpZWxkcy9tYXJrZG93bi1pbnB1dC9tYXJrZG93bi1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZmllbGRzL21hcmtkb3duLWlucHV0L21hcmtkb3duLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFjekUsTUFBTSxPQUFPLHNCQUFzQjtJQVNqQztRQUZPLFVBQUssR0FBUSxJQUFJLENBQUM7UUFJekIsYUFBUSxHQUFHLENBQUMsUUFBZ0IsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBR3JDLGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFMTixDQUFDO0lBR2pCLGdCQUFnQixDQUFDLEVBQThCLElBQVUsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRzlFLGlCQUFpQixDQUFDLEVBQWMsSUFBVSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFaEUsVUFBVSxDQUFDLFFBQWE7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQixDQUFDOztvSEFwQlUsc0JBQXNCO3dHQUF0QixzQkFBc0Isc0lBUnRCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7WUFDckQsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLDBCQ2JILHdoQkFtQkE7NEZESmEsc0JBQXNCO2tCQVpsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFdBQVcsRUFBRSxpQ0FBaUM7b0JBQzlDLFNBQVMsRUFBRSxDQUFDLGlDQUFpQyxDQUFDO29CQUM5QyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsdUJBQXVCLENBQUM7NEJBQ3JELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOzBFQUdVLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hbnRsZS1tYXJrZG93bi1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXJrZG93bi1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hcmtkb3duLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWFya2Rvd25JbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBNYXJrZG93bklucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIEBJbnB1dCgpIGxhYmVsITogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlITogYm9vbGVhbjtcbiAgQElucHV0KCkgcmVxdWlyZWQhOiBib29sZWFuO1xuICBASW5wdXQoKSBlcnJvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyB2YWx1ZTogYW55ID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG9uQ2hhbmdlID0gKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHsgfTtcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XG5cbiAgb25Ub3VjaGVkID0gKCkgPT4geyB9O1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XG5cbiAgd3JpdGVWYWx1ZShuZXdWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UobmV3VmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWFya2Rvd24taW5wdXQtZGlzYWJsZWRcIiAqbmdJZj1cImRpc2FibGVcIj5cbiAgPG1hdC1mb3JtLWZpZWxkIFtjbGFzcy5tYXQtZm9ybS1maWVsZC1pbnZhbGlkXT1cImVycm9yXCI+XG4gICAgPG1hdC1sYWJlbD57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxuXG4gICAgPG1hcmtkb3duIG5nUHJlc2VydmVXaGl0ZXNwYWNlcz5cbiAgICAgIHt7IHZhbHVlIH19XG4gICAgPC9tYXJrZG93bj5cblxuICAgIDxpbnB1dCBtYXRJbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICBbZGlzYWJsZWRdPXRydWVcbiAgICAgICAgW2hpZGRlbl09dHJ1ZVxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIj5cblxuICAgIDxtYXQtaGludCAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+e3sgZXJyb3IgfX08L21hdC1oaW50PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Component, Input, forwardRef } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR, NG_VALIDATORS } 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/input";
|
|
6
|
+
import * as i3 from "@angular/forms";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
export class NumberInputComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.value = null;
|
|
11
|
+
this.onChange = (newValue) => { };
|
|
12
|
+
this.onTouched = () => { };
|
|
13
|
+
}
|
|
14
|
+
registerOnChange(fn) { this.onChange = fn; }
|
|
15
|
+
registerOnTouched(fn) { this.onTouched = fn; }
|
|
16
|
+
ngOnChanges() { }
|
|
17
|
+
writeValue(newValue) {
|
|
18
|
+
this.value = newValue;
|
|
19
|
+
this.onChange(newValue);
|
|
20
|
+
}
|
|
21
|
+
onValueChanged(event) {
|
|
22
|
+
this.onChange(this.value);
|
|
23
|
+
}
|
|
24
|
+
validate(control) {
|
|
25
|
+
if (control.value === null) {
|
|
26
|
+
this.errorMessage = this.error;
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
let errors = {};
|
|
30
|
+
if (this.options.min && control.value < this.options.min)
|
|
31
|
+
errors.min = `must be greater than or equal to ${this.options.min}`;
|
|
32
|
+
if (this.options.max && control.value > this.options.max)
|
|
33
|
+
errors.max = `must be lower than or equal to ${this.options.max}`;
|
|
34
|
+
if (this.options.decimal_places) {
|
|
35
|
+
if (this.options.decimal_places == 0) {
|
|
36
|
+
if ((control.value - Math.floor(control.value)) !== 0)
|
|
37
|
+
errors.decimal_places = 'cannot be a decimal';
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
if ((control.value - control.value.toFixed(2)) !== 0)
|
|
41
|
+
errors.decimal_places = `must have a maximum of ${this.options.decimal_places} decimal places`;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
this.errorMessage = [...[this.error], ...Object.values(errors)].filter(item => { return !!item; }).join(', ');
|
|
45
|
+
return errors ? errors : null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
NumberInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
49
|
+
NumberInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NumberInputComponent, selector: "mantle-number-input", inputs: { label: "label", options: "options", disable: "disable", required: "required", error: "error" }, providers: [
|
|
50
|
+
{
|
|
51
|
+
provide: NG_VALUE_ACCESSOR,
|
|
52
|
+
useExisting: forwardRef(() => NumberInputComponent),
|
|
53
|
+
multi: true
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
provide: NG_VALIDATORS,
|
|
57
|
+
useExisting: forwardRef(() => NumberInputComponent),
|
|
58
|
+
multi: true,
|
|
59
|
+
},
|
|
60
|
+
], usesOnChanges: true, ngImport: i0, template: "<mat-form-field [class.mat-form-field-invalid]=\"errorMessage\">\n <mat-label>{{ label }}</mat-label>\n <input matInput\n type=\"number\"\n [(ngModel)]=\"value\"\n (keyup)=\"onValueChanged($event)\"\n (change)=\"onValueChanged($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n autocomplete=\"off\">\n\n <mat-hint *ngIf=\"errorMessage\" class=\"error-message\">{{ errorMessage }}</mat-hint>\n</mat-form-field>\n", styles: ["input{text-align:right}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }], directives: [{ type: i1.MatLabel, selector: "mat-label" }, { type: i2.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: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }] });
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NumberInputComponent, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{
|
|
64
|
+
selector: 'mantle-number-input',
|
|
65
|
+
templateUrl: './number-input.component.html',
|
|
66
|
+
styleUrls: ['./number-input.component.scss'],
|
|
67
|
+
providers: [
|
|
68
|
+
{
|
|
69
|
+
provide: NG_VALUE_ACCESSOR,
|
|
70
|
+
useExisting: forwardRef(() => NumberInputComponent),
|
|
71
|
+
multi: true
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
provide: NG_VALIDATORS,
|
|
75
|
+
useExisting: forwardRef(() => NumberInputComponent),
|
|
76
|
+
multi: true,
|
|
77
|
+
},
|
|
78
|
+
]
|
|
79
|
+
}]
|
|
80
|
+
}], ctorParameters: function () { return []; }, propDecorators: { label: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], options: [{
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hbnRsZS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9maWVsZHMvbnVtYmVyLWlucHV0L251bWJlci1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZmllbGRzL251bWJlci1pbnB1dC9udW1iZXItaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBc0UsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQW1CdEksTUFBTSxPQUFPLG9CQUFvQjtJQVcvQjtRQUhPLFVBQUssR0FBUSxJQUFJLENBQUM7UUFLekIsYUFBUSxHQUFHLENBQUMsUUFBZ0IsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBR3JDLGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFMTixDQUFDO0lBR2pCLGdCQUFnQixDQUFDLEVBQThCLElBQVUsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRzlFLGlCQUFpQixDQUFDLEVBQWMsSUFBVSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFaEUsV0FBVyxLQUFXLENBQUM7SUFFdkIsVUFBVSxDQUFDLFFBQWE7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQVU7UUFDdkIsSUFB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QUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7MEVBR1UsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uQ2hhbmdlcywgSW5wdXQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvciwgVmFsaWRhdGlvbkVycm9ycywgTkdfVkFMVUVfQUNDRVNTT1IsIE5HX1ZBTElEQVRPUlMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hbnRsZS1udW1iZXItaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbnVtYmVyLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbnVtYmVyLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTnVtYmVySW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOdW1iZXJJbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE51bWJlcklucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSBsYWJlbCE6IHN0cmluZztcbiAgQElucHV0KCkgb3B0aW9ucyE6IHsgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBkZWNpbWFsX3BsYWNlczogbnVtYmVyIH07XG4gIEBJbnB1dCgpIGRpc2FibGUhOiBib29sZWFuO1xuICBASW5wdXQoKSByZXF1aXJlZCE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGVycm9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHZhbHVlOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBvbkNoYW5nZSA9IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7IH07XG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuXG4gIG9uVG91Y2hlZCA9ICgpID0+IHsgfTtcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQgeyB9XG5cbiAgd3JpdGVWYWx1ZShuZXdWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UobmV3VmFsdWUpO1xuICB9XG5cbiAgb25WYWx1ZUNoYW5nZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKGNvbnRyb2wudmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvcjtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBlcnJvcnM6IGFueSA9IHt9O1xuICAgIGlmICh0aGlzLm9wdGlvbnMubWluICYmIGNvbnRyb2wudmFsdWUgPCB0aGlzLm9wdGlvbnMubWluKSBlcnJvcnMubWluID0gYG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7dGhpcy5vcHRpb25zLm1pbn1gO1xuICAgIGlmICh0aGlzLm9wdGlvbnMubWF4ICYmIGNvbnRyb2wudmFsdWUgPiB0aGlzLm9wdGlvbnMubWF4KSBlcnJvcnMubWF4ID0gYG11c3QgYmUgbG93ZXIgdGhhbiBvciBlcXVhbCB0byAke3RoaXMub3B0aW9ucy5tYXh9YDtcbiAgICBpZiAodGhpcy5vcHRpb25zLmRlY2ltYWxfcGxhY2VzKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmRlY2ltYWxfcGxhY2VzID09IDApIHtcbiAgICAgICAgaWYgKChjb250cm9sLnZhbHVlIC0gTWF0aC5mbG9vcihjb250cm9sLnZhbHVlKSkgIT09IDApIGVycm9ycy5kZWNpbWFsX3BsYWNlcyA9ICdjYW5ub3QgYmUgYSBkZWNpbWFsJztcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoKGNvbnRyb2wudmFsdWUgLSBjb250cm9sLnZhbHVlLnRvRml4ZWQoMikpICE9PSAwKSBlcnJvcnMuZGVjaW1hbF9wbGFjZXMgPSBgbXVzdCBoYXZlIGEgbWF4aW11bSBvZiAke3RoaXMub3B0aW9ucy5kZWNpbWFsX3BsYWNlc30gZGVjaW1hbCBwbGFjZXNgO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gWy4uLlt0aGlzLmVycm9yXSwgLi4uT2JqZWN0LnZhbHVlcyhlcnJvcnMpXS5maWx0ZXIoaXRlbSA9PiB7IHJldHVybiAhIWl0ZW0gfSkuam9pbignLCAnKTtcblxuICAgIHJldHVybiBlcnJvcnMgPyBlcnJvcnMgOiBudWxsO1xuICB9XG5cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBbY2xhc3MubWF0LWZvcm0tZmllbGQtaW52YWxpZF09XCJlcnJvck1lc3NhZ2VcIj5cbiAgPG1hdC1sYWJlbD57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxuICA8aW5wdXQgbWF0SW5wdXRcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAoa2V5dXApPVwib25WYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAoY2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlXCJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxuXG4gIDxtYXQtaGludCAqbmdJZj1cImVycm9yTWVzc2FnZVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPnt7IGVycm9yTWVzc2FnZSB9fTwvbWF0LWhpbnQ+XG48L21hdC1mb3JtLWZpZWxkPlxuIl19
|
|
@@ -0,0 +1,58 @@
|
|
|
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/button";
|
|
6
|
+
import * as i3 from "@angular/material/icon";
|
|
7
|
+
import * as i4 from "@angular/material/input";
|
|
8
|
+
import * as i5 from "@angular/forms";
|
|
9
|
+
import * as i6 from "@angular/common";
|
|
10
|
+
export class PasswordInputComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.value = null;
|
|
13
|
+
this.hide = true;
|
|
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
|
+
this.onChange(newValue);
|
|
22
|
+
}
|
|
23
|
+
onValueChanged(event) {
|
|
24
|
+
this.onChange(this.value);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
PasswordInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PasswordInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
+
PasswordInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PasswordInputComponent, selector: "mantle-password-input", inputs: { label: "label", disable: "disable", required: "required", error: "error" }, providers: [
|
|
29
|
+
{
|
|
30
|
+
provide: NG_VALUE_ACCESSOR,
|
|
31
|
+
useExisting: forwardRef(() => PasswordInputComponent),
|
|
32
|
+
multi: true
|
|
33
|
+
}
|
|
34
|
+
], ngImport: i0, template: "<mat-form-field [class.mat-form-field-invalid]=\"error\">\n <mat-label>{{ label }}</mat-label>\n <input matInput\n [type]=\"hide ? 'password' : 'text'\"\n [(ngModel)]=\"value\"\n (keyup)=\"onValueChanged($event)\"\n (change)=\"onValueChanged($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n autocomplete=\"off\">\n\n <button mat-icon-button matSuffix type=\"button\" (click)=\"hide = !hide\">\n <mat-icon>{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>\n </button>\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.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: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], 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: 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: i1.MatSuffix, selector: "[matSuffix]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }] });
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PasswordInputComponent, decorators: [{
|
|
36
|
+
type: Component,
|
|
37
|
+
args: [{
|
|
38
|
+
selector: 'mantle-password-input',
|
|
39
|
+
templateUrl: './password-input.component.html',
|
|
40
|
+
styleUrls: ['./password-input.component.scss'],
|
|
41
|
+
providers: [
|
|
42
|
+
{
|
|
43
|
+
provide: NG_VALUE_ACCESSOR,
|
|
44
|
+
useExisting: forwardRef(() => PasswordInputComponent),
|
|
45
|
+
multi: true
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}]
|
|
49
|
+
}], ctorParameters: function () { return []; }, propDecorators: { label: [{
|
|
50
|
+
type: Input
|
|
51
|
+
}], disable: [{
|
|
52
|
+
type: Input
|
|
53
|
+
}], required: [{
|
|
54
|
+
type: Input
|
|
55
|
+
}], error: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}] } });
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2ZpZWxkcy9wYXNzd29yZC1pbnB1dC9wYXNzd29yZC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZmllbGRzL3Bhc3N3b3JkLWlucHV0L3Bhc3N3b3JkLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBY3pFLE1BQU0sT0FBTyxzQkFBc0I7SUFVakM7UUFITyxVQUFLLEdBQVEsSUFBSSxDQUFDO1FBQ2xCLFNBQUksR0FBWSxJQUFJLENBQUM7UUFJNUIsYUFBUSxHQUFHLENBQUMsUUFBZ0IsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBR3JDLGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFMTixDQUFDO0lBR2pCLGdCQUFnQixDQUFDLEVBQThCLElBQVUsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRzlFLGlCQUFpQixDQUFDLEVBQWMsSUFBVSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFaEUsVUFBVSxDQUFDLFFBQWE7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQzs7b0hBekJVLHNCQUFzQjt3R0FBdEIsc0JBQXNCLHNJQVJ0QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDO1lBQ3JELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRiwwQkNiSCxtbkJBaUJBOzRGREZhLHNCQUFzQjtrQkFabEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxXQUFXLEVBQUUsaUNBQWlDO29CQUM5QyxTQUFTLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztvQkFDOUMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDOzRCQUNyRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjswRUFHVSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYW50bGUtcGFzc3dvcmQtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYXNzd29yZC1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBhc3N3b3JkSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICBASW5wdXQoKSBsYWJlbCE6IHN0cmluZztcbiAgQElucHV0KCkgZGlzYWJsZSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHJlcXVpcmVkITogYm9vbGVhbjtcbiAgQElucHV0KCkgZXJyb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgdmFsdWU6IGFueSA9IG51bGw7XG4gIHB1YmxpYyBoaWRlOiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG9uQ2hhbmdlID0gKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHsgfTtcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XG5cbiAgb25Ub3VjaGVkID0gKCkgPT4geyB9O1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XG5cbiAgd3JpdGVWYWx1ZShuZXdWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UobmV3VmFsdWUpO1xuICB9XG5cbiAgb25WYWx1ZUNoYW5nZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBbY2xhc3MubWF0LWZvcm0tZmllbGQtaW52YWxpZF09XCJlcnJvclwiPlxuICA8bWF0LWxhYmVsPnt7IGxhYmVsIH19PC9tYXQtbGFiZWw+XG4gIDxpbnB1dCBtYXRJbnB1dFxuICAgICAgW3R5cGVdPVwiaGlkZSA/ICdwYXNzd29yZCcgOiAndGV4dCdcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAoa2V5dXApPVwib25WYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAoY2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlXCJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxuXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeCB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImhpZGUgPSAhaGlkZVwiPlxuICAgIDxtYXQtaWNvbj57e2hpZGUgPyAndmlzaWJpbGl0eV9vZmYnIDogJ3Zpc2liaWxpdHknfX08L21hdC1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8bWF0LWhpbnQgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPnt7IGVycm9yIH19PC9tYXQtaGludD5cbjwvbWF0LWZvcm0tZmllbGQ+XG4iXX0=
|
|
@@ -0,0 +1,55 @@
|
|
|
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/input";
|
|
6
|
+
import * as i3 from "@angular/forms";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
export class TextInputComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.value = null;
|
|
11
|
+
this.onChange = (newValue) => { };
|
|
12
|
+
this.onTouched = () => { };
|
|
13
|
+
}
|
|
14
|
+
registerOnChange(fn) { this.onChange = fn; }
|
|
15
|
+
registerOnTouched(fn) { this.onTouched = fn; }
|
|
16
|
+
writeValue(newValue) {
|
|
17
|
+
this.value = newValue;
|
|
18
|
+
this.onChange(newValue);
|
|
19
|
+
}
|
|
20
|
+
onValueChanged(event) {
|
|
21
|
+
this.onChange(this.value);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
TextInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
+
TextInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TextInputComponent, selector: "mantle-text-input", inputs: { label: "label", disable: "disable", required: "required", error: "error" }, providers: [
|
|
26
|
+
{
|
|
27
|
+
provide: NG_VALUE_ACCESSOR,
|
|
28
|
+
useExisting: forwardRef(() => TextInputComponent),
|
|
29
|
+
multi: true
|
|
30
|
+
}
|
|
31
|
+
], 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 autocomplete=\"off\">\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"] }], directives: [{ type: i1.MatLabel, selector: "mat-label" }, { type: i2.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: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }] });
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TextInputComponent, decorators: [{
|
|
33
|
+
type: Component,
|
|
34
|
+
args: [{
|
|
35
|
+
selector: 'mantle-text-input',
|
|
36
|
+
templateUrl: './text-input.component.html',
|
|
37
|
+
styleUrls: ['./text-input.component.scss'],
|
|
38
|
+
providers: [
|
|
39
|
+
{
|
|
40
|
+
provide: NG_VALUE_ACCESSOR,
|
|
41
|
+
useExisting: forwardRef(() => TextInputComponent),
|
|
42
|
+
multi: true
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}]
|
|
46
|
+
}], ctorParameters: function () { return []; }, propDecorators: { label: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], disable: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], required: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}], error: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}] } });
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZmllbGRzL3RleHQtaW5wdXQvdGV4dC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZmllbGRzL3RleHQtaW5wdXQvdGV4dC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFjekUsTUFBTSxPQUFPLGtCQUFrQjtJQVM3QjtRQUZPLFVBQUssR0FBUSxJQUFJLENBQUM7UUFJekIsYUFBUSxHQUFHLENBQUMsUUFBZ0IsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBR3JDLGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFMTixDQUFDO0lBR2pCLGdCQUFnQixDQUFDLEVBQThCLElBQVUsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRzlFLGlCQUFpQixDQUFDLEVBQWMsSUFBVSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFaEUsVUFBVSxDQUFDLFFBQWE7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQzs7Z0hBeEJVLGtCQUFrQjtvR0FBbEIsa0JBQWtCLGtJQVJsQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRiwwQkNiSCx3YkFhQTs0RkRFYSxrQkFBa0I7a0JBWjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsV0FBVyxFQUFFLDZCQUE2QjtvQkFDMUMsU0FBUyxFQUFFLENBQUMsNkJBQTZCLENBQUM7b0JBQzFDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQzs0QkFDakQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7MEVBR1UsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWFudGxlLXRleHQtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RleHQtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUZXh0SW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVGV4dElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIEBJbnB1dCgpIGxhYmVsITogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlITogYm9vbGVhbjtcbiAgQElucHV0KCkgcmVxdWlyZWQhOiBib29sZWFuO1xuICBASW5wdXQoKSBlcnJvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyB2YWx1ZTogYW55ID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG9uQ2hhbmdlID0gKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHsgfTtcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XG5cbiAgb25Ub3VjaGVkID0gKCkgPT4geyB9O1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XG5cbiAgd3JpdGVWYWx1ZShuZXdWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UobmV3VmFsdWUpO1xuICB9XG5cbiAgb25WYWx1ZUNoYW5nZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBbY2xhc3MubWF0LWZvcm0tZmllbGQtaW52YWxpZF09XCJlcnJvclwiPlxuICA8bWF0LWxhYmVsPnt7IGxhYmVsIH19PC9tYXQtbGFiZWw+XG4gIDxpbnB1dCBtYXRJbnB1dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAoa2V5dXApPVwib25WYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAoY2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlXCJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxuXG4gIDxtYXQtaGludCAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+e3sgZXJyb3IgfX08L21hdC1oaW50PlxuPC9tYXQtZm9ybS1maWVsZD5cbiJdfQ==
|
|
@@ -0,0 +1,58 @@
|
|
|
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/input";
|
|
6
|
+
import * as i3 from "@angular/forms";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
export class TextareaComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.rows = 1;
|
|
11
|
+
this.value = null;
|
|
12
|
+
this.onChange = (newValue) => { };
|
|
13
|
+
this.onTouched = () => { };
|
|
14
|
+
}
|
|
15
|
+
registerOnChange(fn) { this.onChange = fn; }
|
|
16
|
+
registerOnTouched(fn) { this.onTouched = fn; }
|
|
17
|
+
writeValue(newValue) {
|
|
18
|
+
this.value = newValue;
|
|
19
|
+
this.onChange(newValue);
|
|
20
|
+
}
|
|
21
|
+
onValueChanged(event) {
|
|
22
|
+
this.onChange(this.value);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
TextareaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TextareaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
+
TextareaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TextareaComponent, selector: "mantle-textarea", inputs: { label: "label", rows: "rows", disable: "disable", required: "required", error: "error" }, providers: [
|
|
27
|
+
{
|
|
28
|
+
provide: NG_VALUE_ACCESSOR,
|
|
29
|
+
useExisting: forwardRef(() => TextareaComponent),
|
|
30
|
+
multi: true
|
|
31
|
+
}
|
|
32
|
+
], ngImport: i0, template: "<mat-form-field [class.mat-form-field-invalid]=\"error\">\n <mat-label>{{ label }}</mat-label>\n <textarea matInput\n [rows]=\"rows\"\n [(ngModel)]=\"value\"\n (keyup)=\"onValueChanged($event)\"\n (change)=\"onValueChanged($event)\"\n [required]=\"required\"\n [disabled]=\"disable\"\n autocomplete=\"off\">\n </textarea>\n\n <mat-hint *ngIf=\"error\" class=\"error-message\">{{ error }}</mat-hint>\n</mat-form-field>\n", styles: ["textarea{resize:none}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }], directives: [{ type: i1.MatLabel, selector: "mat-label" }, { type: i2.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: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }] });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TextareaComponent, decorators: [{
|
|
34
|
+
type: Component,
|
|
35
|
+
args: [{
|
|
36
|
+
selector: 'mantle-textarea',
|
|
37
|
+
templateUrl: './textarea.component.html',
|
|
38
|
+
styleUrls: ['./textarea.component.scss'],
|
|
39
|
+
providers: [
|
|
40
|
+
{
|
|
41
|
+
provide: NG_VALUE_ACCESSOR,
|
|
42
|
+
useExisting: forwardRef(() => TextareaComponent),
|
|
43
|
+
multi: true
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}]
|
|
47
|
+
}], ctorParameters: function () { return []; }, propDecorators: { label: [{
|
|
48
|
+
type: Input
|
|
49
|
+
}], rows: [{
|
|
50
|
+
type: Input
|
|
51
|
+
}], disable: [{
|
|
52
|
+
type: Input
|
|
53
|
+
}], required: [{
|
|
54
|
+
type: Input
|
|
55
|
+
}], error: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}] } });
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2ZpZWxkcy90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYW50bGUvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZmllbGRzL3RleHRhcmVhL3RleHRhcmVhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQWN6RSxNQUFNLE9BQU8saUJBQWlCO0lBVTVCO1FBUFMsU0FBSSxHQUFXLENBQUMsQ0FBQztRQUtuQixVQUFLLEdBQVEsSUFBSSxDQUFDO1FBSXpCLGFBQVEsR0FBRyxDQUFDLFFBQWdCLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUdyQyxjQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBTE4sQ0FBQztJQUdqQixnQkFBZ0IsQ0FBQyxFQUE4QixJQUFVLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUc5RSxpQkFBaUIsQ0FBQyxFQUFjLElBQVUsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRWhFLFVBQVUsQ0FBQyxRQUFhO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7OytHQXpCVSxpQkFBaUI7bUdBQWpCLGlCQUFpQiw4SUFSakI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztZQUNoRCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsMEJDYkgsNGNBY0E7NEZEQ2EsaUJBQWlCO2tCQVo3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFdBQVcsRUFBRSwyQkFBMkI7b0JBQ3hDLFNBQVMsRUFBRSxDQUFDLDJCQUEyQixDQUFDO29CQUN4QyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUM7NEJBQ2hELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOzBFQUdVLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYW50bGUtdGV4dGFyZWEnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dGFyZWEuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0YXJlYS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRleHRhcmVhQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFRleHRhcmVhQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIEBJbnB1dCgpIGxhYmVsITogc3RyaW5nO1xuICBASW5wdXQoKSByb3dzOiBudW1iZXIgPSAxO1xuICBASW5wdXQoKSBkaXNhYmxlITogYm9vbGVhbjtcbiAgQElucHV0KCkgcmVxdWlyZWQhOiBib29sZWFuO1xuICBASW5wdXQoKSBlcnJvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyB2YWx1ZTogYW55ID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG9uQ2hhbmdlID0gKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHsgfTtcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XG5cbiAgb25Ub3VjaGVkID0gKCkgPT4geyB9O1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XG5cbiAgd3JpdGVWYWx1ZShuZXdWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UobmV3VmFsdWUpO1xuICB9XG5cbiAgb25WYWx1ZUNoYW5nZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBbY2xhc3MubWF0LWZvcm0tZmllbGQtaW52YWxpZF09XCJlcnJvclwiPlxuICA8bWF0LWxhYmVsPnt7IGxhYmVsIH19PC9tYXQtbGFiZWw+XG4gIDx0ZXh0YXJlYSBtYXRJbnB1dFxuICAgICAgW3Jvd3NdPVwicm93c1wiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAgIChrZXl1cCk9XCJvblZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVcIlxuICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XG4gIDwvdGV4dGFyZWE+XG5cbiAgPG1hdC1oaW50ICpuZ0lmPVwiZXJyb3JcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj57eyBlcnJvciB9fTwvbWF0LWhpbnQ+XG48L21hdC1mb3JtLWZpZWxkPlxuIl19
|
package/esm2015/lib/components/form/sections/dynamic-form-section/dynamic-form-section.component.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../grid-form-section/grid-form-section.component";
|
|
5
|
+
import * as i2 from "../table-form-section/table-form-section.component";
|
|
6
|
+
import * as i3 from "../../../details/sections/grid-details-section/grid-details-section.component";
|
|
7
|
+
import * as i4 from "../../../details/sections/table-details-section/table-details-section.component";
|
|
8
|
+
import * as i5 from "../../../dashboard/sections/dashboard-section/dashboard-section.component";
|
|
9
|
+
import * as i6 from "../../../details/sections/markdown-details-section/markdown-details-section.component";
|
|
10
|
+
import * as i7 from "@angular/common";
|
|
11
|
+
export class DynamicFormSectionComponent {
|
|
12
|
+
constructor() { }
|
|
13
|
+
asDynamicLayoutGridSection(section) {
|
|
14
|
+
return section;
|
|
15
|
+
}
|
|
16
|
+
asDynamicLayoutTableSection(section) {
|
|
17
|
+
return section;
|
|
18
|
+
}
|
|
19
|
+
asDynamicLayoutMarkdownSection(section) {
|
|
20
|
+
return section;
|
|
21
|
+
}
|
|
22
|
+
asDynamicLayoutDashboardSection(section) {
|
|
23
|
+
return section;
|
|
24
|
+
}
|
|
25
|
+
asDashboardPageService(formPageService) {
|
|
26
|
+
return formPageService;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
DynamicFormSectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicFormSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
30
|
+
DynamicFormSectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicFormSectionComponent, selector: "mantle-dynamic-form-section", inputs: { formPageService: "formPageService", section: "section", content: "content", form: "form" }, ngImport: i0, template: "<ng-container *ngIf=\"section.writable\">\n <ng-container *ngTemplateOutlet=\"dynamicFormContent; context: { form: form, section: section, content: content };\"></ng-container>\n</ng-container>\n<ng-container *ngIf=\"!section.writable\">\n <ng-container *ngTemplateOutlet=\"dynamicDetailsContent; context: { section: section, content: content };\"></ng-container>\n</ng-container>\n\n<ng-template #dynamicFormContent let-form=\"form\" let-content=\"content\" let-section=\"section\">\n <ng-container [ngSwitch]=\"section.layout\">\n\n <ng-container *ngSwitchCase=\"'grid'\">\n <mantle-grid-form-section\n [section]=\"asDynamicLayoutGridSection(section)\"\n [form]=\"form\"\n [errors]=\"content.errors || {}\">\n </mantle-grid-form-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'table'\">\n <mantle-table-form-section\n [section]=\"asDynamicLayoutTableSection(section)\"\n [form]=\"form\">\n </mantle-table-form-section>\n </ng-container>\n\n </ng-container>\n</ng-template>\n\n<ng-template #dynamicDetailsContent let-content=\"content\" let-section=\"section\">\n <ng-container [ngSwitch]=\"section.layout\">\n\n <ng-container *ngSwitchCase=\"'grid'\">\n <mantle-grid-details-section\n [section]=\"asDynamicLayoutGridSection(section)\"\n [data]=\"content.data\">\n </mantle-grid-details-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'table'\">\n <mantle-table-details-section\n [section]=\"asDynamicLayoutTableSection(section)\"\n [data]=\"content.data\">\n </mantle-table-details-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'dashboard'\">\n <mantle-dashboard-section\n [slug]=\"section.slug\"\n [section]=\"asDynamicLayoutDashboardSection(section)\"\n [data]=\"content.data\"\n [dashboardPageService]=\"asDashboardPageService(formPageService)\">\n </mantle-dashboard-section>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'markdown'\">\n <mantle-markdown-details-section\n [section]=\"asDynamicLayoutMarkdownSection(section)\">\n </mantle-markdown-details-section>\n </ng-container>\n\n </ng-container>\n</ng-template>\n", styles: [""], components: [{ type: i1.GridFormSectionComponent, selector: "mantle-grid-form-section", inputs: ["title", "section", "form", "errors", "defaultRowHeight"] }, { type: i2.TableFormSectionComponent, selector: "mantle-table-form-section", inputs: ["title", "section", "form"] }, { type: i3.GridDetailsSectionComponent, selector: "mantle-grid-details-section", inputs: ["data", "section", "defaultRowHeight"] }, { type: i4.TableDetailsSectionComponent, selector: "mantle-table-details-section", inputs: ["data", "section"] }, { type: i5.DashboardSectionComponent, selector: "mantle-dashboard-section", inputs: ["dashboardPageService", "slug", "data", "section"] }, { type: i6.MarkdownDetailsSectionComponent, selector: "mantle-markdown-details-section", inputs: ["section"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i7.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] });
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicFormSectionComponent, decorators: [{
|
|
32
|
+
type: Component,
|
|
33
|
+
args: [{
|
|
34
|
+
selector: 'mantle-dynamic-form-section',
|
|
35
|
+
templateUrl: './dynamic-form-section.component.html',
|
|
36
|
+
styleUrls: ['./dynamic-form-section.component.scss']
|
|
37
|
+
}]
|
|
38
|
+
}], ctorParameters: function () { return []; }, propDecorators: { formPageService: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], section: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], content: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], form: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}] } });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFudGxlL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL3NlY3Rpb25zL2R5bmFtaWMtZm9ybS1zZWN0aW9uL2R5bmFtaWMtZm9ybS1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hbnRsZS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9zZWN0aW9ucy9keW5hbWljLWZvcm0tc2VjdGlvbi9keW5hbWljLWZvcm0tc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQWEzQyxNQUFNLE9BQU8sMkJBQTJCO0lBT3RDLGdCQUFnQixDQUFDO0lBRWpCLDBCQUEwQixDQUFDLE9BQVk7UUFDckMsT0FBTyxPQUFtQyxDQUFDO0lBQzdDLENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxPQUFZO1FBQ3RDLE9BQU8sT0FBb0MsQ0FBQztJQUM5QyxDQUFDO0lBRUQsOEJBQThCLENBQUMsT0FBWTtRQUN6QyxPQUFPLE9BQXVDLENBQUM7SUFDakQsQ0FBQztJQUVELCtCQUErQixDQUFDLE9BQVk7UUFDMUMsT0FBTyxPQUF3QyxDQUFDO0lBQ2xELENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxlQUFnQztRQUNyRCxPQUFPLGVBQWtELENBQUM7SUFDNUQsQ0FBQzs7eUhBM0JVLDJCQUEyQjs2R0FBM0IsMkJBQTJCLHlLQ2R4Qyxnd0VBOERBOzRGRGhEYSwyQkFBMkI7a0JBTHZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsV0FBVyxFQUFFLHVDQUF1QztvQkFDcEQsU0FBUyxFQUFFLENBQUMsdUNBQXVDLENBQUM7aUJBQ3JEOzBFQUdVLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBEeW5hbWljRm9ybUNvbnRlbnQsIER5bmFtaWNMYXlvdXREYXNoYm9hcmRTZWN0aW9uLCBEeW5hbWljTGF5b3V0R3JpZFNlY3Rpb24sXG4gIER5bmFtaWNMYXlvdXRNYXJrZG93blNlY3Rpb24sIER5bmFtaWNMYXlvdXRTZWN0aW9uLCBEeW5hbWljTGF5b3V0VGFibGVTZWN0aW9uXG59IGZyb20gJy4uLy4uLy4uLy4uL2RhdGEtc3RydWN0dXJlcy9keW5hbWljLWxheW91dC5zdHJ1Y3R1cmUnO1xuaW1wb3J0IHsgRGFzaGJvYXJkUGFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9pbnRlcmZhY2VzL2Rhc2hib2FyZC1wYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybVBhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvaW50ZXJmYWNlcy9mb3JtLXBhZ2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hbnRsZS1keW5hbWljLWZvcm0tc2VjdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWZvcm0tc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2R5bmFtaWMtZm9ybS1zZWN0aW9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1TZWN0aW9uQ29tcG9uZW50IHtcblxuICBASW5wdXQoKSBmb3JtUGFnZVNlcnZpY2UhOiBGb3JtUGFnZVNlcnZpY2U7XG4gIEBJbnB1dCgpIHNlY3Rpb24hOiBEeW5hbWljTGF5b3V0U2VjdGlvbjtcbiAgQElucHV0KCkgY29udGVudCE6IER5bmFtaWNGb3JtQ29udGVudDtcbiAgQElucHV0KCkgZm9ybSE6IEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIGFzRHluYW1pY0xheW91dEdyaWRTZWN0aW9uKHNlY3Rpb246IGFueSk6IER5bmFtaWNMYXlvdXRHcmlkU2VjdGlvbiB7XG4gICAgcmV0dXJuIHNlY3Rpb24gYXMgRHluYW1pY0xheW91dEdyaWRTZWN0aW9uO1xuICB9XG5cbiAgYXNEeW5hbWljTGF5b3V0VGFibGVTZWN0aW9uKHNlY3Rpb246IGFueSk6IER5bmFtaWNMYXlvdXRUYWJsZVNlY3Rpb24ge1xuICAgIHJldHVybiBzZWN0aW9uIGFzIER5bmFtaWNMYXlvdXRUYWJsZVNlY3Rpb247XG4gIH1cblxuICBhc0R5bmFtaWNMYXlvdXRNYXJrZG93blNlY3Rpb24oc2VjdGlvbjogYW55KTogRHluYW1pY0xheW91dE1hcmtkb3duU2VjdGlvbiB7XG4gICAgcmV0dXJuIHNlY3Rpb24gYXMgRHluYW1pY0xheW91dE1hcmtkb3duU2VjdGlvbjtcbiAgfVxuXG4gIGFzRHluYW1pY0xheW91dERhc2hib2FyZFNlY3Rpb24oc2VjdGlvbjogYW55KTogRHluYW1pY0xheW91dERhc2hib2FyZFNlY3Rpb24ge1xuICAgIHJldHVybiBzZWN0aW9uIGFzIER5bmFtaWNMYXlvdXREYXNoYm9hcmRTZWN0aW9uO1xuICB9XG5cbiAgYXNEYXNoYm9hcmRQYWdlU2VydmljZShmb3JtUGFnZVNlcnZpY2U6IEZvcm1QYWdlU2VydmljZSk6IERhc2hib2FyZFBhZ2VTZXJ2aWNlIHtcbiAgICByZXR1cm4gZm9ybVBhZ2VTZXJ2aWNlIGFzIHVua25vd24gYXMgRGFzaGJvYXJkUGFnZVNlcnZpY2U7XG4gIH1cblxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlY3Rpb24ud3JpdGFibGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImR5bmFtaWNGb3JtQ29udGVudDsgY29udGV4dDogeyBmb3JtOiBmb3JtLCBzZWN0aW9uOiBzZWN0aW9uLCBjb250ZW50OiBjb250ZW50IH07XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhc2VjdGlvbi53cml0YWJsZVwiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHluYW1pY0RldGFpbHNDb250ZW50OyBjb250ZXh0OiB7IHNlY3Rpb246IHNlY3Rpb24sIGNvbnRlbnQ6IGNvbnRlbnQgfTtcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2R5bmFtaWNGb3JtQ29udGVudCBsZXQtZm9ybT1cImZvcm1cIiBsZXQtY29udGVudD1cImNvbnRlbnRcIiBsZXQtc2VjdGlvbj1cInNlY3Rpb25cIj5cbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic2VjdGlvbi5sYXlvdXRcIj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidncmlkJ1wiPlxuICAgICAgPG1hbnRsZS1ncmlkLWZvcm0tc2VjdGlvblxuICAgICAgICAgIFtzZWN0aW9uXT1cImFzRHluYW1pY0xheW91dEdyaWRTZWN0aW9uKHNlY3Rpb24pXCJcbiAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcbiAgICAgICAgICBbZXJyb3JzXT1cImNvbnRlbnQuZXJyb3JzIHx8IHt9XCI+XG4gICAgICA8L21hbnRsZS1ncmlkLWZvcm0tc2VjdGlvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0YWJsZSdcIj5cbiAgICAgIDxtYW50bGUtdGFibGUtZm9ybS1zZWN0aW9uXG4gICAgICAgICAgW3NlY3Rpb25dPVwiYXNEeW5hbWljTGF5b3V0VGFibGVTZWN0aW9uKHNlY3Rpb24pXCJcbiAgICAgICAgICBbZm9ybV09XCJmb3JtXCI+XG4gICAgICA8L21hbnRsZS10YWJsZS1mb3JtLXNlY3Rpb24+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2R5bmFtaWNEZXRhaWxzQ29udGVudCBsZXQtY29udGVudD1cImNvbnRlbnRcIiBsZXQtc2VjdGlvbj1cInNlY3Rpb25cIj5cbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic2VjdGlvbi5sYXlvdXRcIj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidncmlkJ1wiPlxuICAgICAgPG1hbnRsZS1ncmlkLWRldGFpbHMtc2VjdGlvblxuICAgICAgICAgIFtzZWN0aW9uXT1cImFzRHluYW1pY0xheW91dEdyaWRTZWN0aW9uKHNlY3Rpb24pXCJcbiAgICAgICAgICBbZGF0YV09XCJjb250ZW50LmRhdGFcIj5cbiAgICAgIDwvbWFudGxlLWdyaWQtZGV0YWlscy1zZWN0aW9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RhYmxlJ1wiPlxuICAgICAgPG1hbnRsZS10YWJsZS1kZXRhaWxzLXNlY3Rpb25cbiAgICAgICAgICBbc2VjdGlvbl09XCJhc0R5bmFtaWNMYXlvdXRUYWJsZVNlY3Rpb24oc2VjdGlvbilcIlxuICAgICAgICAgIFtkYXRhXT1cImNvbnRlbnQuZGF0YVwiPlxuICAgICAgPC9tYW50bGUtdGFibGUtZGV0YWlscy1zZWN0aW9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Rhc2hib2FyZCdcIj5cbiAgICAgIDxtYW50bGUtZGFzaGJvYXJkLXNlY3Rpb25cbiAgICAgICAgICBbc2x1Z109XCJzZWN0aW9uLnNsdWdcIlxuICAgICAgICAgIFtzZWN0aW9uXT1cImFzRHluYW1pY0xheW91dERhc2hib2FyZFNlY3Rpb24oc2VjdGlvbilcIlxuICAgICAgICAgIFtkYXRhXT1cImNvbnRlbnQuZGF0YVwiXG4gICAgICAgICAgW2Rhc2hib2FyZFBhZ2VTZXJ2aWNlXT1cImFzRGFzaGJvYXJkUGFnZVNlcnZpY2UoZm9ybVBhZ2VTZXJ2aWNlKVwiPlxuICAgICAgPC9tYW50bGUtZGFzaGJvYXJkLXNlY3Rpb24+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbWFya2Rvd24nXCI+XG4gICAgICA8bWFudGxlLW1hcmtkb3duLWRldGFpbHMtc2VjdGlvblxuICAgICAgICAgIFtzZWN0aW9uXT1cImFzRHluYW1pY0xheW91dE1hcmtkb3duU2VjdGlvbihzZWN0aW9uKVwiPlxuICAgICAgPC9tYW50bGUtbWFya2Rvd24tZGV0YWlscy1zZWN0aW9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|