@sd-angular/core 1.2.75 → 1.2.78
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/assets/img/file-types/eps/001-file.eps +143 -143
- package/assets/img/file-types/eps/002-file-1.eps +136 -136
- package/assets/img/file-types/eps/003-file-2.eps +130 -130
- package/assets/img/file-types/eps/004-file-3.eps +127 -127
- package/assets/img/file-types/eps/005-file-4.eps +120 -120
- package/assets/img/file-types/eps/006-file-5.eps +133 -133
- package/assets/img/file-types/eps/007-file-6.eps +133 -133
- package/assets/img/file-types/eps/008-file-7.eps +144 -144
- package/assets/img/file-types/eps/009-file-8.eps +150 -150
- package/assets/img/file-types/eps/010-file-9.eps +155 -155
- package/assets/img/file-types/eps/011-file-10.eps +124 -124
- package/assets/img/file-types/eps/012-file-11.eps +147 -147
- package/assets/img/file-types/eps/013-file-12.eps +125 -125
- package/assets/img/file-types/eps/014-file-13.eps +129 -129
- package/assets/img/file-types/eps/015-file-14.eps +143 -143
- package/assets/img/file-types/eps/016-file-15.eps +130 -130
- package/assets/img/file-types/eps/017-file-16.eps +197 -197
- package/assets/img/file-types/eps/018-file-17.eps +146 -146
- package/assets/img/file-types/eps/019-file-18.eps +131 -131
- package/assets/img/file-types/eps/020-file-19.eps +137 -137
- package/assets/img/file-types/eps/021-file-20.eps +134 -134
- package/assets/img/file-types/eps/022-file-21.eps +130 -130
- package/assets/img/file-types/eps/023-file-22.eps +161 -161
- package/assets/img/file-types/eps/024-file-23.eps +144 -144
- package/assets/img/file-types/eps/025-file-24.eps +164 -164
- package/assets/img/file-types/eps/026-file-25.eps +135 -135
- package/assets/img/file-types/eps/027-file-26.eps +124 -124
- package/assets/img/file-types/eps/028-file-27.eps +120 -120
- package/assets/img/file-types/eps/029-file-28.eps +141 -141
- package/assets/img/file-types/eps/030-file-29.eps +130 -130
- package/assets/img/file-types/eps/031-file-30.eps +157 -157
- package/assets/img/file-types/eps/032-file-31.eps +139 -139
- package/assets/img/file-types/eps/033-file-32.eps +139 -139
- package/assets/img/file-types/eps/034-file-33.eps +189 -189
- package/assets/img/file-types/eps/035-file-34.eps +162 -162
- package/assets/img/file-types/eps/036-file-35.eps +142 -142
- package/assets/img/file-types/eps/037-file-36.eps +123 -123
- package/assets/img/file-types/eps/038-file-37.eps +127 -127
- package/assets/img/file-types/eps/039-file-38.eps +146 -146
- package/assets/img/file-types/eps/040-file-39.eps +126 -126
- package/assets/img/file-types/eps/041-file-40.eps +117 -117
- package/assets/img/file-types/eps/042-file-41.eps +156 -156
- package/assets/img/file-types/eps/043-file-42.eps +118 -118
- package/assets/img/file-types/eps/044-file-43.eps +172 -172
- package/assets/img/file-types/eps/045-file-44.eps +201 -201
- package/assets/img/file-types/eps/046-file-45.eps +94 -94
- package/assets/img/file-types/eps/047-file-46.eps +176 -176
- package/assets/img/file-types/eps/048-file-47.eps +238 -238
- package/assets/img/file-types/eps/049-file-48.eps +187 -187
- package/assets/img/file-types/eps/050-file-49.eps +137 -137
- package/bundles/sd-angular-core-api.umd.js +1 -1
- package/bundles/sd-angular-core-api.umd.js.map +1 -1
- package/bundles/sd-angular-core-api.umd.min.js +1 -1
- package/bundles/sd-angular-core-api.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-date-time.umd.js +1 -1
- package/bundles/sd-angular-core-date-time.umd.js.map +1 -1
- package/bundles/sd-angular-core-date-time.umd.min.js +1 -1
- package/bundles/sd-angular-core-date-time.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-export.umd.js +14 -9
- package/bundles/sd-angular-core-export.umd.js.map +1 -1
- package/bundles/sd-angular-core-export.umd.min.js +1 -1
- package/bundles/sd-angular-core-export.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.js +89 -101
- package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js +2 -2
- package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-upload-excel.umd.js +7 -8
- package/bundles/sd-angular-core-upload-excel.umd.js.map +1 -1
- package/bundles/sd-angular-core-upload-excel.umd.min.js +1 -1
- package/bundles/sd-angular-core-upload-excel.umd.min.js.map +1 -1
- package/date-time/src/lib/date-time.component.d.ts +1 -1
- package/esm2015/api/index.js +1 -1
- package/esm2015/api/sd-angular-core-api.js +1 -1
- package/esm2015/api/src/lib/api.model.js +1 -1
- package/esm2015/api/src/lib/api.module.js +1 -1
- package/esm2015/api/src/lib/api.service.js +2 -2
- package/esm2015/api/src/lib/http.interceptor.js +1 -1
- package/esm2015/api/src/lib/http.service.js +1 -1
- package/esm2015/api/src/lib/token.service.js +1 -1
- package/esm2015/api/src/public-api.js +1 -1
- package/esm2015/autocomplete/index.js +1 -1
- package/esm2015/autocomplete/sd-angular-core-autocomplete.js +1 -1
- package/esm2015/autocomplete/src/lib/autocomplete-display-def.directive.js +1 -1
- package/esm2015/autocomplete/src/lib/autocomplete.component.js +1 -1
- package/esm2015/autocomplete/src/lib/autocomplete.module.js +1 -1
- package/esm2015/autocomplete/src/public-api.js +1 -1
- package/esm2015/badge/index.js +1 -1
- package/esm2015/badge/sd-angular-core-badge.js +1 -1
- package/esm2015/badge/src/lib/badge.component.js +1 -1
- package/esm2015/badge/src/lib/badge.module.js +1 -1
- package/esm2015/badge/src/public-api.js +1 -1
- package/esm2015/button/index.js +1 -1
- package/esm2015/button/sd-angular-core-button.js +1 -1
- package/esm2015/button/src/lib/button.component.js +1 -1
- package/esm2015/button/src/lib/button.module.js +1 -1
- package/esm2015/button/src/public-api.js +1 -1
- package/esm2015/cache/index.js +1 -1
- package/esm2015/cache/sd-angular-core-cache.js +1 -1
- package/esm2015/cache/src/lib/cache.model.js +1 -1
- package/esm2015/cache/src/lib/cache.service.js +1 -1
- package/esm2015/cache/src/public-api.js +1 -1
- package/esm2015/chart/index.js +1 -1
- package/esm2015/chart/sd-angular-core-chart.js +1 -1
- package/esm2015/chart/src/lib/chart.component.js +1 -1
- package/esm2015/chart/src/lib/chart.model.js +1 -1
- package/esm2015/chart/src/lib/chart.module.js +1 -1
- package/esm2015/chart/src/public-api.js +1 -1
- package/esm2015/checkbox/index.js +1 -1
- package/esm2015/checkbox/sd-angular-core-checkbox.js +1 -1
- package/esm2015/checkbox/src/lib/checkbox.component.js +1 -1
- package/esm2015/checkbox/src/lib/checkbox.module.js +1 -1
- package/esm2015/checkbox/src/public-api.js +1 -1
- package/esm2015/chip/index.js +1 -1
- package/esm2015/chip/sd-angular-core-chip.js +1 -1
- package/esm2015/chip/src/lib/chip.component.js +1 -1
- package/esm2015/chip/src/lib/chip.model.js +1 -1
- package/esm2015/chip/src/lib/chip.module.js +1 -1
- package/esm2015/chip/src/lib/directives/sd-chip-display-def.directive.js +1 -1
- package/esm2015/chip/src/lib/pipes/removable-chip.pipe.js +1 -1
- package/esm2015/chip/src/public-api.js +1 -1
- package/esm2015/comment/index.js +1 -1
- package/esm2015/comment/sd-angular-core-comment.js +1 -1
- package/esm2015/comment/src/lib/comment.component.js +1 -1
- package/esm2015/comment/src/lib/comment.model.js +1 -1
- package/esm2015/comment/src/lib/comment.module.js +1 -1
- package/esm2015/comment/src/public-api.js +1 -1
- package/esm2015/common/index.js +1 -1
- package/esm2015/common/sd-angular-core-common.js +1 -1
- package/esm2015/common/src/lib/common.module.js +1 -1
- package/esm2015/common/src/lib/configurations/firebase.configuration.js +1 -1
- package/esm2015/common/src/lib/configurations/form.configuration.js +1 -1
- package/esm2015/common/src/lib/directives/sd-lable.directive.js +1 -1
- package/esm2015/common/src/lib/directives/sd-let.directive.js +1 -1
- package/esm2015/common/src/lib/directives/sd-scroll.directive.js +1 -1
- package/esm2015/common/src/lib/directives/sd-suffix.directive.js +1 -1
- package/esm2015/common/src/lib/directives/view-def.directive.js +1 -1
- package/esm2015/common/src/lib/models/sd-form-control.js +1 -1
- package/esm2015/common/src/lib/services/browser.service.js +1 -1
- package/esm2015/common/src/lib/typings/array.extension.js +1 -1
- package/esm2015/common/src/lib/typings/date.extension.js +1 -1
- package/esm2015/common/src/lib/typings/number.extension.js +1 -1
- package/esm2015/common/src/lib/typings/string.extension.js +1 -1
- package/esm2015/common/src/public-api.js +1 -1
- package/esm2015/confirm/index.js +1 -1
- package/esm2015/confirm/sd-angular-core-confirm.js +1 -1
- package/esm2015/confirm/src/lib/components/dialog-confirm/dialog-confirm.component.js +1 -1
- package/esm2015/confirm/src/lib/confirm.module.js +1 -1
- package/esm2015/confirm/src/lib/confirm.service.js +1 -1
- package/esm2015/confirm/src/public-api.js +1 -1
- package/esm2015/date-month/index.js +1 -1
- package/esm2015/date-month/sd-angular-core-date-month.js +1 -1
- package/esm2015/date-month/src/lib/date-month.component.js +1 -1
- package/esm2015/date-month/src/lib/date-month.module.js +1 -1
- package/esm2015/date-month/src/public-api.js +1 -1
- package/esm2015/date-range/index.js +1 -1
- package/esm2015/date-range/sd-angular-core-date-range.js +1 -1
- package/esm2015/date-range/src/lib/date-range.component.js +1 -1
- package/esm2015/date-range/src/lib/date-range.module.js +1 -1
- package/esm2015/date-range/src/public-api.js +1 -1
- package/esm2015/date-time/index.js +1 -1
- package/esm2015/date-time/sd-angular-core-date-time.js +1 -1
- package/esm2015/date-time/src/lib/date-time.component.js +2 -2
- package/esm2015/date-time/src/lib/date-time.module.js +1 -1
- package/esm2015/date-time/src/public-api.js +1 -1
- package/esm2015/db/index.js +1 -1
- package/esm2015/db/sd-angular-core-db.js +1 -1
- package/esm2015/db/src/lib/db.model.js +1 -1
- package/esm2015/db/src/lib/db.service.js +1 -1
- package/esm2015/db/src/public-api.js +1 -1
- package/esm2015/dynamic-report/index.js +1 -1
- package/esm2015/dynamic-report/sd-angular-core-dynamic-report.js +1 -1
- package/esm2015/dynamic-report/src/lib/dynamic-report.component.js +1 -1
- package/esm2015/dynamic-report/src/lib/dynamic-report.module.js +1 -1
- package/esm2015/dynamic-report/src/public-api.js +1 -1
- package/esm2015/editor/index.js +1 -1
- package/esm2015/editor/sd-angular-core-editor.js +1 -1
- package/esm2015/editor/src/lib/constant.js +1 -1
- package/esm2015/editor/src/lib/editor.component.js +1 -1
- package/esm2015/editor/src/lib/editor.module.js +1 -1
- package/esm2015/editor/src/public-api.js +1 -1
- package/esm2015/excel/index.js +1 -1
- package/esm2015/excel/sd-angular-core-excel.js +1 -1
- package/esm2015/excel/src/lib/excel.model.js +1 -1
- package/esm2015/excel/src/lib/excel.service.js +1 -1
- package/esm2015/excel/src/public-api.js +1 -1
- package/esm2015/export/index.js +1 -1
- package/esm2015/export/sd-angular-core-export.js +1 -1
- package/esm2015/export/src/lib/export.model.js +3 -2
- package/esm2015/export/src/lib/export.service.js +10 -5
- package/esm2015/export/src/public-api.js +1 -1
- package/esm2015/filter/index.js +1 -1
- package/esm2015/filter/sd-angular-core-filter.js +1 -1
- package/esm2015/filter/src/lib/directives/sd-filter-def.directive.js +1 -1
- package/esm2015/filter/src/lib/filter.component.js +1 -1
- package/esm2015/filter/src/lib/filter.model.js +1 -1
- package/esm2015/filter/src/lib/filter.module.js +1 -1
- package/esm2015/filter/src/lib/filter.service.js +1 -1
- package/esm2015/filter/src/lib/pipes/values-local.pipe.js +1 -1
- package/esm2015/filter/src/lib/pipes/values-server.pipe.js +1 -1
- package/esm2015/filter/src/public-api.js +1 -1
- package/esm2015/form/index.js +1 -1
- package/esm2015/form/sd-angular-core-form.js +1 -1
- package/esm2015/form/src/lib/form.module.js +1 -1
- package/esm2015/form/src/public-api.js +1 -1
- package/esm2015/grid/index.js +1 -1
- package/esm2015/grid/sd-angular-core-grid.js +1 -1
- package/esm2015/grid/src/lib/components/grid-config/grid-config.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-config/grid-config.model.js +1 -1
- package/esm2015/grid/src/lib/components/grid-desktop-column-children-view/grid-desktop-column-children-view.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-desktop-column-edit/grid-desktop-column-edit.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-desktop-column-view/grid-desktop-column-view.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-desktop-inline-filter/grid-desktop-inline-filter.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-import-excel/grid-import-excel.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-mobile-item-view/grid-mobile-item-view.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-popup-editor/grid-popup-editor.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-popup-export-excel/grid-popup-export-excel.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-popup-export-excel/grid-popup-export-excel.model.js +1 -1
- package/esm2015/grid/src/lib/components/grid-popup-filter/grid-popup-filter.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-popup-filter/grid-popup-filter.model.js +1 -1
- package/esm2015/grid/src/lib/components/grid-popup-quick-filter-detail/grid-popup-quick-filter-detail.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-sub-information/grid-sub-information.component.js +1 -1
- package/esm2015/grid/src/lib/directives/cell-def.directive.js +1 -1
- package/esm2015/grid/src/lib/directives/cell-editor-def.directive.js +1 -1
- package/esm2015/grid/src/lib/directives/cell-footer-def.directive.js +1 -1
- package/esm2015/grid/src/lib/directives/sub-information-header-def.directive.js +1 -1
- package/esm2015/grid/src/lib/grid.component.js +1 -1
- package/esm2015/grid/src/lib/grid.model.js +1 -1
- package/esm2015/grid/src/lib/grid.module.js +1 -1
- package/esm2015/grid/src/lib/models/filter-info.model.js +1 -1
- package/esm2015/grid/src/lib/models/grid-configuration.model.js +1 -1
- package/esm2015/grid/src/lib/models/handler-dotnet.js +1 -1
- package/esm2015/grid/src/lib/models/handler-local.js +1 -1
- package/esm2015/grid/src/lib/models/handler.js +1 -1
- package/esm2015/grid/src/lib/pipes/cell-desktop-class-name.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/cell-mobile-class-name.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/column-command-filter.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/column-html-template.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/column-title.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/column-values.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/command-disabled.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/command-filter.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/command-hidden.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/command-icon.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/command-title.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/dynamic-items.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/editor-dynamic-item.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/editor-handler.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/editor-popup-visible.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/editor-sub-information-handler.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/editor-validate.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/filter-mobile.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/mobile-command-filter.js +1 -1
- package/esm2015/grid/src/lib/pipes/mobile-view-html-template.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/value-transform.pipe.js +1 -1
- package/esm2015/grid/src/public-api.js +1 -1
- package/esm2015/grid-material/index.js +1 -1
- package/esm2015/grid-material/sd-angular-core-grid-material.js +1 -1
- package/esm2015/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/desktop-cell/desktop-cell.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/desktop-command/desktop-command.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/desktop-editor-validation/desktop-editor-validation.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/dynamic-column/dynamic-column.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/grid-filter/grid-filter.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/popup-export/popup-export.component.js +32 -24
- package/esm2015/grid-material/src/lib/components/popup-filter/popup-filter.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/quick-action/quick-action.component.js +1 -1
- package/esm2015/grid-material/src/lib/directives/sd-material-cell-def.directive.js +1 -1
- package/esm2015/grid-material/src/lib/directives/sd-material-empty-data-def.directive.js +1 -1
- package/esm2015/grid-material/src/lib/directives/sd-material-filter-def.directive.js +1 -1
- package/esm2015/grid-material/src/lib/directives/sd-material-footer-def.directive.js +1 -1
- package/esm2015/grid-material/src/lib/directives/sd-material-sub-information-def.directive.js +1 -1
- package/esm2015/grid-material/src/lib/functions/calculate-sd-id.js +1 -1
- package/esm2015/grid-material/src/lib/grid-material.component.js +4 -3
- package/esm2015/grid-material/src/lib/grid-material.module.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-action.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-cell.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-column.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-command.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-config.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-configuration.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-editor.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-export.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-filter.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-group.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-option.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-reload.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-selection.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-style.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-sub-information.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid.model.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/cell-view.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/column-badge.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/column-children-filter.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/column-html-template.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/column-title.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/column-tooltip.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/column-transform.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/column-values.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/command-disable.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/command-filter.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/command-icon.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/command-title.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/editor-handler-column.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/editor-handler-row.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/editor-validate.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/filter-column.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/filter-external.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/grid-configuration-result.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/sd-group.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/selection-action-filter.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/selection-disable.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/selection-visible-select-all.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/selection-visible.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/style-row-css.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/services/generated-column/generated-column.model.js +1 -1
- package/esm2015/grid-material/src/lib/services/generated-column/generated-column.service.js +1 -1
- package/esm2015/grid-material/src/lib/services/grid-configuration.service.js +1 -1
- package/esm2015/grid-material/src/lib/services/grid-filter.service.js +1 -1
- package/esm2015/grid-material/src/public-api.js +1 -1
- package/esm2015/group/index.js +1 -1
- package/esm2015/group/sd-angular-core-group.js +1 -1
- package/esm2015/group/src/lib/group.component.js +1 -1
- package/esm2015/group/src/lib/group.module.js +1 -1
- package/esm2015/group/src/public-api.js +1 -1
- package/esm2015/header-title/index.js +1 -1
- package/esm2015/header-title/sd-angular-core-header-title.js +1 -1
- package/esm2015/header-title/src/lib/header-title.component.js +1 -1
- package/esm2015/header-title/src/lib/header-title.module.js +1 -1
- package/esm2015/header-title/src/public-api.js +1 -1
- package/esm2015/image-preview/index.js +1 -1
- package/esm2015/image-preview/sd-angular-core-image-preview.js +1 -1
- package/esm2015/image-preview/src/lib/directives/image-preview.directive.js +1 -1
- package/esm2015/image-preview/src/lib/image-preview/image-preview.component.js +1 -1
- package/esm2015/image-preview/src/lib/image-preview/image-preview.module.js +1 -1
- package/esm2015/image-preview/src/lib/models/image-preview.model.js +1 -1
- package/esm2015/image-preview/src/public-api.js +1 -1
- package/esm2015/input/index.js +1 -1
- package/esm2015/input/sd-angular-core-input.js +1 -1
- package/esm2015/input/src/lib/directives/input-suffix.directive.js +1 -1
- package/esm2015/input/src/lib/directives/touch.directive.js +1 -1
- package/esm2015/input/src/lib/input-tooltip.pipe.js +1 -1
- package/esm2015/input/src/lib/input.component.js +1 -1
- package/esm2015/input/src/lib/input.module.js +1 -1
- package/esm2015/input/src/public-api.js +1 -1
- package/esm2015/input-currency/index.js +1 -1
- package/esm2015/input-currency/sd-angular-core-input-currency.js +1 -1
- package/esm2015/input-currency/src/lib/input-currency-tooltip.pipe.js +1 -1
- package/esm2015/input-currency/src/lib/input-currency.component.js +1 -1
- package/esm2015/input-currency/src/lib/input-currency.module.js +1 -1
- package/esm2015/input-currency/src/public-api.js +1 -1
- package/esm2015/input-dropdown/index.js +1 -1
- package/esm2015/input-dropdown/sd-angular-core-input-dropdown.js +1 -1
- package/esm2015/input-dropdown/src/lib/input-tooltip.pipe.js +1 -1
- package/esm2015/input-dropdown/src/lib/input.component.js +1 -1
- package/esm2015/input-dropdown/src/lib/input.module.js +1 -1
- package/esm2015/input-dropdown/src/public-api.js +1 -1
- package/esm2015/input-number/index.js +1 -1
- package/esm2015/input-number/sd-angular-core-input-number.js +1 -1
- package/esm2015/input-number/src/lib/input-number.component.js +1 -1
- package/esm2015/input-number/src/lib/input-number.module.js +1 -1
- package/esm2015/input-number/src/public-api.js +1 -1
- package/esm2015/input-upload-file/index.js +1 -1
- package/esm2015/input-upload-file/sd-angular-core-input-upload-file.js +1 -1
- package/esm2015/input-upload-file/src/lib/input-upload-file.component.js +1 -1
- package/esm2015/input-upload-file/src/lib/input-upload-file.module.js +1 -1
- package/esm2015/input-upload-file/src/public-api.js +1 -1
- package/esm2015/json-editor/index.js +1 -1
- package/esm2015/json-editor/sd-angular-core-json-editor.js +1 -1
- package/esm2015/json-editor/src/lib/json-editor.component.js +1 -1
- package/esm2015/json-editor/src/lib/json-editor.module.js +1 -1
- package/esm2015/json-editor/src/public-api.js +1 -1
- package/esm2015/konva/index.js +1 -1
- package/esm2015/konva/sd-angular-core-konva.js +1 -1
- package/esm2015/konva/src/lib/konva.module.js +1 -1
- package/esm2015/konva/src/lib/merge-images/merge-images.component.js +1 -1
- package/esm2015/konva/src/public-api.js +1 -1
- package/esm2015/label/index.js +1 -1
- package/esm2015/label/sd-angular-core-label.js +1 -1
- package/esm2015/label/src/lib/label.component.js +1 -1
- package/esm2015/label/src/lib/label.module.js +1 -1
- package/esm2015/label/src/public-api.js +1 -1
- package/esm2015/lib/core.module.js +1 -1
- package/esm2015/lib/material.module.js +1 -1
- package/esm2015/loading/index.js +1 -1
- package/esm2015/loading/sd-angular-core-loading.js +1 -1
- package/esm2015/loading/src/lib/loading.service.js +1 -1
- package/esm2015/loading/src/public-api.js +1 -1
- package/esm2015/modal/index.js +1 -1
- package/esm2015/modal/sd-angular-core-modal.js +1 -1
- package/esm2015/modal/src/lib/bottom-sheet/bottom-sheet-body/bottom-sheet-body.component.js +1 -1
- package/esm2015/modal/src/lib/bottom-sheet/bottom-sheet-footer/bottom-sheet-footer.component.js +1 -1
- package/esm2015/modal/src/lib/bottom-sheet/bottom-sheet-header/bottom-sheet-header.component.js +1 -1
- package/esm2015/modal/src/lib/bottom-sheet/bottom-sheet.component.js +1 -1
- package/esm2015/modal/src/lib/modal/modal-body/modal-body.component.js +1 -1
- package/esm2015/modal/src/lib/modal/modal-footer/modal-footer.component.js +1 -1
- package/esm2015/modal/src/lib/modal/modal-header/modal-header.component.js +1 -1
- package/esm2015/modal/src/lib/modal/modal.component.js +1 -1
- package/esm2015/modal/src/lib/modal.module.js +1 -1
- package/esm2015/modal/src/public-api.js +1 -1
- package/esm2015/modal-resizable/index.js +1 -1
- package/esm2015/modal-resizable/sd-angular-core-modal-resizable.js +1 -1
- package/esm2015/modal-resizable/src/lib/modal-resizable/modal-resizable.component.js +1 -1
- package/esm2015/modal-resizable/src/lib/modal-resizable.module.js +1 -1
- package/esm2015/modal-resizable/src/public-api.js +1 -1
- package/esm2015/notify/index.js +1 -1
- package/esm2015/notify/sd-angular-core-notify.js +1 -1
- package/esm2015/notify/src/lib/components/dialog-confirm/dialog-confirm.component.js +1 -1
- package/esm2015/notify/src/lib/configurations/notify.configuration.js +1 -1
- package/esm2015/notify/src/lib/notify.module.js +1 -1
- package/esm2015/notify/src/lib/notify.service.js +1 -1
- package/esm2015/notify/src/public-api.js +1 -1
- package/esm2015/popover/index.js +1 -1
- package/esm2015/popover/sd-angular-core-popover.js +1 -1
- package/esm2015/popover/src/lib/directives/popover-content.directive.js +1 -1
- package/esm2015/popover/src/lib/directives/popover-trigger.directive.js +1 -1
- package/esm2015/popover/src/lib/popover/popover.component.js +1 -1
- package/esm2015/popover/src/lib/popover.model.js +1 -1
- package/esm2015/popover/src/lib/popover.module.js +1 -1
- package/esm2015/popover/src/public-api.js +1 -1
- package/esm2015/public-api.js +1 -1
- package/esm2015/quick-action/index.js +1 -1
- package/esm2015/quick-action/sd-angular-core-quick-action.js +1 -1
- package/esm2015/quick-action/src/lib/quick-action.component.js +1 -1
- package/esm2015/quick-action/src/lib/quick-action.module.js +1 -1
- package/esm2015/quick-action/src/public-api.js +1 -1
- package/esm2015/radio/index.js +1 -1
- package/esm2015/radio/sd-angular-core-radio.js +1 -1
- package/esm2015/radio/src/lib/radio.component.js +1 -1
- package/esm2015/radio/src/lib/radio.module.js +1 -1
- package/esm2015/radio/src/public-api.js +1 -1
- package/esm2015/sd-angular-core.js +1 -1
- package/esm2015/select/index.js +1 -1
- package/esm2015/select/sd-angular-core-select.js +1 -1
- package/esm2015/select/src/lib/select-display-def.directive.js +1 -1
- package/esm2015/select/src/lib/select.component.js +1 -1
- package/esm2015/select/src/lib/select.module.js +1 -1
- package/esm2015/select/src/public-api.js +1 -1
- package/esm2015/select-badge/index.js +1 -1
- package/esm2015/select-badge/sd-angular-core-select-badge.js +1 -1
- package/esm2015/select-badge/src/lib/select-badge-display-def.directive.js +1 -1
- package/esm2015/select-badge/src/lib/select-badge.component.js +1 -1
- package/esm2015/select-badge/src/lib/select-badge.module.js +1 -1
- package/esm2015/select-badge/src/public-api.js +1 -1
- package/esm2015/select-editor/index.js +1 -1
- package/esm2015/select-editor/sd-angular-core-select-editor.js +1 -1
- package/esm2015/select-editor/src/lib/select-editor.component.js +1 -1
- package/esm2015/select-editor/src/lib/select-editor.module.js +1 -1
- package/esm2015/select-editor/src/public-api.js +1 -1
- package/esm2015/service/index.js +1 -1
- package/esm2015/service/sd-angular-core-service.js +1 -1
- package/esm2015/service/src/lib/service.module.js +1 -1
- package/esm2015/service/src/public-api.js +1 -1
- package/esm2015/setting/index.js +1 -1
- package/esm2015/setting/sd-angular-core-setting.js +1 -1
- package/esm2015/setting/src/lib/setting.model.js +1 -1
- package/esm2015/setting/src/lib/setting.service.js +1 -1
- package/esm2015/setting/src/public-api.js +1 -1
- package/esm2015/side-drawer/index.js +1 -1
- package/esm2015/side-drawer/sd-angular-core-side-drawer.js +1 -1
- package/esm2015/side-drawer/src/lib/side-drawer/side-drawer.component.js +1 -1
- package/esm2015/side-drawer/src/lib/side-drawer.module.js +1 -1
- package/esm2015/side-drawer/src/public-api.js +1 -1
- package/esm2015/switch/index.js +1 -1
- package/esm2015/switch/sd-angular-core-switch.js +1 -1
- package/esm2015/switch/src/lib/switch.component.js +1 -1
- package/esm2015/switch/src/lib/switch.module.js +1 -1
- package/esm2015/switch/src/public-api.js +1 -1
- package/esm2015/tab-router/index.js +1 -1
- package/esm2015/tab-router/sd-angular-core-tab-router.js +1 -1
- package/esm2015/tab-router/src/lib/actions/tab-router.action.js +1 -1
- package/esm2015/tab-router/src/lib/components/tab-router-item/tab-router-item.component.js +1 -1
- package/esm2015/tab-router/src/lib/components/tab-router-nav/tab-router-nav.component.js +1 -1
- package/esm2015/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.js +1 -1
- package/esm2015/tab-router/src/lib/decorators/tab.decorator.js +1 -1
- package/esm2015/tab-router/src/lib/directives/router-link-mouse-down.directive.js +1 -1
- package/esm2015/tab-router/src/lib/events/tab-router.event.js +1 -1
- package/esm2015/tab-router/src/lib/models/tab-router.model.js +1 -1
- package/esm2015/tab-router/src/lib/pipes/tab-info.pipe.js +1 -1
- package/esm2015/tab-router/src/lib/services/tab-decorator.service.js +1 -1
- package/esm2015/tab-router/src/lib/services/tab-router.service.js +1 -1
- package/esm2015/tab-router/src/lib/tab-router.module.js +1 -1
- package/esm2015/tab-router/src/public-api.js +1 -1
- package/esm2015/textarea/index.js +1 -1
- package/esm2015/textarea/sd-angular-core-textarea.js +1 -1
- package/esm2015/textarea/src/lib/textarea.component.js +1 -1
- package/esm2015/textarea/src/lib/textarea.module.js +1 -1
- package/esm2015/textarea/src/public-api.js +1 -1
- package/esm2015/time/index.js +1 -1
- package/esm2015/time/sd-angular-core-time.js +1 -1
- package/esm2015/time/src/lib/time.component.js +1 -1
- package/esm2015/time/src/lib/time.module.js +1 -1
- package/esm2015/time/src/public-api.js +1 -1
- package/esm2015/timeline/index.js +1 -1
- package/esm2015/timeline/sd-angular-core-timeline.js +1 -1
- package/esm2015/timeline/src/lib/components/timeline.component.js +1 -1
- package/esm2015/timeline/src/lib/directives/timeline-def.directive.js +1 -1
- package/esm2015/timeline/src/lib/timeline.module.js +1 -1
- package/esm2015/timeline/src/public-api.js +1 -1
- package/esm2015/translate/index.js +1 -1
- package/esm2015/translate/sd-angular-core-translate.js +1 -1
- package/esm2015/translate/src/lib/translate.model.js +1 -1
- package/esm2015/translate/src/lib/translate.module.js +1 -1
- package/esm2015/translate/src/lib/translate.pipe.js +1 -1
- package/esm2015/translate/src/lib/translate.service.js +1 -1
- package/esm2015/upload-excel/index.js +1 -1
- package/esm2015/upload-excel/sd-angular-core-upload-excel.js +1 -1
- package/esm2015/upload-excel/src/lib/pipes/columm-hidden.pipe.js +1 -1
- package/esm2015/upload-excel/src/lib/pipes/column-transform.pipe.js +1 -1
- package/esm2015/upload-excel/src/lib/upload-excel.component.js +7 -8
- package/esm2015/upload-excel/src/lib/upload-excel.model.js +1 -1
- package/esm2015/upload-excel/src/lib/upload-excel.module.js +1 -1
- package/esm2015/upload-excel/src/public-api.js +1 -1
- package/esm2015/upload-file/index.js +1 -1
- package/esm2015/upload-file/sd-angular-core-upload-file.js +1 -1
- package/esm2015/upload-file/src/lib/upload-file.component.js +1 -1
- package/esm2015/upload-file/src/lib/upload-file.module.js +1 -1
- package/esm2015/upload-file/src/public-api.js +1 -1
- package/esm2015/utility/index.js +1 -1
- package/esm2015/utility/sd-angular-core-utility.js +1 -1
- package/esm2015/utility/src/lib/directives/desktop.directive.js +1 -1
- package/esm2015/utility/src/lib/directives/mobile-tablet.directive.js +1 -1
- package/esm2015/utility/src/lib/directives/mobile.directive.js +1 -1
- package/esm2015/utility/src/lib/directives/tablet.directive.js +1 -1
- package/esm2015/utility/src/lib/pipes/currency.pipe.js +1 -1
- package/esm2015/utility/src/lib/pipes/safe-html.pipe.js +1 -1
- package/esm2015/utility/src/lib/pipes/time-different.pipe.js +1 -1
- package/esm2015/utility/src/lib/utility.module.js +1 -1
- package/esm2015/utility/src/lib/utility.service.js +1 -1
- package/esm2015/utility/src/public-api.js +1 -1
- package/esm2015/view/index.js +1 -1
- package/esm2015/view/sd-angular-core-view.js +1 -1
- package/esm2015/view/src/lib/view.module.js +1 -1
- package/esm2015/view/src/public-api.js +1 -1
- package/export/sd-angular-core-export.metadata.json +1 -1
- package/export/src/lib/export.model.d.ts +3 -0
- package/export/src/lib/export.service.d.ts +1 -4
- package/fesm2015/sd-angular-core-api.js +1 -1
- package/fesm2015/sd-angular-core-api.js.map +1 -1
- package/fesm2015/sd-angular-core-date-time.js +1 -1
- package/fesm2015/sd-angular-core-date-time.js.map +1 -1
- package/fesm2015/sd-angular-core-export.js +11 -5
- package/fesm2015/sd-angular-core-export.js.map +1 -1
- package/fesm2015/sd-angular-core-grid-material.js +34 -25
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/fesm2015/sd-angular-core-upload-excel.js +6 -7
- package/fesm2015/sd-angular-core-upload-excel.js.map +1 -1
- package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
- package/grid-material/src/lib/components/popup-export/popup-export.component.d.ts +2 -0
- package/package.json +1 -1
- package/{sd-angular-core-1.2.75.tgz → sd-angular-core-1.2.78.tgz} +0 -0
- package/upload-excel/src/lib/upload-excel.model.d.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-cell-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-filter-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-footer-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-empty-data-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-sub-information-def.directive.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/grid-material/src/lib/models/grid-configuration.model.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-filter.service.ts","../../../../projects/sd-core/grid-material/src/lib/components/grid-filter/grid-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-export/popup-export.component.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-configuration.service.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-values.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/functions/calculate-sd-id.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-html-template.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-transform.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-children-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-badge.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/grid-configuration-result.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-visible-select-all.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/services/generated-column/generated-column.service.ts","../../../../projects/sd-core/grid-material/src/lib/components/dynamic-column/dynamic-column.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-row.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-validate.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/style-row-css.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-editor-validation/desktop-editor-validation.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-visible.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/quick-action/quick-action.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/cell-view.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/sd-group.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.module.ts"],"names":["templateRef","this","Directive","args","selector","TemplateRef","Input","SdMaterialFilterDefDirective","Object","defineProperty","prototype","val","defaultShowing","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","call","__rest","s","e","t","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","apply","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","pop","push","create","__values","o","m","__read","r","ar","error","__spread","arguments","concat","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","DEFAULT_GRID_MATERIAL_CONFIG","pageSize","pages","GRID_MATERIAL_CONFIG","InjectionToken","SdPopupFilter","cdRef","_this","externalFilters","externalFilter","inlineExternal","columns","columnFilter","inlineColumn","filterDefs","filterDef","inlineFilterDef","changeFilter","EventEmitter","clearFilter","open","JSON","parse","stringify","modal","markForCheck","close","onApply","emit","onClear","Component","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","ViewChild","Output","settingService","_prefix","key","prefix","selectedQuickFilter","quickFilters","configuration","_b","_a","hash","Injectable","SdSettingService","SdGridFilter","ref","deviceService","gridFilterService","isVisible","_filterOptionChanges","Subject","filterChange","_subscription","Subscription","_loadDefault","_u","_v","column","field","filter","_c","_d","default","_w","_x","_e","type","from","_j","_g","_f","_h","undefined","to","_o","_l","_k","_m","_p","_y","_z","sdMaterialFilterDef","_q","_clearFilter","_s","_t","onFilter","item","popupFilter","onChangeFilter","onReset","onClearFilter","setFilter","externalFilter_1","isMobileOrTablet","isDesktop","disabled","ngAfterViewInit","add","pipe","startWith","subscribe","ngOnDestroy","unsubscribe","DeviceDetectorService","SdGridFilterService","SdPopupExport","loadingService","exportService","notifyService","translateService","groups","enableCreating","selected","files","export","form","FormGroup","_getExportableColumns","gridOption","forEach","children","childColumn","map","title","description","width","_getExportableGroups","permission","hideMyTemplates","loadFiles","code","detectChanges","exportDefault","isCSV","file","group","selectedGroup","find","filesInFolder","_0","_initTemplate","fileName","sheets","isArray","sheet","name","items","fields","_2","_1","_3","_5","generateTemplate","start","finally","stop","filePath","download","uuid","generateAndUploadTemplate","generateUploadTemplate","onExport","uploadTemplate","_r","validator","validators","removeFile","confirm","translate","idx","splice","createTemplate","invalid","markAllAsTouched","some","notify","warning","templateName","onChangeGroup","listGroups","selectedOptions","validatorTemplateName","test","option","ngOnInit","SdLoadingService","SdExportService","SdNotifyService","SdTranslateService","gridMaterialConfiguration","_COLUMNS","EDITORVALIDATION","EDITOR","SUBINFORMATION","COMMAND","SELECTION","GROUP","_cache","init","subject_1","load","_load","_get","_set","assign","remove","_remove","_default","observer","_getKey","config","hidden","origin","invisible","fixed","subject","storage","createServer","catch","console","isGeneratedColumn","col","generateConfigurationResult","sdSubInformation","fixedColumn","firstColumns","secondColumns","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","selection","commands","editor","addable","removable","visible","generatedColumn","e1","generatedColumns","includes","subColumn","e_2","colSpan","Inject","Optional","transform","valueField","displayField","remain","_prefix$1","_cache$1","values","Pipe","CalculateSdId","sdId","editorHandlerColumn","expandDetail","isExpanded","isExpanding","isSelected","sdGroup","selectable","actions","groupedActions","originItem","editorErrorMessage","editorHandlerRow","SdEditorHandlerColumnPipe","zone","_visible","columns_1","columns_1_1","childCol","run","NgZone","SdGridMaterial","gridConfigurationService","columnValuesPipe","editorHandlerColumnPipe","uuid.v4","localItems","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_optionChanges","isExporting","isSelectAll","exportTitle","_initCellDef","sdMaterialCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","rawColumnFilter","gridFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","_initConfiguration","paginate","showFirstLastButtons","_filterLocal","filterInfo","filterValue","toString","trim","toLowerCase","columnValue","fValue","replace","cValue","fromDate","Date","begin","toDate","end","getTime","type_1","field_1","sort","current","s1","s2","reverse","index","total","_getFilter","pageIndex","filterReq","force","isObservable","toPromise","results","handle","error_1","_render","reload","onReload","every","_updateSelectedItems","_load$1","data","sdScroll","scrollTop","_exportedItems","exportedItems","_allColumns","_allExportedColumns","_onExport","columns_2","maxItemsPerRequest","exportItems","this_1","res","mapping","totalPage","percent","Math","round","allColumns","allExportedColumns","obj","exportColumn","exportedColumn","displayOnTrue","displayOnFalse","date","transformDate","toFormat","e_7","columns_3","columns_3_1","e_6","exportItems_1","exportItems_1_1","exportCSV","_4","exportByTemplate","max","onFilterChange","onExpand","rowData","subInformation","always","multiple","onSelect","single","onSelectAll","onClearSelection","editorStatus","sdVersion","onCreate","onAdd","addToLast","temporary","onUpdate","onSave","saving","validate","message","err_1","onCancel","idx2","idx1","onRemove","update","refreshItem","_subscription$1","debounceTime","switchMap","gridConfigurationObserver","paginator","page","sortChange","changes","drop","event","moveItemInArray","previousIndex","currentIndex","keys","animations","trigger","style","height","minHeight","visibility","transition","animate","SdGridConfigurationService","SdColumnValuesPipe","SdScrollDirective","SdQuickAction","MatPaginator","MatSort","ContentChild","SdMaterialSubInformationDefDirective","SdMaterialEmptyDataDefDirective","ContentChildren","SdMaterialCellDefDirective","SdMaterialFooterDefDirective","SdCommandFilterPipe","commands_1","commands_1_1","command","flag","isHidden","e_1","childCommand","hidden_1","SdCommandDisablePipe","SdCommandIconPipe","icon","SdCommandTitlePipe","SdColumnHtmlTemplatePipe","htmlTemplate","SdColumnTransformPipe","Number","isNumber","toVNCurrency","SdFilterExternalPipe","externalFilters_1","externalFilters_1_1","SdFilterColumnPipe","columnChildren","SdColumnChildrenFilterPipe","_isMobileOrTablet","transformValue","templateValue","SdColumnTitlePipe","dynamicTitle","SdColumnBadgePipe","badge","badgeType","color","badgeIcon","SdGridConfigurationResultPipe","SdPopupGridConfiguration","isCreatingColumn","disabledDrag","_cache$2","createColumn","mouseUp","dropTable","table","renderRows","handleMouseDown","handleMouseUp","HostListener","SdColumnTooltipPipe","tooltip","_convert","action","fontSet","click","childAction","key_1","actions_1","actions_1_1","availableActions","availableActions_1","availableActions_1_1","isGrouped","setTimeout","first","_cache$3","loadSystem","systemColumn","SdDynamicColumn","generatedColumnService","columnTypes","isDetail","originColumns","onDetail","detail","isSystem","useTemplate","markAsUntouched","markAsPristine","systemSetting","setting","id","systemColumns","_subscription$2","SdGeneratedColumnService","SdSideDrawer","onChange","change","editorOnAdd","editorOnEdit","edit","editorOnDelete","delete","SdEditorHandlerRowPipe","status","isDisabled","editable","savable","cancelable","_visible$1","SdEditorValidatePipe","_previous","_delay","now","SdStyleRowCss","rowCss","SdColumnInlineFilter","useFilterDate","hasGroup","clear","SdCellViewPipe","utilityService","_maxSecond","_maxMinute","_maxHour","_maxDay","_maxMonth","_isMobileOrTablet$1","displayOnEmpty","align","display","hasHtml","html","seconds","timeDifferent","timeDifference","emptyValues","SdUtilityService","SdGroupPipe","groupItem","items_1","items_1_1","fields_1","fields_1_1","e_4","MatPaginatorIntlCro","_super","firstPageLabel","lastPageLabel","itemsPerPageLabel","nextPageLabel","previousPageLabel","getRangeLabel","String","__","constructor","__extends","MatPaginatorIntl","NgModule","imports","CommonModule","FormsModule","ReactiveFormsModule","MatInputModule","MatFormFieldModule","MatSortModule","MatPaginatorModule","MatTableModule","MatMenuModule","MatIconModule","MatButtonModule","MatTooltipModule","MatProgressSpinnerModule","MatChipsModule","MatRadioModule","MatSlideToggleModule","MatCheckboxModule","MatListModule","MatDividerModule","CdkTableModule","DragDropModule","SdFormModule","SdServiceModule","MatSliderModule","ScrollingModule","SdCommonModule","declarations","SdGridQuickAction","SdDesktopCell","SdDesktopCellEditor","SdDesktopEditorValidation","SdDesktopCellView","SdDesktopCellChildrenView","SdDesktopCommand","SdSelectionActionFilterPipe","SdSelectionVisiblePipe","SdSelectionDisablePipe","SdSelectionVisibleSelectAllPipe","exports","providers","DatePipe","DecimalPipe","CdkColumnDef","provide","useClass"],"mappings":"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","sourcesContent":["import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialCellDef]'\r\n})\r\nexport class SdMaterialCellDefDirective {\r\n @Input() sdMaterialCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFilterDef]'\r\n})\r\nexport class SdMaterialFilterDefDirective {\r\n @Input() sdMaterialFilterDef: string;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n defaultShowing: boolean;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFooterDef]'\r\n})\r\nexport class SdMaterialFooterDefDirective {\r\n @Input() sdMaterialFooterDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialEmptyDataDef]'\r\n})\r\nexport class SdMaterialEmptyDataDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialSubInformationDef]'\r\n})\r\nexport class SdMaterialSubInformationDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface ISdGridMaterialConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[]\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_GRID_MATERIAL_CONFIG: ISdGridMaterialConfiguration = {\r\n paginate: {\r\n pageSize: 50,\r\n pages: [50, 100, 200]\r\n }\r\n};\r\n\r\nexport const GRID_MATERIAL_CONFIG = new InjectionToken<ISdGridMaterialConfiguration>('sd-grid-material.configuration');\r\n","import { Component, ViewChild, Output, EventEmitter, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialExternalFilter } from '../../models/grid-filter.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\n\r\n@Component({\r\n selector: 'sd-popup-filter',\r\n templateUrl: './popup-filter.component.html',\r\n styleUrls: ['./popup-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdPopupFilter {\r\n @ViewChild('modal') modal: SdModal;\r\n @Input() externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: {\r\n [key: string]: boolean\r\n } = {};\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n columnFilter: any = {};\r\n inlineColumn: {\r\n [key: string]: boolean\r\n } = {};\r\n\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: any = {};\r\n inlineFilterDef: {\r\n [key: string]: boolean;\r\n } = {};\r\n\r\n @Output() changeFilter = new EventEmitter<{\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }>();\r\n @Output() clearFilter = new EventEmitter();\r\n constructor(\r\n private cdRef: ChangeDetectorRef\r\n ) {\r\n }\r\n\r\n open = (args: {\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }) => {\r\n const { inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = args;\r\n this.inlineColumn = JSON.parse(JSON.stringify(inlineColumn || {}));\r\n this.columnFilter = JSON.parse(JSON.stringify(columnFilter || {}));\r\n this.inlineExternal = JSON.parse(JSON.stringify(inlineExternal || {}));\r\n this.externalFilter = JSON.parse(JSON.stringify(externalFilter || {}));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(inlineFilterDef || {}));\r\n this.filterDef = JSON.parse(JSON.stringify(filterDef || {}));\r\n this.modal.open();\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n close = () => {\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n onApply = () => {\r\n this.changeFilter.emit({\r\n inlineColumn: this.inlineColumn || {},\r\n columnFilter: this.columnFilter || {},\r\n inlineExternal: this.inlineExternal || {},\r\n externalFilter: this.externalFilter || {},\r\n inlineFilterDef: this.inlineFilterDef || {},\r\n filterDef: this.filterDef || {}\r\n });\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n onClear() {\r\n this.clearFilter.emit();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialFilterConfiguration } from '../models/grid-filter.model';\r\n\r\n@Injectable()\r\nexport class SdGridFilterService {\r\n #prefix = '61d22e8e-eee8-4aad-8e1c-044a532fea91';\r\n constructor(private settingService: SdSettingService) {\r\n }\r\n get = async (key: string): Promise<SdGridMaterialFilterConfiguration> => {\r\n if (!key) {\r\n return {\r\n selectedQuickFilter: null,\r\n quickFilters: [],\r\n inlineExternal: {},\r\n inlineColumn: {},\r\n inlineFilterDef: {}\r\n };\r\n }\r\n const { get } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n const configuration = await get();\r\n return {\r\n selectedQuickFilter: configuration?.selectedQuickFilter ?? null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration?.inlineExternal || {},\r\n inlineColumn: configuration?.inlineColumn || {},\r\n inlineFilterDef: configuration?.inlineFilterDef || {},\r\n };\r\n }\r\n\r\n set = async (key: string, configuration: SdGridMaterialFilterConfiguration): Promise<SdGridMaterialFilterConfiguration> => {\r\n configuration = {\r\n selectedQuickFilter: configuration?.selectedQuickFilter || null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration.inlineExternal || {},\r\n inlineColumn: configuration.inlineColumn || {},\r\n inlineFilterDef: configuration.inlineFilterDef || {}\r\n };\r\n if (!key) {\r\n return configuration;\r\n }\r\n const { set } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n key = hash({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n await set(configuration);\r\n return configuration;\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewChild, AfterViewInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdGridMaterialFilterOption, SdGridMaterialExternalFilter } from '../../models/grid-filter.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdGridFilterService } from '../../services/grid-filter.service';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\n\r\n@Component({\r\n selector: 'sd-grid-filter',\r\n templateUrl: './grid-filter.component.html',\r\n styleUrls: ['./grid-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdGridFilter implements AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupFilter) popupFilter: SdPopupFilter;\r\n isVisible = true;\r\n filter: Readonly<SdGridMaterialFilterOption>;\r\n #filterOptionChanges = new Subject<SdGridMaterialFilterOption>();\r\n @Input('filter') set _filter(filter: SdGridMaterialFilterOption) {\r\n this.filter = filter;\r\n this.isVisible = !this.filter?.disabled;\r\n this.#filterOptionChanges.next(this.filter);\r\n }\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: any = {};\r\n inlineFilterDef: {\r\n [key: string]: boolean;\r\n } = {};\r\n\r\n @Output() filterChange = new EventEmitter();\r\n #subscription = new Subscription();\r\n\r\n columnFilter: any = {};\r\n inlineColumn: {\r\n [key: string]: boolean;\r\n } = {};\r\n externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: {\r\n [key: string]: boolean;\r\n } = {};\r\n isMobileOrTablet: boolean;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private deviceService: DeviceDetectorService,\r\n private gridFilterService: SdGridFilterService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n this.ref.markForCheck();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.#filterOptionChanges.pipe(startWith(this.filter)).subscribe(() => {\r\n if (!this.isVisible) {\r\n this.filterChange.emit();\r\n return;\r\n }\r\n this.externalFilters = this.filter?.externalFilters || [];\r\n this.gridFilterService.get(this.filter?.key).then(configuration => {\r\n this.inlineColumn = configuration.inlineColumn;\r\n this.inlineExternal = configuration.inlineExternal;\r\n this.inlineFilterDef = configuration.inlineFilterDef;\r\n this.#loadDefault();\r\n this.filterChange.emit();\r\n });\r\n this.ref.markForCheck();\r\n }));\r\n }\r\n\r\n #loadDefault = () => {\r\n for (const column of this.columns) {\r\n this.inlineColumn[column.field] = this.inlineColumn[column.field] ?? column?.filter?.defaultShowing;\r\n this.columnFilter[column.field] = this.columnFilter[column.field] ?? column?.filter?.default;\r\n }\r\n for (const externalFilter of this.externalFilters) {\r\n this.inlineExternal[externalFilter.field] = this.inlineExternal[externalFilter.field] ?? externalFilter?.defaultShowing;\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: this.externalFilter[externalFilter.field]?.from ?? externalFilter.default?.from ?? undefined,\r\n to: this.externalFilter[externalFilter.field]?.to ?? externalFilter.default?.to ?? undefined\r\n };\r\n } else {\r\n this.externalFilter[externalFilter.field] = this.externalFilter[externalFilter.field] ?? externalFilter.default;\r\n }\r\n }\r\n for (const filterDef of this.filterDefs) {\r\n this.inlineFilterDef[filterDef.sdMaterialFilterDef] = this.inlineFilterDef[filterDef.sdMaterialFilterDef] ?? filterDef?.defaultShowing;\r\n }\r\n }\r\n\r\n #clearFilter = () => {\r\n this.columnFilter = {};\r\n this.externalFilter = {};\r\n this.filterDef = {};\r\n for (const externalFilter of this.externalFilters) {\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: undefined,\r\n to: undefined\r\n };\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFilter = (item?: SdGridMaterialColumn | SdGridMaterialExternalFilter) => {\r\n this.filterChange.emit();\r\n }\r\n\r\n open = () => {\r\n this.popupFilter.open({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef\r\n });\r\n }\r\n\r\n onChangeFilter = (args: {\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }) => {\r\n const { inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = args;\r\n this.inlineColumn = inlineColumn;\r\n this.columnFilter = columnFilter;\r\n this.inlineExternal = inlineExternal;\r\n this.externalFilter = externalFilter;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.filterDef = filterDef;\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn,\r\n inlineExternal,\r\n quickFilters: [],\r\n inlineFilterDef,\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.emit();\r\n }\r\n\r\n onReset = () => {\r\n this.inlineColumn = {};\r\n this.columnFilter = {};\r\n this.inlineExternal = {};\r\n this.externalFilter = {};\r\n this.inlineFilterDef = {};\r\n this.filterDef = {};\r\n this.#loadDefault();\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.columnFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n quickFilters: [],\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.emit();\r\n this.ref.markForCheck();\r\n }\r\n\r\n onClearFilter = () => {\r\n this.#clearFilter();\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.columnFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n quickFilters: [],\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.emit();\r\n }\r\n\r\n setFilter = (args: {\r\n columnFilter?: any,\r\n externalFilter?: any,\r\n filterDef?: any\r\n }) => {\r\n const { columnFilter, externalFilter, filterDef} = args;\r\n if (columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n if (externalFilter) {\r\n this.externalFilter = externalFilter;\r\n }\r\n if (filterDef) {\r\n this.filterDef = filterDef;\r\n }\r\n for (const externalFilter of this.externalFilters) {\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: this.externalFilter[externalFilter.field]?.from ?? undefined,\r\n to: this.externalFilter[externalFilter.field]?.to ?? undefined\r\n };\r\n }\r\n }\r\n this.ref.markForCheck();\r\n }\r\n}\r\n","import { Component, OnInit, AfterViewInit, ViewChild, Output, EventEmitter, Input, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport * as uuid from 'uuid';\r\n\r\nimport {\r\n SdNotifyService\r\n} from '@sd-angular/core/notify';\r\n\r\nimport {\r\n SdLoadingService\r\n} from '@sd-angular/core/loading';\r\n\r\nimport {\r\n SdTranslateService\r\n} from '@sd-angular/core/translate';\r\nimport hash from 'object-hash';\r\nimport { MatSelectionList } from '@angular/material/list';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdExportFile, SdExportService, SdExportColumn } from '@sd-angular/core/export';\r\nimport { SdGroupExport } from '../../models/grid-export.model';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'sd-popup-export',\r\n templateUrl: './popup-export.component.html',\r\n styleUrls: ['./popup-export.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdPopupExport implements OnInit, AfterViewInit {\r\n gridOption: SdGridMaterialOption;\r\n columns: SdExportColumn[] = [];\r\n groups: SdGroupExport[] = [];\r\n templateName: string;\r\n enableCreating = false;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('listGroups') listGroups: MatSelectionList;\r\n\r\n selected: {\r\n [key: string]: boolean\r\n } = {};\r\n files: SdExportFile[] = [];\r\n selectedGroup: SdGroupExport;\r\n\r\n @Output() export = new EventEmitter<{ file: SdExportFile, columns: SdExportColumn[], isCSV?: boolean }>();\r\n form = new FormGroup({});\r\n\r\n @Input('gridOption') set _gridOption(option: SdGridMaterialOption) {\r\n this.gridOption = option;\r\n this.columns = this.#getExportableColumns();\r\n this.groups = this.#getExportableGroups();\r\n }\r\n private get key(): string {\r\n const prefix = '93889e78-f971-4a1d-8c73-fe2321af9233';\r\n if (!this.gridOption?.export?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: this.gridOption?.export?.key\r\n });\r\n }\r\n\r\n #getExportableColumns = (): SdExportColumn[] => {\r\n const columns: SdExportColumn[] = [];\r\n this.gridOption.columns.filter(e => !e.export?.disabled).forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return [...columns, ...(this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [])].map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width\r\n }));\r\n }\r\n\r\n #getExportableGroups = () => {\r\n return this.gridOption?.export?.groups?.filter(e => {\r\n const permission = e.permission;\r\n if (typeof (permission) === 'function') {\r\n return permission();\r\n }\r\n return permission;\r\n }) || [];\r\n }\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n open = async () => {\r\n if (!this.key) {\r\n this.exportDefault();\r\n return;\r\n }\r\n if (this.groups.length === 1 && this.gridOption?.export?.hideMyTemplates) {\r\n this.loadFiles(this.groups[0].code);\r\n } else {\r\n this.loadFiles(null);\r\n }\r\n this.selected = {};\r\n this.modal.open();\r\n this.ref.detectChanges();\r\n }\r\n\r\n exportDefault = (isCSV: boolean = false) => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.columns,\r\n isCSV\r\n });\r\n }\r\n\r\n\r\n loadFiles = async (group: string = null) => {\r\n this.selectedGroup = this.groups.find(e => e.code === group);\r\n this.files = await this.exportService.filesInFolder({\r\n key: this.key,\r\n group\r\n });\r\n this.ref.markForCheck();\r\n }\r\n\r\n #initTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.exportService.generateTemplate({\r\n fileName: fileName || this.gridOption?.export?.fileName,\r\n columns: this.columns,\r\n sheets\r\n });\r\n }\r\n\r\n generateTemplate = async () => {\r\n this.loadingService.start();\r\n const result = await this.#initTemplate().finally(this.loadingService.stop);\r\n if (result?.filePath) {\r\n this.exportService.download(result.filePath, `${this.gridOption?.export?.fileName || uuid}.xlsx`);\r\n }\r\n }\r\n\r\n generateAndUploadTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption?.export?.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.exportService.generateUploadTemplate({\r\n key: this.key,\r\n template: {\r\n fileName: fileName || this.gridOption?.export?.fileName,\r\n columns: this.columns.filter(e => this.selected[e.field]),\r\n sheets\r\n },\r\n group: this.selectedGroup?.code\r\n });\r\n }\r\n\r\n onExport = (file: SdExportFile) => {\r\n this.export.emit({\r\n file,\r\n columns: this.columns\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n uploadTemplate = async () => {\r\n const file = await this.exportService.uploadTemplate({\r\n key: this.key,\r\n group: this.selectedGroup?.code,\r\n validator: this.gridOption?.export?.validators\r\n });\r\n if(file) {\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n removeFile = (file: SdExportFile) => {\r\n this.notifyService.confirm(this.translateService.translate('Remove template')).then(() => {\r\n this.exportService.removeFile({\r\n key: this.key,\r\n fileName: file.fileName,\r\n group: this.selectedGroup?.code || null\r\n });\r\n const idx = this.files.indexOf(file);\r\n this.files.splice(idx, 1);\r\n this.files = [...this.files];\r\n this.ref.detectChanges();\r\n });\r\n }\r\n\r\n createTemplate = async () => {\r\n const { translate } = this.translateService;\r\n if (this.form.invalid) {\r\n this.form.markAllAsTouched();\r\n return;\r\n }\r\n if (!this.columns.some(e => this.selected[e.field])) {\r\n this.notifyService.notify.warning(translate('Please select columns'));\r\n return;\r\n }\r\n this.loadingService.start();\r\n const fileName = this.templateName + '.xlsx';\r\n try {\r\n if (this.gridOption?.export?.validators?.(fileName)) {\r\n this.notifyService.notify.warning(this.gridOption?.export?.validators(fileName));\r\n return;\r\n }\r\n const result = await this.generateAndUploadTemplate(fileName);\r\n if (result?.filePath) {\r\n const file: SdExportFile = {\r\n filePath: result.filePath,\r\n fileName: result.fileName\r\n };\r\n this.onExport(file);\r\n this.templateName = null;\r\n this.enableCreating = false;\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n }\r\n\r\n onChangeGroup = () => {\r\n this.loadFiles(this.listGroups?.selectedOptions?.selected[0]?.value);\r\n }\r\n\r\n validatorTemplateName = (val: string) => {\r\n const { translate } = this.translateService;\r\n const regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;\r\n if (!val) {\r\n return translate('Please enter your template name');\r\n }\r\n if (val.length > 50) {\r\n return translate('Template name is too long');\r\n }\r\n if (!regex.test(val)) {\r\n return translate('Template name only contains letters, numbers and spaces');\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnConfiguration, SdGridConfiguration, SdGridConfigurationCache, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { GRID_MATERIAL_CONFIG, ISdGridMaterialConfiguration } from '../models/grid-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdGridConfigurationService {\r\n #COLUMNS = {\r\n EDITORVALIDATION: 'sdEditorValidation',\r\n EDITOR: 'sdEditor',\r\n SUBINFORMATION: 'sdSubInformationAction',\r\n COMMAND: 'sdCommand',\r\n SELECTION: 'sdSelection',\r\n GROUP: 'sdGroup'\r\n };\r\n #cache: {\r\n [key: string]: SdGridConfigurationCache\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(GRID_MATERIAL_CONFIG) @Optional() public gridMaterialConfiguration: ISdGridMaterialConfiguration) {\r\n }\r\n\r\n init = (key: string, gridOption: SdGridMaterialOption) => {\r\n if (!this.#cache[key]) {\r\n const subject = new Subject<SdGridConfiguration>();\r\n this.#cache[key] = {\r\n load: this.#load(gridOption, subject),\r\n get: this.#get(gridOption),\r\n set: (configuration: SdGridConfiguration) => {\r\n configuration = this.#set(gridOption, configuration);\r\n subject.next({ ...configuration });\r\n return configuration;\r\n },\r\n remove: () => {\r\n this.#remove(gridOption)();\r\n subject.next(this.#default(gridOption));\r\n },\r\n observer: subject\r\n };\r\n }\r\n return this.#cache[key];\r\n }\r\n\r\n #getKey = (gridOption: SdGridMaterialOption) => {\r\n const prefix = 'c9e94836-6ace-4aeb-b148-4f0be63589ee';\r\n if (!gridOption?.config?.key && !gridOption?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: gridOption?.config?.key || !gridOption?.key\r\n });\r\n }\r\n\r\n #default = (gridOption: SdGridMaterialOption): SdGridConfiguration => {\r\n const columns: SdColumnConfiguration[] = gridOption?.columns?.filter(e => !e.hidden).map(e => ({\r\n origin: {\r\n field: e.field,\r\n title: e.title,\r\n width: e.width,\r\n invisible: e.invisible\r\n },\r\n invisible: e.invisible,\r\n fixed: false\r\n })) || [];\r\n return {\r\n columns\r\n };\r\n }\r\n\r\n #load = (gridOption: SdGridMaterialOption, subject: Subject<SdGridConfiguration>) => {\r\n return async () => {\r\n const get = this.#get(gridOption);\r\n const configuration = await get();\r\n subject.next({ ...configuration });\r\n };\r\n }\r\n\r\n #get = (gridOption: SdGridMaterialOption) => {\r\n return async () => {\r\n const key = this.#getKey(gridOption);\r\n if (!key) {\r\n return this.#default(gridOption);\r\n }\r\n const { columns, config } = gridOption;\r\n let configuration: SdGridConfiguration;\r\n if (config?.storage === 'server') {\r\n const { get, remove } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: config?.args\r\n });\r\n configuration = await get().catch(() => undefined);\r\n if (!configuration?.columns) {\r\n remove().catch(console.error);\r\n return this.#default(gridOption);\r\n }\r\n } else {\r\n const { get, remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: config?.storage,\r\n args: config?.args\r\n });\r\n configuration = get();\r\n if (!configuration?.columns) {\r\n remove();\r\n return this.#default(gridOption);\r\n }\r\n }\r\n\r\n configuration.columns = configuration.columns\r\n .filter(column => column.isGeneratedColumn || columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // Thêm những column mới vào storage nếu có\r\n columns.forEach(column => {\r\n const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n if (!col) {\r\n configuration.columns.push({\r\n origin: {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible,\r\n },\r\n invisible: column.invisible,\r\n fixed: false\r\n });\r\n } else {\r\n col.origin = {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible\r\n };\r\n }\r\n });\r\n return configuration;\r\n };\r\n }\r\n\r\n #set = (gridOption: SdGridMaterialOption, configuration: SdGridConfiguration) => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n if (gridOption?.config?.storage === 'server') {\r\n const { set } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: gridOption?.config?.args\r\n });\r\n set(configuration);\r\n } else {\r\n const { set } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args\r\n });\r\n set(configuration);\r\n }\r\n }\r\n return JSON.parse(JSON.stringify(configuration));\r\n }\r\n\r\n #remove = (gridOption: SdGridMaterialOption) => {\r\n return () => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n if (gridOption?.config?.storage === 'server') {\r\n const { remove } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: gridOption?.config?.args\r\n });\r\n remove();\r\n } else {\r\n const { remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args\r\n });\r\n remove();\r\n }\r\n }\r\n };\r\n }\r\n\r\n // get = async (gridOption: SdGridMaterialOption): Promise<SdGridConfiguration> => {\r\n // if (!gridOption?.key) {\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // const { key, columns } = gridOption;\r\n // const configuration: SdGridConfiguration = await this.settingService.get(this.#getKey(key)).catch(() => undefined);\r\n // if (!configuration?.columns) {\r\n // this.settingService.remove(this.#getKey(key)).catch(console.error);\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // configuration.columns = configuration.columns\r\n // .filter(column => columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // // Thêm những column mới vào storage nếu có\r\n // columns.forEach(column => {\r\n // const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n // if (!col) {\r\n // configuration.columns.push({\r\n // origin: {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible,\r\n // },\r\n // invisible: column.invisible,\r\n // fixed: false\r\n // });\r\n // } else {\r\n // col.origin = {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible\r\n // };\r\n // }\r\n // });\r\n // return configuration;\r\n // }\r\n\r\n // set = async (key: string, configuration: SdGridConfiguration): Promise<SdGridConfiguration> => {\r\n // if (key) {\r\n // this.settingService.set(this.#getKey(key), configuration);\r\n // }\r\n // return configuration;\r\n // }\r\n\r\n // remove = (key: string) => {\r\n // if (key) {\r\n // this.settingService.remove(this.#getKey(key));\r\n // }\r\n // }\r\n\r\n generateConfigurationResult = (\r\n configuration: SdGridConfiguration,\r\n gridOption: SdGridMaterialOption,\r\n sdSubInformation: SdMaterialSubInformationDefDirective) => {\r\n const result: SdGridConfigurationResult = {\r\n column: {},\r\n fixedColumn: {},\r\n firstColumns: [],\r\n secondColumns: [],\r\n firstHeaders: [],\r\n secondHeaders: [],\r\n displayedColumns: [],\r\n displayedFooters: [],\r\n multipleHeader: false\r\n };\r\n const { selection, commands, editor, group } = gridOption || {};\r\n if (editor?.addable || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITORVALIDATION);\r\n result.displayedColumns.push(this.#COLUMNS.EDITORVALIDATION);\r\n }\r\n if (selection?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (!editor?.hidden) {\r\n if (editor?.addable\r\n || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'popup' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITOR);\r\n result.displayedColumns.push(this.#COLUMNS.EDITOR);\r\n }\r\n }\r\n if (commands?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.COMMAND);\r\n result.displayedColumns.push(this.#COLUMNS.COMMAND);\r\n }\r\n if (group?.fields?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.GROUP);\r\n result.displayedColumns.push(this.#COLUMNS.GROUP);\r\n }\r\n configuration?.columns?.filter(col => !col.invisible).forEach(col => {\r\n if (col.isGeneratedColumn) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n const generatedColumn: SdGridMaterialColumn = {\r\n type: 'children',\r\n field: col.origin.field,\r\n title: col.origin.title,\r\n children: []\r\n };\r\n for (const subColumn of gridOption?.columns.filter(e1 => col.generatedColumns.includes(e1.field))) {\r\n if (subColumn.type === 'children' || subColumn.type === 'children-col') {\r\n for (const childColumn of subColumn.children) {\r\n generatedColumn.children.push({\r\n ...childColumn,\r\n colSpan: 2\r\n });\r\n }\r\n } else {\r\n generatedColumn.children.push({\r\n ...subColumn,\r\n colSpan: 2\r\n });\r\n }\r\n\r\n }\r\n result.firstColumns.push({\r\n ...generatedColumn,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n result.displayedColumns.push(col.origin.field);\r\n return;\r\n }\r\n const column = gridOption?.columns.find(e => e.field === col.origin.field);\r\n if (column) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n result.firstColumns.push({\r\n ...column,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n if (column.type === 'children-col') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n } else {\r\n result.displayedColumns.push(col.origin.field);\r\n }\r\n }\r\n });\r\n if (sdSubInformation?.templateRef) {\r\n result.firstHeaders.push(this.#COLUMNS.SUBINFORMATION);\r\n result.displayedColumns.push(this.#COLUMNS.SUBINFORMATION);\r\n }\r\n result.multipleHeader = result.secondHeaders.length > 0;\r\n // Sub infomation không thể có footer\r\n result.displayedFooters = result.displayedColumns.filter(val => val !== this.#COLUMNS.SUBINFORMATION);\r\n return result;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnValues'\r\n})\r\nexport class SdColumnValuesPipe implements PipeTransform {\r\n #prefix = 'a1e67660-8aa2-4c11-b02d-71a32188719f';\r\n #cache: {\r\n [key: string]: {\r\n result: any\r\n }\r\n } = {};\r\n transform = async (value: any, column: SdGridMaterialColumn): Promise<string> => {\r\n if (column.type !== 'values' || !column.option?.items || !column.option?.valueField || !column.option?.displayField) {\r\n return value;\r\n }\r\n const { items, valueField, displayField, ...remain } = column.option;\r\n const key = hash({\r\n prefix: this.#prefix,\r\n valueField,\r\n displayField,\r\n remain,\r\n value\r\n });\r\n if (typeof (items) === 'function') {\r\n if (!this.#cache[key]) {\r\n const values = await items(value, true);\r\n this.#cache[key] = {\r\n result: values?.find(e => e?.[valueField] === value)?.[displayField] || value\r\n };\r\n }\r\n } else {\r\n if (!this.#cache[key]) {\r\n this.#cache[key] = {\r\n result: items?.find(e => e?.[valueField] === value)?.[displayField] || value\r\n };\r\n }\r\n }\r\n return this.#cache[key].result;\r\n }\r\n}\r\n","import hash from 'object-hash';\r\nimport { SdItem } from \"../models/grid.model\";\r\n\r\nexport const CalculateSdId = (item: SdItem) => {\r\n const {\r\n sdId,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n sdGroup,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n originItem,\r\n editorErrorMessage,\r\n editorHandlerRow,\r\n ...remain } = item;\r\n return hash(remain);\r\n}","import { Injectable, NgZone, Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { CalculateSdId } from '../functions/calculate-sd-id';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorHandlerColumn'\r\n})\r\n@Injectable()\r\nexport class SdEditorHandlerColumnPipe implements PipeTransform {\r\n constructor(private zone: NgZone) { }\r\n #visible = (col: SdGridMaterialColumn, item: SdItem) => {\r\n if (col.type === 'children' || col.type === 'children-col') {\r\n return false;\r\n }\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (col.editor) {\r\n const isDisabled = typeof (col.editor.disabled) === 'function' ? col.editor.disabled(item) : col.editor.disabled;\r\n if (isDisabled) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n transform(value: any, item: SdItem, gridOption: SdGridMaterialOption) {\r\n const key = CalculateSdId(item);\r\n if (item.sdId === key && item.editorHandlerColumn) {\r\n return true;\r\n }\r\n item.editorHandlerColumn = item.editorHandlerColumn || {};\r\n const { columns } = gridOption;\r\n for (const col of columns) {\r\n if (col.type === 'children-col') {\r\n for (const childCol of col.children) {\r\n item.editorHandlerColumn[childCol.field] = {\r\n ...item.editorHandlerColumn[childCol.field],\r\n visible: this.#visible(childCol, item)\r\n }\r\n }\r\n } else {\r\n item.editorHandlerColumn[col.field] = {\r\n ...item.editorHandlerColumn[col.field],\r\n visible: this.#visible(col, item)\r\n }\r\n }\r\n }\r\n this.zone.run(() => {\r\n item.sdId = CalculateSdId(item);\r\n });\r\n item.sdId = key;\r\n return true;\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n Optional,\r\n Inject,\r\n ChangeDetectorRef,\r\n ContentChildren,\r\n QueryList,\r\n OnInit,\r\n OnDestroy,\r\n EventEmitter,\r\n ContentChild\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport * as uuid from 'uuid';\r\nimport {\r\n SdGridMaterialFilterRequest\r\n} from './models/grid-filter.model';\r\nimport {\r\n SdGridMaterialOption\r\n} from './models/grid-option.model';\r\nimport {\r\n GRID_MATERIAL_CONFIG,\r\n DEFAULT_GRID_MATERIAL_CONFIG,\r\n ISdGridMaterialConfiguration\r\n} from './models/grid-configuration.model';\r\nimport { Subscription, isObservable, Observable } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdGridMaterialColumn } from './models/grid-column.model';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';\r\nimport { SdGridConfiguration } from './models/grid-config.model';\r\nimport { SdGridConfigurationService } from './services/grid-configuration.service';\r\nimport { SdGridMaterialExportColumn } from './models/grid-export.model';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { SdGridMaterialItem, SdItem } from './models/grid.model';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';\r\nimport { SdScrollDirective } from '@sd-angular/core/common';\r\n\r\n@Component({\r\n selector: 'sd-grid-material',\r\n templateUrl: './grid-material.component.html',\r\n styleUrls: ['./grid-material.component.scss'],\r\n animations: [\r\n trigger('detailExpand', [\r\n state('collapsed', style({ height: '0', minHeight: '0', visibility: 'hidden' })),\r\n state('expanded', style({ height: '*', visibility: 'visible' })),\r\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\r\n ]),\r\n ],\r\n})\r\nexport class SdGridMaterial<T = any> implements OnInit, AfterViewInit, OnDestroy {\r\n @ViewChild(SdScrollDirective) sdScroll: SdScrollDirective;\r\n key = uuid.v4();\r\n gridConfigurationObserver: Observable<SdGridConfiguration>;\r\n gridFilter: SdGridFilter;\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\r\n @ViewChild(SdGridFilter) set _gridFilter(gridFilter: SdGridFilter) {\r\n if (gridFilter && this.gridFilter !== gridFilter) {\r\n this.gridFilter = gridFilter;\r\n this.#subscription.add(gridFilter.filterChange.pipe(\r\n debounceTime(200),\r\n map(() => {\r\n this.#paginator.pageIndex = 0;\r\n return this.#getFilter();\r\n }),\r\n switchMap(filterInfo => this.#load(filterInfo, false))\r\n ).subscribe(this.#render));\r\n }\r\n }\r\n\r\n @Input() set option(option: SdGridMaterialOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.gridOption = option;\r\n this.#optionChanges.emit();\r\n option?.columns?.forEach(col => {\r\n if (col.filter?.default) {\r\n this.columnFilter[col.field] = col.filter.default;\r\n }\r\n });\r\n const configuration = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.gridConfigurationObserver = configuration.observer;\r\n configuration.load();\r\n }\r\n }\r\n\r\n gridOption: SdGridMaterialOption;\r\n localItems: any[] = [];\r\n items: SdGridMaterialItem<T>[] = [];\r\n selectedItems: T[] = [];\r\n total: number;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n // Paginate\r\n isHiddenPaginator = false;\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(paginator.page.pipe(\r\n debounceTime(200),\r\n map(this.#getFilter),\r\n switchMap(filterInfo => this.#load(filterInfo, false))\r\n ).subscribe(this.#render));\r\n }\r\n }\r\n\r\n // Sorting\r\n #sort: MatSort;\r\n @ViewChild(MatSort) set sort(sort: MatSort) {\r\n if (sort && this.#sort !== sort) {\r\n this.#sort = sort;\r\n this.#subscription.add(sort.sortChange.pipe(\r\n debounceTime(200),\r\n map(this.#getFilter),\r\n switchMap(filterInfo => this.#load(filterInfo, false))\r\n ).subscribe(this.#render));\r\n }\r\n }\r\n\r\n // Export\r\n @ViewChild(SdPopupExport) sdPopupExport: SdPopupExport;\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective) sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective) sdEmptyData: SdMaterialEmptyDataDefDirective;\r\n\r\n // Cell Def\r\n @ContentChildren(SdMaterialCellDefDirective) sdCellDefs = new QueryList<SdMaterialCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n\r\n // Footer Def\r\n @ContentChildren(SdMaterialFooterDefDirective) sdFooterDefs = new QueryList<SdMaterialFooterDefDirective>();\r\n footerDef: {\r\n [column: string]: SdMaterialFooterDefDirective\r\n } = {};\r\n hasFooter = false;\r\n\r\n // Filter Def\r\n @ContentChildren(SdMaterialFilterDefDirective) sdFilterDefs = new QueryList<SdMaterialFilterDefDirective>();\r\n filterDefs: SdMaterialFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnFilter: {\r\n [key: string]: any\r\n } = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #optionChanges = new EventEmitter();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(GRID_MATERIAL_CONFIG) @Optional() public configuration: ISdGridMaterialConfiguration,\r\n private gridConfigurationService: SdGridConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private columnValuesPipe: SdColumnValuesPipe,\r\n private editorHandlerColumnPipe: SdEditorHandlerColumnPipe) {\r\n }\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.sdCellDefs.changes.pipe(startWith([])).subscribe(this.#initCellDef));\r\n this.#subscription.add(this.sdFooterDefs.changes.pipe(startWith([])).subscribe(this.#initFooterDef));\r\n this.#subscription.add(this.sdFilterDefs.changes.pipe(startWith([])).subscribe(this.#initFilterDef));\r\n this.#subscription.add(this.#optionChanges.pipe(\r\n startWith({}),\r\n debounceTime(200),\r\n map(this.#getFilter),\r\n switchMap(filterInfo => this.#load(filterInfo, true))\r\n ).subscribe(this.#render));\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #initCellDef = () => {\r\n this.cellDef = {};\r\n for (const cellDef of this.sdCellDefs) {\r\n if (cellDef.sdMaterialCellDef) {\r\n this.cellDef[cellDef.sdMaterialCellDef] = cellDef;\r\n }\r\n }\r\n }\r\n\r\n #initFilterDef = () => {\r\n this.filterDefs = [];\r\n for (const filterDef of this.sdFilterDefs) {\r\n this.filterDefs.push(filterDef);\r\n }\r\n }\r\n\r\n #initFooterDef = () => {\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdMaterialFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdMaterialFooterDef] = footerDef;\r\n }\r\n }\r\n }\r\n\r\n #filterExportInfo = (pageNumber: number, pageSize: number): SdGridMaterialFilterRequest => {\r\n return {\r\n rawColumnFilter: (this.gridOption?.filter?.inlineColumn ? this.columnFilter : this.gridFilter?.columnFilter) || {},\r\n rawExternalFilter: this.gridFilter?.externalFilter || {},\r\n rawFilterDef: this.gridFilter?.filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber,\r\n pageSize,\r\n isExported: true\r\n };\r\n }\r\n\r\n #initConfiguration = (option: SdGridMaterialOption) => {\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize: option?.paginate?.pageSize ?? this.configuration?.paginate?.pageSize ?? DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.configuration?.paginate?.pages ?? DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false\r\n };\r\n return option;\r\n }\r\n\r\n #filterLocal = (localItems: any[], filterInfo: SdGridMaterialFilterRequest) => {\r\n const { columns } = this.gridOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(item => {\r\n for (const column of columns) {\r\n const { field, type } = column;\r\n const filterValue: string = (rawColumnFilter[field] || '').toString().trim().toLowerCase();\r\n const columnValue: string = (item[field] || '').toString().trim().toLowerCase();\r\n if (filterValue) {\r\n if (!columnValue && type !== 'datetime' && type !== 'date' && type !== 'time') {\r\n return false;\r\n }\r\n if (type === 'string') {\r\n if (columnValue.indexOf(filterValue) === -1) {\r\n return false;\r\n }\r\n } else if (type === 'values') {\r\n if (columnValue !== filterValue) {\r\n return false;\r\n }\r\n } else if (type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (type === 'datetime' || type === 'date' || type === 'time') {\r\n const from = rawColumnFilter[field]?.from ?? rawColumnFilter[field];\r\n const to = rawColumnFilter[field]?.to ?? rawColumnFilter[field];\r\n const fromDate = Date.begin(from);\r\n const toDate = Date.end(to);\r\n if (fromDate && toDate) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n if (new Date(columnValue).getTime() < fromDate.getTime() || new Date(columnValue).getTime() >= toDate.getTime()) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (orderBy && orderDirection) {\r\n const column = columns.find(e => e.field === orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((current, next) => {\r\n if (type === 'number') {\r\n return (current[field] || 0) - (next[field] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(current[field] || '').getTime();\r\n const d2 = new Date(current[field] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (current[field] || '').toString();\r\n const s2 = (next[field] || '').toString();\r\n if (s1 > s2) {\r\n return 1;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (orderDirection === 'desc') {\r\n items.reverse();\r\n }\r\n }\r\n }\r\n return {\r\n items: items.filter((item, index) => {\r\n return index >= pageNumber * pageSize\r\n && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length\r\n };\r\n }\r\n\r\n #getFilter = (): SdGridMaterialFilterRequest => ({\r\n rawColumnFilter: (this.gridOption?.filter?.inlineColumn ? this.columnFilter : this.gridFilter?.columnFilter) || {},\r\n rawExternalFilter: this.gridFilter?.externalFilter || {},\r\n rawFilterDef: this.gridFilter?.filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber: this.#paginator?.pageIndex || 0,\r\n pageSize: this.#paginator?.pageSize || this.gridOption?.paginate?.pageSize || 50\r\n })\r\n\r\n #load = async (filterReq: SdGridMaterialFilterRequest, force: boolean = true): Promise<{ items: any[], total: number }> => {\r\n this.isLoading = true;\r\n try {\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterReq);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n if (force) {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n this.localItems = await results;\r\n } else {\r\n this.localItems = results;\r\n }\r\n }\r\n return this.#filterLocal(this.localItems, filterReq);\r\n }\r\n } catch (error) {\r\n this.notifyService.handle.error(error);\r\n } finally {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n #render = async (args: { items: any[], total: number }) => {\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n // this.isHiddenPaginator = this.filterInfo.pageNumber === 0 && this.total <= this.filterInfo.pageSize;\r\n this.items.forEach((item: SdItem) => {\r\n item.originItem = { ...item };\r\n });\r\n await this.gridOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n\r\n reload = async (force: boolean = true) => {\r\n const data = await this.#load(this.#getFilter(), force);\r\n this.sdScroll?.scrollTop();\r\n this.#render(data);\r\n }\r\n\r\n #exportedItems = async (pageNumber: number = 0, pageSize: number = 10000) => {\r\n if (this.gridOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n if (Array.isArray(result)) {\r\n return result;\r\n }\r\n if (isObservable<any[]>(result)) {\r\n result = result.toPromise();\r\n }\r\n if (isObservable<{ items: any[], total: number }>(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n const filterInfo = this.#filterExportInfo(pageNumber, pageSize);\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterInfo);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof (this.gridOption.items) === 'function') {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n exportedItems = await results;\r\n } else {\r\n exportedItems = results;\r\n }\r\n } else {\r\n exportedItems = this.gridOption.items;\r\n }\r\n return this.#filterLocal(exportedItems, filterInfo);\r\n }\r\n }\r\n }\r\n\r\n drop(event: CdkDragDrop<string[]>, columns: string[]) {\r\n moveItemInArray(columns, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n #allColumns = (): SdGridMaterialColumn[] => {\r\n const columns: SdGridMaterialColumn[] = [];\r\n this.gridOption.columns.filter(e => !e.export?.disabled).forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns;\r\n }\r\n\r\n #allExportedColumns = (): SdGridMaterialExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n }\r\n\r\n #onExport = async (args: { file: SdExportFile, columns: SdExportColumn[], isCSV: boolean }) => {\r\n try {\r\n const { file, columns, isCSV } = args;\r\n const pageSize = this.gridOption?.export?.maxItemsPerRequest || 1000;\r\n let total = this.total;\r\n let pageNumber = 0;\r\n let exportItems = [];\r\n this.isExporting = true;\r\n const items: any[] = [];\r\n while (pageNumber * pageSize < total) {\r\n const res = await this.#exportedItems(pageNumber, pageSize);\r\n if ('items' in res) {\r\n exportItems = res.items;\r\n total = res.total;\r\n } else {\r\n exportItems = res;\r\n // total = exportItems.length;\r\n }\r\n if (this.gridOption.export?.mapping) {\r\n const results = this.gridOption.export.mapping(exportItems);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n\r\n const totalPage = total / pageSize;\r\n const percent = Math.round(pageNumber * 100.0 / totalPage);\r\n this.exportTitle = `Exporting...${percent}%`;\r\n const allColumns = this.#allColumns();\r\n const allExportedColumns = this.#allExportedColumns();\r\n for (const item of exportItems) {\r\n const obj: any = {};\r\n const handle = async (exportColumn: SdExportColumn) => {\r\n obj[exportColumn.field] = item[exportColumn.field];\r\n const column = allColumns.find(e => e.field === exportColumn.field);\r\n const exportedColumn = allExportedColumns.find(e => e.field === exportColumn.field);\r\n if (exportedColumn?.transform) {\r\n obj[exportedColumn.field] = exportedColumn.transform(item[exportedColumn.field], item);\r\n return;\r\n }\r\n if (!column) {\r\n return;\r\n }\r\n if (column.type === 'children' || column.type === 'children-col') {\r\n column?.children.forEach(childColumn => handle(childColumn));\r\n return;\r\n }\r\n if (!columns.some(e => e.field === column.field)) {\r\n return;\r\n }\r\n if (column.transform) {\r\n const transform = column.transform(item[column.field], item);\r\n if(transform instanceof Promise) {\r\n obj[column.field] = await transform;\r\n } else {\r\n obj[column.field] = transform;\r\n }\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.option?.displayOnTrue || 'True';\r\n } else if (obj[column.field] !== undefined && obj[column.field] !== null) {\r\n obj[column.field] = column.option?.displayOnFalse || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là date thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy');\r\n } else if (column.type === 'datetime') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là datetime thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy HH:mm:ss');\r\n } else if (column.type === 'time') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là time thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'HH:mm:ss');\r\n } else if (column.type === 'values') {\r\n // Nếu là values thì lấy giá trị của value được chọn\r\n obj[column.field] = await this.columnValuesPipe.transform(item[column.field], column);\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n for (const exportColumn of columns) {\r\n await handle(exportColumn);\r\n }\r\n items.push(obj);\r\n }\r\n pageNumber++;\r\n }\r\n if (!file?.filePath) {\r\n if (isCSV) {\r\n await this.exportService.exportCSV({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName\r\n });\r\n return;\r\n }\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n await this.exportService.export({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName,\r\n sheets\r\n });\r\n return;\r\n }\r\n await this.exportService.exportByTemplate({\r\n filePath: file.filePath,\r\n fileName: file.fileName,\r\n columns,\r\n items\r\n });\r\n } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n onExport = async (args: { file: SdExportFile, columns: SdExportColumn[], isCSV: boolean }) => {\r\n const { translate } = this.translateService;\r\n if (!args.isCSV && this.gridOption.export.max && this.total > this.gridOption.export.max) {\r\n this.notifyService.confirm(translate(`Total rows reach limit, do you want to export CSV`)).then(() => {\r\n args.isCSV = true;\r\n this.#onExport(args);\r\n });\r\n return;\r\n }\r\n this.#onExport(args);\r\n }\r\n\r\n onFilterChange = () => {\r\n this.#paginator.pageIndex = 0;\r\n this.reload(false);\r\n }\r\n\r\n onExpand = async (rowData: SdGridMaterialItem<T>) => {\r\n if (this.gridOption.subInformation?.always) {\r\n return;\r\n }\r\n if (rowData.isExpanding) {\r\n return;\r\n }\r\n if (rowData.isExpanded) {\r\n rowData.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.subInformation?.onExpand?.(rowData);\r\n if (!this.gridOption.subInformation?.multiple) {\r\n this.items.forEach(item => item.isExpanding = item.isExpanded = false);\r\n }\r\n if (data instanceof Promise) {\r\n rowData.isExpanding = true;\r\n data.then(res => {\r\n rowData.expandDetail = res;\r\n rowData.isExpanded = true;\r\n }).finally(() => rowData.isExpanding = false);\r\n } else {\r\n rowData.expandDetail = data;\r\n rowData.isExpanded = true;\r\n }\r\n }\r\n\r\n onSelect = (rowData: SdGridMaterialItem<T>) => {\r\n if (rowData?.sdGroup?.items?.length) {\r\n rowData?.sdGroup?.items.forEach(e => e.isSelected = rowData.isSelected);\r\n this.gridOption.selection?.onSelect?.(rowData, this.items.filter(e => e.isSelected));\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.gridOption.selection?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => e.isSelected = false);\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selection?.onSelect?.(rowData, this.items.filter(e => e.isSelected));\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n }\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.selectable && (!this.gridOption?.selection?.actions?.length || e.actions?.length)) {\r\n e.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.gridOption.selection?.onSelectAll?.(this.items.filter(e => e.isSelected));\r\n this.#updateSelectedItems();\r\n }\r\n\r\n onClearSelection = (items?: SdGridMaterialItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => e.isSelected = false);\r\n this.#updateSelectedItems();\r\n }\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedItems = this.items.filter(item => item.isSelected)\r\n .map(item => {\r\n const {\r\n isSelected,\r\n isExpanded,\r\n isExpanding,\r\n expandDetail,\r\n editorErrorMessage,\r\n editorHandlerColumn,\r\n editorHandlerRow,\r\n editorStatus,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n // Giữ lại các trường thông tin cho selectable (action, groupedAction, sdGroup, selectable)\r\n ...result\r\n } = item;\r\n return result;\r\n }) as T[];\r\n this.ref.detectChanges();\r\n }\r\n\r\n clearFilter = () => {\r\n this.gridFilter?.onClearFilter();\r\n }\r\n\r\n setFilter = (args: {\r\n columnFilter: any,\r\n externalFilter: any,\r\n filterDef: any\r\n }) => {\r\n this.gridFilter?.setFilter(args);\r\n }\r\n\r\n onCreate = () => {\r\n const { type, editor, columns } = this.gridOption;\r\n if (!editor?.addable) {\r\n return;\r\n }\r\n const item: SdGridMaterialItem = {};\r\n // Gán giá trị mặc định\r\n columns.forEach(column => {\r\n if (column.type === 'values') {\r\n item[column.field] = '';\r\n } else if (column.type === 'bool') {\r\n item[column.field] = true;\r\n } else if (column.type === 'number') {\r\n item[column.field] = null;\r\n }\r\n });\r\n if (type === 'local') {\r\n editor.onAdd?.(item, this.localItems);\r\n } else {\r\n editor.onAdd?.(item, this.items);\r\n }\r\n // Đưa item lên dòng đầu tiên nếu type khác popup\r\n if (editor.type !== 'popup') {\r\n if (editor.addToLast) {\r\n if (type === 'local') {\r\n this.localItems = [...this.localItems, item];\r\n }\r\n this.items = [...this.items, item];\r\n } else {\r\n if (type === 'local') {\r\n this.localItems = [item, ...this.localItems];\r\n }\r\n this.items = [item, ...this.items];\r\n }\r\n }\r\n item.editorStatus = 'create';\r\n item.editorHandlerRow = {\r\n temporary: { ...item }\r\n };\r\n }\r\n onUpdate = (item: SdItem) => {\r\n const { editor } = this.gridOption;\r\n item.editorStatus = 'update';\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n temporary: { ...item }\r\n };\r\n // this.generateEditorHanlder(item);\r\n if (editor.type === 'popup') {\r\n // Xử lý case popup\r\n // this.sdGridPopupEditor.open(item, columns, isModified);\r\n }\r\n this.ref.detectChanges();\r\n }\r\n onSave = async (item: SdGridMaterialItem<T>) => {\r\n if (item.editorHandlerRow.saving) {\r\n return;\r\n }\r\n const { editor } = this.gridOption;\r\n try {\r\n item.editorHandlerRow.saving = true;\r\n if (editor.validate) {\r\n const result = editor.validate(item, this.items.indexOf(item));\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n throw message;\r\n }\r\n } else {\r\n if (result) {\r\n throw result;\r\n }\r\n }\r\n }\r\n if (editor.onSave) {\r\n const result = editor.onSave(item);\r\n if (result instanceof Promise) {\r\n await result;\r\n }\r\n }\r\n\r\n if (item.editorStatus === 'create' && editor.type === 'popup') {\r\n if (this.gridOption.type === 'local') {\r\n this.items.splice(0, 0, item);\r\n }\r\n // this.viewItems.splice(0, 0, item);\r\n }\r\n\r\n item.editorStatus = undefined;\r\n // this.generateEditorHanlder(item);\r\n } catch (err) {\r\n this.notifyService.notify.warning(err);\r\n } finally {\r\n item.editorHandlerRow.saving = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n onCancel = (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.localItems.indexOf(item);\r\n this.localItems.splice(idx2, 1);\r\n this.localItems = [...this.localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n if (this.gridOption.type === 'local') {\r\n editor?.onCancel?.(item, this.localItems);\r\n } else {\r\n editor?.onCancel?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n if (editor.type === 'focus') {\r\n if (item.editorStatus === 'create') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.localItems.indexOf(item);\r\n this.localItems.splice(idx2, 1);\r\n this.localItems = [...this.localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n } else {\r\n Object.assign(item, item.editorHandlerRow.temporary);\r\n }\r\n }\r\n item.editorStatus = undefined;\r\n this.ref.detectChanges();\r\n }\r\n onRemove = (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.localItems.indexOf(item);\r\n this.localItems.splice(idx2, 1);\r\n this.localItems = [...this.localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n if (this.gridOption.type === 'local') {\r\n editor?.onRemove?.(item, this.localItems);\r\n } else {\r\n editor?.onRemove?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n }\r\n\r\n add = (idx: number, item: T) => {\r\n if (this.items.length > idx) {\r\n this.items.splice(idx, 0, item);\r\n this.items = [...this.items];\r\n } else {\r\n this.items = [...this.items, item];\r\n }\r\n }\r\n\r\n update = (idx: number, item: T) => {\r\n if (this.items[idx]) {\r\n Object.assign(this.items[idx], item);\r\n this.items = [...this.items];\r\n }\r\n }\r\n\r\n remove = (idx: number) => {\r\n if (this.items[idx]) {\r\n this.items.splice(idx, 1);\r\n this.items = [...this.items];\r\n }\r\n }\r\n\r\n refreshItem = (idx: number) => {\r\n const item = this.items[idx];\r\n this.editorHandlerColumnPipe.transform(item.sdVersion, item, this.gridOption);\r\n }\r\n\r\n get editedItems(): (T & { editorErrorMessage: string })[] {\r\n return this.items.filter(item => {\r\n if (!item.originItem) {\r\n return true;\r\n }\r\n if (Object.keys(item.originItem).some(key => item.originItem[key] !== item[key])) {\r\n return true;\r\n }\r\n return false;\r\n }).map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n editorErrorMessage,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result } = item;\r\n return {\r\n ...result,\r\n editorErrorMessage\r\n } as any;\r\n });\r\n }\r\n\r\n get gridItems(): T[] {\r\n return this.items.map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result } = item;\r\n return result as T;\r\n });\r\n }\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n get isEditing() {\r\n return this.items.some(e => e.editorStatus !== undefined);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand, SdGridMaterialCommandNormal } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: any, commands: SdGridMaterialCommand[]): Promise<SdGridMaterialCommand[]> {\r\n const results: SdGridMaterialCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n let flag = false;\r\n const { hidden } = command;\r\n if (hidden === undefined) {\r\n flag = true;\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n flag = true;\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n flag = true;\r\n }\r\n } else {\r\n if (!isHidden) {\r\n flag = true;\r\n }\r\n }\r\n }\r\n if (flag) {\r\n if ('children' in command) {\r\n const children: SdGridMaterialCommandNormal[] = [];\r\n for (const childCommand of command.children) {\r\n const { hidden } = childCommand;\r\n if (hidden === undefined) {\r\n children.push(childCommand);\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n if (!isHidden) {\r\n children.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...command, children });\r\n }\r\n } else {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandDisable'\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: any, command: SdGridMaterialCommand): boolean {\r\n if (!command?.disabled) {\r\n return false;\r\n }\r\n if (typeof (command.disabled) === 'boolean') {\r\n return command.disabled;\r\n }\r\n return command.disabled(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, item: any): string {\r\n if (!command?.icon) {\r\n return '';\r\n }\r\n if (typeof (command.icon) === 'string') {\r\n return command.icon;\r\n }\r\n return command.icon(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, item: any): string {\r\n if (!command?.title) {\r\n return '';\r\n }\r\n if (typeof (command.title) === 'string') {\r\n return command.title;\r\n }\r\n return command.title(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnHtmlTemplate'\r\n})\r\nexport class SdColumnHtmlTemplatePipe implements PipeTransform {\r\n private isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): string {\r\n if (typeof (column?.htmlTemplate) !== 'function') {\r\n return value;\r\n }\r\n return column?.htmlTemplate(value, rowData, this.isMobileOrTablet);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-view',\r\n templateUrl: './desktop-cell-view.component.html',\r\n styleUrls: ['./desktop-cell-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellView {\r\n @Input() sdId: string;\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\r\n@Pipe({\r\n name: 'columnTransform'\r\n})\r\nexport class SdColumnTransformPipe implements PipeTransform {\r\n constructor(private columnValuesPipe: SdColumnValuesPipe) { }\r\n async transform(value: any, rowData: any, column: SdGridMaterialColumn, key?: string): Promise<string> {\r\n if (column?.transform) {\r\n return column.transform(value, rowData);\r\n }\r\n if (column.type === 'values') {\r\n return await this.columnValuesPipe.transform(value, column);\r\n }\r\n if (column.type === 'number' && Number.isNumber(value)) {\r\n return Number.toVNCurrency(value); // this.decimalPipe.transform(value, '1.0-2');\r\n }\r\n if (column.type === 'bool') {\r\n return value === true ? (column.option?.displayOnTrue || 'True') : (column.option?.displayOnFalse || 'False');\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialExternalFilter } from '../models/grid-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdGridMaterialExternalFilter[], field?: string): SdGridMaterialExternalFilter[] {\r\n const results: SdGridMaterialExternalFilter[] = [];\r\n if (!externalFilters) {\r\n return results;\r\n }\r\n for (const filter of externalFilters) {\r\n results.push(filter);\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdGridMaterialColumn[], field?: string): SdGridMaterialColumn[] {\r\n const results: SdGridMaterialColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\r\n if (column.type === 'image') {\r\n continue;\r\n }\r\n if (column.type === 'children') {\r\n for (const columnChildren of column?.children) {\r\n if (!columnChildren.filter?.disabled) {\r\n results.push(columnChildren);\r\n }\r\n }\r\n continue;\r\n }\r\n if (!column.filter?.disabled) {\r\n results.push(column);\r\n }\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { SdGridMaterialColumnChildren } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-children-view',\r\n templateUrl: './desktop-cell-children-view.component.html',\r\n styleUrls: ['./desktop-cell-children-view.component.scss']\r\n})\r\nexport class SdDesktopCellChildrenView {\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumnChildren;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n\r\n@Pipe({\r\n name: 'columnChildrenFilter'\r\n})\r\nexport class SdColumnChildrenFilterPipe implements PipeTransform {\r\n #isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.#isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(columns: SdGridMaterialColumn[], item: any): SdGridMaterialColumn[] {\r\n return columns.filter(column => {\r\n const value = item?.[column.field];\r\n const transformValue = column.transform?.(item[column.field], item);\r\n const templateValue = column.htmlTemplate?.(item[column.field], item, this.#isMobileOrTablet);\r\n return (value !== undefined && value !== null && value !== '')\r\n || (transformValue !== undefined && transformValue !== null && transformValue !== '')\r\n || (templateValue !== undefined && templateValue !== null && templateValue !== '');\r\n });\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialChildColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnTitle'\r\n})\r\nexport class SdColumnTitlePipe implements PipeTransform {\r\n async transform(item: any, column: SdGridMaterialChildColumn): Promise<string> {\r\n if (!column?.title) {\r\n return '';\r\n }\r\n const result = column?.dynamicTitle?.(item);\r\n if (result instanceof Promise) {\r\n return (await result) || column?.title;\r\n }\r\n return result || column?.title;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../../models/grid-command.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-command',\r\n templateUrl: './desktop-command.component.html',\r\n styleUrls: ['./desktop-command.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCommand {\r\n @Input() item: any;\r\n @Input() commands: SdGridMaterialCommand[] = [];\r\n constructor() {\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdBadgeColor } from '@sd-angular/core/badge';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnBadge'\r\n})\r\nexport class SdColumnBadgePipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): {\r\n type: 'round' | 'circle' | 'icon',\r\n color: SdBadgeColor,\r\n icon: string\r\n } {\r\n if (column.type === 'string' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n if (column.type === 'number' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n if (column.type === 'bool') {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: !!value ? 'success' : 'danger',\r\n icon: null\r\n };\r\n }\r\n if (column.type === 'values' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridConfiguration, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../services/grid-configuration.service';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\n\r\n@Pipe({\r\n name: 'sdGridConfigurationResult'\r\n})\r\nexport class SdGridConfigurationResultPipe implements PipeTransform {\r\n constructor(private gridConfigurationService: SdGridConfigurationService) { }\r\n transform(configuration: SdGridConfiguration, gridOption: SdGridMaterialOption, sdSubInformation: SdMaterialSubInformationDefDirective): SdGridConfigurationResult {\r\n return this.gridConfigurationService.generateConfigurationResult(configuration, gridOption, sdSubInformation);\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, EventEmitter, ChangeDetectorRef, Input, HostListener } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationResult, SdGridConfiguration, SdGridConfigurationCache, SdColumnConfiguration } from '../../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { MatTable } from '@angular/material/table';\r\n// import { SdGridMaterialColumn } from '@sd-angular/core/grid-material';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-popup-grid-configuration',\r\n templateUrl: './popup-grid-configuration.component.html',\r\n styleUrls: ['./popup-grid-configuration.component.scss']\r\n})\r\nexport class SdPopupGridConfiguration implements OnInit {\r\n @Input() gridOption: SdGridMaterialOption;\r\n @Input() key: string;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdGridMaterialColumn>;\r\n readonly changes = new EventEmitter<SdGridConfigurationResult>();\r\n #cache: SdGridConfigurationCache;\r\n configuration: SdGridConfiguration;\r\n isCreatingColumn = false;\r\n selected: {\r\n [key: string]: boolean;\r\n } = {};\r\n disabledDrag = true;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n @HostListener('window:mouseup', ['$event'])\r\n mouseUp(event) {\r\n this.disabledDrag = true;\r\n }\r\n open = async () => {\r\n this.#cache = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.configuration = await this.#cache.get();\r\n this.modal.open();\r\n }\r\n\r\n onSave = () => {\r\n this.#cache.set(this.configuration);\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n }\r\n\r\n onReset = async () => {\r\n const { translate } = this.translateService;\r\n this.notifyService.confirm(translate('Reset grid configuration to default')).then(() => {\r\n this.#cache.remove();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n });\r\n }\r\n\r\n createColumn = async () => {\r\n this.selected = {};\r\n this.isCreatingColumn = true;\r\n }\r\n\r\n confirm = async () => {\r\n const generatedColumn: SdColumnConfiguration = {\r\n origin: {\r\n field: uuid.v4(),\r\n title: 'Generated',\r\n width: '300px'\r\n },\r\n fixed: false,\r\n invisible: false,\r\n title: 'Generated',\r\n width: '300px',\r\n isGeneratedColumn: true,\r\n generatedColumns: this.configuration.columns.filter(e => this.selected[e.origin?.field]).map(e => e.origin?.field)\r\n };\r\n this.configuration.columns.push(generatedColumn);\r\n this.configuration = this.#cache.set(this.configuration);\r\n this.isCreatingColumn = false;\r\n }\r\n\r\n dropTable(event: CdkDragDrop<SdGridMaterialColumn[]>) {\r\n moveItemInArray(this.configuration.columns, event.previousIndex, event.currentIndex);\r\n this.table.renderRows();\r\n }\r\n\r\n handleMouseDown() {\r\n this.disabledDrag = false;\r\n }\r\n\r\n handleMouseUp() {\r\n this.disabledDrag = true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnTooltip'\r\n})\r\nexport class SdColumnTooltipPipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): string {\r\n if (column?.tooltip) {\r\n return column.tooltip(value, rowData);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialAction, SdGridMaterialActionNormal, SdGridMaterialActionSimple } from '../models/grid-action.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdGridMaterialAction): SdGridMaterialActionSimple => {\r\n if ('children' in action) {\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n color: action.color,\r\n type: action.type,\r\n children: action.children.map(e => ({\r\n title: e.title,\r\n icon: e.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: e.fontSet,\r\n tooltip: e.tooltip,\r\n click: e.click\r\n }))\r\n };\r\n }\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n click: action.click\r\n };\r\n\r\n }\r\n transform = (selectedItems: SdItem[], actions: SdGridMaterialAction[]): SdGridMaterialActionSimple[] => {\r\n const results: SdGridMaterialAction[] = [];\r\n if (!actions?.length || !selectedItems?.length) {\r\n return [];\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n const children: SdGridMaterialActionNormal[] = [];\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.actions.includes(key))) {\r\n children.push(childAction);\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...action, children });\r\n }\r\n } else {\r\n const key = hash(action);\r\n if (selectedItems.every(e => e.actions.includes(key))) {\r\n results.push(action);\r\n }\r\n }\r\n }\r\n return results.map(result => this.#convert(result));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: SdItem[], rowData: SdItem, selection: SdGridMaterialSelection): boolean => {\r\n const { disabled, actions } = selection;\r\n if (!actions?.length) {\r\n if (!disabled) {\r\n rowData.selectable = true;\r\n return false;\r\n }\r\n rowData.selectable = !disabled(rowData, selectedItems);\r\n return !rowData.selectable;\r\n }\r\n // Lọc các action theo selectedItems hiện tại\r\n const availableActions = actions.filter(action => {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.actions.includes(key))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n } else {\r\n const key = hash(action);\r\n return selectedItems.every(e => e.actions.includes(key));\r\n }\r\n });\r\n // Kiểm tra rowData có action nào thỏa hay ko, nếu ko thì disabled\r\n for (const action of availableActions) {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n if(rowData.actions.includes(hash(childAction))) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if(rowData.actions.includes(hash(action))) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionVisibleSelectAll'\r\n})\r\nexport class SdSelectionVisibleSelectAllPipe implements PipeTransform {\r\n transform = async (items: SdItem[], selection: SdGridMaterialSelection): Promise<boolean> => {\r\n const { actions } = selection;\r\n if (!actions?.length) {\r\n return true;\r\n }\r\n if (!items.length) {\r\n return false;\r\n }\r\n if (actions.some(e => ('children' in e && e.children.some(e1 => e1.isGrouped)) || e.isGrouped)) {\r\n return false;\r\n }\r\n await new Promise(resolve => setTimeout(resolve, 500));\r\n const first = items.find(t => t.actions?.length);\r\n if (first) {\r\n for (const action of first.actions) {\r\n if (items.filter(t => t.actions?.length).every(e => e.actions.includes(action))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSetting, SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialConfigOption } from '../../models/grid-config.model';\r\nimport { SdGeneratedColumn } from './generated-column.model';\r\nimport { SdSettingServer } from '@sd-angular/core/setting';\r\n\r\n@Injectable()\r\nexport class SdGeneratedColumnService {\r\n #cache: {\r\n [key: string]: SdSetting<SdGeneratedColumn[]> | SdSettingServer<SdGeneratedColumn[]>\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService) {\r\n }\r\n\r\n load = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '260f5e94-5865-4425-8ced-b9c083c390dd',\r\n key: configuration.key\r\n });\r\n if(!this.#cache[key]) {\r\n if(configuration?.storage === 'server') {\r\n this.#cache[key] = this.settingService.createServer<SdGeneratedColumn[]>(key, {\r\n args: configuration?.args,\r\n default: []\r\n });\r\n } else {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: configuration?.storage,\r\n args: configuration?.args,\r\n default: []\r\n });\r\n }\r\n }\r\n return this.#cache[key];\r\n }\r\n\r\n loadSystem = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n if (!configuration?.systemColumn) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '8b8050ca-1f44-4860-bad3-20e646c0d68f',\r\n key: configuration.key\r\n });\r\n if(!this.#cache[key]) {\r\n if(configuration?.storage === 'server') {\r\n this.#cache[key] = this.settingService.createServer<SdGeneratedColumn[]>(key, {\r\n args: configuration?.systemColumn?.args,\r\n default: []\r\n });\r\n } else {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: configuration?.storage,\r\n args: configuration?.systemColumn?.args,\r\n default: []\r\n });\r\n }\r\n }\r\n return this.#cache[key];\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ChangeDetectorRef, Input, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { SdGeneratedColumnService } from '../../services/generated-column/generated-column.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdGeneratedColumn } from '../../services/generated-column/generated-column.model';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdSideDrawer } from '@sd-angular/core/side-drawer';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-dynamic-column',\r\n templateUrl: './dynamic-column.component.html',\r\n styleUrls: ['./dynamic-column.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDynamicColumn implements OnInit, OnDestroy {\r\n @ViewChild(SdSideDrawer) sideDrawer: SdSideDrawer;\r\n @Input() gridOption: SdGridMaterialOption;\r\n systemColumns: SdGeneratedColumn[];\r\n columns: SdGeneratedColumn[];\r\n #subscription = new Subscription();\r\n columnTypes = ['string', 'number', 'bool', 'date', 'datetime', 'time', 'values', 'children', 'children-col'];\r\n form = new FormGroup({});\r\n isDetail = false;\r\n detail: SdGeneratedColumn;\r\n originColumns: SdGridMaterialColumn[] = [];\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private generatedColumnService: SdGeneratedColumnService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (systemSetting) {\r\n this.#subscription?.add(systemSetting.observer.subscribe(columns => {\r\n this.systemColumns = columns;\r\n }));\r\n }\r\n if (setting) {\r\n this.#subscription?.add(setting.observer.subscribe(columns => {\r\n this.columns = columns;\r\n }));\r\n }\r\n this.originColumns = this.gridOption.columns.filter(e => e.type !== 'children' && e.type !== 'children-col');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onDetail = (column?: SdGeneratedColumn) => {\r\n this.detail = column || {\r\n field: uuid.v4(),\r\n title: '',\r\n type: 'string',\r\n isSystem: false,\r\n useTemplate: false\r\n };\r\n this.form.markAsUntouched();\r\n this.form.markAsPristine();\r\n this.isDetail = true;\r\n }\r\n\r\n onSave = () => {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (this.detail.isSystem) {\r\n if (!this.detail.id) {\r\n systemSetting.set([...this.systemColumns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n systemSetting.set([...this.systemColumns]);\r\n }\r\n } else {\r\n if (!this.detail.id) {\r\n setting.set([...this.columns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n setting.set([...this.columns]);\r\n }\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdMaterialCellDefDirective } from '../../directives/sd-material-cell-def.directive';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() sdId: string;\r\n @Input() value: any;\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\r\n @Input() cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n @Input() idx: number;\r\n constructor(\r\n ) { }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn, SdGridMaterialColumnValues } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-editor',\r\n templateUrl: './desktop-cell-editor.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellEditor {\r\n @Input() sdId: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n\r\n onChange = (selected: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n this.column?.editor?.change?.(this.item, selected);\r\n }\r\n\r\n editorOnAdd = () => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.add?.(this.item);\r\n }\r\n }\r\n\r\n editorOnEdit = (option: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.edit?.(option, this.item);\r\n }\r\n }\r\n\r\n editorOnDelete = (option: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.delete?.(option, this.item);\r\n }\r\n }\r\n}\r\n","import { NgZone, Pipe, PipeTransform } from '@angular/core';\r\nimport { CalculateSdId } from '../functions/calculate-sd-id';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { EditorHandlerRow, SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorHandlerRow'\r\n})\r\nexport class SdEditorHandlerRowPipe implements PipeTransform {\r\n constructor(private zone: NgZone) { }\r\n #visible = (col: SdGridMaterialColumn, item: SdItem) => {\r\n if (col.type === 'children' || col.type === 'children-col') {\r\n return false;\r\n }\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (col.editor) {\r\n const isDisabled = typeof (col.editor.disabled) === 'function' ? col.editor.disabled(item) : col.editor.disabled;\r\n if (isDisabled) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n transform(status: 'create' | 'update', item: SdItem, gridOption: SdGridMaterialOption): EditorHandlerRow {\r\n const { editor } = gridOption;\r\n if (!editor) {\r\n return null;\r\n }\r\n let isDisabled = false;\r\n if (typeof (editor?.disabled) === 'function') {\r\n isDisabled = editor.disabled(item);\r\n } else {\r\n isDisabled = editor?.disabled;\r\n }\r\n if (editor.type === 'inline') {\r\n const removable = editor.removable;\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: !isDisabled,\r\n editable: false,\r\n removable: status !== 'create' && (typeof (removable) === 'function' ? removable(item) : removable),\r\n savable: false,\r\n cancelable: !isDisabled && status === 'create'\r\n }\r\n } else if (editor.type === 'focus') {\r\n if (isDisabled) {\r\n return null;\r\n }\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: !!status,\r\n editable: !status,\r\n removable: false,\r\n savable: !!status,\r\n cancelable: !!status\r\n }\r\n } else if (editor.type === 'popup') {\r\n if (isDisabled) {\r\n return null;\r\n }\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: false,\r\n editable: !status,\r\n removable: false,\r\n savable: false,\r\n cancelable: false\r\n }\r\n }\r\n item.editorHandlerColumn = item.editorHandlerColumn || {};\r\n const { columns } = gridOption;\r\n for (const col of columns) {\r\n if (col.type === 'children-col') {\r\n for (const childCol of col.children) {\r\n item.editorHandlerColumn[childCol.field] = {\r\n ...item.editorHandlerColumn[childCol.field],\r\n visible: this.#visible(childCol, item)\r\n }\r\n }\r\n } else {\r\n item.editorHandlerColumn[col.field] = {\r\n ...item.editorHandlerColumn[col.field],\r\n visible: this.#visible(col, item)\r\n }\r\n }\r\n }\r\n this.zone.run(() => {\r\n item.sdId = CalculateSdId(item);\r\n });\r\n return item.editorHandlerRow;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorValidate'\r\n})\r\nexport class SdEditorValidatePipe implements PipeTransform {\r\n #previous: Date;\r\n #delay = 200; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện validate\r\n async transform(sdId: string, item: SdItem, items: SdItem[], gridOption: SdGridMaterialOption): Promise<string> {\r\n const { editor } = gridOption;\r\n if (!editor.validate) {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n if(editor.type === 'popup') {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n if (editor.type === 'focus' && !item.editorStatus) {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n this.#previous = new Date();\r\n await new Promise(resolve => setTimeout(resolve, this.#delay));\r\n const now = new Date();\r\n const dif = now.getTime() - this.#previous.getTime();\r\n if (dif < this.#delay) {\r\n return;\r\n }\r\n const result = editor.validate(item, items?.indexOf(item));\r\n if (result instanceof Promise) {\r\n item.editorErrorMessage = await result;\r\n return;\r\n } else {\r\n item.editorErrorMessage = result;\r\n return;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\n@Pipe({\r\n name: 'sdStyleRowCss'\r\n})\r\nexport class SdStyleRowCss implements PipeTransform {\r\n transform(item: any, gridOption: SdGridMaterialOption) {\r\n return gridOption?.style?.rowCss?.(item) || {};\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-editor-validation',\r\n templateUrl: './desktop-editor-validation.component.html',\r\n styleUrls: ['./desktop-editor-validation.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopEditorValidation {\r\n @Input() sdId: string;\r\n @Input() item: any;\r\n @Input() items: any[];\r\n @Input() gridOption: SdGridMaterialOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-column-inline-filter',\r\n templateUrl: './column-inline-filter.component.html',\r\n styleUrls: ['./column-inline-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdColumnInlineFilter implements OnInit {\r\n @Input() value: any;\r\n @Input() columnFilter: {\r\n [key: string]: any\r\n } = {};\r\n @Input() column: SdGridMaterialColumn;\r\n @Output() filterChange = new EventEmitter();\r\n constructor(\r\n ) { }\r\n\r\n ngOnInit() {\r\n if (this.column.type === 'date' || this.column.type === 'time' || this.column.type === 'datetime') {\r\n if (!this.column?.option?.useFilterDate) {\r\n this.columnFilter[this.column.field] = this.columnFilter[this.column.field] || {\r\n from: null,\r\n to: null\r\n };\r\n }\r\n }\r\n }\r\n\r\n onFilterChange = () => {\r\n this.filterChange.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdItem, selection: SdGridMaterialSelection): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.actions = rowData.actions || [];\r\n if (!actions?.length) {\r\n rowData.selectable = true;\r\n return rowData.selectable;\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n let flag = false;\r\n let hasGroup = false;\r\n for (const childAction of action.children) {\r\n const { hidden, isGrouped } = childAction;\r\n const key = hash(childAction);\r\n if (isGrouped) {\r\n hasGroup = true;\r\n }\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n flag = true;\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n flag = true;\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n if (flag) {\r\n rowData.actions.push(hash(action));\r\n if (hasGroup) {\r\n groupedActions.push(hash(action));\r\n }\r\n }\r\n } else {\r\n const { hidden, isGrouped } = action;\r\n const key = hash(action);\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.selectable = !!rowData.actions.length;\r\n if (!rowData.selectable || !groupedActions.length || rowData?.sdGroup?.items?.length) {\r\n return rowData.selectable;\r\n }\r\n // Đối với trường hợp grouped, tuy selectable là true nhưng vẫn ẩn đi checkbox\r\n // nếu các action đều thuộc groupedActions và rowData ko phải là dòng group\r\n return rowData.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-quick-action',\r\n templateUrl: './quick-action.component.html',\r\n styleUrls: ['./quick-action.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdGridQuickAction {\r\n @Input() gridOption: SdGridMaterialOption;\r\n @Input() selectedItems: any[];\r\n @Output() clear = new EventEmitter();\r\n constructor(\r\n ) { }\r\n onClear = () => {\r\n this.clear.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdCellView } from '../models/grid-cell.model';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\r\n@Pipe({\r\n name: 'cellView'\r\n})\r\nexport class SdCellViewPipe implements PipeTransform {\r\n #maxSecond = 60;\r\n #maxMinute = this.#maxSecond * 60;\r\n #maxHour = this.#maxMinute * 24;\r\n #maxDay = this.#maxHour * 30;\r\n #maxMonth = this.#maxHour * 365;\r\n #isMobileOrTablet = false;\r\n constructor(\r\n deviceService: DeviceDetectorService,\r\n private utilityService: SdUtilityService,\r\n private columnValuesPipe: SdColumnValuesPipe) {\r\n this.#isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n async transform(\r\n value: any,\r\n rowData: any,\r\n column: SdGridMaterialColumn,\r\n gridOption: SdGridMaterialOption,\r\n key: string): Promise<SdCellView> {\r\n const { displayOnEmpty } = gridOption;\r\n const { align, click, tooltip, htmlTemplate, transform } = column;\r\n const result: SdCellView = {\r\n badge: null,\r\n tooltip: null,\r\n display: {\r\n align: align || (column.type === 'number' ? 'right' : 'left'),\r\n value\r\n },\r\n click: null\r\n };\r\n // Display\r\n if (typeof (htmlTemplate) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = htmlTemplate(value, rowData, this.#isMobileOrTablet);\r\n } else {\r\n if (column.type === 'datetime' || column.type === 'date' || column.type === 'time') {\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n value = transformDate(value, rowData);\r\n }\r\n }\r\n if (typeof (transform) === 'function') {\r\n const val = transform(value, rowData);\r\n if (val instanceof Promise) {\r\n result.display.value = await val;\r\n } else {\r\n result.display.value = val;\r\n }\r\n } else {\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n const { option } = column;\r\n const seconds = Math.round((new Date().getTime() - new Date(value).getTime()) / 1000);\r\n if (option?.timeDifferent === 'month' && seconds < this.#maxMonth) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'day' && seconds < this.#maxDay) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'hour' && seconds < this.#maxHour) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'minute' && seconds < this.#maxMinute) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'second' && seconds < this.#maxSecond) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else {\r\n result.display.value = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n if (column.type === 'datetime' && result.display.value) {\r\n result.display.hasHtml = true;\r\n result.display.html = `<span class=\"d-block T14R text-black400\">${Date.toFormat(value, 'HH:mm')}</span><span class=\"d-block T14R\">${Date.toFormat(value, 'dd/MM/yyyy')}</span>`\r\n }\r\n }\r\n }\r\n if (column.type === 'time') {\r\n result.display.value = Date.toFormat(value, 'HH:mm');\r\n }\r\n if (column.type === 'values') {\r\n result.display.value = await this.columnValuesPipe.transform(value, column);\r\n } else if (column.type === 'number' && Number.isNumber(value)) {\r\n result.display.value = Number.toVNCurrency(value);\r\n }\r\n if (column.type === 'bool') {\r\n const { option } = column;\r\n if(value !== undefined && value !== null && value !== '') {\r\n result.display.value = value === true ? (option?.displayOnTrue || 'True') : (option?.displayOnFalse || 'False');\r\n } else {\r\n result.display.value = null;\r\n }\r\n }\r\n }\r\n if (displayOnEmpty) {\r\n let values = [null, undefined, ''];\r\n if (typeof (displayOnEmpty) === 'object') {\r\n const { display, emptyValues } = displayOnEmpty;\r\n values = [null, undefined, '', ...emptyValues];\r\n if (values.includes(result.display.value)) {\r\n if (typeof (display) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = display(rowData, column);\r\n } else {\r\n result.display.hasHtml = true;\r\n result.display.html = `<div class=\"T16R text-black400\">--</div>`;\r\n }\r\n }\r\n } else {\r\n if (values.includes(result.display.value)) {\r\n if (typeof (displayOnEmpty) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = displayOnEmpty(rowData, column);\r\n } else {\r\n result.display.hasHtml = true;\r\n result.display.html = `<div class=\"T16R text-black400\">--</div>`;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // Badge\r\n if ((column.type === 'string' || column.type === 'number' || column.type === 'values') && column.badge) {\r\n result.badge = {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n } else if (column.type === 'bool') {\r\n result.badge = {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: !!value ? 'success' : 'danger',\r\n icon: null\r\n };\r\n }\r\n // Tooltip\r\n if (typeof (tooltip) === 'function') {\r\n result.tooltip = tooltip(value, rowData);\r\n }\r\n // Clickable\r\n if (typeof (click) === 'function') {\r\n result.click = () => click(value, rowData);\r\n }\r\n return result;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridMaterialItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdGroup'\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: any[], gridOption: SdGridMaterialOption): SdGridMaterialItem[] {\r\n const { group } = gridOption;\r\n if (!group) {\r\n return items;\r\n }\r\n const { fields, htmlTemplate } = group;\r\n if (!fields?.length) {\r\n return items;\r\n }\r\n const groupItem: {\r\n [key: string]: SdGridMaterialItem[]\r\n } = {};\r\n for (const item of items) {\r\n let obj = {};\r\n for (const field of fields) {\r\n obj = {\r\n ...obj,\r\n ...(item[field] ?? { [field]: item[field] })\r\n };\r\n }\r\n const key = hash(obj);\r\n if (!groupItem[key]) {\r\n groupItem[key] = [];\r\n }\r\n groupItem[key].push(item);\r\n }\r\n const results: SdGridMaterialItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n results.push({\r\n sdGroup: {\r\n items: groupItem[key],\r\n htmlTemplate: htmlTemplate(groupItem[key])\r\n }\r\n });\r\n for (const item of groupItem[key]) {\r\n results.push(item);\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Injectable, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdGridMaterial } from './grid-material.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { CdkTableModule, CdkColumnDef } from '@angular/cdk/table';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { SdCommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { SdCommandDisablePipe } from './pipes/command-disable.pipe';\r\nimport { SdCommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { SdCommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdColumnHtmlTemplatePipe } from './pipes/column-html-template.pipe';\r\nimport { SdDesktopCellView } from './components/desktop-cell-view/desktop-cell-view.component';\r\nimport { SdColumnTransformPipe } from './pipes/column-transform.pipe';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SdFilterExternalPipe } from './pipes/filter-external.pipe';\r\nimport { SdFilterColumnPipe } from './pipes/filter-column.pipe';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdPopupFilter } from './components/popup-filter/popup-filter.component';\r\n\r\nimport { SdGridFilterService } from './services/grid-filter.service';\r\nimport { SdDesktopCellChildrenView } from './components/desktop-cell-children-view/desktop-cell-children-view.component';\r\nimport { SdColumnChildrenFilterPipe } from './pipes/column-children-filter.pipe';\r\nimport { SdColumnTitlePipe } from './pipes/column-title.pipe';\r\nimport { SdDesktopCommand } from './components/desktop-command/desktop-command.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdColumnBadgePipe } from './pipes/column-badge.pipe';\r\nimport { SdGridConfigurationResultPipe } from './pipes/grid-configuration-result.pipe';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdPopupGridConfiguration } from './components/popup-grid-configuration/popup-grid-configuration.component';\r\nimport { SdGridConfigurationService } from './services/grid-configuration.service';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { SdColumnTooltipPipe } from './pipes/column-tooltip.pipe';\r\nimport { SdSelectionActionFilterPipe } from './pipes/selection-action-filter.pipe';\r\nimport { SdSelectionDisablePipe } from './pipes/selection-disable.pipe';\r\nimport { SdSelectionVisibleSelectAllPipe } from './pipes/selection-visible-select-all.pipe';\r\nimport { SdDynamicColumn } from './components/dynamic-column/dynamic-column.component';\r\nimport { SdGeneratedColumnService } from './services/generated-column/generated-column.service';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdDesktopCellEditor } from './components/desktop-cell-editor/desktop-cell-editor.component';\r\nimport { SdEditorHandlerRowPipe } from './pipes/editor-handler-row.pipe';\r\nimport { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';\r\nimport { SdEditorValidatePipe } from './pipes/editor-validate.pipe';\r\nimport { SdStyleRowCss } from './pipes/style-row-css.pipe';\r\nimport { SdDesktopEditorValidation } from './components/desktop-editor-validation/desktop-editor-validation.component';\r\nimport { SdColumnInlineFilter } from './components/column-inline-filter/column-inline-filter.component';\r\nimport { SdSelectionVisiblePipe } from './pipes/selection-visible.pipe';\r\nimport { SdGridQuickAction } from './components/quick-action/quick-action.component';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdCellViewPipe } from './pipes/cell-view.pipe';\r\nimport { SdGroupPipe } from './pipes/sd-group.pipe';\r\n\r\n@Injectable()\r\nexport class MatPaginatorIntlCro extends MatPaginatorIntl {\r\n firstPageLabel = 'Trang đầu';\r\n lastPageLabel = 'Trang cuối';\r\n itemsPerPageLabel = 'Kích thước trang';\r\n nextPageLabel = 'Trang sau';\r\n previousPageLabel = 'Trang trước';\r\n\r\n getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n if (length === 0 || pageSize === 0) {\r\n return '';\r\n }\r\n const from = page * pageSize + 1;\r\n const to = from + (length - page * pageSize > pageSize ? pageSize : length - page * pageSize) - 1;\r\n return `${from}-${to} trên ${length}`;\r\n }\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSortModule,\r\n MatPaginatorModule,\r\n MatTableModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatChipsModule,\r\n MatRadioModule,\r\n MatSlideToggleModule,\r\n MatCheckboxModule,\r\n MatListModule,\r\n MatDividerModule,\r\n CdkTableModule,\r\n DragDropModule,\r\n SdFormModule,\r\n SdServiceModule,\r\n MatSliderModule,\r\n ScrollingModule,\r\n SdCommonModule\r\n ],\r\n declarations: [\r\n SdGridQuickAction,\r\n SdDesktopCell,\r\n SdDesktopCellEditor,\r\n SdDesktopEditorValidation,\r\n SdDesktopCellView,\r\n SdDesktopCellChildrenView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdGridMaterial,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdPopupExport,\r\n SdPopupGridConfiguration,\r\n SdGridFilter,\r\n SdPopupFilter,\r\n SdDynamicColumn,\r\n\r\n // Pipes\r\n SdGridConfigurationResultPipe,\r\n SdColumnChildrenFilterPipe,\r\n SdColumnTitlePipe,\r\n SdCommandFilterPipe,\r\n SdCommandDisablePipe,\r\n SdCommandIconPipe,\r\n SdCommandTitlePipe,\r\n SdColumnValuesPipe,\r\n SdColumnHtmlTemplatePipe,\r\n SdColumnTransformPipe,\r\n SdColumnTooltipPipe,\r\n SdColumnBadgePipe,\r\n SdFilterColumnPipe,\r\n SdFilterExternalPipe,\r\n SdSelectionActionFilterPipe,\r\n SdSelectionVisiblePipe,\r\n SdSelectionDisablePipe,\r\n SdSelectionVisibleSelectAllPipe,\r\n SdEditorHandlerRowPipe,\r\n SdEditorHandlerColumnPipe,\r\n SdEditorValidatePipe,\r\n SdStyleRowCss,\r\n SdCellViewPipe,\r\n SdGroupPipe\r\n ],\r\n exports: [\r\n SdGridMaterial,\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdMaterialSubInformationDefDirective\r\n ],\r\n providers: [\r\n DatePipe,\r\n DecimalPipe,\r\n CdkColumnDef,\r\n SdGridFilterService,\r\n SdGridConfigurationService,\r\n SdGeneratedColumnService,\r\n SdColumnValuesPipe,\r\n SdEditorHandlerColumnPipe,\r\n {\r\n provide: MatPaginatorIntl, useClass: MatPaginatorIntlCro\r\n }\r\n ]\r\n})\r\nexport class SdGridMaterialModule {\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-cell-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-filter-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-footer-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-empty-data-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-sub-information-def.directive.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/grid-material/src/lib/models/grid-configuration.model.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-filter.service.ts","../../../../projects/sd-core/grid-material/src/lib/components/grid-filter/grid-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-export/popup-export.component.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-configuration.service.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-values.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/functions/calculate-sd-id.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-html-template.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-transform.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-children-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-badge.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/grid-configuration-result.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-visible-select-all.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/services/generated-column/generated-column.service.ts","../../../../projects/sd-core/grid-material/src/lib/components/dynamic-column/dynamic-column.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-row.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-validate.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/style-row-css.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-editor-validation/desktop-editor-validation.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-visible.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/quick-action/quick-action.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/cell-view.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/sd-group.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.module.ts"],"names":["templateRef","this","Directive","args","selector","TemplateRef","Input","SdMaterialFilterDefDirective","Object","defineProperty","prototype","val","defaultShowing","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","call","__rest","s","e","t","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","apply","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","pop","push","create","__values","o","m","__read","r","ar","error","__spread","arguments","concat","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","DEFAULT_GRID_MATERIAL_CONFIG","pageSize","pages","GRID_MATERIAL_CONFIG","InjectionToken","SdPopupFilter","cdRef","_this","externalFilters","externalFilter","inlineExternal","columns","columnFilter","inlineColumn","filterDefs","filterDef","inlineFilterDef","changeFilter","EventEmitter","clearFilter","open","JSON","parse","stringify","modal","markForCheck","close","onApply","emit","onClear","Component","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","ViewChild","Output","settingService","_prefix","key","prefix","selectedQuickFilter","quickFilters","configuration","_b","_a","hash","Injectable","SdSettingService","SdGridFilter","ref","deviceService","gridFilterService","isVisible","_filterOptionChanges","Subject","filterChange","_subscription","Subscription","_loadDefault","_u","_v","column","field","filter","_c","_d","default","_w","_x","_e","type","from","_j","_g","_f","_h","undefined","to","_o","_l","_k","_m","_p","_y","_z","sdMaterialFilterDef","_q","_clearFilter","_s","_t","onFilter","item","popupFilter","onChangeFilter","onReset","onClearFilter","setFilter","externalFilter_1","isMobileOrTablet","isDesktop","disabled","ngAfterViewInit","add","pipe","startWith","subscribe","ngOnDestroy","unsubscribe","DeviceDetectorService","SdGridFilterService","SdPopupExport","loadingService","exportService","notifyService","translateService","groups","enableCreating","selected","files","export","form","FormGroup","_getExportableColumns","gridOption","forEach","children","childColumn","map","title","description","width","_getExportableGroups","permission","hideMyTemplates","loadFiles","code","detectChanges","exportDefault","isCSV","firstColumns","secondColumns","assign","data","find","e1","file","group","selectedGroup","filesInFolder","_initTemplate","fileName","sheets","isArray","sheet","name","items","fields","_0","_1","_3","generateTemplate","start","finally","stop","generateAndUploadTemplate","generateUploadTemplate","onExport","uploadTemplate","validator","_r","validators","removeFile","confirm","translate","idx","splice","createTemplate","invalid","markAllAsTouched","some","notify","warning","templateName","filePath","onChangeGroup","listGroups","selectedOptions","validatorTemplateName","test","option","ngOnInit","SdLoadingService","SdExportService","SdNotifyService","SdTranslateService","gridMaterialConfiguration","_COLUMNS","EDITORVALIDATION","EDITOR","SUBINFORMATION","COMMAND","SELECTION","GROUP","_cache","init","subject_1","load","_load","_get","_set","remove","_remove","_default","observer","_getKey","config","hidden","origin","invisible","fixed","subject","storage","createServer","catch","console","isGeneratedColumn","col","generateConfigurationResult","sdSubInformation","fixedColumn","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","selection","commands","editor","addable","removable","visible","generatedColumn","generatedColumns","includes","subColumn","e_2","colSpan","Inject","Optional","transform","valueField","displayField","remain","_prefix$1","_cache$1","values","Pipe","CalculateSdId","sdId","editorHandlerColumn","expandDetail","isExpanded","isExpanding","isSelected","sdGroup","selectable","actions","groupedActions","originItem","editorErrorMessage","editorHandlerRow","SdEditorHandlerColumnPipe","zone","_visible","columns_1","columns_1_1","childCol","run","NgZone","SdGridMaterial","gridConfigurationService","columnValuesPipe","editorHandlerColumnPipe","uuid.v4","localItems","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_optionChanges","isExporting","isSelectAll","exportTitle","_initCellDef","sdMaterialCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","rawColumnFilter","gridFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","_initConfiguration","paginate","showFirstLastButtons","_filterLocal","filterInfo","filterValue","toString","trim","toLowerCase","columnValue","fValue","replace","cValue","fromDate","Date","begin","toDate","end","getTime","type_1","field_1","sort","current","s1","s2","reverse","index","total","_getFilter","pageIndex","filterReq","force","isObservable","toPromise","results","handle","error_1","_render","reload","onReload","every","_updateSelectedItems","_load$1","sdScroll","scrollTop","_exportedItems","exportedItems","_allColumns","_allExportedColumns","_onExport","columns_2","maxItemsPerRequest","exportItems","this_1","res","mapping","totalPage","percent","Math","round","allColumns","allExportedColumns","obj","exportColumn","exportedColumn","_2","displayOnTrue","displayOnFalse","date","transformDate","toFormat","e_7","columns_3","columns_3_1","e_6","exportItems_1","exportItems_1_1","exportCSV","_4","exportByTemplate","max","onFilterChange","onExpand","rowData","subInformation","always","multiple","onSelect","single","onSelectAll","onClearSelection","editorStatus","sdVersion","onCreate","onAdd","addToLast","temporary","onUpdate","onSave","saving","validate","message","err_1","onCancel","idx2","idx1","onRemove","update","refreshItem","_subscription$1","debounceTime","switchMap","gridConfigurationObserver","paginator","page","sortChange","changes","drop","event","moveItemInArray","previousIndex","currentIndex","keys","animations","trigger","style","height","minHeight","visibility","transition","animate","SdGridConfigurationService","SdColumnValuesPipe","SdScrollDirective","SdQuickAction","MatPaginator","MatSort","ContentChild","SdMaterialSubInformationDefDirective","SdMaterialEmptyDataDefDirective","ContentChildren","SdMaterialCellDefDirective","SdMaterialFooterDefDirective","SdCommandFilterPipe","commands_1","commands_1_1","command","flag","isHidden","e_1","childCommand","hidden_1","SdCommandDisablePipe","SdCommandIconPipe","icon","SdCommandTitlePipe","SdColumnHtmlTemplatePipe","htmlTemplate","SdColumnTransformPipe","Number","isNumber","toVNCurrency","SdFilterExternalPipe","externalFilters_1","externalFilters_1_1","SdFilterColumnPipe","columnChildren","SdColumnChildrenFilterPipe","_isMobileOrTablet","transformValue","templateValue","SdColumnTitlePipe","dynamicTitle","SdColumnBadgePipe","badge","badgeType","color","badgeIcon","SdGridConfigurationResultPipe","SdPopupGridConfiguration","isCreatingColumn","disabledDrag","_cache$2","createColumn","mouseUp","dropTable","table","renderRows","handleMouseDown","handleMouseUp","HostListener","SdColumnTooltipPipe","tooltip","_convert","action","fontSet","click","childAction","key_1","actions_1","actions_1_1","availableActions","availableActions_1","availableActions_1_1","isGrouped","setTimeout","first","_cache$3","loadSystem","systemColumn","SdDynamicColumn","generatedColumnService","columnTypes","isDetail","originColumns","onDetail","detail","isSystem","useTemplate","markAsUntouched","markAsPristine","systemSetting","setting","id","systemColumns","_subscription$2","SdGeneratedColumnService","SdSideDrawer","onChange","change","editorOnAdd","editorOnEdit","edit","editorOnDelete","delete","SdEditorHandlerRowPipe","status","isDisabled","editable","savable","cancelable","_visible$1","SdEditorValidatePipe","_previous","_delay","now","SdStyleRowCss","rowCss","SdColumnInlineFilter","useFilterDate","hasGroup","clear","SdCellViewPipe","utilityService","_maxSecond","_maxMinute","_maxHour","_maxDay","_maxMonth","_isMobileOrTablet$1","displayOnEmpty","align","display","hasHtml","html","seconds","timeDifferent","timeDifference","emptyValues","SdUtilityService","SdGroupPipe","groupItem","items_1","items_1_1","fields_1","fields_1_1","e_4","MatPaginatorIntlCro","_super","firstPageLabel","lastPageLabel","itemsPerPageLabel","nextPageLabel","previousPageLabel","getRangeLabel","String","__","constructor","__extends","MatPaginatorIntl","NgModule","imports","CommonModule","FormsModule","ReactiveFormsModule","MatInputModule","MatFormFieldModule","MatSortModule","MatPaginatorModule","MatTableModule","MatMenuModule","MatIconModule","MatButtonModule","MatTooltipModule","MatProgressSpinnerModule","MatChipsModule","MatRadioModule","MatSlideToggleModule","MatCheckboxModule","MatListModule","MatDividerModule","CdkTableModule","DragDropModule","SdFormModule","SdServiceModule","MatSliderModule","ScrollingModule","SdCommonModule","declarations","SdGridQuickAction","SdDesktopCell","SdDesktopCellEditor","SdDesktopEditorValidation","SdDesktopCellView","SdDesktopCellChildrenView","SdDesktopCommand","SdSelectionActionFilterPipe","SdSelectionVisiblePipe","SdSelectionDisablePipe","SdSelectionVisibleSelectAllPipe","exports","providers","DatePipe","DecimalPipe","CdkColumnDef","provide","useClass"],"mappings":"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EAAAA,qBACAC,EAAAA,kBACAC,EAAAA,cACAC,EAAAA,iBACAC,EAAAA,eACAC,EAAAA,eACAC,EAAAA,aACAC,EAAAA,gBACAC,EAAAA,gBACAC,EAAAA,gBACAC,EAAAA,gBAEFC,aAAc,CACZC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACA7E,GACA9R,GAEAoL,EACAD,EACA7hB,EACA0hB,EACAC,EACA1V,GACAkY,GACAhc,GACA7C,GACA4gB,GAGAhC,GACAX,GACAI,GACA5B,GACAS,GACAC,GACAE,GACAvB,GACAwB,GACAE,GACAiC,GACAlB,GACAR,GACAH,GACAoK,GACAC,GACAC,GACAC,GACA9F,GACAzR,GACAgS,GACAI,GACAM,GACAkB,IAEF4D,QAAS,CACPhX,GACAoL,EACAD,EACA7hB,EACA2hB,EACAD,GAEFiM,UAAW,CACTC,EAAAA,SACAC,EAAAA,YACAC,EAAAA,aACA9hB,GACAmV,GACA+F,GACA9F,GACAlL,GACA,CACE6X,QAAS9C,EAAAA,iBAAkB+C,SAAU3D","sourcesContent":["import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialCellDef]'\r\n})\r\nexport class SdMaterialCellDefDirective {\r\n @Input() sdMaterialCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFilterDef]'\r\n})\r\nexport class SdMaterialFilterDefDirective {\r\n @Input() sdMaterialFilterDef: string;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n defaultShowing: boolean;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFooterDef]'\r\n})\r\nexport class SdMaterialFooterDefDirective {\r\n @Input() sdMaterialFooterDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialEmptyDataDef]'\r\n})\r\nexport class SdMaterialEmptyDataDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialSubInformationDef]'\r\n})\r\nexport class SdMaterialSubInformationDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface ISdGridMaterialConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[]\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_GRID_MATERIAL_CONFIG: ISdGridMaterialConfiguration = {\r\n paginate: {\r\n pageSize: 50,\r\n pages: [50, 100, 200]\r\n }\r\n};\r\n\r\nexport const GRID_MATERIAL_CONFIG = new InjectionToken<ISdGridMaterialConfiguration>('sd-grid-material.configuration');\r\n","import { Component, ViewChild, Output, EventEmitter, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialExternalFilter } from '../../models/grid-filter.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\n\r\n@Component({\r\n selector: 'sd-popup-filter',\r\n templateUrl: './popup-filter.component.html',\r\n styleUrls: ['./popup-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdPopupFilter {\r\n @ViewChild('modal') modal: SdModal;\r\n @Input() externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: {\r\n [key: string]: boolean\r\n } = {};\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n columnFilter: any = {};\r\n inlineColumn: {\r\n [key: string]: boolean\r\n } = {};\r\n\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: any = {};\r\n inlineFilterDef: {\r\n [key: string]: boolean;\r\n } = {};\r\n\r\n @Output() changeFilter = new EventEmitter<{\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }>();\r\n @Output() clearFilter = new EventEmitter();\r\n constructor(\r\n private cdRef: ChangeDetectorRef\r\n ) {\r\n }\r\n\r\n open = (args: {\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }) => {\r\n const { inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = args;\r\n this.inlineColumn = JSON.parse(JSON.stringify(inlineColumn || {}));\r\n this.columnFilter = JSON.parse(JSON.stringify(columnFilter || {}));\r\n this.inlineExternal = JSON.parse(JSON.stringify(inlineExternal || {}));\r\n this.externalFilter = JSON.parse(JSON.stringify(externalFilter || {}));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(inlineFilterDef || {}));\r\n this.filterDef = JSON.parse(JSON.stringify(filterDef || {}));\r\n this.modal.open();\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n close = () => {\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n onApply = () => {\r\n this.changeFilter.emit({\r\n inlineColumn: this.inlineColumn || {},\r\n columnFilter: this.columnFilter || {},\r\n inlineExternal: this.inlineExternal || {},\r\n externalFilter: this.externalFilter || {},\r\n inlineFilterDef: this.inlineFilterDef || {},\r\n filterDef: this.filterDef || {}\r\n });\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n onClear() {\r\n this.clearFilter.emit();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialFilterConfiguration } from '../models/grid-filter.model';\r\n\r\n@Injectable()\r\nexport class SdGridFilterService {\r\n #prefix = '61d22e8e-eee8-4aad-8e1c-044a532fea91';\r\n constructor(private settingService: SdSettingService) {\r\n }\r\n get = async (key: string): Promise<SdGridMaterialFilterConfiguration> => {\r\n if (!key) {\r\n return {\r\n selectedQuickFilter: null,\r\n quickFilters: [],\r\n inlineExternal: {},\r\n inlineColumn: {},\r\n inlineFilterDef: {}\r\n };\r\n }\r\n const { get } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n const configuration = await get();\r\n return {\r\n selectedQuickFilter: configuration?.selectedQuickFilter ?? null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration?.inlineExternal || {},\r\n inlineColumn: configuration?.inlineColumn || {},\r\n inlineFilterDef: configuration?.inlineFilterDef || {},\r\n };\r\n }\r\n\r\n set = async (key: string, configuration: SdGridMaterialFilterConfiguration): Promise<SdGridMaterialFilterConfiguration> => {\r\n configuration = {\r\n selectedQuickFilter: configuration?.selectedQuickFilter || null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration.inlineExternal || {},\r\n inlineColumn: configuration.inlineColumn || {},\r\n inlineFilterDef: configuration.inlineFilterDef || {}\r\n };\r\n if (!key) {\r\n return configuration;\r\n }\r\n const { set } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n key = hash({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n await set(configuration);\r\n return configuration;\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewChild, AfterViewInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdGridMaterialFilterOption, SdGridMaterialExternalFilter } from '../../models/grid-filter.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdGridFilterService } from '../../services/grid-filter.service';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\n\r\n@Component({\r\n selector: 'sd-grid-filter',\r\n templateUrl: './grid-filter.component.html',\r\n styleUrls: ['./grid-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdGridFilter implements AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupFilter) popupFilter: SdPopupFilter;\r\n isVisible = true;\r\n filter: Readonly<SdGridMaterialFilterOption>;\r\n #filterOptionChanges = new Subject<SdGridMaterialFilterOption>();\r\n @Input('filter') set _filter(filter: SdGridMaterialFilterOption) {\r\n this.filter = filter;\r\n this.isVisible = !this.filter?.disabled;\r\n this.#filterOptionChanges.next(this.filter);\r\n }\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: any = {};\r\n inlineFilterDef: {\r\n [key: string]: boolean;\r\n } = {};\r\n\r\n @Output() filterChange = new EventEmitter();\r\n #subscription = new Subscription();\r\n\r\n columnFilter: any = {};\r\n inlineColumn: {\r\n [key: string]: boolean;\r\n } = {};\r\n externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: {\r\n [key: string]: boolean;\r\n } = {};\r\n isMobileOrTablet: boolean;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private deviceService: DeviceDetectorService,\r\n private gridFilterService: SdGridFilterService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n this.ref.markForCheck();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.#filterOptionChanges.pipe(startWith(this.filter)).subscribe(() => {\r\n if (!this.isVisible) {\r\n this.filterChange.emit();\r\n return;\r\n }\r\n this.externalFilters = this.filter?.externalFilters || [];\r\n this.gridFilterService.get(this.filter?.key).then(configuration => {\r\n this.inlineColumn = configuration.inlineColumn;\r\n this.inlineExternal = configuration.inlineExternal;\r\n this.inlineFilterDef = configuration.inlineFilterDef;\r\n this.#loadDefault();\r\n this.filterChange.emit();\r\n });\r\n this.ref.markForCheck();\r\n }));\r\n }\r\n\r\n #loadDefault = () => {\r\n for (const column of this.columns) {\r\n this.inlineColumn[column.field] = this.inlineColumn[column.field] ?? column?.filter?.defaultShowing;\r\n this.columnFilter[column.field] = this.columnFilter[column.field] ?? column?.filter?.default;\r\n }\r\n for (const externalFilter of this.externalFilters) {\r\n this.inlineExternal[externalFilter.field] = this.inlineExternal[externalFilter.field] ?? externalFilter?.defaultShowing;\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: this.externalFilter[externalFilter.field]?.from ?? externalFilter.default?.from ?? undefined,\r\n to: this.externalFilter[externalFilter.field]?.to ?? externalFilter.default?.to ?? undefined\r\n };\r\n } else {\r\n this.externalFilter[externalFilter.field] = this.externalFilter[externalFilter.field] ?? externalFilter.default;\r\n }\r\n }\r\n for (const filterDef of this.filterDefs) {\r\n this.inlineFilterDef[filterDef.sdMaterialFilterDef] = this.inlineFilterDef[filterDef.sdMaterialFilterDef] ?? filterDef?.defaultShowing;\r\n }\r\n }\r\n\r\n #clearFilter = () => {\r\n this.columnFilter = {};\r\n this.externalFilter = {};\r\n this.filterDef = {};\r\n for (const externalFilter of this.externalFilters) {\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: undefined,\r\n to: undefined\r\n };\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFilter = (item?: SdGridMaterialColumn | SdGridMaterialExternalFilter) => {\r\n this.filterChange.emit();\r\n }\r\n\r\n open = () => {\r\n this.popupFilter.open({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef\r\n });\r\n }\r\n\r\n onChangeFilter = (args: {\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }) => {\r\n const { inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = args;\r\n this.inlineColumn = inlineColumn;\r\n this.columnFilter = columnFilter;\r\n this.inlineExternal = inlineExternal;\r\n this.externalFilter = externalFilter;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.filterDef = filterDef;\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn,\r\n inlineExternal,\r\n quickFilters: [],\r\n inlineFilterDef,\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.emit();\r\n }\r\n\r\n onReset = () => {\r\n this.inlineColumn = {};\r\n this.columnFilter = {};\r\n this.inlineExternal = {};\r\n this.externalFilter = {};\r\n this.inlineFilterDef = {};\r\n this.filterDef = {};\r\n this.#loadDefault();\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.columnFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n quickFilters: [],\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.emit();\r\n this.ref.markForCheck();\r\n }\r\n\r\n onClearFilter = () => {\r\n this.#clearFilter();\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.columnFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n quickFilters: [],\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.emit();\r\n }\r\n\r\n setFilter = (args: {\r\n columnFilter?: any,\r\n externalFilter?: any,\r\n filterDef?: any\r\n }) => {\r\n const { columnFilter, externalFilter, filterDef} = args;\r\n if (columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n if (externalFilter) {\r\n this.externalFilter = externalFilter;\r\n }\r\n if (filterDef) {\r\n this.filterDef = filterDef;\r\n }\r\n for (const externalFilter of this.externalFilters) {\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: this.externalFilter[externalFilter.field]?.from ?? undefined,\r\n to: this.externalFilter[externalFilter.field]?.to ?? undefined\r\n };\r\n }\r\n }\r\n this.ref.markForCheck();\r\n }\r\n}\r\n","import { Component, OnInit, AfterViewInit, ViewChild, Output, EventEmitter, Input, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport * as uuid from 'uuid';\r\n\r\nimport {\r\n SdNotifyService\r\n} from '@sd-angular/core/notify';\r\n\r\nimport {\r\n SdLoadingService\r\n} from '@sd-angular/core/loading';\r\n\r\nimport {\r\n SdTranslateService\r\n} from '@sd-angular/core/translate';\r\nimport hash from 'object-hash';\r\nimport { MatSelectionList } from '@angular/material/list';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdExportFile, SdExportService, SdExportColumn } from '@sd-angular/core/export';\r\nimport { SdGroupExport } from '../../models/grid-export.model';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdGridConfigurationResult } from '../../models/grid-config.model';\r\n\r\n@Component({\r\n selector: 'sd-popup-export',\r\n templateUrl: './popup-export.component.html',\r\n styleUrls: ['./popup-export.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdPopupExport implements OnInit, AfterViewInit {\r\n gridOption: SdGridMaterialOption;\r\n columns: SdExportColumn[] = [];\r\n groups: SdGroupExport[] = [];\r\n templateName: string;\r\n enableCreating = false;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('listGroups') listGroups: MatSelectionList;\r\n\r\n selected: {\r\n [key: string]: boolean\r\n } = {};\r\n files: SdExportFile[] = [];\r\n selectedGroup: SdGroupExport;\r\n\r\n @Output() export = new EventEmitter<{ file: SdExportFile, columns: SdExportColumn[], isCSV?: boolean }>();\r\n form = new FormGroup({});\r\n\r\n @Input('gridOption') set _gridOption(option: SdGridMaterialOption) {\r\n this.gridOption = option;\r\n this.columns = this.#getExportableColumns();\r\n this.groups = this.#getExportableGroups();\r\n }\r\n @Input() configuration: SdGridConfigurationResult;\r\n private get key(): string {\r\n const prefix = '93889e78-f971-4a1d-8c73-fe2321af9233';\r\n if (!this.gridOption?.export?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: this.gridOption?.export?.key\r\n });\r\n }\r\n\r\n #getExportableColumns = (): SdExportColumn[] => {\r\n const columns: SdExportColumn[] = [];\r\n this.gridOption.columns.filter(e => !e.export?.disabled).forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return [...columns, ...(this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [])].map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width\r\n }));\r\n }\r\n\r\n #getExportableGroups = () => {\r\n return this.gridOption?.export?.groups?.filter(e => {\r\n const permission = e.permission;\r\n if (typeof (permission) === 'function') {\r\n return permission();\r\n }\r\n return permission;\r\n }) || [];\r\n }\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n open = async () => {\r\n if (!this.key) {\r\n this.exportDefault();\r\n return;\r\n }\r\n if (this.groups.length === 1 && this.gridOption?.export?.hideMyTemplates) {\r\n this.loadFiles(this.groups[0].code);\r\n } else {\r\n this.loadFiles(null);\r\n }\r\n this.selected = {};\r\n this.modal.open();\r\n this.ref.detectChanges();\r\n }\r\n\r\n exportDefault = (isCSV: boolean = false) => {\r\n if (this.configuration) {\r\n const { firstColumns, secondColumns } = this.configuration;\r\n const columns = [...firstColumns, ...secondColumns].map(e => ({\r\n ...e,\r\n data: this.columns.find(e1 => e1.field === e.field)\r\n })).filter(e => !!e.data)\r\n .map(e => e.data);\r\n this.export.emit({\r\n file: null,\r\n columns,\r\n isCSV\r\n });\r\n } else {\r\n this.export.emit({\r\n file: null,\r\n columns: this.columns,\r\n isCSV\r\n });\r\n } \r\n }\r\n\r\n\r\n loadFiles = async (group: string = null) => {\r\n this.selectedGroup = this.groups.find(e => e.code === group);\r\n this.files = await this.exportService.filesInFolder({\r\n key: this.key,\r\n group\r\n });\r\n this.ref.markForCheck();\r\n }\r\n\r\n #initTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.exportService.generateTemplate({\r\n fileName: fileName || this.gridOption?.export?.fileName,\r\n columns: this.columns,\r\n sheets\r\n });\r\n }\r\n\r\n generateTemplate = async () => {\r\n this.loadingService.start();\r\n await this.#initTemplate().finally(this.loadingService.stop);\r\n }\r\n\r\n generateAndUploadTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption?.export?.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.exportService.generateUploadTemplate({\r\n key: this.key,\r\n template: {\r\n fileName: fileName || this.gridOption?.export?.fileName,\r\n columns: this.columns.filter(e => this.selected[e.field]),\r\n sheets\r\n },\r\n group: this.selectedGroup?.code\r\n });\r\n }\r\n\r\n onExport = (file: SdExportFile) => {\r\n this.export.emit({\r\n file,\r\n columns: this.columns\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n uploadTemplate = async () => {\r\n const file = await this.exportService.uploadTemplate({\r\n key: this.key,\r\n group: this.selectedGroup?.code,\r\n validator: this.gridOption?.export?.validators\r\n });\r\n if (file) {\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n removeFile = (file: SdExportFile) => {\r\n this.notifyService.confirm(this.translateService.translate('Remove template')).then(() => {\r\n this.exportService.removeFile({\r\n key: this.key,\r\n fileName: file.fileName,\r\n group: this.selectedGroup?.code || null\r\n });\r\n const idx = this.files.indexOf(file);\r\n this.files.splice(idx, 1);\r\n this.files = [...this.files];\r\n this.ref.detectChanges();\r\n });\r\n }\r\n\r\n createTemplate = async () => {\r\n const { translate } = this.translateService;\r\n if (this.form.invalid) {\r\n this.form.markAllAsTouched();\r\n return;\r\n }\r\n if (!this.columns.some(e => this.selected[e.field])) {\r\n this.notifyService.notify.warning(translate('Please select columns'));\r\n return;\r\n }\r\n this.loadingService.start();\r\n const fileName = this.templateName + '.xlsx';\r\n try {\r\n if (this.gridOption?.export?.validators?.(fileName)) {\r\n this.notifyService.notify.warning(this.gridOption?.export?.validators(fileName));\r\n return;\r\n }\r\n const result = await this.generateAndUploadTemplate(fileName);\r\n if (result?.filePath) {\r\n const file: SdExportFile = {\r\n filePath: result.filePath,\r\n fileName: result.fileName\r\n };\r\n this.onExport(file);\r\n this.templateName = null;\r\n this.enableCreating = false;\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n }\r\n\r\n onChangeGroup = () => {\r\n this.loadFiles(this.listGroups?.selectedOptions?.selected[0]?.value);\r\n }\r\n\r\n validatorTemplateName = (val: string) => {\r\n const { translate } = this.translateService;\r\n const regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;\r\n if (!val) {\r\n return translate('Please enter your template name');\r\n }\r\n if (val.length > 50) {\r\n return translate('Template name is too long');\r\n }\r\n if (!regex.test(val)) {\r\n return translate('Template name only contains letters, numbers and spaces');\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnConfiguration, SdGridConfiguration, SdGridConfigurationCache, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { GRID_MATERIAL_CONFIG, ISdGridMaterialConfiguration } from '../models/grid-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdGridConfigurationService {\r\n #COLUMNS = {\r\n EDITORVALIDATION: 'sdEditorValidation',\r\n EDITOR: 'sdEditor',\r\n SUBINFORMATION: 'sdSubInformationAction',\r\n COMMAND: 'sdCommand',\r\n SELECTION: 'sdSelection',\r\n GROUP: 'sdGroup'\r\n };\r\n #cache: {\r\n [key: string]: SdGridConfigurationCache\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(GRID_MATERIAL_CONFIG) @Optional() public gridMaterialConfiguration: ISdGridMaterialConfiguration) {\r\n }\r\n\r\n init = (key: string, gridOption: SdGridMaterialOption) => {\r\n if (!this.#cache[key]) {\r\n const subject = new Subject<SdGridConfiguration>();\r\n this.#cache[key] = {\r\n load: this.#load(gridOption, subject),\r\n get: this.#get(gridOption),\r\n set: (configuration: SdGridConfiguration) => {\r\n configuration = this.#set(gridOption, configuration);\r\n subject.next({ ...configuration });\r\n return configuration;\r\n },\r\n remove: () => {\r\n this.#remove(gridOption)();\r\n subject.next(this.#default(gridOption));\r\n },\r\n observer: subject\r\n };\r\n }\r\n return this.#cache[key];\r\n }\r\n\r\n #getKey = (gridOption: SdGridMaterialOption) => {\r\n const prefix = 'c9e94836-6ace-4aeb-b148-4f0be63589ee';\r\n if (!gridOption?.config?.key && !gridOption?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: gridOption?.config?.key || !gridOption?.key\r\n });\r\n }\r\n\r\n #default = (gridOption: SdGridMaterialOption): SdGridConfiguration => {\r\n const columns: SdColumnConfiguration[] = gridOption?.columns?.filter(e => !e.hidden).map(e => ({\r\n origin: {\r\n field: e.field,\r\n title: e.title,\r\n width: e.width,\r\n invisible: e.invisible\r\n },\r\n invisible: e.invisible,\r\n fixed: false\r\n })) || [];\r\n return {\r\n columns\r\n };\r\n }\r\n\r\n #load = (gridOption: SdGridMaterialOption, subject: Subject<SdGridConfiguration>) => {\r\n return async () => {\r\n const get = this.#get(gridOption);\r\n const configuration = await get();\r\n subject.next({ ...configuration });\r\n };\r\n }\r\n\r\n #get = (gridOption: SdGridMaterialOption) => {\r\n return async () => {\r\n const key = this.#getKey(gridOption);\r\n if (!key) {\r\n return this.#default(gridOption);\r\n }\r\n const { columns, config } = gridOption;\r\n let configuration: SdGridConfiguration;\r\n if (config?.storage === 'server') {\r\n const { get, remove } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: config?.args\r\n });\r\n configuration = await get().catch(() => undefined);\r\n if (!configuration?.columns) {\r\n remove().catch(console.error);\r\n return this.#default(gridOption);\r\n }\r\n } else {\r\n const { get, remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: config?.storage,\r\n args: config?.args\r\n });\r\n configuration = get();\r\n if (!configuration?.columns) {\r\n remove();\r\n return this.#default(gridOption);\r\n }\r\n }\r\n\r\n configuration.columns = configuration.columns\r\n .filter(column => column.isGeneratedColumn || columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // Thêm những column mới vào storage nếu có\r\n columns.forEach(column => {\r\n const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n if (!col) {\r\n configuration.columns.push({\r\n origin: {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible,\r\n },\r\n invisible: column.invisible,\r\n fixed: false\r\n });\r\n } else {\r\n col.origin = {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible\r\n };\r\n }\r\n });\r\n return configuration;\r\n };\r\n }\r\n\r\n #set = (gridOption: SdGridMaterialOption, configuration: SdGridConfiguration) => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n if (gridOption?.config?.storage === 'server') {\r\n const { set } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: gridOption?.config?.args\r\n });\r\n set(configuration);\r\n } else {\r\n const { set } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args\r\n });\r\n set(configuration);\r\n }\r\n }\r\n return JSON.parse(JSON.stringify(configuration));\r\n }\r\n\r\n #remove = (gridOption: SdGridMaterialOption) => {\r\n return () => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n if (gridOption?.config?.storage === 'server') {\r\n const { remove } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: gridOption?.config?.args\r\n });\r\n remove();\r\n } else {\r\n const { remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args\r\n });\r\n remove();\r\n }\r\n }\r\n };\r\n }\r\n\r\n // get = async (gridOption: SdGridMaterialOption): Promise<SdGridConfiguration> => {\r\n // if (!gridOption?.key) {\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // const { key, columns } = gridOption;\r\n // const configuration: SdGridConfiguration = await this.settingService.get(this.#getKey(key)).catch(() => undefined);\r\n // if (!configuration?.columns) {\r\n // this.settingService.remove(this.#getKey(key)).catch(console.error);\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // configuration.columns = configuration.columns\r\n // .filter(column => columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // // Thêm những column mới vào storage nếu có\r\n // columns.forEach(column => {\r\n // const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n // if (!col) {\r\n // configuration.columns.push({\r\n // origin: {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible,\r\n // },\r\n // invisible: column.invisible,\r\n // fixed: false\r\n // });\r\n // } else {\r\n // col.origin = {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible\r\n // };\r\n // }\r\n // });\r\n // return configuration;\r\n // }\r\n\r\n // set = async (key: string, configuration: SdGridConfiguration): Promise<SdGridConfiguration> => {\r\n // if (key) {\r\n // this.settingService.set(this.#getKey(key), configuration);\r\n // }\r\n // return configuration;\r\n // }\r\n\r\n // remove = (key: string) => {\r\n // if (key) {\r\n // this.settingService.remove(this.#getKey(key));\r\n // }\r\n // }\r\n\r\n generateConfigurationResult = (\r\n configuration: SdGridConfiguration,\r\n gridOption: SdGridMaterialOption,\r\n sdSubInformation: SdMaterialSubInformationDefDirective) => {\r\n const result: SdGridConfigurationResult = {\r\n column: {},\r\n fixedColumn: {},\r\n firstColumns: [],\r\n secondColumns: [],\r\n firstHeaders: [],\r\n secondHeaders: [],\r\n displayedColumns: [],\r\n displayedFooters: [],\r\n multipleHeader: false\r\n };\r\n const { selection, commands, editor, group } = gridOption || {};\r\n if (editor?.addable || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITORVALIDATION);\r\n result.displayedColumns.push(this.#COLUMNS.EDITORVALIDATION);\r\n }\r\n if (selection?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (!editor?.hidden) {\r\n if (editor?.addable\r\n || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'popup' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITOR);\r\n result.displayedColumns.push(this.#COLUMNS.EDITOR);\r\n }\r\n }\r\n if (commands?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.COMMAND);\r\n result.displayedColumns.push(this.#COLUMNS.COMMAND);\r\n }\r\n if (group?.fields?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.GROUP);\r\n result.displayedColumns.push(this.#COLUMNS.GROUP);\r\n }\r\n configuration?.columns?.filter(col => !col.invisible).forEach(col => {\r\n if (col.isGeneratedColumn) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n const generatedColumn: SdGridMaterialColumn = {\r\n type: 'children',\r\n field: col.origin.field,\r\n title: col.origin.title,\r\n children: []\r\n };\r\n for (const subColumn of gridOption?.columns.filter(e1 => col.generatedColumns.includes(e1.field))) {\r\n if (subColumn.type === 'children' || subColumn.type === 'children-col') {\r\n for (const childColumn of subColumn.children) {\r\n generatedColumn.children.push({\r\n ...childColumn,\r\n colSpan: 2\r\n });\r\n }\r\n } else {\r\n generatedColumn.children.push({\r\n ...subColumn,\r\n colSpan: 2\r\n });\r\n }\r\n\r\n }\r\n result.firstColumns.push({\r\n ...generatedColumn,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n result.displayedColumns.push(col.origin.field);\r\n return;\r\n }\r\n const column = gridOption?.columns.find(e => e.field === col.origin.field);\r\n if (column) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n result.firstColumns.push({\r\n ...column,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n if (column.type === 'children-col') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n } else {\r\n result.displayedColumns.push(col.origin.field);\r\n }\r\n }\r\n });\r\n if (sdSubInformation?.templateRef) {\r\n result.firstHeaders.push(this.#COLUMNS.SUBINFORMATION);\r\n result.displayedColumns.push(this.#COLUMNS.SUBINFORMATION);\r\n }\r\n result.multipleHeader = result.secondHeaders.length > 0;\r\n // Sub infomation không thể có footer\r\n result.displayedFooters = result.displayedColumns.filter(val => val !== this.#COLUMNS.SUBINFORMATION);\r\n return result;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnValues'\r\n})\r\nexport class SdColumnValuesPipe implements PipeTransform {\r\n #prefix = 'a1e67660-8aa2-4c11-b02d-71a32188719f';\r\n #cache: {\r\n [key: string]: {\r\n result: any\r\n }\r\n } = {};\r\n transform = async (value: any, column: SdGridMaterialColumn): Promise<string> => {\r\n if (column.type !== 'values' || !column.option?.items || !column.option?.valueField || !column.option?.displayField) {\r\n return value;\r\n }\r\n const { items, valueField, displayField, ...remain } = column.option;\r\n const key = hash({\r\n prefix: this.#prefix,\r\n valueField,\r\n displayField,\r\n remain,\r\n value\r\n });\r\n if (typeof (items) === 'function') {\r\n if (!this.#cache[key]) {\r\n const values = await items(value, true);\r\n this.#cache[key] = {\r\n result: values?.find(e => e?.[valueField] === value)?.[displayField] || value\r\n };\r\n }\r\n } else {\r\n if (!this.#cache[key]) {\r\n this.#cache[key] = {\r\n result: items?.find(e => e?.[valueField] === value)?.[displayField] || value\r\n };\r\n }\r\n }\r\n return this.#cache[key].result;\r\n }\r\n}\r\n","import hash from 'object-hash';\r\nimport { SdItem } from \"../models/grid.model\";\r\n\r\nexport const CalculateSdId = (item: SdItem) => {\r\n const {\r\n sdId,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n sdGroup,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n originItem,\r\n editorErrorMessage,\r\n editorHandlerRow,\r\n ...remain } = item;\r\n return hash(remain);\r\n}","import { Injectable, NgZone, Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { CalculateSdId } from '../functions/calculate-sd-id';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorHandlerColumn'\r\n})\r\n@Injectable()\r\nexport class SdEditorHandlerColumnPipe implements PipeTransform {\r\n constructor(private zone: NgZone) { }\r\n #visible = (col: SdGridMaterialColumn, item: SdItem) => {\r\n if (col.type === 'children' || col.type === 'children-col') {\r\n return false;\r\n }\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (col.editor) {\r\n const isDisabled = typeof (col.editor.disabled) === 'function' ? col.editor.disabled(item) : col.editor.disabled;\r\n if (isDisabled) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n transform(value: any, item: SdItem, gridOption: SdGridMaterialOption) {\r\n const key = CalculateSdId(item);\r\n if (item.sdId === key && item.editorHandlerColumn) {\r\n return true;\r\n }\r\n item.editorHandlerColumn = item.editorHandlerColumn || {};\r\n const { columns } = gridOption;\r\n for (const col of columns) {\r\n if (col.type === 'children-col') {\r\n for (const childCol of col.children) {\r\n item.editorHandlerColumn[childCol.field] = {\r\n ...item.editorHandlerColumn[childCol.field],\r\n visible: this.#visible(childCol, item)\r\n }\r\n }\r\n } else {\r\n item.editorHandlerColumn[col.field] = {\r\n ...item.editorHandlerColumn[col.field],\r\n visible: this.#visible(col, item)\r\n }\r\n }\r\n }\r\n this.zone.run(() => {\r\n item.sdId = CalculateSdId(item);\r\n });\r\n item.sdId = key;\r\n return true;\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n Optional,\r\n Inject,\r\n ChangeDetectorRef,\r\n ContentChildren,\r\n QueryList,\r\n OnInit,\r\n OnDestroy,\r\n EventEmitter,\r\n ContentChild\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport * as uuid from 'uuid';\r\nimport {\r\n SdGridMaterialFilterRequest\r\n} from './models/grid-filter.model';\r\nimport {\r\n SdGridMaterialOption\r\n} from './models/grid-option.model';\r\nimport {\r\n GRID_MATERIAL_CONFIG,\r\n DEFAULT_GRID_MATERIAL_CONFIG,\r\n ISdGridMaterialConfiguration\r\n} from './models/grid-configuration.model';\r\nimport { Subscription, isObservable, Observable } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdGridMaterialColumn } from './models/grid-column.model';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';\r\nimport { SdGridConfiguration, SdGridConfigurationResult } from './models/grid-config.model';\r\nimport { SdGridConfigurationService } from './services/grid-configuration.service';\r\nimport { SdGridMaterialExportColumn } from './models/grid-export.model';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { SdGridMaterialItem, SdItem } from './models/grid.model';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';\r\nimport { SdScrollDirective } from '@sd-angular/core/common';\r\n\r\n@Component({\r\n selector: 'sd-grid-material',\r\n templateUrl: './grid-material.component.html',\r\n styleUrls: ['./grid-material.component.scss'],\r\n animations: [\r\n trigger('detailExpand', [\r\n state('collapsed', style({ height: '0', minHeight: '0', visibility: 'hidden' })),\r\n state('expanded', style({ height: '*', visibility: 'visible' })),\r\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\r\n ]),\r\n ],\r\n})\r\nexport class SdGridMaterial<T = any> implements OnInit, AfterViewInit, OnDestroy {\r\n @ViewChild(SdScrollDirective) sdScroll: SdScrollDirective;\r\n key = uuid.v4();\r\n gridConfigurationObserver: Observable<SdGridConfiguration>;\r\n gridFilter: SdGridFilter;\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\r\n @ViewChild(SdGridFilter) set _gridFilter(gridFilter: SdGridFilter) {\r\n if (gridFilter && this.gridFilter !== gridFilter) {\r\n this.gridFilter = gridFilter;\r\n this.#subscription.add(gridFilter.filterChange.pipe(\r\n debounceTime(200),\r\n map(() => {\r\n this.#paginator.pageIndex = 0;\r\n return this.#getFilter();\r\n }),\r\n switchMap(filterInfo => this.#load(filterInfo, false))\r\n ).subscribe(this.#render));\r\n }\r\n }\r\n\r\n @Input() set option(option: SdGridMaterialOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.gridOption = option;\r\n this.#optionChanges.emit();\r\n option?.columns?.forEach(col => {\r\n if (col.filter?.default) {\r\n this.columnFilter[col.field] = col.filter.default;\r\n }\r\n });\r\n const configuration = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.gridConfigurationObserver = configuration.observer;\r\n configuration.load();\r\n }\r\n }\r\n\r\n gridOption: SdGridMaterialOption;\r\n localItems: any[] = [];\r\n items: SdGridMaterialItem<T>[] = [];\r\n selectedItems: T[] = [];\r\n total: number;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n // Paginate\r\n isHiddenPaginator = false;\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(paginator.page.pipe(\r\n debounceTime(200),\r\n map(this.#getFilter),\r\n switchMap(filterInfo => this.#load(filterInfo, false))\r\n ).subscribe(this.#render));\r\n }\r\n }\r\n\r\n // Sorting\r\n #sort: MatSort;\r\n @ViewChild(MatSort) set sort(sort: MatSort) {\r\n if (sort && this.#sort !== sort) {\r\n this.#sort = sort;\r\n this.#subscription.add(sort.sortChange.pipe(\r\n debounceTime(200),\r\n map(this.#getFilter),\r\n switchMap(filterInfo => this.#load(filterInfo, false))\r\n ).subscribe(this.#render));\r\n }\r\n }\r\n\r\n // Export\r\n @ViewChild(SdPopupExport) sdPopupExport: SdPopupExport;\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective) sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective) sdEmptyData: SdMaterialEmptyDataDefDirective;\r\n\r\n // Cell Def\r\n @ContentChildren(SdMaterialCellDefDirective) sdCellDefs = new QueryList<SdMaterialCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n\r\n // Footer Def\r\n @ContentChildren(SdMaterialFooterDefDirective) sdFooterDefs = new QueryList<SdMaterialFooterDefDirective>();\r\n footerDef: {\r\n [column: string]: SdMaterialFooterDefDirective\r\n } = {};\r\n hasFooter = false;\r\n\r\n // Filter Def\r\n @ContentChildren(SdMaterialFilterDefDirective) sdFilterDefs = new QueryList<SdMaterialFilterDefDirective>();\r\n filterDefs: SdMaterialFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnFilter: {\r\n [key: string]: any\r\n } = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #optionChanges = new EventEmitter();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(GRID_MATERIAL_CONFIG) @Optional() public configuration: ISdGridMaterialConfiguration,\r\n private gridConfigurationService: SdGridConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private columnValuesPipe: SdColumnValuesPipe,\r\n private editorHandlerColumnPipe: SdEditorHandlerColumnPipe) {\r\n }\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.sdCellDefs.changes.pipe(startWith([])).subscribe(this.#initCellDef));\r\n this.#subscription.add(this.sdFooterDefs.changes.pipe(startWith([])).subscribe(this.#initFooterDef));\r\n this.#subscription.add(this.sdFilterDefs.changes.pipe(startWith([])).subscribe(this.#initFilterDef));\r\n this.#subscription.add(this.#optionChanges.pipe(\r\n startWith({}),\r\n debounceTime(200),\r\n map(this.#getFilter),\r\n switchMap(filterInfo => this.#load(filterInfo, true))\r\n ).subscribe(this.#render));\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #initCellDef = () => {\r\n this.cellDef = {};\r\n for (const cellDef of this.sdCellDefs) {\r\n if (cellDef.sdMaterialCellDef) {\r\n this.cellDef[cellDef.sdMaterialCellDef] = cellDef;\r\n }\r\n }\r\n }\r\n\r\n #initFilterDef = () => {\r\n this.filterDefs = [];\r\n for (const filterDef of this.sdFilterDefs) {\r\n this.filterDefs.push(filterDef);\r\n }\r\n }\r\n\r\n #initFooterDef = () => {\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdMaterialFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdMaterialFooterDef] = footerDef;\r\n }\r\n }\r\n }\r\n\r\n #filterExportInfo = (pageNumber: number, pageSize: number): SdGridMaterialFilterRequest => {\r\n return {\r\n rawColumnFilter: (this.gridOption?.filter?.inlineColumn ? this.columnFilter : this.gridFilter?.columnFilter) || {},\r\n rawExternalFilter: this.gridFilter?.externalFilter || {},\r\n rawFilterDef: this.gridFilter?.filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber,\r\n pageSize,\r\n isExported: true\r\n };\r\n }\r\n\r\n #initConfiguration = (option: SdGridMaterialOption) => {\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize: option?.paginate?.pageSize ?? this.configuration?.paginate?.pageSize ?? DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.configuration?.paginate?.pages ?? DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false\r\n };\r\n return option;\r\n }\r\n\r\n #filterLocal = (localItems: any[], filterInfo: SdGridMaterialFilterRequest) => {\r\n const { columns } = this.gridOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(item => {\r\n for (const column of columns) {\r\n const { field, type } = column;\r\n const filterValue: string = (rawColumnFilter[field] || '').toString().trim().toLowerCase();\r\n const columnValue: string = (item[field] || '').toString().trim().toLowerCase();\r\n if (filterValue) {\r\n if (!columnValue && type !== 'datetime' && type !== 'date' && type !== 'time') {\r\n return false;\r\n }\r\n if (type === 'string') {\r\n if (columnValue.indexOf(filterValue) === -1) {\r\n return false;\r\n }\r\n } else if (type === 'values') {\r\n if (columnValue !== filterValue) {\r\n return false;\r\n }\r\n } else if (type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (type === 'datetime' || type === 'date' || type === 'time') {\r\n const from = rawColumnFilter[field]?.from ?? rawColumnFilter[field];\r\n const to = rawColumnFilter[field]?.to ?? rawColumnFilter[field];\r\n const fromDate = Date.begin(from);\r\n const toDate = Date.end(to);\r\n if (fromDate && toDate) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n if (new Date(columnValue).getTime() < fromDate.getTime() || new Date(columnValue).getTime() >= toDate.getTime()) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (orderBy && orderDirection) {\r\n const column = columns.find(e => e.field === orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((current, next) => {\r\n if (type === 'number') {\r\n return (current[field] || 0) - (next[field] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(current[field] || '').getTime();\r\n const d2 = new Date(current[field] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (current[field] || '').toString();\r\n const s2 = (next[field] || '').toString();\r\n if (s1 > s2) {\r\n return 1;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (orderDirection === 'desc') {\r\n items.reverse();\r\n }\r\n }\r\n }\r\n return {\r\n items: items.filter((item, index) => {\r\n return index >= pageNumber * pageSize\r\n && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length\r\n };\r\n }\r\n\r\n #getFilter = (): SdGridMaterialFilterRequest => ({\r\n rawColumnFilter: (this.gridOption?.filter?.inlineColumn ? this.columnFilter : this.gridFilter?.columnFilter) || {},\r\n rawExternalFilter: this.gridFilter?.externalFilter || {},\r\n rawFilterDef: this.gridFilter?.filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber: this.#paginator?.pageIndex || 0,\r\n pageSize: this.#paginator?.pageSize || this.gridOption?.paginate?.pageSize || 50\r\n })\r\n\r\n #load = async (filterReq: SdGridMaterialFilterRequest, force: boolean = true): Promise<{ items: any[], total: number }> => {\r\n this.isLoading = true;\r\n try {\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterReq);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n if (force) {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n this.localItems = await results;\r\n } else {\r\n this.localItems = results;\r\n }\r\n }\r\n return this.#filterLocal(this.localItems, filterReq);\r\n }\r\n } catch (error) {\r\n this.notifyService.handle.error(error);\r\n } finally {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n #render = async (args: { items: any[], total: number }) => {\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n // this.isHiddenPaginator = this.filterInfo.pageNumber === 0 && this.total <= this.filterInfo.pageSize;\r\n this.items.forEach((item: SdItem) => {\r\n item.originItem = { ...item };\r\n });\r\n await this.gridOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n\r\n reload = async (force: boolean = true) => {\r\n const data = await this.#load(this.#getFilter(), force);\r\n this.sdScroll?.scrollTop();\r\n this.#render(data);\r\n }\r\n\r\n #exportedItems = async (pageNumber: number = 0, pageSize: number = 10000) => {\r\n if (this.gridOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n if (Array.isArray(result)) {\r\n return result;\r\n }\r\n if (isObservable<any[]>(result)) {\r\n result = result.toPromise();\r\n }\r\n if (isObservable<{ items: any[], total: number }>(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n const filterInfo = this.#filterExportInfo(pageNumber, pageSize);\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterInfo);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof (this.gridOption.items) === 'function') {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n exportedItems = await results;\r\n } else {\r\n exportedItems = results;\r\n }\r\n } else {\r\n exportedItems = this.gridOption.items;\r\n }\r\n return this.#filterLocal(exportedItems, filterInfo);\r\n }\r\n }\r\n }\r\n\r\n drop(event: CdkDragDrop<string[]>, columns: string[]) {\r\n moveItemInArray(columns, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n #allColumns = (): SdGridMaterialColumn[] => {\r\n const columns: SdGridMaterialColumn[] = [];\r\n this.gridOption.columns.filter(e => !e.export?.disabled).forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns;\r\n }\r\n\r\n #allExportedColumns = (): SdGridMaterialExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n }\r\n\r\n #onExport = async (args: { file: SdExportFile, columns: SdExportColumn[], isCSV: boolean }) => {\r\n try {\r\n const { file, isCSV } = args;\r\n let { columns } = args;\r\n const pageSize = this.gridOption?.export?.maxItemsPerRequest || 1000;\r\n let total = this.total;\r\n let pageNumber = 0;\r\n let exportItems = [];\r\n this.isExporting = true;\r\n const items: any[] = [];\r\n while (pageNumber * pageSize < total) {\r\n const res = await this.#exportedItems(pageNumber, pageSize);\r\n if ('items' in res) {\r\n exportItems = res.items;\r\n total = res.total;\r\n } else {\r\n exportItems = res;\r\n // total = exportItems.length;\r\n }\r\n if (this.gridOption.export?.mapping) {\r\n const results = this.gridOption.export.mapping(exportItems);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n\r\n const totalPage = total / pageSize;\r\n const percent = Math.round(pageNumber * 100.0 / totalPage);\r\n this.exportTitle = `Exporting...${percent}%`;\r\n const allColumns = this.#allColumns();\r\n const allExportedColumns = this.#allExportedColumns();\r\n for (const item of exportItems) {\r\n const obj: any = {};\r\n const handle = async (exportColumn: SdExportColumn) => {\r\n obj[exportColumn.field] = item[exportColumn.field];\r\n const column = allColumns.find(e => e.field === exportColumn.field);\r\n const exportedColumn = allExportedColumns.find(e => e.field === exportColumn.field);\r\n if (exportedColumn?.transform) {\r\n obj[exportedColumn.field] = exportedColumn.transform(item[exportedColumn.field], item);\r\n return;\r\n }\r\n if (!column) {\r\n return;\r\n }\r\n if (column.type === 'children' || column.type === 'children-col') {\r\n column?.children.forEach(childColumn => handle(childColumn));\r\n return;\r\n }\r\n if (!columns.some(e => e.field === column.field)) {\r\n return;\r\n }\r\n if (column.transform) {\r\n const transform = column.transform(item[column.field], item);\r\n if(transform instanceof Promise) {\r\n obj[column.field] = await transform;\r\n } else {\r\n obj[column.field] = transform;\r\n }\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.option?.displayOnTrue || 'True';\r\n } else if (obj[column.field] !== undefined && obj[column.field] !== null) {\r\n obj[column.field] = column.option?.displayOnFalse || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là date thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy');\r\n } else if (column.type === 'datetime') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là datetime thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy HH:mm:ss');\r\n } else if (column.type === 'time') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là time thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'HH:mm:ss');\r\n } else if (column.type === 'values') {\r\n // Nếu là values thì lấy giá trị của value được chọn\r\n obj[column.field] = await this.columnValuesPipe.transform(item[column.field], column);\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n for (const exportColumn of columns) {\r\n await handle(exportColumn);\r\n }\r\n items.push(obj);\r\n }\r\n pageNumber++;\r\n }\r\n if (!file?.filePath) {\r\n if (isCSV) {\r\n await this.exportService.exportCSV({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName\r\n });\r\n return;\r\n }\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n await this.exportService.export({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName,\r\n sheets\r\n });\r\n return;\r\n }\r\n await this.exportService.exportByTemplate({\r\n filePath: file.filePath,\r\n fileName: file.fileName,\r\n columns,\r\n items\r\n });\r\n } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n onExport = async (args: { file: SdExportFile, columns: SdExportColumn[], isCSV: boolean }) => {\r\n const { translate } = this.translateService;\r\n if (!args.isCSV && this.gridOption.export.max && this.total > this.gridOption.export.max) {\r\n this.notifyService.confirm(translate(`Total rows reach limit, do you want to export CSV`)).then(() => {\r\n args.isCSV = true;\r\n this.#onExport(args);\r\n });\r\n return;\r\n }\r\n this.#onExport(args);\r\n }\r\n\r\n onFilterChange = () => {\r\n this.#paginator.pageIndex = 0;\r\n this.reload(false);\r\n }\r\n\r\n onExpand = async (rowData: SdGridMaterialItem<T>) => {\r\n if (this.gridOption.subInformation?.always) {\r\n return;\r\n }\r\n if (rowData.isExpanding) {\r\n return;\r\n }\r\n if (rowData.isExpanded) {\r\n rowData.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.subInformation?.onExpand?.(rowData);\r\n if (!this.gridOption.subInformation?.multiple) {\r\n this.items.forEach(item => item.isExpanding = item.isExpanded = false);\r\n }\r\n if (data instanceof Promise) {\r\n rowData.isExpanding = true;\r\n data.then(res => {\r\n rowData.expandDetail = res;\r\n rowData.isExpanded = true;\r\n }).finally(() => rowData.isExpanding = false);\r\n } else {\r\n rowData.expandDetail = data;\r\n rowData.isExpanded = true;\r\n }\r\n }\r\n\r\n onSelect = (rowData: SdGridMaterialItem<T>) => {\r\n if (rowData?.sdGroup?.items?.length) {\r\n rowData?.sdGroup?.items.forEach(e => e.isSelected = rowData.isSelected);\r\n this.gridOption.selection?.onSelect?.(rowData, this.items.filter(e => e.isSelected));\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.gridOption.selection?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => e.isSelected = false);\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selection?.onSelect?.(rowData, this.items.filter(e => e.isSelected));\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n }\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.selectable && (!this.gridOption?.selection?.actions?.length || e.actions?.length)) {\r\n e.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.gridOption.selection?.onSelectAll?.(this.items.filter(e => e.isSelected));\r\n this.#updateSelectedItems();\r\n }\r\n\r\n onClearSelection = (items?: SdGridMaterialItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => e.isSelected = false);\r\n this.#updateSelectedItems();\r\n }\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedItems = this.items.filter(item => item.isSelected)\r\n .map(item => {\r\n const {\r\n isSelected,\r\n isExpanded,\r\n isExpanding,\r\n expandDetail,\r\n editorErrorMessage,\r\n editorHandlerColumn,\r\n editorHandlerRow,\r\n editorStatus,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n // Giữ lại các trường thông tin cho selectable (action, groupedAction, sdGroup, selectable)\r\n ...result\r\n } = item;\r\n return result;\r\n }) as T[];\r\n this.ref.detectChanges();\r\n }\r\n\r\n clearFilter = () => {\r\n this.gridFilter?.onClearFilter();\r\n }\r\n\r\n setFilter = (args: {\r\n columnFilter: any,\r\n externalFilter: any,\r\n filterDef: any\r\n }) => {\r\n this.gridFilter?.setFilter(args);\r\n }\r\n\r\n onCreate = () => {\r\n const { type, editor, columns } = this.gridOption;\r\n if (!editor?.addable) {\r\n return;\r\n }\r\n const item: SdGridMaterialItem = {};\r\n // Gán giá trị mặc định\r\n columns.forEach(column => {\r\n if (column.type === 'values') {\r\n item[column.field] = '';\r\n } else if (column.type === 'bool') {\r\n item[column.field] = true;\r\n } else if (column.type === 'number') {\r\n item[column.field] = null;\r\n }\r\n });\r\n if (type === 'local') {\r\n editor.onAdd?.(item, this.localItems);\r\n } else {\r\n editor.onAdd?.(item, this.items);\r\n }\r\n // Đưa item lên dòng đầu tiên nếu type khác popup\r\n if (editor.type !== 'popup') {\r\n if (editor.addToLast) {\r\n if (type === 'local') {\r\n this.localItems = [...this.localItems, item];\r\n }\r\n this.items = [...this.items, item];\r\n } else {\r\n if (type === 'local') {\r\n this.localItems = [item, ...this.localItems];\r\n }\r\n this.items = [item, ...this.items];\r\n }\r\n }\r\n item.editorStatus = 'create';\r\n item.editorHandlerRow = {\r\n temporary: { ...item }\r\n };\r\n }\r\n onUpdate = (item: SdItem) => {\r\n const { editor } = this.gridOption;\r\n item.editorStatus = 'update';\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n temporary: { ...item }\r\n };\r\n // this.generateEditorHanlder(item);\r\n if (editor.type === 'popup') {\r\n // Xử lý case popup\r\n // this.sdGridPopupEditor.open(item, columns, isModified);\r\n }\r\n this.ref.detectChanges();\r\n }\r\n onSave = async (item: SdGridMaterialItem<T>) => {\r\n if (item.editorHandlerRow.saving) {\r\n return;\r\n }\r\n const { editor } = this.gridOption;\r\n try {\r\n item.editorHandlerRow.saving = true;\r\n if (editor.validate) {\r\n const result = editor.validate(item, this.items.indexOf(item));\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n throw message;\r\n }\r\n } else {\r\n if (result) {\r\n throw result;\r\n }\r\n }\r\n }\r\n if (editor.onSave) {\r\n const result = editor.onSave(item);\r\n if (result instanceof Promise) {\r\n await result;\r\n }\r\n }\r\n\r\n if (item.editorStatus === 'create' && editor.type === 'popup') {\r\n if (this.gridOption.type === 'local') {\r\n this.items.splice(0, 0, item);\r\n }\r\n // this.viewItems.splice(0, 0, item);\r\n }\r\n\r\n item.editorStatus = undefined;\r\n // this.generateEditorHanlder(item);\r\n } catch (err) {\r\n this.notifyService.notify.warning(err);\r\n } finally {\r\n item.editorHandlerRow.saving = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n onCancel = (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.localItems.indexOf(item);\r\n this.localItems.splice(idx2, 1);\r\n this.localItems = [...this.localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n if (this.gridOption.type === 'local') {\r\n editor?.onCancel?.(item, this.localItems);\r\n } else {\r\n editor?.onCancel?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n if (editor.type === 'focus') {\r\n if (item.editorStatus === 'create') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.localItems.indexOf(item);\r\n this.localItems.splice(idx2, 1);\r\n this.localItems = [...this.localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n } else {\r\n Object.assign(item, item.editorHandlerRow.temporary);\r\n }\r\n }\r\n item.editorStatus = undefined;\r\n this.ref.detectChanges();\r\n }\r\n onRemove = (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.localItems.indexOf(item);\r\n this.localItems.splice(idx2, 1);\r\n this.localItems = [...this.localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n if (this.gridOption.type === 'local') {\r\n editor?.onRemove?.(item, this.localItems);\r\n } else {\r\n editor?.onRemove?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n }\r\n\r\n add = (idx: number, item: T) => {\r\n if (this.items.length > idx) {\r\n this.items.splice(idx, 0, item);\r\n this.items = [...this.items];\r\n } else {\r\n this.items = [...this.items, item];\r\n }\r\n }\r\n\r\n update = (idx: number, item: T) => {\r\n if (this.items[idx]) {\r\n Object.assign(this.items[idx], item);\r\n this.items = [...this.items];\r\n }\r\n }\r\n\r\n remove = (idx: number) => {\r\n if (this.items[idx]) {\r\n this.items.splice(idx, 1);\r\n this.items = [...this.items];\r\n }\r\n }\r\n\r\n refreshItem = (idx: number) => {\r\n const item = this.items[idx];\r\n this.editorHandlerColumnPipe.transform(item.sdVersion, item, this.gridOption);\r\n }\r\n\r\n get editedItems(): (T & { editorErrorMessage: string })[] {\r\n return this.items.filter(item => {\r\n if (!item.originItem) {\r\n return true;\r\n }\r\n if (Object.keys(item.originItem).some(key => item.originItem[key] !== item[key])) {\r\n return true;\r\n }\r\n return false;\r\n }).map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n editorErrorMessage,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result } = item;\r\n return {\r\n ...result,\r\n editorErrorMessage\r\n } as any;\r\n });\r\n }\r\n\r\n get gridItems(): T[] {\r\n return this.items.map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result } = item;\r\n return result as T;\r\n });\r\n }\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n get isEditing() {\r\n return this.items.some(e => e.editorStatus !== undefined);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand, SdGridMaterialCommandNormal } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: any, commands: SdGridMaterialCommand[]): Promise<SdGridMaterialCommand[]> {\r\n const results: SdGridMaterialCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n let flag = false;\r\n const { hidden } = command;\r\n if (hidden === undefined) {\r\n flag = true;\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n flag = true;\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n flag = true;\r\n }\r\n } else {\r\n if (!isHidden) {\r\n flag = true;\r\n }\r\n }\r\n }\r\n if (flag) {\r\n if ('children' in command) {\r\n const children: SdGridMaterialCommandNormal[] = [];\r\n for (const childCommand of command.children) {\r\n const { hidden } = childCommand;\r\n if (hidden === undefined) {\r\n children.push(childCommand);\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n if (!isHidden) {\r\n children.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...command, children });\r\n }\r\n } else {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandDisable'\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: any, command: SdGridMaterialCommand): boolean {\r\n if (!command?.disabled) {\r\n return false;\r\n }\r\n if (typeof (command.disabled) === 'boolean') {\r\n return command.disabled;\r\n }\r\n return command.disabled(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, item: any): string {\r\n if (!command?.icon) {\r\n return '';\r\n }\r\n if (typeof (command.icon) === 'string') {\r\n return command.icon;\r\n }\r\n return command.icon(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, item: any): string {\r\n if (!command?.title) {\r\n return '';\r\n }\r\n if (typeof (command.title) === 'string') {\r\n return command.title;\r\n }\r\n return command.title(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnHtmlTemplate'\r\n})\r\nexport class SdColumnHtmlTemplatePipe implements PipeTransform {\r\n private isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): string {\r\n if (typeof (column?.htmlTemplate) !== 'function') {\r\n return value;\r\n }\r\n return column?.htmlTemplate(value, rowData, this.isMobileOrTablet);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-view',\r\n templateUrl: './desktop-cell-view.component.html',\r\n styleUrls: ['./desktop-cell-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellView {\r\n @Input() sdId: string;\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\r\n@Pipe({\r\n name: 'columnTransform'\r\n})\r\nexport class SdColumnTransformPipe implements PipeTransform {\r\n constructor(private columnValuesPipe: SdColumnValuesPipe) { }\r\n async transform(value: any, rowData: any, column: SdGridMaterialColumn, key?: string): Promise<string> {\r\n if (column?.transform) {\r\n return column.transform(value, rowData);\r\n }\r\n if (column.type === 'values') {\r\n return await this.columnValuesPipe.transform(value, column);\r\n }\r\n if (column.type === 'number' && Number.isNumber(value)) {\r\n return Number.toVNCurrency(value); // this.decimalPipe.transform(value, '1.0-2');\r\n }\r\n if (column.type === 'bool') {\r\n return value === true ? (column.option?.displayOnTrue || 'True') : (column.option?.displayOnFalse || 'False');\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialExternalFilter } from '../models/grid-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdGridMaterialExternalFilter[], field?: string): SdGridMaterialExternalFilter[] {\r\n const results: SdGridMaterialExternalFilter[] = [];\r\n if (!externalFilters) {\r\n return results;\r\n }\r\n for (const filter of externalFilters) {\r\n results.push(filter);\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdGridMaterialColumn[], field?: string): SdGridMaterialColumn[] {\r\n const results: SdGridMaterialColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\r\n if (column.type === 'image') {\r\n continue;\r\n }\r\n if (column.type === 'children') {\r\n for (const columnChildren of column?.children) {\r\n if (!columnChildren.filter?.disabled) {\r\n results.push(columnChildren);\r\n }\r\n }\r\n continue;\r\n }\r\n if (!column.filter?.disabled) {\r\n results.push(column);\r\n }\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { SdGridMaterialColumnChildren } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-children-view',\r\n templateUrl: './desktop-cell-children-view.component.html',\r\n styleUrls: ['./desktop-cell-children-view.component.scss']\r\n})\r\nexport class SdDesktopCellChildrenView {\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumnChildren;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n\r\n@Pipe({\r\n name: 'columnChildrenFilter'\r\n})\r\nexport class SdColumnChildrenFilterPipe implements PipeTransform {\r\n #isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.#isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(columns: SdGridMaterialColumn[], item: any): SdGridMaterialColumn[] {\r\n return columns.filter(column => {\r\n const value = item?.[column.field];\r\n const transformValue = column.transform?.(item[column.field], item);\r\n const templateValue = column.htmlTemplate?.(item[column.field], item, this.#isMobileOrTablet);\r\n return (value !== undefined && value !== null && value !== '')\r\n || (transformValue !== undefined && transformValue !== null && transformValue !== '')\r\n || (templateValue !== undefined && templateValue !== null && templateValue !== '');\r\n });\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialChildColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnTitle'\r\n})\r\nexport class SdColumnTitlePipe implements PipeTransform {\r\n async transform(item: any, column: SdGridMaterialChildColumn): Promise<string> {\r\n if (!column?.title) {\r\n return '';\r\n }\r\n const result = column?.dynamicTitle?.(item);\r\n if (result instanceof Promise) {\r\n return (await result) || column?.title;\r\n }\r\n return result || column?.title;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../../models/grid-command.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-command',\r\n templateUrl: './desktop-command.component.html',\r\n styleUrls: ['./desktop-command.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCommand {\r\n @Input() item: any;\r\n @Input() commands: SdGridMaterialCommand[] = [];\r\n constructor() {\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdBadgeColor } from '@sd-angular/core/badge';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnBadge'\r\n})\r\nexport class SdColumnBadgePipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): {\r\n type: 'round' | 'circle' | 'icon',\r\n color: SdBadgeColor,\r\n icon: string\r\n } {\r\n if (column.type === 'string' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n if (column.type === 'number' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n if (column.type === 'bool') {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: !!value ? 'success' : 'danger',\r\n icon: null\r\n };\r\n }\r\n if (column.type === 'values' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridConfiguration, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../services/grid-configuration.service';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\n\r\n@Pipe({\r\n name: 'sdGridConfigurationResult'\r\n})\r\nexport class SdGridConfigurationResultPipe implements PipeTransform {\r\n constructor(private gridConfigurationService: SdGridConfigurationService) { }\r\n transform(configuration: SdGridConfiguration, gridOption: SdGridMaterialOption, sdSubInformation: SdMaterialSubInformationDefDirective): SdGridConfigurationResult {\r\n return this.gridConfigurationService.generateConfigurationResult(configuration, gridOption, sdSubInformation);\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, EventEmitter, ChangeDetectorRef, Input, HostListener } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationResult, SdGridConfiguration, SdGridConfigurationCache, SdColumnConfiguration } from '../../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { MatTable } from '@angular/material/table';\r\n// import { SdGridMaterialColumn } from '@sd-angular/core/grid-material';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-popup-grid-configuration',\r\n templateUrl: './popup-grid-configuration.component.html',\r\n styleUrls: ['./popup-grid-configuration.component.scss']\r\n})\r\nexport class SdPopupGridConfiguration implements OnInit {\r\n @Input() gridOption: SdGridMaterialOption;\r\n @Input() key: string;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdGridMaterialColumn>;\r\n readonly changes = new EventEmitter<SdGridConfigurationResult>();\r\n #cache: SdGridConfigurationCache;\r\n configuration: SdGridConfiguration;\r\n isCreatingColumn = false;\r\n selected: {\r\n [key: string]: boolean;\r\n } = {};\r\n disabledDrag = true;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n @HostListener('window:mouseup', ['$event'])\r\n mouseUp(event) {\r\n this.disabledDrag = true;\r\n }\r\n open = async () => {\r\n this.#cache = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.configuration = await this.#cache.get();\r\n this.modal.open();\r\n }\r\n\r\n onSave = () => {\r\n this.#cache.set(this.configuration);\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n }\r\n\r\n onReset = async () => {\r\n const { translate } = this.translateService;\r\n this.notifyService.confirm(translate('Reset grid configuration to default')).then(() => {\r\n this.#cache.remove();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n });\r\n }\r\n\r\n createColumn = async () => {\r\n this.selected = {};\r\n this.isCreatingColumn = true;\r\n }\r\n\r\n confirm = async () => {\r\n const generatedColumn: SdColumnConfiguration = {\r\n origin: {\r\n field: uuid.v4(),\r\n title: 'Generated',\r\n width: '300px'\r\n },\r\n fixed: false,\r\n invisible: false,\r\n title: 'Generated',\r\n width: '300px',\r\n isGeneratedColumn: true,\r\n generatedColumns: this.configuration.columns.filter(e => this.selected[e.origin?.field]).map(e => e.origin?.field)\r\n };\r\n this.configuration.columns.push(generatedColumn);\r\n this.configuration = this.#cache.set(this.configuration);\r\n this.isCreatingColumn = false;\r\n }\r\n\r\n dropTable(event: CdkDragDrop<SdGridMaterialColumn[]>) {\r\n moveItemInArray(this.configuration.columns, event.previousIndex, event.currentIndex);\r\n this.table.renderRows();\r\n }\r\n\r\n handleMouseDown() {\r\n this.disabledDrag = false;\r\n }\r\n\r\n handleMouseUp() {\r\n this.disabledDrag = true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnTooltip'\r\n})\r\nexport class SdColumnTooltipPipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): string {\r\n if (column?.tooltip) {\r\n return column.tooltip(value, rowData);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialAction, SdGridMaterialActionNormal, SdGridMaterialActionSimple } from '../models/grid-action.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdGridMaterialAction): SdGridMaterialActionSimple => {\r\n if ('children' in action) {\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n color: action.color,\r\n type: action.type,\r\n children: action.children.map(e => ({\r\n title: e.title,\r\n icon: e.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: e.fontSet,\r\n tooltip: e.tooltip,\r\n click: e.click\r\n }))\r\n };\r\n }\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n click: action.click\r\n };\r\n\r\n }\r\n transform = (selectedItems: SdItem[], actions: SdGridMaterialAction[]): SdGridMaterialActionSimple[] => {\r\n const results: SdGridMaterialAction[] = [];\r\n if (!actions?.length || !selectedItems?.length) {\r\n return [];\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n const children: SdGridMaterialActionNormal[] = [];\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.actions.includes(key))) {\r\n children.push(childAction);\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...action, children });\r\n }\r\n } else {\r\n const key = hash(action);\r\n if (selectedItems.every(e => e.actions.includes(key))) {\r\n results.push(action);\r\n }\r\n }\r\n }\r\n return results.map(result => this.#convert(result));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: SdItem[], rowData: SdItem, selection: SdGridMaterialSelection): boolean => {\r\n const { disabled, actions } = selection;\r\n if (!actions?.length) {\r\n if (!disabled) {\r\n rowData.selectable = true;\r\n return false;\r\n }\r\n rowData.selectable = !disabled(rowData, selectedItems);\r\n return !rowData.selectable;\r\n }\r\n // Lọc các action theo selectedItems hiện tại\r\n const availableActions = actions.filter(action => {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.actions.includes(key))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n } else {\r\n const key = hash(action);\r\n return selectedItems.every(e => e.actions.includes(key));\r\n }\r\n });\r\n // Kiểm tra rowData có action nào thỏa hay ko, nếu ko thì disabled\r\n for (const action of availableActions) {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n if(rowData.actions.includes(hash(childAction))) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if(rowData.actions.includes(hash(action))) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionVisibleSelectAll'\r\n})\r\nexport class SdSelectionVisibleSelectAllPipe implements PipeTransform {\r\n transform = async (items: SdItem[], selection: SdGridMaterialSelection): Promise<boolean> => {\r\n const { actions } = selection;\r\n if (!actions?.length) {\r\n return true;\r\n }\r\n if (!items.length) {\r\n return false;\r\n }\r\n if (actions.some(e => ('children' in e && e.children.some(e1 => e1.isGrouped)) || e.isGrouped)) {\r\n return false;\r\n }\r\n await new Promise(resolve => setTimeout(resolve, 500));\r\n const first = items.find(t => t.actions?.length);\r\n if (first) {\r\n for (const action of first.actions) {\r\n if (items.filter(t => t.actions?.length).every(e => e.actions.includes(action))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSetting, SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialConfigOption } from '../../models/grid-config.model';\r\nimport { SdGeneratedColumn } from './generated-column.model';\r\nimport { SdSettingServer } from '@sd-angular/core/setting';\r\n\r\n@Injectable()\r\nexport class SdGeneratedColumnService {\r\n #cache: {\r\n [key: string]: SdSetting<SdGeneratedColumn[]> | SdSettingServer<SdGeneratedColumn[]>\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService) {\r\n }\r\n\r\n load = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '260f5e94-5865-4425-8ced-b9c083c390dd',\r\n key: configuration.key\r\n });\r\n if(!this.#cache[key]) {\r\n if(configuration?.storage === 'server') {\r\n this.#cache[key] = this.settingService.createServer<SdGeneratedColumn[]>(key, {\r\n args: configuration?.args,\r\n default: []\r\n });\r\n } else {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: configuration?.storage,\r\n args: configuration?.args,\r\n default: []\r\n });\r\n }\r\n }\r\n return this.#cache[key];\r\n }\r\n\r\n loadSystem = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n if (!configuration?.systemColumn) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '8b8050ca-1f44-4860-bad3-20e646c0d68f',\r\n key: configuration.key\r\n });\r\n if(!this.#cache[key]) {\r\n if(configuration?.storage === 'server') {\r\n this.#cache[key] = this.settingService.createServer<SdGeneratedColumn[]>(key, {\r\n args: configuration?.systemColumn?.args,\r\n default: []\r\n });\r\n } else {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: configuration?.storage,\r\n args: configuration?.systemColumn?.args,\r\n default: []\r\n });\r\n }\r\n }\r\n return this.#cache[key];\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ChangeDetectorRef, Input, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { SdGeneratedColumnService } from '../../services/generated-column/generated-column.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdGeneratedColumn } from '../../services/generated-column/generated-column.model';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdSideDrawer } from '@sd-angular/core/side-drawer';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-dynamic-column',\r\n templateUrl: './dynamic-column.component.html',\r\n styleUrls: ['./dynamic-column.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDynamicColumn implements OnInit, OnDestroy {\r\n @ViewChild(SdSideDrawer) sideDrawer: SdSideDrawer;\r\n @Input() gridOption: SdGridMaterialOption;\r\n systemColumns: SdGeneratedColumn[];\r\n columns: SdGeneratedColumn[];\r\n #subscription = new Subscription();\r\n columnTypes = ['string', 'number', 'bool', 'date', 'datetime', 'time', 'values', 'children', 'children-col'];\r\n form = new FormGroup({});\r\n isDetail = false;\r\n detail: SdGeneratedColumn;\r\n originColumns: SdGridMaterialColumn[] = [];\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private generatedColumnService: SdGeneratedColumnService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (systemSetting) {\r\n this.#subscription?.add(systemSetting.observer.subscribe(columns => {\r\n this.systemColumns = columns;\r\n }));\r\n }\r\n if (setting) {\r\n this.#subscription?.add(setting.observer.subscribe(columns => {\r\n this.columns = columns;\r\n }));\r\n }\r\n this.originColumns = this.gridOption.columns.filter(e => e.type !== 'children' && e.type !== 'children-col');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onDetail = (column?: SdGeneratedColumn) => {\r\n this.detail = column || {\r\n field: uuid.v4(),\r\n title: '',\r\n type: 'string',\r\n isSystem: false,\r\n useTemplate: false\r\n };\r\n this.form.markAsUntouched();\r\n this.form.markAsPristine();\r\n this.isDetail = true;\r\n }\r\n\r\n onSave = () => {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (this.detail.isSystem) {\r\n if (!this.detail.id) {\r\n systemSetting.set([...this.systemColumns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n systemSetting.set([...this.systemColumns]);\r\n }\r\n } else {\r\n if (!this.detail.id) {\r\n setting.set([...this.columns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n setting.set([...this.columns]);\r\n }\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdMaterialCellDefDirective } from '../../directives/sd-material-cell-def.directive';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() sdId: string;\r\n @Input() value: any;\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\r\n @Input() cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n @Input() idx: number;\r\n constructor(\r\n ) { }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn, SdGridMaterialColumnValues } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-editor',\r\n templateUrl: './desktop-cell-editor.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellEditor {\r\n @Input() sdId: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n\r\n onChange = (selected: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n this.column?.editor?.change?.(this.item, selected);\r\n }\r\n\r\n editorOnAdd = () => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.add?.(this.item);\r\n }\r\n }\r\n\r\n editorOnEdit = (option: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.edit?.(option, this.item);\r\n }\r\n }\r\n\r\n editorOnDelete = (option: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.delete?.(option, this.item);\r\n }\r\n }\r\n}\r\n","import { NgZone, Pipe, PipeTransform } from '@angular/core';\r\nimport { CalculateSdId } from '../functions/calculate-sd-id';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { EditorHandlerRow, SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorHandlerRow'\r\n})\r\nexport class SdEditorHandlerRowPipe implements PipeTransform {\r\n constructor(private zone: NgZone) { }\r\n #visible = (col: SdGridMaterialColumn, item: SdItem) => {\r\n if (col.type === 'children' || col.type === 'children-col') {\r\n return false;\r\n }\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (col.editor) {\r\n const isDisabled = typeof (col.editor.disabled) === 'function' ? col.editor.disabled(item) : col.editor.disabled;\r\n if (isDisabled) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n transform(status: 'create' | 'update', item: SdItem, gridOption: SdGridMaterialOption): EditorHandlerRow {\r\n const { editor } = gridOption;\r\n if (!editor) {\r\n return null;\r\n }\r\n let isDisabled = false;\r\n if (typeof (editor?.disabled) === 'function') {\r\n isDisabled = editor.disabled(item);\r\n } else {\r\n isDisabled = editor?.disabled;\r\n }\r\n if (editor.type === 'inline') {\r\n const removable = editor.removable;\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: !isDisabled,\r\n editable: false,\r\n removable: status !== 'create' && (typeof (removable) === 'function' ? removable(item) : removable),\r\n savable: false,\r\n cancelable: !isDisabled && status === 'create'\r\n }\r\n } else if (editor.type === 'focus') {\r\n if (isDisabled) {\r\n return null;\r\n }\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: !!status,\r\n editable: !status,\r\n removable: false,\r\n savable: !!status,\r\n cancelable: !!status\r\n }\r\n } else if (editor.type === 'popup') {\r\n if (isDisabled) {\r\n return null;\r\n }\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: false,\r\n editable: !status,\r\n removable: false,\r\n savable: false,\r\n cancelable: false\r\n }\r\n }\r\n item.editorHandlerColumn = item.editorHandlerColumn || {};\r\n const { columns } = gridOption;\r\n for (const col of columns) {\r\n if (col.type === 'children-col') {\r\n for (const childCol of col.children) {\r\n item.editorHandlerColumn[childCol.field] = {\r\n ...item.editorHandlerColumn[childCol.field],\r\n visible: this.#visible(childCol, item)\r\n }\r\n }\r\n } else {\r\n item.editorHandlerColumn[col.field] = {\r\n ...item.editorHandlerColumn[col.field],\r\n visible: this.#visible(col, item)\r\n }\r\n }\r\n }\r\n this.zone.run(() => {\r\n item.sdId = CalculateSdId(item);\r\n });\r\n return item.editorHandlerRow;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorValidate'\r\n})\r\nexport class SdEditorValidatePipe implements PipeTransform {\r\n #previous: Date;\r\n #delay = 200; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện validate\r\n async transform(sdId: string, item: SdItem, items: SdItem[], gridOption: SdGridMaterialOption): Promise<string> {\r\n const { editor } = gridOption;\r\n if (!editor.validate) {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n if(editor.type === 'popup') {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n if (editor.type === 'focus' && !item.editorStatus) {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n this.#previous = new Date();\r\n await new Promise(resolve => setTimeout(resolve, this.#delay));\r\n const now = new Date();\r\n const dif = now.getTime() - this.#previous.getTime();\r\n if (dif < this.#delay) {\r\n return;\r\n }\r\n const result = editor.validate(item, items?.indexOf(item));\r\n if (result instanceof Promise) {\r\n item.editorErrorMessage = await result;\r\n return;\r\n } else {\r\n item.editorErrorMessage = result;\r\n return;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\n@Pipe({\r\n name: 'sdStyleRowCss'\r\n})\r\nexport class SdStyleRowCss implements PipeTransform {\r\n transform(item: any, gridOption: SdGridMaterialOption) {\r\n return gridOption?.style?.rowCss?.(item) || {};\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-editor-validation',\r\n templateUrl: './desktop-editor-validation.component.html',\r\n styleUrls: ['./desktop-editor-validation.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopEditorValidation {\r\n @Input() sdId: string;\r\n @Input() item: any;\r\n @Input() items: any[];\r\n @Input() gridOption: SdGridMaterialOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-column-inline-filter',\r\n templateUrl: './column-inline-filter.component.html',\r\n styleUrls: ['./column-inline-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdColumnInlineFilter implements OnInit {\r\n @Input() value: any;\r\n @Input() columnFilter: {\r\n [key: string]: any\r\n } = {};\r\n @Input() column: SdGridMaterialColumn;\r\n @Output() filterChange = new EventEmitter();\r\n constructor(\r\n ) { }\r\n\r\n ngOnInit() {\r\n if (this.column.type === 'date' || this.column.type === 'time' || this.column.type === 'datetime') {\r\n if (!this.column?.option?.useFilterDate) {\r\n this.columnFilter[this.column.field] = this.columnFilter[this.column.field] || {\r\n from: null,\r\n to: null\r\n };\r\n }\r\n }\r\n }\r\n\r\n onFilterChange = () => {\r\n this.filterChange.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdItem, selection: SdGridMaterialSelection): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.actions = rowData.actions || [];\r\n if (!actions?.length) {\r\n rowData.selectable = true;\r\n return rowData.selectable;\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n let flag = false;\r\n let hasGroup = false;\r\n for (const childAction of action.children) {\r\n const { hidden, isGrouped } = childAction;\r\n const key = hash(childAction);\r\n if (isGrouped) {\r\n hasGroup = true;\r\n }\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n flag = true;\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n flag = true;\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n if (flag) {\r\n rowData.actions.push(hash(action));\r\n if (hasGroup) {\r\n groupedActions.push(hash(action));\r\n }\r\n }\r\n } else {\r\n const { hidden, isGrouped } = action;\r\n const key = hash(action);\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.selectable = !!rowData.actions.length;\r\n if (!rowData.selectable || !groupedActions.length || rowData?.sdGroup?.items?.length) {\r\n return rowData.selectable;\r\n }\r\n // Đối với trường hợp grouped, tuy selectable là true nhưng vẫn ẩn đi checkbox\r\n // nếu các action đều thuộc groupedActions và rowData ko phải là dòng group\r\n return rowData.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-quick-action',\r\n templateUrl: './quick-action.component.html',\r\n styleUrls: ['./quick-action.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdGridQuickAction {\r\n @Input() gridOption: SdGridMaterialOption;\r\n @Input() selectedItems: any[];\r\n @Output() clear = new EventEmitter();\r\n constructor(\r\n ) { }\r\n onClear = () => {\r\n this.clear.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdCellView } from '../models/grid-cell.model';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\r\n@Pipe({\r\n name: 'cellView'\r\n})\r\nexport class SdCellViewPipe implements PipeTransform {\r\n #maxSecond = 60;\r\n #maxMinute = this.#maxSecond * 60;\r\n #maxHour = this.#maxMinute * 24;\r\n #maxDay = this.#maxHour * 30;\r\n #maxMonth = this.#maxHour * 365;\r\n #isMobileOrTablet = false;\r\n constructor(\r\n deviceService: DeviceDetectorService,\r\n private utilityService: SdUtilityService,\r\n private columnValuesPipe: SdColumnValuesPipe) {\r\n this.#isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n async transform(\r\n value: any,\r\n rowData: any,\r\n column: SdGridMaterialColumn,\r\n gridOption: SdGridMaterialOption,\r\n key: string): Promise<SdCellView> {\r\n const { displayOnEmpty } = gridOption;\r\n const { align, click, tooltip, htmlTemplate, transform } = column;\r\n const result: SdCellView = {\r\n badge: null,\r\n tooltip: null,\r\n display: {\r\n align: align || (column.type === 'number' ? 'right' : 'left'),\r\n value\r\n },\r\n click: null\r\n };\r\n // Display\r\n if (typeof (htmlTemplate) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = htmlTemplate(value, rowData, this.#isMobileOrTablet);\r\n } else {\r\n if (column.type === 'datetime' || column.type === 'date' || column.type === 'time') {\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n value = transformDate(value, rowData);\r\n }\r\n }\r\n if (typeof (transform) === 'function') {\r\n const val = transform(value, rowData);\r\n if (val instanceof Promise) {\r\n result.display.value = await val;\r\n } else {\r\n result.display.value = val;\r\n }\r\n } else {\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n const { option } = column;\r\n const seconds = Math.round((new Date().getTime() - new Date(value).getTime()) / 1000);\r\n if (option?.timeDifferent === 'month' && seconds < this.#maxMonth) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'day' && seconds < this.#maxDay) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'hour' && seconds < this.#maxHour) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'minute' && seconds < this.#maxMinute) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'second' && seconds < this.#maxSecond) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else {\r\n result.display.value = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n if (column.type === 'datetime' && result.display.value) {\r\n result.display.hasHtml = true;\r\n result.display.html = `<span class=\"d-block T14R text-black400\">${Date.toFormat(value, 'HH:mm')}</span><span class=\"d-block T14R\">${Date.toFormat(value, 'dd/MM/yyyy')}</span>`\r\n }\r\n }\r\n }\r\n if (column.type === 'time') {\r\n result.display.value = Date.toFormat(value, 'HH:mm');\r\n }\r\n if (column.type === 'values') {\r\n result.display.value = await this.columnValuesPipe.transform(value, column);\r\n } else if (column.type === 'number' && Number.isNumber(value)) {\r\n result.display.value = Number.toVNCurrency(value);\r\n }\r\n if (column.type === 'bool') {\r\n const { option } = column;\r\n if(value !== undefined && value !== null && value !== '') {\r\n result.display.value = value === true ? (option?.displayOnTrue || 'True') : (option?.displayOnFalse || 'False');\r\n } else {\r\n result.display.value = null;\r\n }\r\n }\r\n }\r\n if (displayOnEmpty) {\r\n let values = [null, undefined, ''];\r\n if (typeof (displayOnEmpty) === 'object') {\r\n const { display, emptyValues } = displayOnEmpty;\r\n values = [null, undefined, '', ...emptyValues];\r\n if (values.includes(result.display.value)) {\r\n if (typeof (display) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = display(rowData, column);\r\n } else {\r\n result.display.hasHtml = true;\r\n result.display.html = `<div class=\"T16R text-black400\">--</div>`;\r\n }\r\n }\r\n } else {\r\n if (values.includes(result.display.value)) {\r\n if (typeof (displayOnEmpty) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = displayOnEmpty(rowData, column);\r\n } else {\r\n result.display.hasHtml = true;\r\n result.display.html = `<div class=\"T16R text-black400\">--</div>`;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // Badge\r\n if ((column.type === 'string' || column.type === 'number' || column.type === 'values') && column.badge) {\r\n result.badge = {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n } else if (column.type === 'bool') {\r\n result.badge = {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: !!value ? 'success' : 'danger',\r\n icon: null\r\n };\r\n }\r\n // Tooltip\r\n if (typeof (tooltip) === 'function') {\r\n result.tooltip = tooltip(value, rowData);\r\n }\r\n // Clickable\r\n if (typeof (click) === 'function') {\r\n result.click = () => click(value, rowData);\r\n }\r\n return result;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridMaterialItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdGroup'\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: any[], gridOption: SdGridMaterialOption): SdGridMaterialItem[] {\r\n const { group } = gridOption;\r\n if (!group) {\r\n return items;\r\n }\r\n const { fields, htmlTemplate } = group;\r\n if (!fields?.length) {\r\n return items;\r\n }\r\n const groupItem: {\r\n [key: string]: SdGridMaterialItem[]\r\n } = {};\r\n for (const item of items) {\r\n let obj = {};\r\n for (const field of fields) {\r\n obj = {\r\n ...obj,\r\n ...(item[field] ?? { [field]: item[field] })\r\n };\r\n }\r\n const key = hash(obj);\r\n if (!groupItem[key]) {\r\n groupItem[key] = [];\r\n }\r\n groupItem[key].push(item);\r\n }\r\n const results: SdGridMaterialItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n results.push({\r\n sdGroup: {\r\n items: groupItem[key],\r\n htmlTemplate: htmlTemplate(groupItem[key])\r\n }\r\n });\r\n for (const item of groupItem[key]) {\r\n results.push(item);\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Injectable, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdGridMaterial } from './grid-material.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { CdkTableModule, CdkColumnDef } from '@angular/cdk/table';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { SdCommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { SdCommandDisablePipe } from './pipes/command-disable.pipe';\r\nimport { SdCommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { SdCommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdColumnHtmlTemplatePipe } from './pipes/column-html-template.pipe';\r\nimport { SdDesktopCellView } from './components/desktop-cell-view/desktop-cell-view.component';\r\nimport { SdColumnTransformPipe } from './pipes/column-transform.pipe';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SdFilterExternalPipe } from './pipes/filter-external.pipe';\r\nimport { SdFilterColumnPipe } from './pipes/filter-column.pipe';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdPopupFilter } from './components/popup-filter/popup-filter.component';\r\n\r\nimport { SdGridFilterService } from './services/grid-filter.service';\r\nimport { SdDesktopCellChildrenView } from './components/desktop-cell-children-view/desktop-cell-children-view.component';\r\nimport { SdColumnChildrenFilterPipe } from './pipes/column-children-filter.pipe';\r\nimport { SdColumnTitlePipe } from './pipes/column-title.pipe';\r\nimport { SdDesktopCommand } from './components/desktop-command/desktop-command.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdColumnBadgePipe } from './pipes/column-badge.pipe';\r\nimport { SdGridConfigurationResultPipe } from './pipes/grid-configuration-result.pipe';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdPopupGridConfiguration } from './components/popup-grid-configuration/popup-grid-configuration.component';\r\nimport { SdGridConfigurationService } from './services/grid-configuration.service';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { SdColumnTooltipPipe } from './pipes/column-tooltip.pipe';\r\nimport { SdSelectionActionFilterPipe } from './pipes/selection-action-filter.pipe';\r\nimport { SdSelectionDisablePipe } from './pipes/selection-disable.pipe';\r\nimport { SdSelectionVisibleSelectAllPipe } from './pipes/selection-visible-select-all.pipe';\r\nimport { SdDynamicColumn } from './components/dynamic-column/dynamic-column.component';\r\nimport { SdGeneratedColumnService } from './services/generated-column/generated-column.service';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdDesktopCellEditor } from './components/desktop-cell-editor/desktop-cell-editor.component';\r\nimport { SdEditorHandlerRowPipe } from './pipes/editor-handler-row.pipe';\r\nimport { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';\r\nimport { SdEditorValidatePipe } from './pipes/editor-validate.pipe';\r\nimport { SdStyleRowCss } from './pipes/style-row-css.pipe';\r\nimport { SdDesktopEditorValidation } from './components/desktop-editor-validation/desktop-editor-validation.component';\r\nimport { SdColumnInlineFilter } from './components/column-inline-filter/column-inline-filter.component';\r\nimport { SdSelectionVisiblePipe } from './pipes/selection-visible.pipe';\r\nimport { SdGridQuickAction } from './components/quick-action/quick-action.component';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdCellViewPipe } from './pipes/cell-view.pipe';\r\nimport { SdGroupPipe } from './pipes/sd-group.pipe';\r\n\r\n@Injectable()\r\nexport class MatPaginatorIntlCro extends MatPaginatorIntl {\r\n firstPageLabel = 'Trang đầu';\r\n lastPageLabel = 'Trang cuối';\r\n itemsPerPageLabel = 'Kích thước trang';\r\n nextPageLabel = 'Trang sau';\r\n previousPageLabel = 'Trang trước';\r\n\r\n getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n if (length === 0 || pageSize === 0) {\r\n return '';\r\n }\r\n const from = page * pageSize + 1;\r\n const to = from + (length - page * pageSize > pageSize ? pageSize : length - page * pageSize) - 1;\r\n return `${from}-${to} trên ${length}`;\r\n }\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSortModule,\r\n MatPaginatorModule,\r\n MatTableModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatChipsModule,\r\n MatRadioModule,\r\n MatSlideToggleModule,\r\n MatCheckboxModule,\r\n MatListModule,\r\n MatDividerModule,\r\n CdkTableModule,\r\n DragDropModule,\r\n SdFormModule,\r\n SdServiceModule,\r\n MatSliderModule,\r\n ScrollingModule,\r\n SdCommonModule\r\n ],\r\n declarations: [\r\n SdGridQuickAction,\r\n SdDesktopCell,\r\n SdDesktopCellEditor,\r\n SdDesktopEditorValidation,\r\n SdDesktopCellView,\r\n SdDesktopCellChildrenView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdGridMaterial,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdPopupExport,\r\n SdPopupGridConfiguration,\r\n SdGridFilter,\r\n SdPopupFilter,\r\n SdDynamicColumn,\r\n\r\n // Pipes\r\n SdGridConfigurationResultPipe,\r\n SdColumnChildrenFilterPipe,\r\n SdColumnTitlePipe,\r\n SdCommandFilterPipe,\r\n SdCommandDisablePipe,\r\n SdCommandIconPipe,\r\n SdCommandTitlePipe,\r\n SdColumnValuesPipe,\r\n SdColumnHtmlTemplatePipe,\r\n SdColumnTransformPipe,\r\n SdColumnTooltipPipe,\r\n SdColumnBadgePipe,\r\n SdFilterColumnPipe,\r\n SdFilterExternalPipe,\r\n SdSelectionActionFilterPipe,\r\n SdSelectionVisiblePipe,\r\n SdSelectionDisablePipe,\r\n SdSelectionVisibleSelectAllPipe,\r\n SdEditorHandlerRowPipe,\r\n SdEditorHandlerColumnPipe,\r\n SdEditorValidatePipe,\r\n SdStyleRowCss,\r\n SdCellViewPipe,\r\n SdGroupPipe\r\n ],\r\n exports: [\r\n SdGridMaterial,\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdMaterialSubInformationDefDirective\r\n ],\r\n providers: [\r\n DatePipe,\r\n DecimalPipe,\r\n CdkColumnDef,\r\n SdGridFilterService,\r\n SdGridConfigurationService,\r\n SdGeneratedColumnService,\r\n SdColumnValuesPipe,\r\n SdEditorHandlerColumnPipe,\r\n {\r\n provide: MatPaginatorIntl, useClass: MatPaginatorIntlCro\r\n }\r\n ]\r\n})\r\nexport class SdGridMaterialModule {\r\n}\r\n"]}
|