@sdcorejs/angular 19.0.0-rc.1
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 +723 -0
- package/assets/fonts/fonts.scss +116 -0
- package/assets/fonts/material-icons/material-icons-outlined-v110-latin-regular.woff2 +0 -0
- package/assets/fonts/material-icons/material-icons-v145-latin-regular.woff2 +0 -0
- package/assets/fonts/material-symbols/material-symbols-v29-latin-regular.woff2 +0 -0
- package/assets/fonts/roboto/roboto-v50-latin_vietnamese-500.woff2 +0 -0
- package/assets/fonts/roboto/roboto-v50-latin_vietnamese-600.woff2 +0 -0
- package/assets/fonts/roboto/roboto-v50-latin_vietnamese-italic.woff2 +0 -0
- package/assets/fonts/roboto/roboto-v50-latin_vietnamese-regular.woff2 +0 -0
- package/assets/images/coming-soon.svg +23 -0
- package/assets/images/data-empty.svg +21 -0
- package/assets/images/expired.svg +22 -0
- package/assets/images/file-error.svg +28 -0
- package/assets/images/filter-empty.svg +20 -0
- package/assets/images/filter-required.svg +21 -0
- package/assets/images/forbidden.svg +15 -0
- package/assets/images/image-error.svg +27 -0
- package/assets/images/maintenance.svg +23 -0
- package/assets/images/not-found.svg +20 -0
- package/assets/images/offline.svg +20 -0
- package/assets/images/submitted.svg +18 -0
- package/assets/images/success.svg +18 -0
- package/assets/images/unauthorized.svg +22 -0
- package/assets/images/unknown-error.svg +18 -0
- package/assets/scss/README.md +604 -0
- package/assets/scss/ckeditor5.scss +88 -0
- package/assets/scss/core/color.scss +74 -0
- package/assets/scss/core/form.scss +302 -0
- package/assets/scss/core/image.scss +35 -0
- package/assets/scss/core/scrollbar.scss +30 -0
- package/assets/scss/core/utilities/_base.scss +333 -0
- package/assets/scss/core/utilities/_border.scss +22 -0
- package/assets/scss/core/utilities/_display.scss +10 -0
- package/assets/scss/core/utilities/_elevation.scss +80 -0
- package/assets/scss/core/utilities/_flexbox.scss +54 -0
- package/assets/scss/core/utilities/_gap.scss +9 -0
- package/assets/scss/core/utilities/_grid.scss +143 -0
- package/assets/scss/core/utilities/_index.scss +17 -0
- package/assets/scss/core/utilities/_misc.scss +20 -0
- package/assets/scss/core/utilities/_overflow.scss +9 -0
- package/assets/scss/core/utilities/_position.scss +8 -0
- package/assets/scss/core/utilities/_sizing.scss +28 -0
- package/assets/scss/core/utilities/_spacing.scss +31 -0
- package/assets/scss/core/utilities/_typography.scss +99 -0
- package/assets/scss/sd-core.scss +17 -0
- package/assets/scss/themes/default.scss +45 -0
- package/assets/scss/themes/material-theme.scss +101 -0
- package/components/anchor/index.d.ts +1 -0
- package/components/anchor/src/components/anchor/anchor.component.d.ts +22 -0
- package/components/anchor/src/components/anchor-item/anchor-item.component.d.ts +13 -0
- package/components/anchor/src/components/anchor-nav/anchor-nav.component.d.ts +21 -0
- package/components/anchor/src/components/index.d.ts +2 -0
- package/components/anchor/src/index.d.ts +2 -0
- package/components/anchor/src/models/index.d.ts +1 -0
- package/components/anchor/src/models/sd-anchor.model.d.ts +7 -0
- package/components/autoid-inspector/index.d.ts +8 -0
- package/components/autoid-inspector/src/autoid-inspector.component.d.ts +55 -0
- package/components/autoid-inspector/src/models/autoid-element.model.d.ts +55 -0
- package/components/autoid-inspector/src/models/autoid-export-format.model.d.ts +6 -0
- package/components/autoid-inspector/src/models/autoid-inspector-config.model.d.ts +8 -0
- package/components/autoid-inspector/src/services/autoid-audit.service.d.ts +19 -0
- package/components/autoid-inspector/src/services/autoid-export.service.d.ts +21 -0
- package/components/autoid-inspector/src/services/autoid-highlight.service.d.ts +12 -0
- package/components/autoid-inspector/src/services/autoid-scanner.service.d.ts +23 -0
- package/components/avatar/index.d.ts +1 -0
- package/components/avatar/src/avatar.component.d.ts +19 -0
- package/components/badge/index.d.ts +1 -0
- package/components/badge/src/badge.component.d.ts +98 -0
- package/components/base/index.d.ts +1 -0
- package/components/base/src/base-secure.component.d.ts +8 -0
- package/components/button/index.d.ts +1 -0
- package/components/button/src/button.component.d.ts +42 -0
- package/components/chart/index.d.ts +4 -0
- package/components/chart/src/bar-chart.component.d.ts +18 -0
- package/components/chart/src/doughnut-chart.component.d.ts +16 -0
- package/components/chart/src/line-chart.component.d.ts +18 -0
- package/components/chart/src/pie-chart.component.d.ts +16 -0
- package/components/ckeditor-styles/index.d.ts +1 -0
- package/components/ckeditor-styles/src/ckeditor-styles.component.d.ts +25 -0
- package/components/code-editor/index.d.ts +1 -0
- package/components/code-editor/src/code-editor.component.d.ts +25 -0
- package/components/document-builder/index.d.ts +4 -0
- package/components/document-builder/src/components/header-footer-builder/header-footer-builder.component.d.ts +16 -0
- package/components/document-builder/src/components/header-footer-builder/plugins/page-number.plugin.d.ts +4 -0
- package/components/document-builder/src/components/index.d.ts +1 -0
- package/components/document-builder/src/document-builder.component.d.ts +53 -0
- package/components/document-builder/src/document-builder.config.d.ts +21 -0
- package/components/document-builder/src/document-builder.model.d.ts +41 -0
- package/components/document-builder/src/document-builder.utils.d.ts +10 -0
- package/components/document-builder/src/plugins/block-space/block-space.plugin.d.ts +9 -0
- package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.d.ts +44 -0
- package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.model.d.ts +57 -0
- package/components/document-builder/src/plugins/heading/heading.plugin.d.ts +5 -0
- package/components/document-builder/src/plugins/highlight-range/highlight-range.plugin.d.ts +4 -0
- package/components/document-builder/src/plugins/image-custom/image-custom.plugin.d.ts +31 -0
- package/components/document-builder/src/plugins/image-upload/image-upload.plugin.d.ts +5 -0
- package/components/document-builder/src/plugins/index.d.ts +11 -0
- package/components/document-builder/src/plugins/page-orientation/page-orientation.plugin.d.ts +24 -0
- package/components/document-builder/src/plugins/paste-handler/filters/bookmark.d.ts +14 -0
- package/components/document-builder/src/plugins/paste-handler/filters/br.d.ts +15 -0
- package/components/document-builder/src/plugins/paste-handler/filters/image.d.ts +25 -0
- package/components/document-builder/src/plugins/paste-handler/filters/list.d.ts +29 -0
- package/components/document-builder/src/plugins/paste-handler/filters/parse.d.ts +35 -0
- package/components/document-builder/src/plugins/paste-handler/filters/removeboldwrapper.d.ts +15 -0
- package/components/document-builder/src/plugins/paste-handler/filters/removegooglesheetstag.d.ts +15 -0
- package/components/document-builder/src/plugins/paste-handler/filters/removeinvalidtablewidth.d.ts +15 -0
- package/components/document-builder/src/plugins/paste-handler/filters/removemsattributes.d.ts +15 -0
- package/components/document-builder/src/plugins/paste-handler/filters/removestyleblock.d.ts +15 -0
- package/components/document-builder/src/plugins/paste-handler/filters/removexmlns.d.ts +15 -0
- package/components/document-builder/src/plugins/paste-handler/filters/replacemsfootnotes.d.ts +54 -0
- package/components/document-builder/src/plugins/paste-handler/filters/replacetabswithinprewithspaces.d.ts +24 -0
- package/components/document-builder/src/plugins/paste-handler/filters/space.d.ts +27 -0
- package/components/document-builder/src/plugins/paste-handler/filters/table.d.ts +16 -0
- package/components/document-builder/src/plugins/paste-handler/filters/utils.d.ts +25 -0
- package/components/document-builder/src/plugins/paste-handler/index.d.ts +35 -0
- package/components/document-builder/src/plugins/paste-handler/normalizers/googledocsnormalizer.d.ts +31 -0
- package/components/document-builder/src/plugins/paste-handler/normalizers/googlesheetsnormalizer.d.ts +31 -0
- package/components/document-builder/src/plugins/paste-handler/normalizers/mswordnormalizer.d.ts +29 -0
- package/components/document-builder/src/plugins/paste-handler/types.d.ts +30 -0
- package/components/document-builder/src/plugins/table-custom/index.d.ts +34 -0
- package/components/document-builder/src/plugins/variable/variable.plugin.d.ts +51 -0
- package/components/editor/index.d.ts +3 -0
- package/components/editor/src/configurations/editor.configuration.d.ts +12 -0
- package/components/editor/src/configurations/index.d.ts +1 -0
- package/components/editor/src/editor.component.d.ts +52 -0
- package/components/editor/src/models/editor.model.d.ts +10 -0
- package/components/editor/src/models/image-upload.plugin.model.d.ts +51 -0
- package/components/editor/src/models/index.d.ts +2 -0
- package/components/editor/src/plugins/image-upload/image-upload.plugin.d.ts +22 -0
- package/components/editor/src/plugins/image-upload/utils/batch.utils.d.ts +14 -0
- package/components/editor/src/plugins/image-upload/utils/index.d.ts +3 -0
- package/components/editor/src/plugins/image-upload/utils/style.utils.d.ts +3 -0
- package/components/editor/src/plugins/image-upload/utils/validate.utils.d.ts +4 -0
- package/components/form-generic/index.d.ts +4 -0
- package/components/form-generic/src/components/form-builder/components/attribute-expression/attribute-expression.component.d.ts +23 -0
- package/components/form-generic/src/components/form-builder/components/attribute-input/attribute-input.component.d.ts +17 -0
- package/components/form-generic/src/components/form-builder/components/attribute-input-number/attribute-input-number.component.d.ts +14 -0
- package/components/form-generic/src/components/form-builder/components/attribute-parameter/attribute-parameter.component.d.ts +33 -0
- package/components/form-generic/src/components/form-builder/components/attribute-select/attribute-select.component.d.ts +26 -0
- package/components/form-generic/src/components/form-builder/components/attribute-selection/attribute-selection.component.d.ts +27 -0
- package/components/form-generic/src/components/form-builder/components/attribute-selection/components/build-queries/build-queries.component.d.ts +35 -0
- package/components/form-generic/src/components/form-builder/components/attribute-selection/components/build-variables/build-variables.component.d.ts +41 -0
- package/components/form-generic/src/components/form-builder/components/attribute-switch/attribute-switch.component.d.ts +14 -0
- package/components/form-generic/src/components/form-builder/components/attribute-table/attribute-table.component.d.ts +36 -0
- package/components/form-generic/src/components/form-builder/components/attribute-template/attribute-template.component.d.ts +15 -0
- package/components/form-generic/src/components/form-builder/components/attribute-textarea/attribute-textarea.component.d.ts +17 -0
- package/components/form-generic/src/components/form-builder/components/checkbox/attribute/checkbox-attribute.component.d.ts +21 -0
- package/components/form-generic/src/components/form-builder/components/checkbox/control/checkbox-control.component.d.ts +8 -0
- package/components/form-generic/src/components/form-builder/components/checkbox/index.d.ts +2 -0
- package/components/form-generic/src/components/form-builder/components/chip-calendar/attribute/chip-calendar-attribute.component.d.ts +22 -0
- package/components/form-generic/src/components/form-builder/components/chip-calendar/control/chip-calendar-control.component.d.ts +16 -0
- package/components/form-generic/src/components/form-builder/components/chip-calendar/index.d.ts +2 -0
- package/components/form-generic/src/components/form-builder/components/chip-string/attribute/chip-string-attribute.component.d.ts +22 -0
- package/components/form-generic/src/components/form-builder/components/chip-string/control/chip-string-control.component.d.ts +16 -0
- package/components/form-generic/src/components/form-builder/components/chip-string/index.d.ts +2 -0
- package/components/form-generic/src/components/form-builder/components/configure-validation/configure-validation.component.d.ts +31 -0
- package/components/form-generic/src/components/form-builder/components/datetime/attribute/datetime-attribute.component.d.ts +21 -0
- package/components/form-generic/src/components/form-builder/components/datetime/control/datetime-control.component.d.ts +18 -0
- package/components/form-generic/src/components/form-builder/components/datetime/index.d.ts +2 -0
- package/components/form-generic/src/components/form-builder/components/expression-builder/expression-builder.component.d.ts +47 -0
- package/components/form-generic/src/components/form-builder/components/group/attribute/group-attribute.component.d.ts +23 -0
- package/components/form-generic/src/components/form-builder/components/group/index.d.ts +1 -0
- package/components/form-generic/src/components/form-builder/components/html/attribute/components/build-queries/build-queries.component.d.ts +35 -0
- package/components/form-generic/src/components/form-builder/components/html/attribute/html-attribute.component.d.ts +30 -0
- package/components/form-generic/src/components/form-builder/components/html/control/html-control.component.d.ts +20 -0
- package/components/form-generic/src/components/form-builder/components/html/index.d.ts +2 -0
- package/components/form-generic/src/components/form-builder/components/index.d.ts +13 -0
- package/components/form-generic/src/components/form-builder/components/number/attribute/number-attribute.component.d.ts +22 -0
- package/components/form-generic/src/components/form-builder/components/number/control/number-control.component.d.ts +17 -0
- package/components/form-generic/src/components/form-builder/components/number/index.d.ts +2 -0
- package/components/form-generic/src/components/form-builder/components/radio/attribute/radio-attribute.component.d.ts +22 -0
- package/components/form-generic/src/components/form-builder/components/radio/control/radio-control.component.d.ts +16 -0
- package/components/form-generic/src/components/form-builder/components/radio/index.d.ts +2 -0
- package/components/form-generic/src/components/form-builder/components/select/attribute/select-attribute.component.d.ts +22 -0
- package/components/form-generic/src/components/form-builder/components/select/control/select-control.component.d.ts +16 -0
- package/components/form-generic/src/components/form-builder/components/select/index.d.ts +2 -0
- package/components/form-generic/src/components/form-builder/components/table/attribute/table-attribute.component.d.ts +22 -0
- package/components/form-generic/src/components/form-builder/components/table/control/table-control.component.d.ts +19 -0
- package/components/form-generic/src/components/form-builder/components/table/index.d.ts +2 -0
- package/components/form-generic/src/components/form-builder/components/textarea/attribute/textarea-attribute.component.d.ts +21 -0
- package/components/form-generic/src/components/form-builder/components/textarea/control/textarea-control.component.d.ts +16 -0
- package/components/form-generic/src/components/form-builder/components/textarea/index.d.ts +2 -0
- package/components/form-generic/src/components/form-builder/components/textfield/attribute/textfield-attribute.component.d.ts +21 -0
- package/components/form-generic/src/components/form-builder/components/textfield/control/textfield-control.component.d.ts +16 -0
- package/components/form-generic/src/components/form-builder/components/textfield/index.d.ts +2 -0
- package/components/form-generic/src/components/form-builder/components/upload/attribute/upload-attribute.component.d.ts +27 -0
- package/components/form-generic/src/components/form-builder/components/upload/control/upload-control.component.d.ts +16 -0
- package/components/form-generic/src/components/form-builder/components/upload/index.d.ts +2 -0
- package/components/form-generic/src/components/form-builder/form-builder.component.d.ts +120 -0
- package/components/form-generic/src/components/form-builder/services/builder.service.d.ts +11 -0
- package/components/form-generic/src/components/form-builder/services/index.d.ts +1 -0
- package/components/form-generic/src/components/form-render/components/index.d.ts +2 -0
- package/components/form-generic/src/components/form-render/components/item/components/chip-calendar/chip-calendar.component.d.ts +30 -0
- package/components/form-generic/src/components/form-render/components/item/components/chip-string/chip-string.component.d.ts +30 -0
- package/components/form-generic/src/components/form-render/components/item/components/datetime/datetime.component.d.ts +34 -0
- package/components/form-generic/src/components/form-render/components/item/components/html/html.component.d.ts +32 -0
- package/components/form-generic/src/components/form-render/components/item/components/index.d.ts +11 -0
- package/components/form-generic/src/components/form-render/components/item/components/number/number.component.d.ts +30 -0
- package/components/form-generic/src/components/form-render/components/item/components/radio/radio.component.d.ts +38 -0
- package/components/form-generic/src/components/form-render/components/item/components/select/select.component.d.ts +43 -0
- package/components/form-generic/src/components/form-render/components/item/components/table/table.component.d.ts +51 -0
- package/components/form-generic/src/components/form-render/components/item/components/textarea/textarea.component.d.ts +30 -0
- package/components/form-generic/src/components/form-render/components/item/components/textfield/textfield.component.d.ts +33 -0
- package/components/form-generic/src/components/form-render/components/item/components/upload/upload.component.d.ts +36 -0
- package/components/form-generic/src/components/form-render/components/item/item.component.d.ts +32 -0
- package/components/form-generic/src/components/form-render/components/variable/variable.component.d.ts +22 -0
- package/components/form-generic/src/components/form-render/form-render.component.d.ts +39 -0
- package/components/form-generic/src/components/index.d.ts +3 -0
- package/components/form-generic/src/components/sd-feel-expression/sd-feel-expression.component.d.ts +43 -0
- package/components/form-generic/src/configurations/form-generic.configuration.d.ts +6 -0
- package/components/form-generic/src/configurations/form.configuration.d.ts +12 -0
- package/components/form-generic/src/configurations/index.d.ts +2 -0
- package/components/form-generic/src/models/form-generic-component.model.d.ts +318 -0
- package/components/form-generic/src/models/form-generic-definition-html.model.d.ts +28 -0
- package/components/form-generic/src/models/form-generic-definition-selection.model.d.ts +49 -0
- package/components/form-generic/src/models/form-generic-definition-table.model.d.ts +6 -0
- package/components/form-generic/src/models/form-generic-expression.model.d.ts +74 -0
- package/components/form-generic/src/models/form-generic-template.model.d.ts +6 -0
- package/components/form-generic/src/models/form-generic-validation.model.d.ts +30 -0
- package/components/form-generic/src/models/form-generic.model.d.ts +7 -0
- package/components/form-generic/src/models/form-render/form-render-args.model.d.ts +7 -0
- package/components/form-generic/src/models/form-render/form-render-entity.model.d.ts +3 -0
- package/components/form-generic/src/models/form-render/index.d.ts +2 -0
- package/components/form-generic/src/models/index.d.ts +8 -0
- package/components/form-generic/src/pipes/component-viewed.pipe.d.ts +14 -0
- package/components/form-generic/src/pipes/expression-feel.pipe.d.ts +10 -0
- package/components/form-generic/src/pipes/expression-query.pipe.d.ts +10 -0
- package/components/form-generic/src/pipes/expression-view.pipe.d.ts +8 -0
- package/components/form-generic/src/pipes/html.pipe.d.ts +11 -0
- package/components/form-generic/src/pipes/hyperlink.pipe.d.ts +8 -0
- package/components/form-generic/src/pipes/index.d.ts +7 -0
- package/components/form-generic/src/pipes/when-expression.pipe.d.ts +13 -0
- package/components/form-generic/src/services/form-generic.service.d.ts +26 -0
- package/components/form-generic/src/services/form-render.service.d.ts +10 -0
- package/components/form-generic/src/services/index.d.ts +2 -0
- package/components/history/index.d.ts +1 -0
- package/components/history/models/history.model.d.ts +13 -0
- package/components/history/pipes/view-date.pipe.d.ts +8 -0
- package/components/history/src/history.component.d.ts +7 -0
- package/components/import-excel/index.d.ts +2 -0
- package/components/import-excel/src/import-excel.component.d.ts +47 -0
- package/components/import-excel/src/import-excel.model.d.ts +102 -0
- package/components/import-excel/src/pipes/columm-hidden.pipe.d.ts +10 -0
- package/components/import-excel/src/pipes/column-transform.pipe.d.ts +11 -0
- package/components/index.d.ts +23 -0
- package/components/inform/index.d.ts +2 -0
- package/components/inform/src/inform-action.directive.d.ts +9 -0
- package/components/inform/src/inform.component.d.ts +59 -0
- package/components/mini-editor/index.d.ts +2 -0
- package/components/mini-editor/src/mini-editor.component.d.ts +91 -0
- package/components/mini-editor/src/mini-editor.model.d.ts +44 -0
- package/components/modal/index.d.ts +1 -0
- package/components/modal/src/modal.component.d.ts +30 -0
- package/components/operator/index.d.ts +1 -0
- package/components/operator/src/operator.component.d.ts +34 -0
- package/components/preview/index.d.ts +4 -0
- package/components/preview/src/preview-image/preview-image.component.d.ts +88 -0
- package/components/preview/src/preview-image/preview-image.types.d.ts +53 -0
- package/components/preview/src/preview-pdf/preview-pdf.component.d.ts +186 -0
- package/components/preview/src/preview-pdf/preview-pdf.types.d.ts +84 -0
- package/components/query-bar/index.d.ts +2 -0
- package/components/query-bar/src/components/actions-bar/actions-bar.component.d.ts +28 -0
- package/components/query-bar/src/components/build-chip/build-chip.component.d.ts +67 -0
- package/components/query-bar/src/components/chip-popover/chip-popover.component.d.ts +73 -0
- package/components/query-bar/src/components/field-picker/field-picker.component.d.ts +37 -0
- package/components/query-bar/src/components/inline-chip/inline-chip.component.d.ts +87 -0
- package/components/query-bar/src/components/inline-value-chip/inline-value-chip.component.d.ts +71 -0
- package/components/query-bar/src/components/popover-chip/popover-chip.component.d.ts +35 -0
- package/components/query-bar/src/components/saved-filters-menu/saved-filters-menu.component.d.ts +39 -0
- package/components/query-bar/src/query-bar.component.d.ts +137 -0
- package/components/query-bar/src/query-bar.model.d.ts +136 -0
- package/components/query-builder/index.d.ts +1 -0
- package/components/query-builder/src/query-builder.component.d.ts +26 -0
- package/components/quick-action/index.d.ts +1 -0
- package/components/quick-action/src/quick-action.component.d.ts +9 -0
- package/components/section/index.d.ts +2 -0
- package/components/section/src/section-item/section-item.component.d.ts +7 -0
- package/components/section/src/section.component.d.ts +18 -0
- package/components/side-drawer/index.d.ts +1 -0
- package/components/side-drawer/src/side-drawer.component.d.ts +30 -0
- package/components/splitter/index.d.ts +3 -0
- package/components/splitter/src/splitter-handle/splitter-handle.component.d.ts +24 -0
- package/components/splitter/src/splitter-panel/splitter-panel.component.d.ts +16 -0
- package/components/splitter/src/splitter-state.service.d.ts +26 -0
- package/components/splitter/src/splitter.component.d.ts +28 -0
- package/components/splitter/src/splitter.models.d.ts +23 -0
- package/components/stepper/index.d.ts +2 -0
- package/components/stepper/src/step.component.d.ts +17 -0
- package/components/stepper/src/stepper.component.d.ts +33 -0
- package/components/tab/index.d.ts +2 -0
- package/components/tab/src/tab-group.component.d.ts +37 -0
- package/components/tab/src/tab.component.d.ts +13 -0
- package/components/tab-router/index.d.ts +4 -0
- package/components/tab-router/src/actions/tab-router.action.d.ts +5 -0
- package/components/tab-router/src/components/tab-router-item/tab-router-item.component.d.ts +22 -0
- package/components/tab-router/src/components/tab-router-nav/tab-router-nav.component.d.ts +16 -0
- package/components/tab-router/src/components/tab-router-outlet/tab-router-outlet.component.d.ts +15 -0
- package/components/tab-router/src/decorators/tab.decorator.d.ts +16 -0
- package/components/tab-router/src/events/tab-router.event.d.ts +11 -0
- package/components/tab-router/src/models/index.d.ts +1 -0
- package/components/tab-router/src/models/tab-router.model.d.ts +21 -0
- package/components/tab-router/src/pipes/tab-info.pipe.d.ts +11 -0
- package/components/tab-router/src/services/tab-decorator.service.d.ts +9 -0
- package/components/tab-router/src/services/tab-router.service.d.ts +27 -0
- package/components/table/index.d.ts +11 -0
- package/components/table/src/components/column-title/column-title.component.d.ts +10 -0
- package/components/table/src/components/command/desktop-command.component.d.ts +14 -0
- package/components/table/src/components/command/pipes/command.pipe.d.ts +30 -0
- package/components/table/src/components/command/pipes/filter.pipe.d.ts +35 -0
- package/components/table/src/components/config/config.component.d.ts +25 -0
- package/components/table/src/components/desktop-cell/desktop-cell.component.d.ts +24 -0
- package/components/table/src/components/desktop-cell/view/view.component.d.ts +24 -0
- package/components/table/src/components/filter/column-filter/column-filter.component.d.ts +32 -0
- package/components/table/src/components/filter/external-filter/external-filter.component.d.ts +27 -0
- package/components/table/src/components/filter/index.d.ts +3 -0
- package/components/table/src/components/filter/mobile-filter/mobile-filter.component.d.ts +42 -0
- package/components/table/src/components/index.d.ts +3 -0
- package/components/table/src/components/popup-export/popup-export.component.d.ts +51 -0
- package/components/table/src/components/selector-action/action-filter.pipe.d.ts +34 -0
- package/components/table/src/components/selector-action/selector-action.component.d.ts +16 -0
- package/components/table/src/configurations/index.d.ts +1 -0
- package/components/table/src/configurations/table.configuration.d.ts +35 -0
- package/components/table/src/directives/index.d.ts +6 -0
- package/components/table/src/directives/sd-column-resize.directive.d.ts +13 -0
- package/components/table/src/directives/sd-table-cell-def.directive.d.ts +16 -0
- package/components/table/src/directives/sd-table-column-filter-def.directive.d.ts +16 -0
- package/components/table/src/directives/sd-table-expand-def.directive.d.ts +13 -0
- package/components/table/src/directives/sd-table-filter-def.directive.d.ts +14 -0
- package/components/table/src/directives/sd-table-footer-def.directive.d.ts +16 -0
- package/components/table/src/directives/sd-table-group-def.directive.d.ts +44 -0
- package/components/table/src/directives/sd-table-title-def.directive.d.ts +14 -0
- package/components/table/src/directives/sticky-shadow.directive.d.ts +17 -0
- package/components/table/src/models/index.d.ts +5 -0
- package/components/table/src/models/table-column.model.d.ts +119 -0
- package/components/table/src/models/table-command.model.d.ts +25 -0
- package/components/table/src/models/table-item.model.d.ts +65 -0
- package/components/table/src/models/table-option-config.model.d.ts +42 -0
- package/components/table/src/models/table-option-expand.model.d.ts +6 -0
- package/components/table/src/models/table-option-export.model.d.ts +42 -0
- package/components/table/src/models/table-option-group.model.d.ts +21 -0
- package/components/table/src/models/table-option-paginate.model.d.ts +7 -0
- package/components/table/src/models/table-option-reload.model.d.ts +7 -0
- package/components/table/src/models/table-option-selector.model.d.ts +105 -0
- package/components/table/src/models/table-option-sort.model.d.ts +3 -0
- package/components/table/src/models/table-option-style.model.d.ts +11 -0
- package/components/table/src/models/table-option-tree.model.d.ts +12 -0
- package/components/table/src/models/table-option.model.d.ts +181 -0
- package/components/table/src/pipes/filter-values.pipe.d.ts +8 -0
- package/components/table/src/pipes/index.d.ts +2 -0
- package/components/table/src/pipes/sd-group.pipe.d.ts +23 -0
- package/components/table/src/pipes/sd-tree.pipe.d.ts +9 -0
- package/components/table/src/pipes/selection-disabled.pipe.d.ts +9 -0
- package/components/table/src/pipes/selection-visible-select-all.pipe.d.ts +9 -0
- package/components/table/src/pipes/selection-visible.pipe.d.ts +9 -0
- package/components/table/src/services/column-width.util.d.ts +7 -0
- package/components/table/src/services/config.service.d.ts +21 -0
- package/components/table/src/services/index.d.ts +3 -0
- package/components/table/src/services/table-export/table-export.service.d.ts +26 -0
- package/components/table/src/services/table-filter/table-filter.model.d.ts +150 -0
- package/components/table/src/services/table-filter/table-filter.service.d.ts +20 -0
- package/components/table/src/services/table-format/table-format.service.d.ts +16 -0
- package/components/table/src/services/tree/tree.util.d.ts +14 -0
- package/components/table/src/table.component.d.ts +137 -0
- package/components/upload-file/index.d.ts +2 -0
- package/components/upload-file/src/components/preview/preview.component.d.ts +23 -0
- package/components/upload-file/src/configurations/index.d.ts +1 -0
- package/components/upload-file/src/configurations/upload-file.configuration.d.ts +50 -0
- package/components/upload-file/src/pipes/document.pipe.d.ts +8 -0
- package/components/upload-file/src/pipes/image.pipe.d.ts +8 -0
- package/components/upload-file/src/pipes/index.d.ts +2 -0
- package/components/upload-file/src/services/index.d.ts +2 -0
- package/components/upload-file/src/services/upload-file.model.d.ts +12 -0
- package/components/upload-file/src/services/upload-file.service.d.ts +10 -0
- package/components/upload-file/src/upload-file.component.d.ts +85 -0
- package/components/view/index.d.ts +1 -0
- package/components/view/src/view.component.d.ts +17 -0
- package/configurations/index.d.ts +1 -0
- package/configurations/src/sd-core.configuration.d.ts +10 -0
- package/directives/index.d.ts +6 -0
- package/directives/src/sd-desktop.directive.d.ts +7 -0
- package/directives/src/sd-hover-copy.directive.d.ts +16 -0
- package/directives/src/sd-href.directive.d.ts +9 -0
- package/directives/src/sd-mobile.directive.d.ts +7 -0
- package/directives/src/sd-scroll.directive.d.ts +14 -0
- package/directives/src/sd-tooltip.directive.d.ts +26 -0
- package/fesm2022/sdcorejs-angular-components-anchor.mjs +197 -0
- package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs +723 -0
- package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-avatar.mjs +103 -0
- package/fesm2022/sdcorejs-angular-components-avatar.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-badge.mjs +138 -0
- package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-base.mjs +23 -0
- package/fesm2022/sdcorejs-angular-components-base.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-button.mjs +118 -0
- package/fesm2022/sdcorejs-angular-components-button.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-chart.mjs +290 -0
- package/fesm2022/sdcorejs-angular-components-chart.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs +38 -0
- package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-code-editor.mjs +128 -0
- package/fesm2022/sdcorejs-angular-components-code-editor.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs +5053 -0
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-editor.mjs +1079 -0
- package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs +6715 -0
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-history.mjs +51 -0
- package/fesm2022/sdcorejs-angular-components-history.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs +583 -0
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-inform.mjs +190 -0
- package/fesm2022/sdcorejs-angular-components-inform.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-mini-editor.mjs +333 -0
- package/fesm2022/sdcorejs-angular-components-mini-editor.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-modal.mjs +108 -0
- package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-operator.mjs +75 -0
- package/fesm2022/sdcorejs-angular-components-operator.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-preview.mjs +1987 -0
- package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs +1430 -0
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs +83 -0
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-quick-action.mjs +22 -0
- package/fesm2022/sdcorejs-angular-components-quick-action.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-section.mjs +64 -0
- package/fesm2022/sdcorejs-angular-components-section.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +129 -0
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-splitter.mjs +649 -0
- package/fesm2022/sdcorejs-angular-components-splitter.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-stepper.mjs +140 -0
- package/fesm2022/sdcorejs-angular-components-stepper.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs +605 -0
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-tab.mjs +145 -0
- package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-table.mjs +4524 -0
- package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs +868 -0
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-view.mjs +48 -0
- package/fesm2022/sdcorejs-angular-components-view.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components.mjs +28 -0
- package/fesm2022/sdcorejs-angular-components.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-configurations.mjs +10 -0
- package/fesm2022/sdcorejs-angular-configurations.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-directives.mjs +497 -0
- package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +454 -0
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +139 -0
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +364 -0
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-chip.mjs +363 -0
- package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs +354 -0
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-date.mjs +356 -0
- package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs +748 -0
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-directives.mjs +67 -0
- package/fesm2022/sdcorejs-angular-forms-directives.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs +117 -0
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs +438 -0
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-input.mjs +354 -0
- package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-label.mjs +51 -0
- package/fesm2022/sdcorejs-angular-forms-label.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-models.mjs +137 -0
- package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-radio.mjs +190 -0
- package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-select.mjs +593 -0
- package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-switch.mjs +144 -0
- package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs +300 -0
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms.mjs +48 -0
- package/fesm2022/sdcorejs-angular-forms.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-handlers.mjs +67 -0
- package/fesm2022/sdcorejs-angular-handlers.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-i18n.mjs +2592 -0
- package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-interceptors.mjs +166 -0
- package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-models.mjs +6 -0
- package/fesm2022/sdcorejs-angular-models.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-modules-auth.mjs +137 -0
- package/fesm2022/sdcorejs-angular-modules-auth.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-modules-authom.mjs +360 -0
- package/fesm2022/sdcorejs-angular-modules-authom.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-modules-keycloak.mjs +127 -0
- package/fesm2022/sdcorejs-angular-modules-keycloak.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-modules-layout.mjs +1633 -0
- package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-modules-permission.mjs +249 -0
- package/fesm2022/sdcorejs-angular-modules-permission.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-modules.mjs +10 -0
- package/fesm2022/sdcorejs-angular-modules.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-pipes.mjs +149 -0
- package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services-api.mjs +235 -0
- package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services-cache.mjs +161 -0
- package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services-confirm.mjs +208 -0
- package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services-docx.mjs +300 -0
- package/fesm2022/sdcorejs-angular-services-docx.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services-excel.mjs +422 -0
- package/fesm2022/sdcorejs-angular-services-excel.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services-license.mjs +104 -0
- package/fesm2022/sdcorejs-angular-services-license.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services-loading.mjs +92 -0
- package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services-notify.mjs +268 -0
- package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services-storage.mjs +174 -0
- package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services.mjs +13 -0
- package/fesm2022/sdcorejs-angular-services.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-utilities-data-state.mjs +38 -0
- package/fesm2022/sdcorejs-angular-utilities-data-state.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-utilities-extensions.mjs +391 -0
- package/fesm2022/sdcorejs-angular-utilities-extensions.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-utilities-models.mjs +55 -0
- package/fesm2022/sdcorejs-angular-utilities-models.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-utilities.mjs +8 -0
- package/fesm2022/sdcorejs-angular-utilities.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular.mjs +19 -0
- package/fesm2022/sdcorejs-angular.mjs.map +1 -0
- package/forms/autocomplete/index.d.ts +1 -0
- package/forms/autocomplete/src/autocomplete.component.d.ts +93 -0
- package/forms/checkbox/index.d.ts +1 -0
- package/forms/checkbox/src/checkbox.component.d.ts +28 -0
- package/forms/chip/index.d.ts +1 -0
- package/forms/chip/src/chip.component.d.ts +71 -0
- package/forms/chip/src/index.d.ts +2 -0
- package/forms/chip/src/pipes/index.d.ts +1 -0
- package/forms/chip/src/pipes/removable-chip.pipe.d.ts +8 -0
- package/forms/chip-calendar/index.d.ts +1 -0
- package/forms/chip-calendar/src/chip-calendar.component.d.ts +71 -0
- package/forms/chip-calendar/src/pipes/index.d.ts +1 -0
- package/forms/chip-calendar/src/pipes/removable-chip.pipe.d.ts +8 -0
- package/forms/date/index.d.ts +1 -0
- package/forms/date/src/date.component.d.ts +79 -0
- package/forms/date-range/index.d.ts +1 -0
- package/forms/date-range/src/date-range.component.d.ts +81 -0
- package/forms/datetime/index.d.ts +1 -0
- package/forms/datetime/src/datetime.component.d.ts +89 -0
- package/forms/datetime/src/popup/sd-datetime-picker.component.d.ts +37 -0
- package/forms/datetime/src/popup/sd-time-spinner.component.d.ts +41 -0
- package/forms/directives/index.d.ts +4 -0
- package/forms/directives/src/item-def.directive.d.ts +13 -0
- package/forms/directives/src/label-def.directive.d.ts +9 -0
- package/forms/directives/src/suffix-def.directive.d.ts +9 -0
- package/forms/directives/src/view-def.directive.d.ts +14 -0
- package/forms/index.d.ts +17 -0
- package/forms/input/index.d.ts +1 -0
- package/forms/input/src/input.component.d.ts +84 -0
- package/forms/input-color/index.d.ts +1 -0
- package/forms/input-color/src/input-color.component.d.ts +32 -0
- package/forms/input-number/index.d.ts +1 -0
- package/forms/input-number/src/input-number.component.d.ts +95 -0
- package/forms/label/index.d.ts +1 -0
- package/forms/label/src/label.component.d.ts +13 -0
- package/forms/models/index.d.ts +6 -0
- package/forms/models/src/form-control-state.d.ts +23 -0
- package/forms/models/src/sd-custom-validator.model.d.ts +15 -0
- package/forms/models/src/sd-form-control.model.d.ts +21 -0
- package/forms/models/src/sd-form.configuration.d.ts +6 -0
- package/forms/models/src/sd-search.model.d.ts +7 -0
- package/forms/models/src/sd-selection-data.model.d.ts +7 -0
- package/forms/radio/index.d.ts +1 -0
- package/forms/radio/src/radio.component.d.ts +49 -0
- package/forms/select/index.d.ts +1 -0
- package/forms/select/src/select.component.d.ts +93 -0
- package/forms/src/forms.module.d.ts +14 -0
- package/forms/switch/index.d.ts +1 -0
- package/forms/switch/src/switch.component.d.ts +32 -0
- package/forms/textarea/index.d.ts +1 -0
- package/forms/textarea/src/textarea.component.d.ts +65 -0
- package/handlers/global-error.handler.d.ts +9 -0
- package/handlers/index.d.ts +1 -0
- package/i18n/index.d.ts +5 -0
- package/i18n/src/en.d.ts +449 -0
- package/i18n/src/i18n.messages.d.ts +2 -0
- package/i18n/src/i18n.pipe.d.ts +9 -0
- package/i18n/src/i18n.service.d.ts +14 -0
- package/i18n/src/i18n.token.d.ts +1 -0
- package/i18n/src/i18n.types.d.ts +31 -0
- package/i18n/src/ja.d.ts +2 -0
- package/i18n/src/ko.d.ts +2 -0
- package/i18n/src/vi.d.ts +2 -0
- package/i18n/src/zh.d.ts +2 -0
- package/index.d.ts +5 -0
- package/interceptors/index.d.ts +2 -0
- package/interceptors/no-internet/no-internet.interceptor.d.ts +14 -0
- package/interceptors/unauthorized/unauthorized.interceptor.d.ts +12 -0
- package/models/index.d.ts +1 -0
- package/models/src/language.model.d.ts +2 -0
- package/modules/auth/configurations/auth.configuration.d.ts +19 -0
- package/modules/auth/configurations/index.d.ts +1 -0
- package/modules/auth/guards/auth.guard.d.ts +11 -0
- package/modules/auth/guards/index.d.ts +2 -0
- package/modules/auth/guards/portal.guard.d.ts +11 -0
- package/modules/auth/index.d.ts +3 -0
- package/modules/auth/services/auth.model.d.ts +8 -0
- package/modules/auth/services/auth.service.d.ts +17 -0
- package/modules/auth/services/index.d.ts +2 -0
- package/modules/authom/authom.configuration.d.ts +17 -0
- package/modules/authom/authom.interceptor.d.ts +3 -0
- package/modules/authom/authom.module.d.ts +16 -0
- package/modules/authom/authom.service.d.ts +32 -0
- package/modules/authom/index.d.ts +35 -0
- package/modules/index.d.ts +5 -0
- package/modules/keycloak/index.d.ts +4 -0
- package/modules/keycloak/keycloak.configuration.d.ts +11 -0
- package/modules/keycloak/keycloak.interceptor.d.ts +2 -0
- package/modules/keycloak/keycloak.module.d.ts +18 -0
- package/modules/keycloak/keycloak.service.d.ts +14 -0
- package/modules/layout/components/index.d.ts +4 -0
- package/modules/layout/components/layout-main/layout-main.component.d.ts +12 -0
- package/modules/layout/components/page/page.component.d.ts +10 -0
- package/modules/layout/components/sidebar-mobile-v1/components/sidebar/sidebar.component.d.ts +35 -0
- package/modules/layout/components/sidebar-mobile-v1/components/user/user.component.d.ts +24 -0
- package/modules/layout/components/sidebar-mobile-v1/main.component.d.ts +21 -0
- package/modules/layout/components/sidebar-v1/components/sidebar/sidebar.component.d.ts +55 -0
- package/modules/layout/components/sidebar-v1/components/user/user.component.d.ts +22 -0
- package/modules/layout/components/sidebar-v1/main.component.d.ts +24 -0
- package/modules/layout/configurations/index.d.ts +1 -0
- package/modules/layout/configurations/layout.configuration.d.ts +67 -0
- package/modules/layout/index.d.ts +5 -0
- package/modules/layout/layout.module.d.ts +7 -0
- package/modules/layout/layout.routing.d.ts +2 -0
- package/modules/layout/modules/forbidden/forbidden.module.d.ts +8 -0
- package/modules/layout/modules/forbidden/forbidden.routing.d.ts +2 -0
- package/modules/layout/modules/forbidden/index.d.ts +1 -0
- package/modules/layout/modules/forbidden/pages/root/root.component.d.ts +10 -0
- package/modules/layout/modules/home/components/home-page/home-page.component.d.ts +33 -0
- package/modules/layout/modules/home/guards/home-redirect.guard.d.ts +11 -0
- package/modules/layout/modules/home/home.module.d.ts +8 -0
- package/modules/layout/modules/home/home.routing.d.ts +7 -0
- package/modules/layout/modules/home/index.d.ts +1 -0
- package/modules/layout/modules/index.d.ts +3 -0
- package/modules/layout/modules/not-found/index.d.ts +1 -0
- package/modules/layout/modules/not-found/not-found.module.d.ts +8 -0
- package/modules/layout/modules/not-found/not-found.routing.d.ts +2 -0
- package/modules/layout/modules/not-found/pages/root/root.component.d.ts +10 -0
- package/modules/layout/pipes/high-light-search.pipe.d.ts +10 -0
- package/modules/layout/pipes/index.d.ts +3 -0
- package/modules/layout/pipes/menu-focus.pipe.d.ts +10 -0
- package/modules/layout/pipes/menu.pipe.d.ts +13 -0
- package/modules/layout/services/index.d.ts +3 -0
- package/modules/layout/services/layout.service.d.ts +10 -0
- package/modules/layout/services/menu/menu.model.d.ts +24 -0
- package/modules/layout/services/storage/storage.service.d.ts +13 -0
- package/modules/permission/index.d.ts +4 -0
- package/modules/permission/src/configurations/index.d.ts +1 -0
- package/modules/permission/src/configurations/permission.configuration.d.ts +63 -0
- package/modules/permission/src/directives/index.d.ts +1 -0
- package/modules/permission/src/directives/permission.directive.d.ts +9 -0
- package/modules/permission/src/guards/index.d.ts +1 -0
- package/modules/permission/src/guards/permission.guard.d.ts +14 -0
- package/modules/permission/src/services/index.d.ts +1 -0
- package/modules/permission/src/services/permission.service.d.ts +12 -0
- package/package.json +344 -0
- package/pipes/index.d.ts +4 -0
- package/pipes/src/empty.pipe.d.ts +7 -0
- package/pipes/src/format-number.pipe.d.ts +11 -0
- package/pipes/src/safe-html.pipe.d.ts +11 -0
- package/pipes/src/time-different.pipe.d.ts +13 -0
- package/public-api.d.ts +10 -0
- package/services/api/index.d.ts +4 -0
- package/services/api/src/api.model.d.ts +36 -0
- package/services/api/src/api.module.d.ts +6 -0
- package/services/api/src/api.service.d.ts +19 -0
- package/services/api/src/interceptors/api.interceptor.d.ts +9 -0
- package/services/cache/index.d.ts +2 -0
- package/services/cache/src/cache.model.d.ts +30 -0
- package/services/cache/src/cache.service.d.ts +9 -0
- package/services/confirm/index.d.ts +1 -0
- package/services/confirm/src/lib/components/dialog-confirm/dialog-confirm.component.d.ts +46 -0
- package/services/confirm/src/lib/confirm.service.d.ts +55 -0
- package/services/confirm/src/public-api.d.ts +2 -0
- package/services/docx/index.d.ts +1 -0
- package/services/docx/src/lib/docx.model.d.ts +9 -0
- package/services/docx/src/lib/docx.service.d.ts +15 -0
- package/services/docx/src/lib/pandoc-core.d.ts +11 -0
- package/services/docx/src/public-api.d.ts +2 -0
- package/services/excel/index.d.ts +1 -0
- package/services/excel/src/lib/excel.model.d.ts +31 -0
- package/services/excel/src/lib/excel.service.d.ts +19 -0
- package/services/excel/src/public-api.d.ts +2 -0
- package/services/index.d.ts +8 -0
- package/services/license/index.d.ts +1 -0
- package/services/license/src/license.service.d.ts +10 -0
- package/services/loading/index.d.ts +1 -0
- package/services/loading/src/loading.service.d.ts +14 -0
- package/services/notify/index.d.ts +2 -0
- package/services/notify/src/components/toast/toast.component.d.ts +28 -0
- package/services/notify/src/components/toast-container.component.d.ts +8 -0
- package/services/notify/src/notify.model.d.ts +16 -0
- package/services/notify/src/notify.service.d.ts +20 -0
- package/services/storage/index.d.ts +2 -0
- package/services/storage/src/storage.model.d.ts +20 -0
- package/services/storage/src/storage.service.d.ts +10 -0
- package/utilities/data-state/index.d.ts +1 -0
- package/utilities/data-state/src/data-state.d.ts +11 -0
- package/utilities/extensions/index.d.ts +6 -0
- package/utilities/extensions/src/array.extension.d.ts +1 -0
- package/utilities/extensions/src/color.extension.d.ts +5 -0
- package/utilities/extensions/src/date.extension.d.ts +1 -0
- package/utilities/extensions/src/number.extension.d.ts +1 -0
- package/utilities/extensions/src/string.extension.d.ts +50 -0
- package/utilities/extensions/src/utility.extension.d.ts +31 -0
- package/utilities/index.d.ts +3 -0
- package/utilities/models/index.d.ts +12 -0
- package/utilities/models/src/color.model.d.ts +4 -0
- package/utilities/models/src/empty.model.d.ts +4 -0
- package/utilities/models/src/filter.model.d.ts +12 -0
- package/utilities/models/src/icon.model.d.ts +2 -0
- package/utilities/models/src/maybe-async.model.d.ts +10 -0
- package/utilities/models/src/nested-key-of.model.d.ts +4 -0
- package/utilities/models/src/operator.model.d.ts +13 -0
- package/utilities/models/src/order.model.d.ts +4 -0
- package/utilities/models/src/paging.model.d.ts +8 -0
- package/utilities/models/src/pattern.model.d.ts +21 -0
- package/utilities/models/src/size.model.d.ts +4 -0
- package/utilities/models/src/unwrap-signal.model.d.ts +6 -0
|
@@ -0,0 +1,583 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Pipe, Injectable, EventEmitter, inject, Output, ViewChild, Input, Component } from '@angular/core';
|
|
3
|
+
import * as i7 from '@angular/material/paginator';
|
|
4
|
+
import { MatPaginatorModule, MatPaginator } from '@angular/material/paginator';
|
|
5
|
+
import { Subscription } from 'rxjs';
|
|
6
|
+
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
7
|
+
import * as i6 from '@angular/material/tooltip';
|
|
8
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
9
|
+
import * as i5 from '@angular/common';
|
|
10
|
+
import { CommonModule } from '@angular/common';
|
|
11
|
+
import { FormsModule } from '@angular/forms';
|
|
12
|
+
import { SdButton } from '@sdcorejs/angular/components/button';
|
|
13
|
+
import * as i8 from '@angular/material/icon';
|
|
14
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
15
|
+
import * as i9 from '@angular/material/menu';
|
|
16
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
17
|
+
import { SdModal } from '@sdcorejs/angular/components/modal';
|
|
18
|
+
import { DateUtilities, NumberUtilities } from '@sdcorejs/angular/utilities';
|
|
19
|
+
import * as i1 from '@angular/platform-browser';
|
|
20
|
+
import { MatProgressSpinner } from '@angular/material/progress-spinner';
|
|
21
|
+
import { SdBadge } from '@sdcorejs/angular/components/badge';
|
|
22
|
+
import { I18nService, TranslatePipe } from '@sdcorejs/angular/i18n';
|
|
23
|
+
import * as i1$1 from '@sdcorejs/angular/services/excel';
|
|
24
|
+
import * as i2 from '@sdcorejs/angular/services/notify';
|
|
25
|
+
import * as i4 from '@sdcorejs/angular/services/loading';
|
|
26
|
+
|
|
27
|
+
// export type ExcelItem<T> = {
|
|
28
|
+
// origin?: T;
|
|
29
|
+
// excelIndex?: number;
|
|
30
|
+
// validation: SdUploadExcelValidation;
|
|
31
|
+
// } & T;
|
|
32
|
+
|
|
33
|
+
class ColumnHiddenPipe {
|
|
34
|
+
constructor() { }
|
|
35
|
+
transform(column) {
|
|
36
|
+
if (column.hidden === undefined) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
if (typeof (column.hidden) === 'boolean') {
|
|
40
|
+
return !column.hidden;
|
|
41
|
+
}
|
|
42
|
+
if (typeof (column.hidden) === 'function') {
|
|
43
|
+
return !column.hidden();
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: ColumnHiddenPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
48
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.21", ngImport: i0, type: ColumnHiddenPipe, isStandalone: true, name: "columnHidden" });
|
|
49
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: ColumnHiddenPipe });
|
|
50
|
+
}
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: ColumnHiddenPipe, decorators: [{
|
|
52
|
+
type: Pipe,
|
|
53
|
+
args: [{
|
|
54
|
+
name: 'columnHidden'
|
|
55
|
+
}]
|
|
56
|
+
}, {
|
|
57
|
+
type: Injectable
|
|
58
|
+
}], ctorParameters: () => [] });
|
|
59
|
+
|
|
60
|
+
class ColumnTransformPipe {
|
|
61
|
+
sanitizer;
|
|
62
|
+
constructor(sanitizer) {
|
|
63
|
+
this.sanitizer = sanitizer;
|
|
64
|
+
}
|
|
65
|
+
// Chuyển thành async để hỗ trợ Promise từ bên ngoài
|
|
66
|
+
async transform(item, column) {
|
|
67
|
+
const { type, transform, field } = column;
|
|
68
|
+
const value = item.data[field];
|
|
69
|
+
// 1. Ưu tiên hiển thị dữ liệu gốc nếu có lỗi
|
|
70
|
+
if (item.meta.error[field]) {
|
|
71
|
+
return item.meta.origin[field] ?? value ?? '';
|
|
72
|
+
}
|
|
73
|
+
// 2. Custom Transform (Hỗ trợ cả Sync và Async)
|
|
74
|
+
if (transform) {
|
|
75
|
+
// await sẽ hoạt động đúng dù transform trả về value thường hay Promise
|
|
76
|
+
const result = await transform(item.data, value);
|
|
77
|
+
return result ?? '';
|
|
78
|
+
}
|
|
79
|
+
// 3. Xử lý logic hiển thị
|
|
80
|
+
switch (type) {
|
|
81
|
+
case 'number':
|
|
82
|
+
return NumberUtilities.toVN(value) ?? '';
|
|
83
|
+
case 'bool':
|
|
84
|
+
if (typeof value === 'boolean') {
|
|
85
|
+
const html = `<div class="text-center"><input type="checkbox" ${value ? 'checked' : ''} disabled></div>`;
|
|
86
|
+
// Bắt buộc bypass security để hiển thị được input checkbox
|
|
87
|
+
return this.sanitizer.bypassSecurityTrustHtml(html);
|
|
88
|
+
}
|
|
89
|
+
return '';
|
|
90
|
+
case 'date':
|
|
91
|
+
return DateUtilities.toFormat(value, column.format || 'dd/MM/yyyy') ?? '';
|
|
92
|
+
case 'datetime':
|
|
93
|
+
return DateUtilities.toFormat(value, column.format || 'dd/MM/yyyy HH:mm') ?? '';
|
|
94
|
+
default:
|
|
95
|
+
return value ?? '';
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: ColumnTransformPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
99
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.21", ngImport: i0, type: ColumnTransformPipe, isStandalone: true, name: "columnTransform" });
|
|
100
|
+
}
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: ColumnTransformPipe, decorators: [{
|
|
102
|
+
type: Pipe,
|
|
103
|
+
args: [{
|
|
104
|
+
name: 'columnTransform',
|
|
105
|
+
standalone: true,
|
|
106
|
+
}]
|
|
107
|
+
}], ctorParameters: () => [{ type: i1.DomSanitizer }] });
|
|
108
|
+
|
|
109
|
+
class SdImportExcel {
|
|
110
|
+
ref;
|
|
111
|
+
excelService;
|
|
112
|
+
notifyService;
|
|
113
|
+
columnHiddenPipe;
|
|
114
|
+
loadingService;
|
|
115
|
+
option;
|
|
116
|
+
modal;
|
|
117
|
+
excelItems = [];
|
|
118
|
+
// originItems: SdExcelItem[] = [];
|
|
119
|
+
hasDescription = false;
|
|
120
|
+
showing = 'ALL';
|
|
121
|
+
filteredItems = [];
|
|
122
|
+
viewItems = [];
|
|
123
|
+
numberOfSuccess = 0;
|
|
124
|
+
numberOfError = 0;
|
|
125
|
+
numberOfWarning = 0;
|
|
126
|
+
file;
|
|
127
|
+
#paginator;
|
|
128
|
+
#paginatorSub;
|
|
129
|
+
set paginator(paginator) {
|
|
130
|
+
if (paginator && this.#paginator !== paginator) {
|
|
131
|
+
this.#paginator = paginator;
|
|
132
|
+
this.#paginatorSub?.unsubscribe(); // Clear cũ
|
|
133
|
+
this.#paginatorSub = paginator.page.subscribe(this.#reload);
|
|
134
|
+
this.#subscription.add(this.#paginatorSub);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
#subscription = new Subscription();
|
|
138
|
+
uploading = false;
|
|
139
|
+
isUploaded = false;
|
|
140
|
+
isDownloadTemplate = false;
|
|
141
|
+
sdClosed = new EventEmitter();
|
|
142
|
+
#i18n = inject(I18nService);
|
|
143
|
+
constructor(ref, excelService, notifyService, columnHiddenPipe, loadingService) {
|
|
144
|
+
this.ref = ref;
|
|
145
|
+
this.excelService = excelService;
|
|
146
|
+
this.notifyService = notifyService;
|
|
147
|
+
this.columnHiddenPipe = columnHiddenPipe;
|
|
148
|
+
this.loadingService = loadingService;
|
|
149
|
+
}
|
|
150
|
+
ngOnInit() {
|
|
151
|
+
this.isUploaded = false;
|
|
152
|
+
}
|
|
153
|
+
ngOnDestroy() {
|
|
154
|
+
this.#subscription.unsubscribe();
|
|
155
|
+
}
|
|
156
|
+
open = () => {
|
|
157
|
+
this.#reset();
|
|
158
|
+
this.modal.open();
|
|
159
|
+
};
|
|
160
|
+
close = () => {
|
|
161
|
+
this.modal.close();
|
|
162
|
+
};
|
|
163
|
+
#reset = () => {
|
|
164
|
+
this.excelItems = [];
|
|
165
|
+
this.filteredItems = [];
|
|
166
|
+
this.viewItems = [];
|
|
167
|
+
this.numberOfSuccess = 0;
|
|
168
|
+
this.numberOfError = 0;
|
|
169
|
+
this.numberOfWarning = 0;
|
|
170
|
+
this.showing = 'ALL';
|
|
171
|
+
};
|
|
172
|
+
#reload = () => {
|
|
173
|
+
const pageIndex = this.#paginator.pageIndex;
|
|
174
|
+
const pageSize = this.#paginator.pageSize;
|
|
175
|
+
this.filteredItems = this.excelItems.filter(item => {
|
|
176
|
+
const { errorMessages, warningMessages } = item.meta;
|
|
177
|
+
if (this.showing === 'SUCCESS') {
|
|
178
|
+
return !errorMessages.length && !warningMessages.length;
|
|
179
|
+
}
|
|
180
|
+
else if (this.showing === 'WARNING') {
|
|
181
|
+
return !!warningMessages.length && !errorMessages.length;
|
|
182
|
+
}
|
|
183
|
+
else if (this.showing === 'ERROR') {
|
|
184
|
+
return !!errorMessages.length;
|
|
185
|
+
}
|
|
186
|
+
return true;
|
|
187
|
+
});
|
|
188
|
+
this.viewItems = this.filteredItems.filter((item, index) => index >= pageIndex * pageSize && index < (pageIndex + 1) * pageSize);
|
|
189
|
+
this.numberOfSuccess = this.excelItems.filter(this.#filterSuccess).length;
|
|
190
|
+
this.numberOfError = this.excelItems.filter(this.#filterError).length;
|
|
191
|
+
this.numberOfWarning = this.excelItems.filter(this.#filterWarning).length;
|
|
192
|
+
};
|
|
193
|
+
#filterError = (item) => !!item.meta.errorMessages.length;
|
|
194
|
+
#filterWarning = (item) => item.meta.warningMessages.length && !item.meta.errorMessages.length;
|
|
195
|
+
#filterSuccess = (item) => !item.meta.errorMessages.length && !item.meta.warningMessages.length;
|
|
196
|
+
upload = async () => {
|
|
197
|
+
try {
|
|
198
|
+
const { transform, validateItem, validateItems } = this.option;
|
|
199
|
+
const { items, file } = await this.excelService.upload();
|
|
200
|
+
this.hasDescription = this.option.columns.some(e => !!e.description);
|
|
201
|
+
const offset = this.hasDescription ? 2 : 1;
|
|
202
|
+
items.splice(0, offset);
|
|
203
|
+
if (items.length === 0) {
|
|
204
|
+
this.notifyService.warning(this.#i18n.t('core.component.import-excel.no-data-in-file'));
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
const limit = this.option.limit || 1000;
|
|
208
|
+
if (items.length > limit) {
|
|
209
|
+
this.notifyService.warning(this.#i18n.t('core.component.import-excel.row-limit', { limit }));
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
this.#reset();
|
|
213
|
+
this.excelItems = items.map((data, idx) => ({
|
|
214
|
+
data,
|
|
215
|
+
meta: {
|
|
216
|
+
excelIndex: idx + (this.hasDescription ? 4 : 3),
|
|
217
|
+
origin: { ...data },
|
|
218
|
+
error: {},
|
|
219
|
+
warning: {},
|
|
220
|
+
errorMessages: [],
|
|
221
|
+
warningMessages: [],
|
|
222
|
+
},
|
|
223
|
+
}));
|
|
224
|
+
if (transform) {
|
|
225
|
+
const mappedItems = transform(this.excelItems);
|
|
226
|
+
if (mappedItems instanceof Promise) {
|
|
227
|
+
this.uploading = true;
|
|
228
|
+
this.excelItems = await mappedItems.finally(() => (this.uploading = false));
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
this.excelItems = mappedItems || this.excelItems;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
this.file = file;
|
|
235
|
+
this.loadingService.start();
|
|
236
|
+
const validatePromises = this.excelItems.map((item, idx) => this.#validate(item, idx));
|
|
237
|
+
await Promise.all(validatePromises);
|
|
238
|
+
// Nếu không có error thì tiếp tục validate từ option validate truyền vào
|
|
239
|
+
if (!this.excelItems.some(this.#filterError) && validateItems) {
|
|
240
|
+
const results = await validateItems(this.excelItems.map(e => e.data));
|
|
241
|
+
results
|
|
242
|
+
.filter(result => result.idx >= 0)
|
|
243
|
+
.forEach(result => {
|
|
244
|
+
if (result?.errorMessage) {
|
|
245
|
+
this.excelItems[result.idx].meta.errorMessages.push(result.errorMessage);
|
|
246
|
+
}
|
|
247
|
+
if (result?.warningMessage) {
|
|
248
|
+
this.excelItems[result.idx].meta.warningMessages.push(result.warningMessage);
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
this.#paginator.pageIndex = 0;
|
|
253
|
+
this.#reload();
|
|
254
|
+
this.ref.detectChanges();
|
|
255
|
+
this.isUploaded = false;
|
|
256
|
+
}
|
|
257
|
+
catch (err) {
|
|
258
|
+
this.notifyService.error(err);
|
|
259
|
+
}
|
|
260
|
+
finally {
|
|
261
|
+
this.loadingService.stop();
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
#validate = async (excelItem, idx) => {
|
|
265
|
+
const { data: item, meta: { error, errorMessages }, } = excelItem;
|
|
266
|
+
const { validateItem } = this.option;
|
|
267
|
+
for (const column of this.option.columns) {
|
|
268
|
+
if (!this.columnHiddenPipe.transform(column)) {
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
try {
|
|
272
|
+
if (column.defaultValue !== undefined) {
|
|
273
|
+
item[column.field] = item[column.field] ?? column.defaultValue;
|
|
274
|
+
}
|
|
275
|
+
else if (column.required && !item[column.field] && item[column.field] !== 0) {
|
|
276
|
+
error[column.field] = this.#i18n.t('core.component.import-excel.required');
|
|
277
|
+
errorMessages.push(`<strong>[${column.title || column.field}]</strong> ${error[column.field]}`);
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
if (column.type === 'string') {
|
|
281
|
+
const value = (item[column.field] || '').toString();
|
|
282
|
+
if (column.minlength !== undefined && value.length < column.minlength) {
|
|
283
|
+
error[column.field] = this.#i18n.t('core.component.import-excel.min-length', { min: column.minlength });
|
|
284
|
+
errorMessages.push(`<strong>[${column.title || column.field}]</strong> ${error[column.field]}`);
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
if (column.maxlength !== undefined && value.length > column.maxlength) {
|
|
288
|
+
error[column.field] = this.#i18n.t('core.component.import-excel.max-length', { max: column.maxlength });
|
|
289
|
+
errorMessages.push(`<strong>[${column.title || column.field}]</strong> ${error[column.field]}`);
|
|
290
|
+
continue;
|
|
291
|
+
}
|
|
292
|
+
item[column.field] = value;
|
|
293
|
+
}
|
|
294
|
+
else if (column.type === 'number') {
|
|
295
|
+
if (item[column.field]) {
|
|
296
|
+
const value = +item[column.field];
|
|
297
|
+
if (!NumberUtilities.isNumber(item[column.field])) {
|
|
298
|
+
error[column.field] = this.#i18n.t('core.component.import-excel.not-a-number', { value: item[column.field] });
|
|
299
|
+
errorMessages.push(`<strong>[${column.title || column.field}]</strong> ${error[column.field]}`);
|
|
300
|
+
continue;
|
|
301
|
+
}
|
|
302
|
+
item[column.field] = value;
|
|
303
|
+
}
|
|
304
|
+
if (!item[column.field] && item[column.field] !== 0) {
|
|
305
|
+
item[column.field] = undefined;
|
|
306
|
+
}
|
|
307
|
+
if (column.min !== undefined && item[column.field] < column.min) {
|
|
308
|
+
error[column.field] = this.#i18n.t('core.component.import-excel.below-min', { value: item[column.field], min: column.min });
|
|
309
|
+
errorMessages.push(`<strong>[${column.title || column.field}]</strong> ${error[column.field]}`);
|
|
310
|
+
continue;
|
|
311
|
+
}
|
|
312
|
+
if (column.max !== undefined && item[column.field] > column.max) {
|
|
313
|
+
error[column.field] = this.#i18n.t('core.component.import-excel.above-max', { value: item[column.field], max: column.max });
|
|
314
|
+
errorMessages.push(`<strong>[${column.title || column.field}]</strong> ${error[column.field]}`);
|
|
315
|
+
continue;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
else if (column.type === 'bool') {
|
|
319
|
+
if (item[column.field] === 0 ||
|
|
320
|
+
item[column.field] === '0' ||
|
|
321
|
+
item[column.field] === false ||
|
|
322
|
+
item[column.field]?.toString()?.toLowerCase()?.trim() === 'false') {
|
|
323
|
+
item[column.field] = false;
|
|
324
|
+
}
|
|
325
|
+
else if (item[column.field] === 1 ||
|
|
326
|
+
item[column.field] === '1' ||
|
|
327
|
+
item[column.field] === true ||
|
|
328
|
+
item[column.field]?.toString()?.toLowerCase()?.trim() === 'true') {
|
|
329
|
+
item[column.field] = true;
|
|
330
|
+
}
|
|
331
|
+
else if (item[column.field] === '')
|
|
332
|
+
item[column.field] = undefined;
|
|
333
|
+
if (typeof item[column.field] !== 'boolean' && item[column.field] !== undefined && item[column.field] !== null) {
|
|
334
|
+
error[column.field] = this.#i18n.t('core.component.import-excel.invalid-bool');
|
|
335
|
+
errorMessages.push(`<strong>[${column.title || column.field}]</strong> ${error[column.field]}`);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
else if (column.type === 'values') {
|
|
339
|
+
if (item[column.field] && typeof item[column.field] !== 'number' && typeof item[column.field] !== 'string') {
|
|
340
|
+
error[column.field] = this.#i18n.t('core.component.import-excel.invalid-value', { value: item[column.field] });
|
|
341
|
+
errorMessages.push(`<strong>[${column.title || column.field}]</strong> ${error[column.field]}`);
|
|
342
|
+
continue;
|
|
343
|
+
}
|
|
344
|
+
if (column.checkValueInArray && item[column.field] && !column.values.some(e => e.toString() === item[column.field].toString())) {
|
|
345
|
+
error[column.field] = this.#i18n.t('core.component.import-excel.value-not-in-list', { value: item[column.field], list: column.values.join() });
|
|
346
|
+
errorMessages.push(`<strong>[${column.title || column.field}]</strong> ${error[column.field]}`);
|
|
347
|
+
continue;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
else if (column.type === 'date' || column.type === 'datetime' || column.type === 'time') {
|
|
351
|
+
const { type, format } = column;
|
|
352
|
+
const val = item[column.field];
|
|
353
|
+
if (val instanceof Date) {
|
|
354
|
+
item[column.field] = val.toISOString();
|
|
355
|
+
continue;
|
|
356
|
+
}
|
|
357
|
+
if (format && item[column.field]) {
|
|
358
|
+
if (typeof val !== 'string') {
|
|
359
|
+
error[column.field] = this.#i18n.t('core.component.import-excel.invalid-date-format', { value: val ?? '', format: column.format ?? '' });
|
|
360
|
+
errorMessages.push(`<strong>[${column.title || column.field}]</strong> ${error[column.field]}`);
|
|
361
|
+
continue;
|
|
362
|
+
}
|
|
363
|
+
if (type === 'date' && !this.#isValidDate(format, val)) {
|
|
364
|
+
error[column.field] = this.#i18n.t('core.component.import-excel.invalid-date-format', { value: val ?? '', format: column.format ?? '' });
|
|
365
|
+
errorMessages.push(`<strong>[${column.title || column.field}]</strong> ${error[column.field]}`);
|
|
366
|
+
continue;
|
|
367
|
+
}
|
|
368
|
+
if (type === 'time' && !this.#isValidTime(format, val)) {
|
|
369
|
+
error[column.field] = this.#i18n.t('core.component.import-excel.invalid-date-format', { value: val ?? '', format: column.format ?? '' });
|
|
370
|
+
errorMessages.push(`<strong>[${column.title || column.field}]</strong> ${error[column.field]}`);
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
if (type === 'datetime' && !this.#isValidDateTime(format, val)) {
|
|
374
|
+
error[column.field] = this.#i18n.t('core.component.import-excel.invalid-date-format', { value: val ?? '', format: column.format ?? '' });
|
|
375
|
+
errorMessages.push(`<strong>[${column.title || column.field}]</strong> ${error[column.field]}`);
|
|
376
|
+
continue;
|
|
377
|
+
}
|
|
378
|
+
item[column.field] = DateUtilities.parseFrom(val, format);
|
|
379
|
+
}
|
|
380
|
+
if (item[column.field] && !DateUtilities.isDate(item[column.field])) {
|
|
381
|
+
error[column.field] = this.#i18n.t('core.component.import-excel.invalid-date-format', { value: val ?? '', format: column.format ?? '' });
|
|
382
|
+
errorMessages.push(`<strong>[${column.title || column.field}]</strong> ${error[column.field]}`);
|
|
383
|
+
continue;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
// Nếu pass validation từng column, kiểm tra validation theo hàm validateItem
|
|
387
|
+
if (!errorMessages.length && validateItem) {
|
|
388
|
+
const validation = await validateItem(item, idx, this.excelItems.map(e => e.data));
|
|
389
|
+
if (validation.errorMessage)
|
|
390
|
+
excelItem.meta.errorMessages.push(validation.errorMessage);
|
|
391
|
+
if (validation.warningMessage)
|
|
392
|
+
excelItem.meta.warningMessages.push(validation.warningMessage);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
catch (ex) {
|
|
396
|
+
error[column.field] = `${ex?.message || ex?.error || ex || this.#i18n.t('core.component.import-excel.generic-error')}`;
|
|
397
|
+
errorMessages.push(`<strong>[${column.title || column.field}]</strong> ${error[column.field]}`);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
};
|
|
401
|
+
#mapItem = (item) => {
|
|
402
|
+
const { data } = item;
|
|
403
|
+
return data;
|
|
404
|
+
};
|
|
405
|
+
accept = () => {
|
|
406
|
+
this.option.accept(this.excelItems.map(e => e.data), { file: this.file });
|
|
407
|
+
this.isUploaded = true;
|
|
408
|
+
};
|
|
409
|
+
setValidation = (validations) => {
|
|
410
|
+
this.excelItems.forEach(e => {
|
|
411
|
+
e.meta.errorMessages = [];
|
|
412
|
+
e.meta.warningMessages = [];
|
|
413
|
+
});
|
|
414
|
+
if (Array.isArray(validations)) {
|
|
415
|
+
validations.forEach(validation => {
|
|
416
|
+
if (validation.errorMessage) {
|
|
417
|
+
this.excelItems[validation.idx].meta.errorMessages = [validation.errorMessage];
|
|
418
|
+
}
|
|
419
|
+
if (validation.warningMessage) {
|
|
420
|
+
this.excelItems[validation.idx].meta.warningMessages = [validation.warningMessage];
|
|
421
|
+
}
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
this.#reload();
|
|
425
|
+
this.ref.detectChanges();
|
|
426
|
+
};
|
|
427
|
+
view = (showing = 'ALL') => {
|
|
428
|
+
this.showing = showing;
|
|
429
|
+
this.#paginator.pageIndex = 0;
|
|
430
|
+
this.#reload();
|
|
431
|
+
};
|
|
432
|
+
downloadTemplate = async () => {
|
|
433
|
+
const sheets = [];
|
|
434
|
+
if (Array.isArray(this.option?.sheets)) {
|
|
435
|
+
for (const sheet of this.option.sheets) {
|
|
436
|
+
if (sheet.name && sheet.items && sheet.headers) {
|
|
437
|
+
if (Array.isArray(sheet.items)) {
|
|
438
|
+
sheets.push({
|
|
439
|
+
name: sheet.name,
|
|
440
|
+
items: sheet.items,
|
|
441
|
+
headers: sheet.headers,
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
else {
|
|
445
|
+
sheets.push({
|
|
446
|
+
name: sheet.name,
|
|
447
|
+
items: await sheet.items(),
|
|
448
|
+
headers: sheet.headers,
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
const columnNotHiddens = this.option.columns.filter(column => this.columnHiddenPipe.transform(column));
|
|
455
|
+
const excelTemplate = {
|
|
456
|
+
fileName: this.option.fileName || 'Template',
|
|
457
|
+
columns: columnNotHiddens.map(column => {
|
|
458
|
+
return {
|
|
459
|
+
field: column.field,
|
|
460
|
+
title: column.title,
|
|
461
|
+
width: column.width,
|
|
462
|
+
required: column.required,
|
|
463
|
+
description: column.description,
|
|
464
|
+
fontColor: column.fontColor,
|
|
465
|
+
fill: column.fill,
|
|
466
|
+
};
|
|
467
|
+
}),
|
|
468
|
+
sheets,
|
|
469
|
+
};
|
|
470
|
+
this.isDownloadTemplate = true;
|
|
471
|
+
await this.excelService.generateTemplate(excelTemplate).finally(() => {
|
|
472
|
+
this.isDownloadTemplate = false;
|
|
473
|
+
});
|
|
474
|
+
};
|
|
475
|
+
export = async () => {
|
|
476
|
+
this.loadingService.start();
|
|
477
|
+
const columns = [
|
|
478
|
+
{
|
|
479
|
+
field: 'sdMessage',
|
|
480
|
+
title: this.#i18n.t('core.component.import-excel.message-column'),
|
|
481
|
+
width: '250px',
|
|
482
|
+
required: false,
|
|
483
|
+
},
|
|
484
|
+
...this.option.columns.filter(column => this.columnHiddenPipe.transform(column)),
|
|
485
|
+
];
|
|
486
|
+
await this.excelService
|
|
487
|
+
.export({
|
|
488
|
+
columns,
|
|
489
|
+
items: this.filteredItems.map(e => {
|
|
490
|
+
let result = {};
|
|
491
|
+
for (const column of columns) {
|
|
492
|
+
result = {
|
|
493
|
+
...result,
|
|
494
|
+
[column.field]: e.meta.origin?.[column.field],
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
return {
|
|
498
|
+
...result,
|
|
499
|
+
sdMessage: (e.meta.errorMessages.join(', ') || e.meta.warningMessages.join(', ') || this.#i18n.t('core.component.import-excel.success'))
|
|
500
|
+
?.replace(/<strong>/g, '')
|
|
501
|
+
.replace(/<\/strong>/g, '')
|
|
502
|
+
.replace(/<br>/g, '\n'),
|
|
503
|
+
};
|
|
504
|
+
}),
|
|
505
|
+
})
|
|
506
|
+
.finally(this.loadingService.stop);
|
|
507
|
+
};
|
|
508
|
+
#isValidDate = (format, value) => {
|
|
509
|
+
if (value?.length !== format?.length) {
|
|
510
|
+
return false;
|
|
511
|
+
}
|
|
512
|
+
const regex = /^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[13-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/;
|
|
513
|
+
return regex.test(value);
|
|
514
|
+
};
|
|
515
|
+
#isValidTime = (format, value) => {
|
|
516
|
+
if (value?.length !== format?.length) {
|
|
517
|
+
return false;
|
|
518
|
+
}
|
|
519
|
+
return true;
|
|
520
|
+
};
|
|
521
|
+
#isValidDateTime = (format, value) => {
|
|
522
|
+
if (value?.length !== format?.length) {
|
|
523
|
+
return false;
|
|
524
|
+
}
|
|
525
|
+
const dates = value?.split(' ');
|
|
526
|
+
if (dates.length !== 2) {
|
|
527
|
+
return false;
|
|
528
|
+
}
|
|
529
|
+
const date = dates[0];
|
|
530
|
+
if (!this.#isValidDate('dd/MM/yyyy', date)) {
|
|
531
|
+
return false;
|
|
532
|
+
}
|
|
533
|
+
const time = dates[1];
|
|
534
|
+
const regex = /^(0[0-9]|1[0-9]|2[0-3])(\:)(0[0-9]|[0-5][0-9])$/;
|
|
535
|
+
return regex.test(time);
|
|
536
|
+
};
|
|
537
|
+
onClosed = () => {
|
|
538
|
+
this.sdClosed.emit();
|
|
539
|
+
};
|
|
540
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdImportExcel, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.SdExcelService }, { token: i2.SdNotifyService }, { token: ColumnHiddenPipe }, { token: i4.SdLoadingService }], target: i0.ɵɵFactoryTarget.Component });
|
|
541
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.21", type: SdImportExcel, isStandalone: true, selector: "sd-import-excel", inputs: { option: "option" }, outputs: { sdClosed: "sdClosed" }, providers: [
|
|
542
|
+
ColumnHiddenPipe
|
|
543
|
+
], viewQueries: [{ propertyName: "modal", first: true, predicate: SdModal, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], ngImport: i0, template: "@if (option) {\n <sd-modal [title]=\"option.title || ('core.component.import-excel.title' | translate)\" (sdClosed)=\"onClosed()\" #modal>\n <div class=\"d-flex align-items-center mb-12\" style=\"min-height: 32px\">\n @if (excelItems.length) {\n <div class=\"d-flex\">\n <sd-button class=\"mr-2\" (click)=\"view('ALL')\" icon=\"cached\" [title]=\"'core.component.import-excel.see-all' | translate\" size=\"sm\" type=\"outline\"></sd-button>\n\n <sd-button\n class=\"mr-2\"\n (click)=\"view('SUCCESS')\"\n icon=\"done\"\n title=\"{{ numberOfSuccess }}\"\n [tooltip]=\"'core.component.import-excel.valid-rows' | translate\"\n size=\"sm\"\n color=\"success\">\n </sd-button>\n\n <sd-button\n class=\"mr-2\"\n (click)=\"view('WARNING')\"\n icon=\"warning\"\n title=\"{{ numberOfWarning }}\"\n [tooltip]=\"'core.component.import-excel.error-rows' | translate\"\n size=\"sm\"\n color=\"warning\">\n </sd-button>\n\n <sd-button\n (click)=\"view('ERROR')\"\n icon=\"error\"\n title=\"{{ numberOfError }}\"\n color=\"error\"\n [tooltip]=\"'core.component.import-excel.warning-rows' | translate\"\n size=\"sm\">\n </sd-button>\n </div>\n }\n </div>\n\n <div class=\"sd-box border rounded\">\n <div class=\"sd-box-body p-0\">\n <div class=\"table-responsive\">\n <table class=\"sd-table\">\n <thead>\n <tr>\n <th class=\"text-center c-sticky-left\" style=\"width: 50px\">#</th>\n @if (filteredItems.length) {\n <th class=\"text-center\" style=\"min-width: 250px; width: 250px\">{{ 'core.component.import-excel.status' | translate }}</th>\n }\n @for (column of option.columns; track column.field) {\n @if (column | columnHidden) {\n <th [ngStyle]=\"{ 'min-width': column.width || '300px', width: column.width || '300px' }\" [matTooltip]=\"column.title\">\n <span class=\"c-ellipsis\">\n {{ column.title }}\n </span>\n </th>\n }\n }\n </tr>\n </thead>\n\n <tbody>\n @if (viewItems.length) {\n @for (item of viewItems; track item.meta.excelIndex) {\n <tr>\n <td class=\"text-center c-sticky-left px-4\">\n <sd-badge\n type=\"tag\"\n [title]=\"item.meta.excelIndex\"\n [success]=\"!item.meta.warningMessages.length && !item.meta.errorMessages.length\"\n [warning]=\"!!item.meta.warningMessages.length && !item.meta.errorMessages.length\"\n [error]=\"!!item.meta.errorMessages.length\" />\n </td>\n\n <td style=\"min-width: 250px; width: 250px\">\n <div\n class=\"text-wrap\"\n [innerHTML]=\"\n item.meta.errorMessages[0] || item.meta.warningMessages[0] || ('<span class=\\'text-success\\'>' + ('core.component.import-excel.valid-data' | translate) + '</span>')\n \"></div>\n </td>\n\n @for (column of option.columns; track column.field) {\n @if (column | columnHidden) {\n <td\n class=\"align-middle\"\n [ngClass]=\"{\n 'bg-warning-light': item.meta.warning[column.field] && !item.meta.error[column.field],\n 'bg-error-light': item.meta.error[column.field]\n }\"\n [matTooltip]=\"item.meta.error[column.field] || item.meta.warning[column.field]\"\n [ngStyle]=\"{ 'min-width': column.width || '300px' }\"\n matTooltipPosition=\"above\">\n <div class=\"c-ellipsis\">\n @if (column.type !== 'array') {\n <span [innerHTML]=\"item | columnTransform: column | async\"></span>\n }\n\n @if (column.type === 'array') {\n @let arrayItems = item.data[column.field]?.split(column.divideString);\n\n <div class=\"d-flex align-items-center justify-content-between\">\n <span>{{ arrayItems?.length || 0 }} {{ column.unitString }}</span>\n\n @if (arrayItems?.length) {\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n class=\"c-mat-menu\"\n style=\"width: 24px; height: 24px; line-height: 24px\">\n <mat-icon style=\"font-size: 18px\">open_in_new</mat-icon>\n </button>\n\n <mat-menu #menu=\"matMenu\">\n <div\n class=\"px-3 py-2\"\n style=\"max-width: 300px; max-height: 250px; overflow: auto\"\n (click)=\"$event.stopPropagation()\"\n aria-hidden=\"true\">\n @for (val of arrayItems; track $index) {\n <div class=\"border-bottom py-2 text-wrap\" [innerHTML]=\"val\"></div>\n }\n </div>\n </mat-menu>\n }\n </div>\n }\n </div>\n </td>\n }\n }\n </tr>\n }\n } @else {\n <tr>\n <td [attr.colspan]=\"option.columns.length + 2\" class=\"p-0 border-0 bg-white\">\n <div\n class=\"empty-state-wrapper\"\n (click)=\"downloadTemplate()\"\n [matTooltip]=\"'core.component.import-excel.download-template-tooltip' | translate\"\n aria-hidden=\"true\">\n <mat-icon class=\"empty-icon\">cloud_download</mat-icon>\n\n <h4>{{ 'core.component.import-excel.no-data-upload' | translate }}</h4>\n <span class=\"text-small text-link\"> {{ 'core.component.import-excel.click-here-template' | translate }} </span>\n\n @if (isDownloadTemplate) {\n <div class=\"mt-3\">\n <mat-spinner diameter=\"24\" mode=\"indeterminate\"></mat-spinner>\n </div>\n }\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n\n <div class=\"sd-box-footer border-top\">\n <div class=\"d-flex align-items-center justify-content-end\">\n <mat-paginator [length]=\"filteredItems.length || 0\" hidePageSize showFirstLastButtons></mat-paginator>\n </div>\n </div>\n </div>\n <sd-button sdFooterLeft (click)=\"upload()\" prefixIcon=\"file_upload\" [title]=\"'core.component.import-excel.upload' | translate\" size=\"sm\" color=\"info\" [loading]=\"uploading\">\n </sd-button>\n <div class=\"d-flex align-items-center\" sdFooter>\n @if (filteredItems.length) {\n <sd-button class=\"mr-4\" (click)=\"export()\" prefixIcon=\"get_app\" [title]=\"'core.component.import-excel.download' | translate\" size=\"sm\" color=\"success\" type=\"outline\">\n </sd-button>\n }\n <sd-button\n (click)=\"accept()\"\n [title]=\"'core.component.import-excel.confirm-save' | translate\"\n [disabled]=\"(numberOfSuccess === 0 && numberOfWarning === 0) || numberOfError > 0 || isUploaded\"\n color=\"primary\"\n type=\"fill\"\n size=\"sm\">\n </sd-button>\n </div>\n </sd-modal>\n}\n", styles: [".table-responsive{position:relative;min-height:50vh;height:50vh;overflow:auto;border:1px solid #dee2e6}.sd-table{width:100%;border-collapse:collapse;margin-bottom:0;font-size:14px}.sd-table thead th{position:sticky;top:0;background-color:#f8f9fa;border-bottom:2px solid #dee2e6;border-top:1px solid #dee2e6;padding:8px 6px;white-space:nowrap;z-index:10;font-weight:600}.sd-table thead th.c-sticky-left{z-index:20}.sd-table tbody td{vertical-align:middle;padding:6px;border-top:1px solid #dee2e6}.sd-table tbody tr:nth-of-type(odd){background-color:#0000000a}.sd-table tbody tr:nth-of-type(2n){background-color:#fff}.sd-table tbody tr:hover,.sd-table tbody tr:hover .c-sticky-left{background-color:#ececec}.sd-table tbody tr:nth-of-type(odd) .c-sticky-left{background-color:#f2f2f2}.sd-table tbody tr:nth-of-type(2n) .c-sticky-left{background-color:#fff}.c-sticky-left{position:sticky;left:0;border-right:1px solid #dee2e6!important;border-left:none!important;z-index:5}.empty-state-wrapper{height:100%;min-height:40vh;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;background-color:#f8f9fa;border:2px dashed #cbd5e0;border-radius:8px;margin:16px;transition:all .2s ease-in-out;color:#6c757d}.empty-state-wrapper:hover{background-color:#e3f2fd;border-color:#2196f3;color:#1976d2}.empty-state-wrapper:hover .empty-icon{transform:scale(1.1);color:#1976d2}.empty-state-wrapper:hover .text-link{text-decoration:underline}.empty-state-wrapper .empty-icon{font-size:64px;height:64px;width:64px;margin-bottom:16px;color:#a0aec0;transition:transform .2s}.empty-state-wrapper h4{font-weight:500;margin-bottom:4px}.c-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;padding:0 4px}.c-mat-menu{border:none;min-width:unset;padding:0 8px}.c-mat-menu mat-icon{font-size:18px;width:18px;height:18px;line-height:18px;vertical-align:middle}.cursor-pointer{cursor:pointer}:host ::ng-deep .mat-paginator-container{min-height:36px;height:36px;padding:0 8px}:host ::ng-deep .mat-paginator-range-label{margin:0 10px}:host ::ng-deep .mat-icon-button{width:32px;height:32px;line-height:32px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i7.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: SdButton, selector: "sd-button", inputs: ["autoId", "type", "color", "size", "fontSet", "title", "width", "tooltip", "prefixIcon", "suffixIcon", "disabled", "loading", "block", "htmlType"], outputs: ["click"] }, { kind: "component", type: SdModal, selector: "sd-modal", inputs: ["autoId", "title", "color", "width", "height", "view", "modalClass", "lazyLoadContent", "hideClose", "disableBackdropClose"], outputs: ["sdClosed"] }, { kind: "pipe", type: ColumnTransformPipe, name: "columnTransform" }, { kind: "pipe", type: ColumnHiddenPipe, name: "columnHidden" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i9.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: SdBadge, selector: "sd-badge", inputs: ["type", "color", "primary", "secondary", "success", "info", "warning", "error", "fontSet", "title", "description", "tooltip", "icon", "size"], outputs: ["click"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
544
|
+
}
|
|
545
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdImportExcel, decorators: [{
|
|
546
|
+
type: Component,
|
|
547
|
+
args: [{ selector: 'sd-import-excel', imports: [
|
|
548
|
+
CommonModule,
|
|
549
|
+
FormsModule,
|
|
550
|
+
MatSlideToggleModule,
|
|
551
|
+
MatTooltipModule,
|
|
552
|
+
MatPaginatorModule,
|
|
553
|
+
MatSlideToggleModule,
|
|
554
|
+
SdButton,
|
|
555
|
+
SdModal,
|
|
556
|
+
ColumnTransformPipe,
|
|
557
|
+
ColumnHiddenPipe,
|
|
558
|
+
MatIconModule,
|
|
559
|
+
MatMenuModule,
|
|
560
|
+
MatProgressSpinner,
|
|
561
|
+
SdBadge, TranslatePipe
|
|
562
|
+
], providers: [
|
|
563
|
+
ColumnHiddenPipe
|
|
564
|
+
], template: "@if (option) {\n <sd-modal [title]=\"option.title || ('core.component.import-excel.title' | translate)\" (sdClosed)=\"onClosed()\" #modal>\n <div class=\"d-flex align-items-center mb-12\" style=\"min-height: 32px\">\n @if (excelItems.length) {\n <div class=\"d-flex\">\n <sd-button class=\"mr-2\" (click)=\"view('ALL')\" icon=\"cached\" [title]=\"'core.component.import-excel.see-all' | translate\" size=\"sm\" type=\"outline\"></sd-button>\n\n <sd-button\n class=\"mr-2\"\n (click)=\"view('SUCCESS')\"\n icon=\"done\"\n title=\"{{ numberOfSuccess }}\"\n [tooltip]=\"'core.component.import-excel.valid-rows' | translate\"\n size=\"sm\"\n color=\"success\">\n </sd-button>\n\n <sd-button\n class=\"mr-2\"\n (click)=\"view('WARNING')\"\n icon=\"warning\"\n title=\"{{ numberOfWarning }}\"\n [tooltip]=\"'core.component.import-excel.error-rows' | translate\"\n size=\"sm\"\n color=\"warning\">\n </sd-button>\n\n <sd-button\n (click)=\"view('ERROR')\"\n icon=\"error\"\n title=\"{{ numberOfError }}\"\n color=\"error\"\n [tooltip]=\"'core.component.import-excel.warning-rows' | translate\"\n size=\"sm\">\n </sd-button>\n </div>\n }\n </div>\n\n <div class=\"sd-box border rounded\">\n <div class=\"sd-box-body p-0\">\n <div class=\"table-responsive\">\n <table class=\"sd-table\">\n <thead>\n <tr>\n <th class=\"text-center c-sticky-left\" style=\"width: 50px\">#</th>\n @if (filteredItems.length) {\n <th class=\"text-center\" style=\"min-width: 250px; width: 250px\">{{ 'core.component.import-excel.status' | translate }}</th>\n }\n @for (column of option.columns; track column.field) {\n @if (column | columnHidden) {\n <th [ngStyle]=\"{ 'min-width': column.width || '300px', width: column.width || '300px' }\" [matTooltip]=\"column.title\">\n <span class=\"c-ellipsis\">\n {{ column.title }}\n </span>\n </th>\n }\n }\n </tr>\n </thead>\n\n <tbody>\n @if (viewItems.length) {\n @for (item of viewItems; track item.meta.excelIndex) {\n <tr>\n <td class=\"text-center c-sticky-left px-4\">\n <sd-badge\n type=\"tag\"\n [title]=\"item.meta.excelIndex\"\n [success]=\"!item.meta.warningMessages.length && !item.meta.errorMessages.length\"\n [warning]=\"!!item.meta.warningMessages.length && !item.meta.errorMessages.length\"\n [error]=\"!!item.meta.errorMessages.length\" />\n </td>\n\n <td style=\"min-width: 250px; width: 250px\">\n <div\n class=\"text-wrap\"\n [innerHTML]=\"\n item.meta.errorMessages[0] || item.meta.warningMessages[0] || ('<span class=\\'text-success\\'>' + ('core.component.import-excel.valid-data' | translate) + '</span>')\n \"></div>\n </td>\n\n @for (column of option.columns; track column.field) {\n @if (column | columnHidden) {\n <td\n class=\"align-middle\"\n [ngClass]=\"{\n 'bg-warning-light': item.meta.warning[column.field] && !item.meta.error[column.field],\n 'bg-error-light': item.meta.error[column.field]\n }\"\n [matTooltip]=\"item.meta.error[column.field] || item.meta.warning[column.field]\"\n [ngStyle]=\"{ 'min-width': column.width || '300px' }\"\n matTooltipPosition=\"above\">\n <div class=\"c-ellipsis\">\n @if (column.type !== 'array') {\n <span [innerHTML]=\"item | columnTransform: column | async\"></span>\n }\n\n @if (column.type === 'array') {\n @let arrayItems = item.data[column.field]?.split(column.divideString);\n\n <div class=\"d-flex align-items-center justify-content-between\">\n <span>{{ arrayItems?.length || 0 }} {{ column.unitString }}</span>\n\n @if (arrayItems?.length) {\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n class=\"c-mat-menu\"\n style=\"width: 24px; height: 24px; line-height: 24px\">\n <mat-icon style=\"font-size: 18px\">open_in_new</mat-icon>\n </button>\n\n <mat-menu #menu=\"matMenu\">\n <div\n class=\"px-3 py-2\"\n style=\"max-width: 300px; max-height: 250px; overflow: auto\"\n (click)=\"$event.stopPropagation()\"\n aria-hidden=\"true\">\n @for (val of arrayItems; track $index) {\n <div class=\"border-bottom py-2 text-wrap\" [innerHTML]=\"val\"></div>\n }\n </div>\n </mat-menu>\n }\n </div>\n }\n </div>\n </td>\n }\n }\n </tr>\n }\n } @else {\n <tr>\n <td [attr.colspan]=\"option.columns.length + 2\" class=\"p-0 border-0 bg-white\">\n <div\n class=\"empty-state-wrapper\"\n (click)=\"downloadTemplate()\"\n [matTooltip]=\"'core.component.import-excel.download-template-tooltip' | translate\"\n aria-hidden=\"true\">\n <mat-icon class=\"empty-icon\">cloud_download</mat-icon>\n\n <h4>{{ 'core.component.import-excel.no-data-upload' | translate }}</h4>\n <span class=\"text-small text-link\"> {{ 'core.component.import-excel.click-here-template' | translate }} </span>\n\n @if (isDownloadTemplate) {\n <div class=\"mt-3\">\n <mat-spinner diameter=\"24\" mode=\"indeterminate\"></mat-spinner>\n </div>\n }\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n\n <div class=\"sd-box-footer border-top\">\n <div class=\"d-flex align-items-center justify-content-end\">\n <mat-paginator [length]=\"filteredItems.length || 0\" hidePageSize showFirstLastButtons></mat-paginator>\n </div>\n </div>\n </div>\n <sd-button sdFooterLeft (click)=\"upload()\" prefixIcon=\"file_upload\" [title]=\"'core.component.import-excel.upload' | translate\" size=\"sm\" color=\"info\" [loading]=\"uploading\">\n </sd-button>\n <div class=\"d-flex align-items-center\" sdFooter>\n @if (filteredItems.length) {\n <sd-button class=\"mr-4\" (click)=\"export()\" prefixIcon=\"get_app\" [title]=\"'core.component.import-excel.download' | translate\" size=\"sm\" color=\"success\" type=\"outline\">\n </sd-button>\n }\n <sd-button\n (click)=\"accept()\"\n [title]=\"'core.component.import-excel.confirm-save' | translate\"\n [disabled]=\"(numberOfSuccess === 0 && numberOfWarning === 0) || numberOfError > 0 || isUploaded\"\n color=\"primary\"\n type=\"fill\"\n size=\"sm\">\n </sd-button>\n </div>\n </sd-modal>\n}\n", styles: [".table-responsive{position:relative;min-height:50vh;height:50vh;overflow:auto;border:1px solid #dee2e6}.sd-table{width:100%;border-collapse:collapse;margin-bottom:0;font-size:14px}.sd-table thead th{position:sticky;top:0;background-color:#f8f9fa;border-bottom:2px solid #dee2e6;border-top:1px solid #dee2e6;padding:8px 6px;white-space:nowrap;z-index:10;font-weight:600}.sd-table thead th.c-sticky-left{z-index:20}.sd-table tbody td{vertical-align:middle;padding:6px;border-top:1px solid #dee2e6}.sd-table tbody tr:nth-of-type(odd){background-color:#0000000a}.sd-table tbody tr:nth-of-type(2n){background-color:#fff}.sd-table tbody tr:hover,.sd-table tbody tr:hover .c-sticky-left{background-color:#ececec}.sd-table tbody tr:nth-of-type(odd) .c-sticky-left{background-color:#f2f2f2}.sd-table tbody tr:nth-of-type(2n) .c-sticky-left{background-color:#fff}.c-sticky-left{position:sticky;left:0;border-right:1px solid #dee2e6!important;border-left:none!important;z-index:5}.empty-state-wrapper{height:100%;min-height:40vh;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;background-color:#f8f9fa;border:2px dashed #cbd5e0;border-radius:8px;margin:16px;transition:all .2s ease-in-out;color:#6c757d}.empty-state-wrapper:hover{background-color:#e3f2fd;border-color:#2196f3;color:#1976d2}.empty-state-wrapper:hover .empty-icon{transform:scale(1.1);color:#1976d2}.empty-state-wrapper:hover .text-link{text-decoration:underline}.empty-state-wrapper .empty-icon{font-size:64px;height:64px;width:64px;margin-bottom:16px;color:#a0aec0;transition:transform .2s}.empty-state-wrapper h4{font-weight:500;margin-bottom:4px}.c-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;padding:0 4px}.c-mat-menu{border:none;min-width:unset;padding:0 8px}.c-mat-menu mat-icon{font-size:18px;width:18px;height:18px;line-height:18px;vertical-align:middle}.cursor-pointer{cursor:pointer}:host ::ng-deep .mat-paginator-container{min-height:36px;height:36px;padding:0 8px}:host ::ng-deep .mat-paginator-range-label{margin:0 10px}:host ::ng-deep .mat-icon-button{width:32px;height:32px;line-height:32px}\n"] }]
|
|
565
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$1.SdExcelService }, { type: i2.SdNotifyService }, { type: ColumnHiddenPipe }, { type: i4.SdLoadingService }], propDecorators: { option: [{
|
|
566
|
+
type: Input,
|
|
567
|
+
args: [{ required: true }]
|
|
568
|
+
}], modal: [{
|
|
569
|
+
type: ViewChild,
|
|
570
|
+
args: [SdModal]
|
|
571
|
+
}], paginator: [{
|
|
572
|
+
type: ViewChild,
|
|
573
|
+
args: [MatPaginator]
|
|
574
|
+
}], sdClosed: [{
|
|
575
|
+
type: Output
|
|
576
|
+
}] } });
|
|
577
|
+
|
|
578
|
+
/**
|
|
579
|
+
* Generated bundle index. Do not edit.
|
|
580
|
+
*/
|
|
581
|
+
|
|
582
|
+
export { SdImportExcel };
|
|
583
|
+
//# sourceMappingURL=sdcorejs-angular-components-import-excel.mjs.map
|