@sd-angular/core 1.3.219 → 1.3.220
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/bundles/sd-angular-core-grid-material.umd.js +1 -1
- package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-table.umd.js +5 -4
- package/bundles/sd-angular-core-table.umd.js.map +1 -1
- package/bundles/sd-angular-core-table.umd.min.js +1 -1
- package/bundles/sd-angular-core-table.umd.min.js.map +1 -1
- package/esm2015/grid-material/src/lib/grid-material.component.js +2 -2
- package/esm2015/table/src/lib/table.component.js +5 -5
- package/fesm2015/sd-angular-core-grid-material.js +1 -1
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/fesm2015/sd-angular-core-table.js +4 -4
- package/fesm2015/sd-angular-core-table.js.map +1 -1
- package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
- package/package.json +1 -1
- package/{sd-angular-core-1.3.219.tgz → sd-angular-core-1.3.220.tgz} +0 -0
- package/table/sd-angular-core-table.metadata.json +1 -1
- package/table/src/lib/table.component.d.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-grid-material.js","sources":["../../../../projects/sd-core/grid-material/src/lib/models/grid-configuration.model.ts","../../../../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","../../../../projects/sd-core/grid-material/src/lib/components/popup-filter/popup-filter.component.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/services/grid-filter/grid-filter.service.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/models/grid-column.model.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","../../../../projects/sd-core/grid-material/sd-angular-core-grid-material.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { SdFilterOperator } from './grid-column.model';\r\n\r\nexport interface ISdGridMaterialConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n operator?: {\r\n defaultListString?: SdFilterOperator[];\r\n defaultListNumber?: SdFilterOperator[];\r\n defaultListDate?: SdFilterOperator[];\r\n defaultListValues?: SdFilterOperator[];\r\n };\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 { 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","import { Component, ViewChild, 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, SdGridMaterialFilterRegister } from '../../services/grid-filter/grid-filter.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { Subscription } from 'rxjs';\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(SdModal) modal: SdModal;\r\n #filterRegister: SdGridMaterialFilterRegister;\r\n @Input() set filterRegister(value: SdGridMaterialFilterRegister) {\r\n this.#filterRegister = value;\r\n }\r\n @Input() externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: Record<string, any> = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n columnFilter: Record<string, any> = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: Record<string, any> = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n ngOnDestroy() {}\r\n\r\n open = () => {\r\n const configuration = this.#filterRegister.configuration.get();\r\n this.inlineColumn = JSON.parse(JSON.stringify(configuration.inlineColumn));\r\n this.inlineExternal = JSON.parse(JSON.stringify(configuration.inlineExternal));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(configuration.inlineFilterDef));\r\n const filterValue = this.#filterRegister.value.get();\r\n this.columnFilter = JSON.parse(JSON.stringify(filterValue.columnFilter));\r\n this.externalFilter = JSON.parse(JSON.stringify(filterValue.externalFilter));\r\n this.filterDef = JSON.parse(JSON.stringify(filterValue.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.#filterRegister.configuration.set({\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef,\r\n });\r\n this.#filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\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.#filterRegister.value.remove();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {\r\n SdGridMaterialFilterOption,\r\n SdGridMaterialExternalFilter,\r\n SdGridMaterialFilterRegister,\r\n} from '../../services/grid-filter/grid-filter.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { startWith } from 'rxjs/operators';\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 filter: Readonly<SdGridMaterialFilterOption>;\r\n @Input('filter') set _filter(filter: SdGridMaterialFilterOption) {\r\n this.filter = filter;\r\n }\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n externalFilters: SdGridMaterialExternalFilter[] = [];\r\n @Input('externalFilters') set _externalFilters(value: SdGridMaterialExternalFilter[]) {\r\n this.externalFilters = value || [];\r\n }\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterRegister: SdGridMaterialFilterRegister;\r\n @Input('filterRegister') set _filterRegister(value: SdGridMaterialFilterRegister) {\r\n this.filterRegister = value;\r\n this.filterRegisterChange.next(this.filterRegister);\r\n }\r\n filterRegisterChange = new BehaviorSubject<SdGridMaterialFilterRegister>(null);\r\n\r\n filterDef: any = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n columnFilter: any = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n externalFilter: any = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n isMobileOrTablet: boolean;\r\n\r\n #subscription = new Subscription();\r\n\r\n constructor(private ref: ChangeDetectorRef, private deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n this.ref.markForCheck();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.filterRegisterChange.pipe(startWith(this.filterRegister)).subscribe(filterRegister => {\r\n if (this.filterRegister) {\r\n this.#subscription.add(\r\n this.filterRegister.configuration.observer.subscribe(configuration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n this.inlineColumn = inlineColumn;\r\n this.inlineExternal = inlineExternal;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.filterRegister.value.observer.subscribe(value => {\r\n const { columnFilter, externalFilter, filterDef } = value;\r\n this.columnFilter = columnFilter;\r\n this.externalFilter = externalFilter;\r\n this.filterDef = filterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\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.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n };\r\n\r\n updateFilter = () => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n notReload: true\r\n });\r\n };\r\n\r\n open = () => {\r\n this.popupFilter.open();\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\nimport { SdGridMaterialColumn } from '../../models/grid-column.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 private get gridColumns() {\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.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 private get additionalColumns() {\r\n return (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 #getExportableColumns = (): SdExportColumn[] => {\r\n return [...this.gridColumns, ...this.additionalColumns];\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 #getExportColumns = () => {\r\n if (this.configuration) {\r\n const columns = [...this.gridColumns];\r\n const { firstColumns, secondColumns } = this.configuration;\r\n const displayColumns: SdGridMaterialColumn<any>[] = [...firstColumns, ...secondColumns].reduce((first, next) => {\r\n const column = this.gridOption.columns.find(e => e.field === next.field);\r\n if (!column) {\r\n return first;\r\n }\r\n if (column.type !== 'children' && column.type !== 'children-col') {\r\n return [...first, column];\r\n }\r\n const children = column.children.filter(e1 => e1.type !== 'image');\r\n return [...first, ...children];\r\n }, []);\r\n const results = displayColumns.map(e => ({\r\n ...e,\r\n data: columns.find(e1 => e1.field === e.field)\r\n })).filter(e => !!e.data)\r\n .map(e => e.data);\r\n return [...results, ...this.additionalColumns];\r\n } else {\r\n return this.columns;\r\n }\r\n }\r\n\r\n exportDefault = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: false\r\n });\r\n }\r\n\r\n exportCSV = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: true\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 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(`Vui lòng chọn cột dữ liệu để xuất`);\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, selection, ...remain } = column.option;\r\n const key = hash({\r\n prefix: this.#prefix,\r\n valueField,\r\n displayField,\r\n selection,\r\n remain,\r\n value\r\n });\r\n const isMultible = ['MULTIPLE', 'MULTIPLEAUTOCOMPLETE', 'MULTIPLE_EDITOR', 'MULTIPLEAUTOCOMPLETE_EDITOR'].includes(selection);\r\n if (typeof (items) === 'function') {\r\n if (!this.#cache[key]) {\r\n const values = await items(value, true);\r\n let result = '';\r\n if (isMultible && Array.isArray(value)) {\r\n result = values?.filter(e => value?.includes(e?.[valueField]))?.map(e => e?.[displayField])?.join(', ') || value?.join(', ');\r\n }\r\n else {\r\n result = values?.find(e => e?.[valueField] === value)?.[displayField] || value;\r\n }\r\n this.#cache[key] = {\r\n result\r\n };\r\n }\r\n } else {\r\n if (!this.#cache[key]) {\r\n let result = '';\r\n if (isMultible && Array.isArray(value)) {\r\n result = items?.filter(e => value?.includes(e?.[valueField]))?.map(e => e?.[displayField])?.join(', ') ?? value?.join(', ');\r\n }\r\n else {\r\n result = items?.find(e => e?.[valueField] === value)?.[displayField] || value\r\n }\r\n this.#cache[key] = {\r\n result\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 { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport {\r\n SdGridMaterialExternalFilter,\r\n SdGridMaterialFilterConfiguration,\r\n SdGridMaterialFilterOption,\r\n SdGridMaterialFilterRegister,\r\n SdGridMaterialFilterValue,\r\n} from './grid-filter.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { map, startWith } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class SdGridFilterService {\r\n #filterConfiguration = 'GRID-FILTER-CONFIGURATION';\r\n #filterValue = 'GRID-FILTER-VALUE';\r\n #cache: Record<string, SdGridMaterialFilterRegister> = {};\r\n constructor(private settingService: SdSettingService) {}\r\n register = (\r\n filter: SdGridMaterialFilterOption,\r\n args: {\r\n id: string;\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }\r\n ) => {\r\n let cacheSession = false;\r\n \r\n const { id, columns, externalFilters } = args;\r\n const tempKey = hash({\r\n id,\r\n columns: columns?.map(e => e.field).filter(field => !!field) || [],\r\n externalFilters: externalFilters?.map(e => e.field).filter(field => !!field) || [],\r\n });\r\n const key = filter?.key || tempKey;\r\n if (!filter?.key) {\r\n cacheSession = true; // Nếu không có key thì chỉ lưu theo session\r\n }\r\n if (!this.#cache[key]) {\r\n // Setting của filter configuration\r\n const filterConfiguration = this.settingService.create<SdGridMaterialFilterConfiguration>(\r\n {\r\n prefix: this.#filterConfiguration,\r\n key,\r\n },\r\n {\r\n default: this.#defaultConfiguration(args),\r\n type: cacheSession ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị configuration merge với giá trị defaultShowing của args nếu như args có thay đổi\r\n filterConfiguration.set(this.#initConfiguration(args, filterConfiguration.get()));\r\n // Setting của filter value\r\n const filterValue = this.settingService.create<SdGridMaterialFilterValue>(\r\n {\r\n prefix: this.#filterValue,\r\n key: !filter?.cacheFilter ? tempKey : key,\r\n },\r\n {\r\n default: this.#defaultValue(args),\r\n type: cacheSession || !filter?.cacheFilter ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị value merge với giá trị default của args nếu như args có thay đổi\r\n filterValue.set(this.#initValue(args, filterValue.get()));\r\n this.#cache[key] = {\r\n configuration: {\r\n get: (): SdGridMaterialFilterConfiguration => {\r\n return filterConfiguration.get();\r\n },\r\n set: (configuration: Partial<SdGridMaterialFilterConfiguration>): SdGridMaterialFilterConfiguration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n filterConfiguration.set({\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n });\r\n return {\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n };\r\n },\r\n remove: () => {\r\n filterConfiguration.set(this.#defaultConfiguration(args));\r\n },\r\n observer: filterConfiguration.observer.pipe(\r\n startWith(filterConfiguration.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(configuration => configuration || this.#defaultConfiguration(args))\r\n ),\r\n },\r\n value: {\r\n get: (): SdGridMaterialFilterValue => {\r\n return filterValue.get();\r\n },\r\n set: (value: Partial<SdGridMaterialFilterValue>): SdGridMaterialFilterValue => {\r\n const keys = Object.keys(value || {});\r\n const current = filterValue.get();\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = current;\r\n const updatedFilter = {\r\n // Filter column\r\n columnOperator: keys.includes('columnOperator') ? value?.columnOperator || {} : columnOperator,\r\n columnFilter: keys.includes('columnFilter') ? value?.columnFilter || {} : columnFilter,\r\n // Filter external\r\n externalFilter: keys.includes('externalFilter') ? value?.externalFilter || {} : externalFilter,\r\n // Filter def\r\n filterDef: keys.includes('filterDef') ? value?.filterDef || {} : filterDef,\r\n // Force\r\n notReload: !!value?.notReload,\r\n };\r\n filterValue.set(updatedFilter);\r\n return updatedFilter;\r\n },\r\n remove: () => {\r\n filterValue.set(this.#defaultValue(args));\r\n },\r\n observer: filterValue.observer.pipe(\r\n startWith(filterValue.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(value => value || this.#defaultValue(args))\r\n ),\r\n },\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #defaultConfiguration = (args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdGridMaterialFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #defaultValue = (args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdGridMaterialFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n externalFilter[item.field] = item?.default;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n\r\n #initConfiguration = (\r\n args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n configuration: SdGridMaterialFilterConfiguration\r\n ): SdGridMaterialFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = configuration?.inlineColumn?.[item.field] ?? item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = configuration?.inlineExternal?.[item.field] ?? item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = configuration?.inlineFilterDef?.[item.sdMaterialFilterDef] ?? item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #initValue = (\r\n args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n value: SdGridMaterialFilterValue\r\n ): SdGridMaterialFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = value?.columnFilter?.[item.field] ?? item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n if (item.type === 'daterange') {\r\n externalFilter[item.field] = {\r\n from: value?.externalFilter?.[item.field]?.from ?? item.default?.from,\r\n to: value?.externalFilter?.[item.field]?.to ?? item.default?.to,\r\n };\r\n } else {\r\n externalFilter[item.field] = value?.externalFilter?.[item.field] ?? item?.default;\r\n }\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = value?.filterDef?.[item.sdMaterialFilterDef] ?? undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\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 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 { SdGridMaterialFilterRegister, SdGridMaterialFilterRequest } from './services/grid-filter/grid-filter.model';\r\nimport { SdGridMaterialOption } from './models/grid-option.model';\r\nimport { GRID_MATERIAL_CONFIG, DEFAULT_GRID_MATERIAL_CONFIG, ISdGridMaterialConfiguration } from './models/grid-configuration.model';\r\nimport { Subscription, isObservable, Observable, BehaviorSubject, Subject, combineLatest } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdFilterOperator, SdGridMaterialColumn } from './models/grid-column.model';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { debounceTime, filter, 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 { 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\nimport { SdGridFilterService } from './services/grid-filter/grid-filter.service';\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 #gridId = uuid.v4();\r\n @ViewChild(SdScrollDirective) sdScroll: SdScrollDirective;\r\n filterRegister: SdGridMaterialFilterRegister;\r\n key = uuid.v4();\r\n gridConfigurationObserver: Observable<SdGridConfiguration>;\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\r\n\r\n gridFilter: SdGridFilter;\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 // filter(reload => reload),\r\n // debounceTime(500),\r\n // map(() => {\r\n // this.#paginator.pageIndex = 0;\r\n // this.#reload.next({\r\n // force: false,\r\n // source: 'FILTER'\r\n // });\r\n // }),\r\n // ).subscribe());\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.#loadCompleted = false;\r\n const configuration = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.gridConfigurationObserver = configuration.observer;\r\n configuration.load();\r\n this.#optionChanges.next(this.gridOption);\r\n }\r\n }\r\n #optionChanges = new Subject<SdGridMaterialOption>();\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(\r\n paginator.page\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\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(\r\n sort.sortChange\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\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)\r\n sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective)\r\n 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 columnOperator: Record<string, SdFilterOperator> = {};\r\n columnFilter: Record<string, any> = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #reload = new Subject<{\r\n force: boolean;\r\n }>();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n #loadCompleted = false;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(GRID_MATERIAL_CONFIG)\r\n @Optional()\r\n public configuration: ISdGridMaterialConfiguration,\r\n private gridConfigurationService: SdGridConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private columnValuesPipe: SdColumnValuesPipe,\r\n private gridFilterService: SdGridFilterService,\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(\r\n this.#reload\r\n .pipe(\r\n debounceTime(200),\r\n switchMap(async data => {\r\n const filterInfo = this.#getFilter();\r\n const result = await this.#load(filterInfo, !this.#loadCompleted || data.force);\r\n this.#loadCompleted = true;\r\n return result;\r\n })\r\n )\r\n .subscribe(this.#render)\r\n );\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(\r\n combineLatest([\r\n this.#optionChanges.pipe(startWith(this.gridOption)),\r\n this.sdFilterDefs.changes.pipe(startWith(this.filterDefs)),\r\n ]).subscribe(() => {\r\n this.#loadFilterRegister();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.#optionChanges.subscribe(() => {\r\n if (this.filterRegister) {\r\n this.#reload.next({\r\n force: true,\r\n });\r\n }\r\n })\r\n );\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 const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: 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 // Init pagination\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 for (const column of option.columns || []) {\r\n if (column.filter?.operator?.enable && !column.filter?.operator?.list?.length) {\r\n if (column.type === 'string') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListString || [];\r\n }\r\n if (column.type === 'number') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListNumber || [];\r\n }\r\n if (column.type === 'values') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListValues || [];\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListDate || [];\r\n }\r\n }\r\n }\r\n return option;\r\n };\r\n\r\n #isFirstLoad = true;\r\n #loadFilterRegister = () => {\r\n // Init filter\r\n if (this.gridOption) {\r\n if (!this.filterRegister) {\r\n this.filterRegister = this.gridFilterService.register(this.gridOption?.filter, {\r\n id: this.#gridId,\r\n columns: this.gridOption?.columns,\r\n externalFilters: this.gridOption?.filter?.externalFilters,\r\n filterDefs: this.filterDefs,\r\n });\r\n this.#subscription.add(\r\n this.filterRegister.value.observer\r\n .pipe(\r\n debounceTime(500),\r\n map(filterValue => {\r\n const { columnOperator, columnFilter, notReload } = filterValue;\r\n this.columnOperator = columnOperator || {};\r\n this.columnFilter = columnFilter;\r\n if (this.#isFirstLoad) {\r\n this.#isFirstLoad = false;\r\n this.#paginator.pageIndex = 0;\r\n this.#reload.next({\r\n force: true,\r\n });\r\n } else if (!notReload) {\r\n this.#paginator.pageIndex = 0;\r\n this.#reload.next({\r\n force: false,\r\n });\r\n }\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\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\r\n const columnTime = new Date(columnValue).getTime();\r\n const fromDateTime = fromDate?.getTime() || null;\r\n const toDateTime = toDate?.getTime() || null;\r\n\r\n if (fromDateTime && fromDateTime > columnTime) {\r\n return false;\r\n }\r\n if (toDateTime && columnTime > toDateTime) {\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 && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length,\r\n };\r\n };\r\n\r\n #getFilter = (): SdGridMaterialFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: 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\r\n #load = async (filterReq: SdGridMaterialFilterRequest, force: boolean = true) => {\r\n this.isLoading = true;\r\n if (this.gridOption.type === 'server') {\r\n try {\r\n let result = this.gridOption.items(filterReq);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n const data = await result;\r\n return {\r\n items: data?.items || [],\r\n total: data?.total || 0,\r\n };\r\n } catch (error) {\r\n console.error(error);\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n return {\r\n items: [],\r\n total: 0,\r\n };\r\n } finally {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n } else {\r\n if (force) {\r\n try {\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 if (!Array.isArray(this.#localItems)) {\r\n this.notifyService.notify.warning('Dữ liệu không phải là một mảng');\r\n this.#localItems = [];\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n this.#localItems = [];\r\n } finally {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n return this.#filterLocal(this.#localItems, filterReq);\r\n }\r\n };\r\n\r\n #render = async (args: { items: any[]; total: number }) => {\r\n this.sdScroll?.scrollTop();\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 this.gridFilter?.updateFilter?.();\r\n const data = await this.#load(this.#getFilter(), force);\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\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .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\r\n ?.filter(e => !e.export?.disabled)\r\n .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 const batch = this.gridOption?.export?.batch || 1;\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 let promises: Promise<\r\n | any[]\r\n | {\r\n items: any[];\r\n total: number;\r\n }\r\n >[] = [];\r\n const handleData = async () => {\r\n const results = await Promise.all(promises);\r\n promises = [];\r\n exportItems = [];\r\n for (const result of results) {\r\n if ('items' in result) {\r\n exportItems = [...exportItems, ...result.items];\r\n total = result.total;\r\n } else {\r\n exportItems = [...exportItems, ...result];\r\n }\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 const totalPage = total / pageSize;\r\n const percent = Math.round(((pageNumber - 1) * 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 isExport: true,\r\n });\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 obj[column.field] = obj[column.field] ?? '';\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');\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');\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 };\r\n while (pageNumber * pageSize < total) {\r\n promises.push(this.#exportedItems(pageNumber, pageSize));\r\n pageNumber++;\r\n if (promises.length < batch) {\r\n continue;\r\n }\r\n await handleData();\r\n }\r\n if (promises.length > 0) {\r\n await handleData();\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 this.#onExport(args);\r\n };\r\n\r\n onFilterChange = () => {\r\n this.gridFilter?.updateFilter?.();\r\n if (this.gridOption?.filter?.inlineColumn) {\r\n this.filterRegister.value.set({\r\n columnOperator: this.columnOperator || {},\r\n columnFilter: this.columnFilter,\r\n });\r\n } else {\r\n this.filterRegister.value.set({});\r\n }\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\r\n .then(res => {\r\n rowData.expandDetail = res;\r\n rowData.isExpanded = true;\r\n })\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?.(\r\n rowData,\r\n this.items.filter(e => e.isSelected)\r\n );\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?.(\r\n rowData,\r\n this.items.filter(e => e.isSelected)\r\n );\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\r\n .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.filterRegister.value.remove();\r\n };\r\n\r\n setFilter = (args: { columnFilter?: Record<string, any>; externalFilter?: Record<string, any>; filterDef?: Record<string, any> }) => {\r\n const { columnFilter, externalFilter, filterDef } = args || {};\r\n if (this.gridOption?.filter?.inlineColumn && columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n this.filterRegister.value.set({\r\n columnFilter,\r\n externalFilter,\r\n filterDef,\r\n });\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 = async (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor?.beforeRemove) {\r\n const beforeRemove = editor?.beforeRemove(item);\r\n if (beforeRemove instanceof Promise) {\r\n const result = await beforeRemove;\r\n if (!result) {\r\n return;\r\n }\r\n } else {\r\n if (!beforeRemove) {\r\n return;\r\n }\r\n }\r\n }\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\r\n .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 })\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\r\n } = 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\r\n } = item;\r\n return result as T;\r\n });\r\n }\r\n\r\n get localItems(): T[] {\r\n return this.#localItems;\r\n }\r\n\r\n get localGridItems(): T[] {\r\n return this.#localItems.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\r\n } = item;\r\n return result as T;\r\n });\r\n }\r\n\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n onOperatorChange = (column: SdGridMaterialColumn, operator: SdFilterOperator) => {\r\n this.gridOption?.filter?.operatorChange?.(column, operator);\r\n }\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 '../services/grid-filter/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, ElementRef, Input, QueryList, Renderer2 } 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\r\n column: SdGridMaterialColumn;\r\n @Input('column') set _column(column: SdGridMaterialColumn) {\r\n this.column = column;\r\n if (column.width) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'min-width', column.width);\r\n }\r\n }\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(private elementRef: ElementRef, private renderer: Renderer2) {}\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 { SdBadgeColor } from '@sd-angular/core/badge';\r\n\r\nexport type SdGridMaterialColumn<T = any> =\r\n | SdGridMaterialColumnText<T>\r\n | SdGridMaterialColumnNumber<T>\r\n | SdGridMaterialBool<T>\r\n | SdGridMaterialColumnDate<T>\r\n | SdGridMaterialColumnValues<T>\r\n | SdGridMaterialColumnImage<T>\r\n | SdGridMaterialColumnChildren<T>\r\n | SdGridMaterialColumnChildrenCol<T>;\r\n\r\nexport type SdFilterOperator =\r\n | 'EQUAL'\r\n | 'NOT_EQUAL'\r\n | 'CONTAIN'\r\n | 'NOT_CONTAIN'\r\n | 'IN'\r\n | 'NOT_IN'\r\n | 'START_WITH'\r\n | 'END_WITH'\r\n | 'GREATER_THAN'\r\n | 'LESS_THAN'\r\n | 'GREATER_OR_EQUAL'\r\n | 'LESS_OR_EQUAL'\r\n | 'NULL'\r\n | 'NOT_NULL';\r\n\r\nexport const SdFilterOperators: { value: SdFilterOperator, symbol?: string, display: string }[] = [\r\n {\r\n value: 'EQUAL',\r\n symbol: '=',\r\n display: 'Bằng',\r\n },\r\n {\r\n value: 'NOT_EQUAL',\r\n symbol: '≠',\r\n display: 'Không bằng',\r\n },\r\n {\r\n value: 'GREATER_THAN',\r\n symbol: '>',\r\n display: 'Lớn hơn',\r\n },\r\n {\r\n value: 'LESS_THAN',\r\n symbol: '<',\r\n display: 'Nhỏ hơn',\r\n },\r\n {\r\n value: 'GREATER_OR_EQUAL',\r\n symbol: '≥',\r\n display: 'Lớn hơn, hoặc bằng'\r\n },\r\n {\r\n value: 'LESS_OR_EQUAL',\r\n symbol: '≤',\r\n display: 'Nhỏ hơn, hoặc bằng'\r\n },\r\n {\r\n value: 'CONTAIN',\r\n symbol: 'join_inner',\r\n display: 'Chứa',\r\n },\r\n {\r\n value: 'NOT_CONTAIN',\r\n symbol: 'join',\r\n display: 'Không chứa',\r\n },\r\n {\r\n value: 'START_WITH',\r\n symbol: 'line_start_circle',\r\n display: 'Bắt đầu bởi'\r\n },\r\n {\r\n value: 'END_WITH',\r\n symbol: 'line_end_circle',\r\n display: 'Kết thúc bởi'\r\n },\r\n {\r\n value: 'IN',\r\n symbol: 'checklist_rtl',\r\n display: 'Nằm trong'\r\n },\r\n {\r\n value: 'NOT_IN',\r\n symbol: 'event_list',\r\n display: 'Không nằm trong'\r\n },\r\n {\r\n value: 'NULL',\r\n symbol: 'motion_photos_off',\r\n display: 'Là rỗng',\r\n },\r\n {\r\n value: 'NOT_NULL',\r\n symbol: 'adjust',\r\n display: 'Không rỗng',\r\n },\r\n];\r\n\r\nexport type TransformFunc<T = any> = (\r\n value: any,\r\n rowData: T,\r\n args?: {\r\n isExport?: boolean;\r\n }\r\n) => string | Promise<string>;\r\n\r\ninterface SdGridMaterialBaseColumn<T = any> {\r\n field: string;\r\n title: string;\r\n titleHtml?: string;\r\n description?: string;\r\n width?: string;\r\n hidden?: boolean;\r\n invisible?: boolean;\r\n fixed?: boolean;\r\n align?: 'center' | 'left' | 'right';\r\n htmlTemplate?: (value: any, rowData: T, isMobileOrTablet: boolean) => string;\r\n transform?: TransformFunc<T>;\r\n tooltip?: (value: any, rowData: T) => string;\r\n click?: (value: any, rowData: T) => void;\r\n sortable?: boolean;\r\n filter?: {\r\n disabled?: boolean;\r\n defaultShowing?: boolean;\r\n default?: any;\r\n // Chỉ dành cho filter inline column\r\n operator?: {\r\n enable?: boolean;\r\n list?: SdFilterOperator[];\r\n };\r\n };\r\n export?: {\r\n disabled?: boolean;\r\n };\r\n}\r\n\r\ninterface SdGridMaterialColumnText<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'string';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n minLength?: number;\r\n maxLength?: number;\r\n validator?: (rowData: T) => string;\r\n };\r\n}\r\n\r\ninterface SdGridMaterialColumnNumber<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'number';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n minValue?: number;\r\n maxValue?: number;\r\n precision?: number;\r\n validator?: (rowData: T) => string;\r\n };\r\n}\r\n\r\ninterface SdGridMaterialBool<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'bool';\r\n option?: {\r\n displayOnTrue?: string;\r\n displayOnFalse?: string;\r\n };\r\n badgeType?: 'circle';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\ninterface SdGridMaterialColumnDate<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'date' | 'datetime' | 'time';\r\n option?: {\r\n useFilterDate?: boolean;\r\n timeDifferent?: 'second' | 'minute' | 'hour' | 'day' | 'month';\r\n };\r\n transformDate?: (value: any, rowData: T) => string | Date;\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\nexport interface SdGridMaterialColumnValues<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'values';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n option: {\r\n items: any[] | ((searchText?: string, isFormValue?: boolean) => Promise<any[]>) | ((searchText?: string[], isFormValue?: boolean) => Promise<any[]>);\r\n valueField: string;\r\n displayField: string;\r\n selection?:\r\n | 'AUTOCOMPLETE'\r\n | 'MULTIPLE'\r\n | 'MULTIPLEAUTOCOMPLETE'\r\n | 'AUTOCOMPLETE_EDITOR'\r\n | 'MULTIPLE_EDITOR'\r\n | 'MULTIPLEAUTOCOMPLETE_EDITOR';\r\n };\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n add?: (rowData: T) => void;\r\n edit?: (option: any, rowData: T) => void;\r\n delete?: (option: any, rowData: T) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\ninterface SdGridMaterialColumnImage<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'image';\r\n option: {\r\n height: number;\r\n width: number;\r\n };\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\ntype SdGridMaterialNormalColumn<T> = Exclude<\r\n Exclude<SdGridMaterialColumn<T>, SdGridMaterialColumnChildren<T>>,\r\n SdGridMaterialColumnChildrenCol<T>\r\n>;\r\n\r\nexport type SdGridMaterialChildColumn<T = any> = SdGridMaterialNormalColumn<T> & {\r\n dynamicTitle?: (rowData: T) => string | Promise<string>;\r\n colSpan: 1 | 2;\r\n};\r\n\r\nexport interface SdGridMaterialColumnChildren<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'children';\r\n children: SdGridMaterialChildColumn<T>[];\r\n}\r\n\r\nexport interface SdGridMaterialColumnChildrenCol<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'children-col';\r\n children: SdGridMaterialNormalColumn<T>[];\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdFilterOperator, SdFilterOperators, 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 value: any;\r\n @Input('value') _value(value: any) {\r\n this.value = value;\r\n this.#valueChanges.next();\r\n }\r\n inlineSymbol: string = 'filter_alt';\r\n #inlineOperator: SdFilterOperator;\r\n @Input('inlineOperator') set _inlineOperator(inlineOperator: SdFilterOperator) {\r\n if(this.#inlineOperator !== inlineOperator) {\r\n this.#inlineOperator = inlineOperator;\r\n this.inlineSymbol = SdFilterOperators.find(e => e.value === inlineOperator)?.symbol ?? 'filter_alt';\r\n }\r\n }\r\n @Output() inlineOperatorChange = new EventEmitter<SdFilterOperator>();\r\n @Output() operatorChange = new EventEmitter<SdFilterOperator>();\r\n\r\n columnFilter: Record<string, any> = {};\r\n @Input('columnFilter') set _columnFilter(columnFilter: Record<string, any>) {\r\n this.columnFilter = columnFilter || {};\r\n this.#valueChanges.next();\r\n }\r\n operators: { value: SdFilterOperator, symbol?: string, display: string }[] = [];\r\n column: SdGridMaterialColumn;\r\n @Input('column') set _column(column: SdGridMaterialColumn) {\r\n this.column = column;\r\n if (!column?.filter?.disabled && column?.filter?.operator?.enable) {\r\n this.operators = SdFilterOperators.filter(e => column.filter.operator.list?.includes?.(e.value));\r\n } else {\r\n this.operators = [];\r\n }\r\n }\r\n @Output() filterChange = new EventEmitter();\r\n #valueChanges = new Subject();\r\n #subcription = new Subscription();\r\n constructor(private ref: ChangeDetectorRef) { }\r\n\r\n ngOnInit() {\r\n this.#subcription.add(\r\n this.#valueChanges.pipe(startWith(this.columnFilter)).subscribe(() => {\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 }\r\n\r\n ngOnDestroy() {\r\n this.#subcription.unsubscribe();\r\n }\r\n\r\n onFilterChange = () => {\r\n this.filterChange.emit();\r\n };\r\n\r\n\r\n onChangeOperator = (operator: { value: SdFilterOperator, symbol?: string, display: string }) => {\r\n if (operator) {\r\n this.#inlineOperator = operator.value;\r\n this.inlineSymbol = operator.symbol;\r\n } else {\r\n this.#inlineOperator = null;\r\n this.inlineSymbol = 'filter_alt';\r\n }\r\n this.inlineOperatorChange.emit(this.#inlineOperator);\r\n this.operatorChange.emit(this.#inlineOperator);\r\n this.ref.markForCheck();\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): 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 const date = Date.toFormat(value, 'dd/MM/yyyy');\r\n const time = Date.toFormat(value, 'HH:mm');\r\n const dateTime = Date.toFormat(value, 'HH:mm');\r\n if (column.type === 'datetime' && time && time !== '00:00') {\r\n result.display.value = dateTime;\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 } else {\r\n result.display.value = date;\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 if(result.display.value === null) {\r\n result.display.value = undefined;\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/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\nimport { SdGroupModule } from '@sd-angular/core/group';\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 SdGroupModule\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {SdColumnInlineFilter as ɵp} from './src/lib/components/column-inline-filter/column-inline-filter.component';\nexport {SdDesktopCellChildrenView as ɵn} from './src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component';\nexport {SdDesktopCellEditor as ɵk} from './src/lib/components/desktop-cell-editor/desktop-cell-editor.component';\nexport {SdDesktopCellView as ɵm} from './src/lib/components/desktop-cell-view/desktop-cell-view.component';\nexport {SdDesktopCell as ɵj} from './src/lib/components/desktop-cell/desktop-cell.component';\nexport {SdDesktopCommand as ɵo} from './src/lib/components/desktop-command/desktop-command.component';\nexport {SdDesktopEditorValidation as ɵl} from './src/lib/components/desktop-editor-validation/desktop-editor-validation.component';\nexport {SdDynamicColumn as ɵr} from './src/lib/components/dynamic-column/dynamic-column.component';\nexport {SdGridFilter as ɵb} from './src/lib/components/grid-filter/grid-filter.component';\nexport {SdPopupExport as ɵd} from './src/lib/components/popup-export/popup-export.component';\nexport {SdPopupFilter as ɵc} from './src/lib/components/popup-filter/popup-filter.component';\nexport {SdPopupGridConfiguration as ɵq} from './src/lib/components/popup-grid-configuration/popup-grid-configuration.component';\nexport {SdGridQuickAction as ɵi} from './src/lib/components/quick-action/quick-action.component';\nexport {MatPaginatorIntlCro as ɵa} from './src/lib/grid-material.module';\nexport {SdCellViewPipe as ɵbn} from './src/lib/pipes/cell-view.pipe';\nexport {SdColumnBadgePipe as ɵbd} from './src/lib/pipes/column-badge.pipe';\nexport {SdColumnChildrenFilterPipe as ɵu} from './src/lib/pipes/column-children-filter.pipe';\nexport {SdColumnHtmlTemplatePipe as ɵba} from './src/lib/pipes/column-html-template.pipe';\nexport {SdColumnTitlePipe as ɵv} from './src/lib/pipes/column-title.pipe';\nexport {SdColumnTooltipPipe as ɵbc} from './src/lib/pipes/column-tooltip.pipe';\nexport {SdColumnTransformPipe as ɵbb} from './src/lib/pipes/column-transform.pipe';\nexport {SdColumnValuesPipe as ɵf} from './src/lib/pipes/column-values.pipe';\nexport {SdCommandDisablePipe as ɵx} from './src/lib/pipes/command-disable.pipe';\nexport {SdCommandFilterPipe as ɵw} from './src/lib/pipes/command-filter.pipe';\nexport {SdCommandIconPipe as ɵy} from './src/lib/pipes/command-icon.pipe';\nexport {SdCommandTitlePipe as ɵz} from './src/lib/pipes/command-title.pipe';\nexport {SdEditorHandlerColumnPipe as ɵh} from './src/lib/pipes/editor-handler-column.pipe';\nexport {SdEditorHandlerRowPipe as ɵbk} from './src/lib/pipes/editor-handler-row.pipe';\nexport {SdEditorValidatePipe as ɵbl} from './src/lib/pipes/editor-validate.pipe';\nexport {SdFilterColumnPipe as ɵbe} from './src/lib/pipes/filter-column.pipe';\nexport {SdFilterExternalPipe as ɵbf} from './src/lib/pipes/filter-external.pipe';\nexport {SdGridConfigurationResultPipe as ɵt} from './src/lib/pipes/grid-configuration-result.pipe';\nexport {SdGroupPipe as ɵbo} from './src/lib/pipes/sd-group.pipe';\nexport {SdSelectionActionFilterPipe as ɵbg} from './src/lib/pipes/selection-action-filter.pipe';\nexport {SdSelectionDisablePipe as ɵbi} from './src/lib/pipes/selection-disable.pipe';\nexport {SdSelectionVisibleSelectAllPipe as ɵbj} from './src/lib/pipes/selection-visible-select-all.pipe';\nexport {SdSelectionVisiblePipe as ɵbh} from './src/lib/pipes/selection-visible.pipe';\nexport {SdStyleRowCss as ɵbm} from './src/lib/pipes/style-row-css.pipe';\nexport {SdGeneratedColumnService as ɵs} from './src/lib/services/generated-column/generated-column.service';\nexport {SdGridConfigurationService as ɵe} from './src/lib/services/grid-configuration.service';\nexport {SdGridFilterService as ɵg} from './src/lib/services/grid-filter/grid-filter.service';"],"names":["_cache","uuid.v4","_subscription","_initConfiguration","_load","_visible","_isMobileOrTablet"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sd-angular-core-grid-material.js","sources":["../../../../projects/sd-core/grid-material/src/lib/models/grid-configuration.model.ts","../../../../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","../../../../projects/sd-core/grid-material/src/lib/components/popup-filter/popup-filter.component.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/services/grid-filter/grid-filter.service.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/models/grid-column.model.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","../../../../projects/sd-core/grid-material/sd-angular-core-grid-material.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { SdFilterOperator } from './grid-column.model';\r\n\r\nexport interface ISdGridMaterialConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n operator?: {\r\n defaultListString?: SdFilterOperator[];\r\n defaultListNumber?: SdFilterOperator[];\r\n defaultListDate?: SdFilterOperator[];\r\n defaultListValues?: SdFilterOperator[];\r\n };\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 { 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","import { Component, ViewChild, 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, SdGridMaterialFilterRegister } from '../../services/grid-filter/grid-filter.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { Subscription } from 'rxjs';\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(SdModal) modal: SdModal;\r\n #filterRegister: SdGridMaterialFilterRegister;\r\n @Input() set filterRegister(value: SdGridMaterialFilterRegister) {\r\n this.#filterRegister = value;\r\n }\r\n @Input() externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: Record<string, any> = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n columnFilter: Record<string, any> = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: Record<string, any> = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n ngOnDestroy() {}\r\n\r\n open = () => {\r\n const configuration = this.#filterRegister.configuration.get();\r\n this.inlineColumn = JSON.parse(JSON.stringify(configuration.inlineColumn));\r\n this.inlineExternal = JSON.parse(JSON.stringify(configuration.inlineExternal));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(configuration.inlineFilterDef));\r\n const filterValue = this.#filterRegister.value.get();\r\n this.columnFilter = JSON.parse(JSON.stringify(filterValue.columnFilter));\r\n this.externalFilter = JSON.parse(JSON.stringify(filterValue.externalFilter));\r\n this.filterDef = JSON.parse(JSON.stringify(filterValue.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.#filterRegister.configuration.set({\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef,\r\n });\r\n this.#filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\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.#filterRegister.value.remove();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {\r\n SdGridMaterialFilterOption,\r\n SdGridMaterialExternalFilter,\r\n SdGridMaterialFilterRegister,\r\n} from '../../services/grid-filter/grid-filter.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { startWith } from 'rxjs/operators';\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 filter: Readonly<SdGridMaterialFilterOption>;\r\n @Input('filter') set _filter(filter: SdGridMaterialFilterOption) {\r\n this.filter = filter;\r\n }\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n externalFilters: SdGridMaterialExternalFilter[] = [];\r\n @Input('externalFilters') set _externalFilters(value: SdGridMaterialExternalFilter[]) {\r\n this.externalFilters = value || [];\r\n }\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterRegister: SdGridMaterialFilterRegister;\r\n @Input('filterRegister') set _filterRegister(value: SdGridMaterialFilterRegister) {\r\n this.filterRegister = value;\r\n this.filterRegisterChange.next(this.filterRegister);\r\n }\r\n filterRegisterChange = new BehaviorSubject<SdGridMaterialFilterRegister>(null);\r\n\r\n filterDef: any = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n columnFilter: any = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n externalFilter: any = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n isMobileOrTablet: boolean;\r\n\r\n #subscription = new Subscription();\r\n\r\n constructor(private ref: ChangeDetectorRef, private deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n this.ref.markForCheck();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.filterRegisterChange.pipe(startWith(this.filterRegister)).subscribe(filterRegister => {\r\n if (this.filterRegister) {\r\n this.#subscription.add(\r\n this.filterRegister.configuration.observer.subscribe(configuration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n this.inlineColumn = inlineColumn;\r\n this.inlineExternal = inlineExternal;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.filterRegister.value.observer.subscribe(value => {\r\n const { columnFilter, externalFilter, filterDef } = value;\r\n this.columnFilter = columnFilter;\r\n this.externalFilter = externalFilter;\r\n this.filterDef = filterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\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.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n };\r\n\r\n updateFilter = () => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n notReload: true\r\n });\r\n };\r\n\r\n open = () => {\r\n this.popupFilter.open();\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\nimport { SdGridMaterialColumn } from '../../models/grid-column.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 private get gridColumns() {\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.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 private get additionalColumns() {\r\n return (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 #getExportableColumns = (): SdExportColumn[] => {\r\n return [...this.gridColumns, ...this.additionalColumns];\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 #getExportColumns = () => {\r\n if (this.configuration) {\r\n const columns = [...this.gridColumns];\r\n const { firstColumns, secondColumns } = this.configuration;\r\n const displayColumns: SdGridMaterialColumn<any>[] = [...firstColumns, ...secondColumns].reduce((first, next) => {\r\n const column = this.gridOption.columns.find(e => e.field === next.field);\r\n if (!column) {\r\n return first;\r\n }\r\n if (column.type !== 'children' && column.type !== 'children-col') {\r\n return [...first, column];\r\n }\r\n const children = column.children.filter(e1 => e1.type !== 'image');\r\n return [...first, ...children];\r\n }, []);\r\n const results = displayColumns.map(e => ({\r\n ...e,\r\n data: columns.find(e1 => e1.field === e.field)\r\n })).filter(e => !!e.data)\r\n .map(e => e.data);\r\n return [...results, ...this.additionalColumns];\r\n } else {\r\n return this.columns;\r\n }\r\n }\r\n\r\n exportDefault = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: false\r\n });\r\n }\r\n\r\n exportCSV = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: true\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 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(`Vui lòng chọn cột dữ liệu để xuất`);\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, selection, ...remain } = column.option;\r\n const key = hash({\r\n prefix: this.#prefix,\r\n valueField,\r\n displayField,\r\n selection,\r\n remain,\r\n value\r\n });\r\n const isMultible = ['MULTIPLE', 'MULTIPLEAUTOCOMPLETE', 'MULTIPLE_EDITOR', 'MULTIPLEAUTOCOMPLETE_EDITOR'].includes(selection);\r\n if (typeof (items) === 'function') {\r\n if (!this.#cache[key]) {\r\n const values = await items(value, true);\r\n let result = '';\r\n if (isMultible && Array.isArray(value)) {\r\n result = values?.filter(e => value?.includes(e?.[valueField]))?.map(e => e?.[displayField])?.join(', ') || value?.join(', ');\r\n }\r\n else {\r\n result = values?.find(e => e?.[valueField] === value)?.[displayField] || value;\r\n }\r\n this.#cache[key] = {\r\n result\r\n };\r\n }\r\n } else {\r\n if (!this.#cache[key]) {\r\n let result = '';\r\n if (isMultible && Array.isArray(value)) {\r\n result = items?.filter(e => value?.includes(e?.[valueField]))?.map(e => e?.[displayField])?.join(', ') ?? value?.join(', ');\r\n }\r\n else {\r\n result = items?.find(e => e?.[valueField] === value)?.[displayField] || value\r\n }\r\n this.#cache[key] = {\r\n result\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 { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport {\r\n SdGridMaterialExternalFilter,\r\n SdGridMaterialFilterConfiguration,\r\n SdGridMaterialFilterOption,\r\n SdGridMaterialFilterRegister,\r\n SdGridMaterialFilterValue,\r\n} from './grid-filter.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { map, startWith } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class SdGridFilterService {\r\n #filterConfiguration = 'GRID-FILTER-CONFIGURATION';\r\n #filterValue = 'GRID-FILTER-VALUE';\r\n #cache: Record<string, SdGridMaterialFilterRegister> = {};\r\n constructor(private settingService: SdSettingService) {}\r\n register = (\r\n filter: SdGridMaterialFilterOption,\r\n args: {\r\n id: string;\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }\r\n ) => {\r\n let cacheSession = false;\r\n \r\n const { id, columns, externalFilters } = args;\r\n const tempKey = hash({\r\n id,\r\n columns: columns?.map(e => e.field).filter(field => !!field) || [],\r\n externalFilters: externalFilters?.map(e => e.field).filter(field => !!field) || [],\r\n });\r\n const key = filter?.key || tempKey;\r\n if (!filter?.key) {\r\n cacheSession = true; // Nếu không có key thì chỉ lưu theo session\r\n }\r\n if (!this.#cache[key]) {\r\n // Setting của filter configuration\r\n const filterConfiguration = this.settingService.create<SdGridMaterialFilterConfiguration>(\r\n {\r\n prefix: this.#filterConfiguration,\r\n key,\r\n },\r\n {\r\n default: this.#defaultConfiguration(args),\r\n type: cacheSession ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị configuration merge với giá trị defaultShowing của args nếu như args có thay đổi\r\n filterConfiguration.set(this.#initConfiguration(args, filterConfiguration.get()));\r\n // Setting của filter value\r\n const filterValue = this.settingService.create<SdGridMaterialFilterValue>(\r\n {\r\n prefix: this.#filterValue,\r\n key: !filter?.cacheFilter ? tempKey : key,\r\n },\r\n {\r\n default: this.#defaultValue(args),\r\n type: cacheSession || !filter?.cacheFilter ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị value merge với giá trị default của args nếu như args có thay đổi\r\n filterValue.set(this.#initValue(args, filterValue.get()));\r\n this.#cache[key] = {\r\n configuration: {\r\n get: (): SdGridMaterialFilterConfiguration => {\r\n return filterConfiguration.get();\r\n },\r\n set: (configuration: Partial<SdGridMaterialFilterConfiguration>): SdGridMaterialFilterConfiguration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n filterConfiguration.set({\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n });\r\n return {\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n };\r\n },\r\n remove: () => {\r\n filterConfiguration.set(this.#defaultConfiguration(args));\r\n },\r\n observer: filterConfiguration.observer.pipe(\r\n startWith(filterConfiguration.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(configuration => configuration || this.#defaultConfiguration(args))\r\n ),\r\n },\r\n value: {\r\n get: (): SdGridMaterialFilterValue => {\r\n return filterValue.get();\r\n },\r\n set: (value: Partial<SdGridMaterialFilterValue>): SdGridMaterialFilterValue => {\r\n const keys = Object.keys(value || {});\r\n const current = filterValue.get();\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = current;\r\n const updatedFilter = {\r\n // Filter column\r\n columnOperator: keys.includes('columnOperator') ? value?.columnOperator || {} : columnOperator,\r\n columnFilter: keys.includes('columnFilter') ? value?.columnFilter || {} : columnFilter,\r\n // Filter external\r\n externalFilter: keys.includes('externalFilter') ? value?.externalFilter || {} : externalFilter,\r\n // Filter def\r\n filterDef: keys.includes('filterDef') ? value?.filterDef || {} : filterDef,\r\n // Force\r\n notReload: !!value?.notReload,\r\n };\r\n filterValue.set(updatedFilter);\r\n return updatedFilter;\r\n },\r\n remove: () => {\r\n filterValue.set(this.#defaultValue(args));\r\n },\r\n observer: filterValue.observer.pipe(\r\n startWith(filterValue.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(value => value || this.#defaultValue(args))\r\n ),\r\n },\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #defaultConfiguration = (args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdGridMaterialFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #defaultValue = (args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdGridMaterialFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n externalFilter[item.field] = item?.default;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n\r\n #initConfiguration = (\r\n args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n configuration: SdGridMaterialFilterConfiguration\r\n ): SdGridMaterialFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = configuration?.inlineColumn?.[item.field] ?? item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = configuration?.inlineExternal?.[item.field] ?? item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = configuration?.inlineFilterDef?.[item.sdMaterialFilterDef] ?? item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #initValue = (\r\n args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n value: SdGridMaterialFilterValue\r\n ): SdGridMaterialFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = value?.columnFilter?.[item.field] ?? item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n if (item.type === 'daterange') {\r\n externalFilter[item.field] = {\r\n from: value?.externalFilter?.[item.field]?.from ?? item.default?.from,\r\n to: value?.externalFilter?.[item.field]?.to ?? item.default?.to,\r\n };\r\n } else {\r\n externalFilter[item.field] = value?.externalFilter?.[item.field] ?? item?.default;\r\n }\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = value?.filterDef?.[item.sdMaterialFilterDef] ?? undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\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 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 { SdGridMaterialFilterRegister, SdGridMaterialFilterRequest } from './services/grid-filter/grid-filter.model';\r\nimport { SdGridMaterialOption } from './models/grid-option.model';\r\nimport { GRID_MATERIAL_CONFIG, DEFAULT_GRID_MATERIAL_CONFIG, ISdGridMaterialConfiguration } from './models/grid-configuration.model';\r\nimport { Subscription, isObservable, Observable, BehaviorSubject, Subject, combineLatest } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdFilterOperator, SdGridMaterialColumn } from './models/grid-column.model';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { debounceTime, filter, 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 { 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\nimport { SdGridFilterService } from './services/grid-filter/grid-filter.service';\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 #gridId = uuid.v4();\r\n @ViewChild(SdScrollDirective) sdScroll: SdScrollDirective;\r\n filterRegister: SdGridMaterialFilterRegister;\r\n key = uuid.v4();\r\n gridConfigurationObserver: Observable<SdGridConfiguration>;\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\r\n\r\n gridFilter: SdGridFilter;\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 // filter(reload => reload),\r\n // debounceTime(500),\r\n // map(() => {\r\n // this.#paginator.pageIndex = 0;\r\n // this.#reload.next({\r\n // force: false,\r\n // source: 'FILTER'\r\n // });\r\n // }),\r\n // ).subscribe());\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.#loadCompleted = false;\r\n const configuration = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.gridConfigurationObserver = configuration.observer;\r\n configuration.load();\r\n this.#optionChanges.next(this.gridOption);\r\n }\r\n }\r\n #optionChanges = new Subject<SdGridMaterialOption>();\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(\r\n paginator.page\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\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(\r\n sort.sortChange\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\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)\r\n sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective)\r\n 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 columnOperator: Record<string, SdFilterOperator> = {};\r\n columnFilter: Record<string, any> = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #reload = new Subject<{\r\n force: boolean;\r\n }>();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n #loadCompleted = false;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(GRID_MATERIAL_CONFIG)\r\n @Optional()\r\n public configuration: ISdGridMaterialConfiguration,\r\n private gridConfigurationService: SdGridConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private columnValuesPipe: SdColumnValuesPipe,\r\n private gridFilterService: SdGridFilterService,\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(\r\n this.#reload\r\n .pipe(\r\n debounceTime(200),\r\n switchMap(async data => {\r\n const filterInfo = this.#getFilter();\r\n const result = await this.#load(filterInfo, !this.#loadCompleted || data.force);\r\n this.#loadCompleted = true;\r\n return result;\r\n })\r\n )\r\n .subscribe(this.#render)\r\n );\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(\r\n combineLatest([\r\n this.#optionChanges.pipe(startWith(this.gridOption)),\r\n this.sdFilterDefs.changes.pipe(startWith(this.filterDefs)),\r\n ]).subscribe(() => {\r\n this.#loadFilterRegister();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.#optionChanges.subscribe(() => {\r\n if (this.filterRegister) {\r\n this.#reload.next({\r\n force: true,\r\n });\r\n }\r\n })\r\n );\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 const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: 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 // Init pagination\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 for (const column of option.columns || []) {\r\n if (column.filter?.operator?.enable && !column.filter?.operator?.list?.length) {\r\n if (column.type === 'string') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListString || [];\r\n }\r\n if (column.type === 'number') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListNumber || [];\r\n }\r\n if (column.type === 'values') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListValues || [];\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListDate || [];\r\n }\r\n }\r\n }\r\n return option;\r\n };\r\n\r\n #isFirstLoad = true;\r\n #loadFilterRegister = () => {\r\n // Init filter\r\n if (this.gridOption) {\r\n if (!this.filterRegister) {\r\n this.filterRegister = this.gridFilterService.register(this.gridOption?.filter, {\r\n id: this.#gridId,\r\n columns: this.gridOption?.columns,\r\n externalFilters: this.gridOption?.filter?.externalFilters,\r\n filterDefs: this.filterDefs,\r\n });\r\n this.#subscription.add(\r\n this.filterRegister.value.observer\r\n .pipe(\r\n debounceTime(500),\r\n map(filterValue => {\r\n const { columnOperator, columnFilter, notReload } = filterValue;\r\n this.columnOperator = columnOperator || {};\r\n this.columnFilter = columnFilter;\r\n if (this.#isFirstLoad) {\r\n this.#isFirstLoad = false;\r\n this.#paginator.pageIndex = 0;\r\n this.#reload.next({\r\n force: true,\r\n });\r\n } else if (!notReload) {\r\n this.#paginator.pageIndex = 0;\r\n this.#reload.next({\r\n force: false,\r\n });\r\n }\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\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\r\n const columnTime = new Date(columnValue).getTime();\r\n const fromDateTime = fromDate?.getTime() || null;\r\n const toDateTime = toDate?.getTime() || null;\r\n\r\n if (fromDateTime && fromDateTime > columnTime) {\r\n return false;\r\n }\r\n if (toDateTime && columnTime > toDateTime) {\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 && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length,\r\n };\r\n };\r\n\r\n #getFilter = (): SdGridMaterialFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: 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\r\n #load = async (filterReq: SdGridMaterialFilterRequest, force: boolean = true) => {\r\n this.isLoading = true;\r\n if (this.gridOption.type === 'server') {\r\n try {\r\n let result = this.gridOption.items(filterReq);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n const data = await result;\r\n return {\r\n items: data?.items || [],\r\n total: data?.total || 0,\r\n };\r\n } catch (error) {\r\n console.error(error);\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n return {\r\n items: [],\r\n total: 0,\r\n };\r\n } finally {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n } else {\r\n if (force) {\r\n try {\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 if (!Array.isArray(this.#localItems)) {\r\n this.notifyService.notify.warning('Dữ liệu không phải là một mảng');\r\n this.#localItems = [];\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n this.#localItems = [];\r\n } finally {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n return this.#filterLocal(this.#localItems, filterReq);\r\n }\r\n };\r\n\r\n #render = async (args: { items: any[]; total: number }) => {\r\n this.sdScroll?.scrollTop();\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 this.gridFilter?.updateFilter?.();\r\n const data = await this.#load(this.#getFilter(), force);\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\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .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\r\n ?.filter(e => !e.export?.disabled)\r\n .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 const batch = this.gridOption?.export?.batch || 1;\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 let promises: Promise<\r\n | any[]\r\n | {\r\n items: any[];\r\n total: number;\r\n }\r\n >[] = [];\r\n const handleData = async () => {\r\n const results = await Promise.all(promises);\r\n promises = [];\r\n exportItems = [];\r\n for (const result of results) {\r\n if ('items' in result) {\r\n exportItems = [...exportItems, ...result.items];\r\n total = result.total;\r\n } else {\r\n exportItems = [...exportItems, ...result];\r\n }\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 const totalPage = total / pageSize;\r\n const percent = Math.round(((pageNumber - 1) * 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 isExport: true,\r\n });\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 obj[column.field] = obj[column.field] ?? '';\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');\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');\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 };\r\n while (pageNumber * pageSize < total) {\r\n promises.push(this.#exportedItems(pageNumber, pageSize));\r\n pageNumber++;\r\n if (promises.length < batch) {\r\n continue;\r\n }\r\n await handleData();\r\n }\r\n if (promises.length > 0) {\r\n await handleData();\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 this.#onExport(args);\r\n };\r\n\r\n onFilterChange = () => {\r\n this.gridFilter?.updateFilter?.();\r\n if (this.gridOption?.filter?.inlineColumn) {\r\n this.filterRegister.value.set({\r\n columnOperator: this.columnOperator || {},\r\n columnFilter: this.columnFilter,\r\n });\r\n } else {\r\n this.filterRegister.value.set({});\r\n }\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\r\n .then(res => {\r\n rowData.expandDetail = res;\r\n rowData.isExpanded = true;\r\n })\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?.(\r\n rowData,\r\n this.items.filter(e => e.isSelected)\r\n );\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?.(\r\n rowData,\r\n this.items.filter(e => e.isSelected)\r\n );\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\r\n .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.filterRegister.value.remove();\r\n };\r\n\r\n setFilter = (args: { columnFilter?: Record<string, any>; externalFilter?: Record<string, any>; filterDef?: Record<string, any> }) => {\r\n const { columnFilter, externalFilter, filterDef } = args || {};\r\n if (this.gridOption?.filter?.inlineColumn && columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n this.filterRegister.value.set({\r\n columnFilter,\r\n externalFilter,\r\n filterDef,\r\n });\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 = async (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor?.beforeRemove) {\r\n const beforeRemove = editor?.beforeRemove(item);\r\n if (beforeRemove instanceof Promise) {\r\n const result = await beforeRemove;\r\n if (!result) {\r\n return;\r\n }\r\n } else {\r\n if (!beforeRemove) {\r\n return;\r\n }\r\n }\r\n }\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\r\n .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 })\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\r\n } = 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\r\n } = item;\r\n return result as T;\r\n });\r\n }\r\n\r\n get localItems(): T[] {\r\n return this.#localItems;\r\n }\r\n\r\n get localGridItems(): T[] {\r\n return this.#localItems.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\r\n } = item;\r\n return result as T;\r\n });\r\n }\r\n\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n onOperatorChange = (column: SdGridMaterialColumn, operator: SdFilterOperator) => {\r\n this.gridOption?.filter?.operatorChange?.(column, operator);\r\n }\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 '../services/grid-filter/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, ElementRef, Input, QueryList, Renderer2 } 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\r\n column: SdGridMaterialColumn;\r\n @Input('column') set _column(column: SdGridMaterialColumn) {\r\n this.column = column;\r\n if (column.width) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'min-width', column.width);\r\n }\r\n }\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(private elementRef: ElementRef, private renderer: Renderer2) {}\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 { SdBadgeColor } from '@sd-angular/core/badge';\r\n\r\nexport type SdGridMaterialColumn<T = any> =\r\n | SdGridMaterialColumnText<T>\r\n | SdGridMaterialColumnNumber<T>\r\n | SdGridMaterialBool<T>\r\n | SdGridMaterialColumnDate<T>\r\n | SdGridMaterialColumnValues<T>\r\n | SdGridMaterialColumnImage<T>\r\n | SdGridMaterialColumnChildren<T>\r\n | SdGridMaterialColumnChildrenCol<T>;\r\n\r\nexport type SdFilterOperator =\r\n | 'EQUAL'\r\n | 'NOT_EQUAL'\r\n | 'CONTAIN'\r\n | 'NOT_CONTAIN'\r\n | 'IN'\r\n | 'NOT_IN'\r\n | 'START_WITH'\r\n | 'END_WITH'\r\n | 'GREATER_THAN'\r\n | 'LESS_THAN'\r\n | 'GREATER_OR_EQUAL'\r\n | 'LESS_OR_EQUAL'\r\n | 'NULL'\r\n | 'NOT_NULL';\r\n\r\nexport const SdFilterOperators: { value: SdFilterOperator, symbol?: string, display: string }[] = [\r\n {\r\n value: 'EQUAL',\r\n symbol: '=',\r\n display: 'Bằng',\r\n },\r\n {\r\n value: 'NOT_EQUAL',\r\n symbol: '≠',\r\n display: 'Không bằng',\r\n },\r\n {\r\n value: 'GREATER_THAN',\r\n symbol: '>',\r\n display: 'Lớn hơn',\r\n },\r\n {\r\n value: 'LESS_THAN',\r\n symbol: '<',\r\n display: 'Nhỏ hơn',\r\n },\r\n {\r\n value: 'GREATER_OR_EQUAL',\r\n symbol: '≥',\r\n display: 'Lớn hơn, hoặc bằng'\r\n },\r\n {\r\n value: 'LESS_OR_EQUAL',\r\n symbol: '≤',\r\n display: 'Nhỏ hơn, hoặc bằng'\r\n },\r\n {\r\n value: 'CONTAIN',\r\n symbol: 'join_inner',\r\n display: 'Chứa',\r\n },\r\n {\r\n value: 'NOT_CONTAIN',\r\n symbol: 'join',\r\n display: 'Không chứa',\r\n },\r\n {\r\n value: 'START_WITH',\r\n symbol: 'line_start_circle',\r\n display: 'Bắt đầu bởi'\r\n },\r\n {\r\n value: 'END_WITH',\r\n symbol: 'line_end_circle',\r\n display: 'Kết thúc bởi'\r\n },\r\n {\r\n value: 'IN',\r\n symbol: 'checklist_rtl',\r\n display: 'Nằm trong'\r\n },\r\n {\r\n value: 'NOT_IN',\r\n symbol: 'event_list',\r\n display: 'Không nằm trong'\r\n },\r\n {\r\n value: 'NULL',\r\n symbol: 'motion_photos_off',\r\n display: 'Là rỗng',\r\n },\r\n {\r\n value: 'NOT_NULL',\r\n symbol: 'adjust',\r\n display: 'Không rỗng',\r\n },\r\n];\r\n\r\nexport type TransformFunc<T = any> = (\r\n value: any,\r\n rowData: T,\r\n args?: {\r\n isExport?: boolean;\r\n }\r\n) => string | Promise<string>;\r\n\r\ninterface SdGridMaterialBaseColumn<T = any> {\r\n field: string;\r\n title: string;\r\n titleHtml?: string;\r\n description?: string;\r\n width?: string;\r\n hidden?: boolean;\r\n invisible?: boolean;\r\n fixed?: boolean;\r\n align?: 'center' | 'left' | 'right';\r\n htmlTemplate?: (value: any, rowData: T, isMobileOrTablet: boolean) => string;\r\n transform?: TransformFunc<T>;\r\n tooltip?: (value: any, rowData: T) => string;\r\n click?: (value: any, rowData: T) => void;\r\n sortable?: boolean;\r\n filter?: {\r\n disabled?: boolean;\r\n defaultShowing?: boolean;\r\n default?: any;\r\n // Chỉ dành cho filter inline column\r\n operator?: {\r\n enable?: boolean;\r\n list?: SdFilterOperator[];\r\n };\r\n };\r\n export?: {\r\n disabled?: boolean;\r\n };\r\n}\r\n\r\ninterface SdGridMaterialColumnText<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'string';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n minLength?: number;\r\n maxLength?: number;\r\n validator?: (rowData: T) => string;\r\n };\r\n}\r\n\r\ninterface SdGridMaterialColumnNumber<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'number';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n minValue?: number;\r\n maxValue?: number;\r\n precision?: number;\r\n validator?: (rowData: T) => string;\r\n };\r\n}\r\n\r\ninterface SdGridMaterialBool<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'bool';\r\n option?: {\r\n displayOnTrue?: string;\r\n displayOnFalse?: string;\r\n };\r\n badgeType?: 'circle';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\ninterface SdGridMaterialColumnDate<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'date' | 'datetime' | 'time';\r\n option?: {\r\n useFilterDate?: boolean;\r\n timeDifferent?: 'second' | 'minute' | 'hour' | 'day' | 'month';\r\n };\r\n transformDate?: (value: any, rowData: T) => string | Date;\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\nexport interface SdGridMaterialColumnValues<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'values';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n option: {\r\n items: any[] | ((searchText?: string, isFormValue?: boolean) => Promise<any[]>) | ((searchText?: string[], isFormValue?: boolean) => Promise<any[]>);\r\n valueField: string;\r\n displayField: string;\r\n selection?:\r\n | 'AUTOCOMPLETE'\r\n | 'MULTIPLE'\r\n | 'MULTIPLEAUTOCOMPLETE'\r\n | 'AUTOCOMPLETE_EDITOR'\r\n | 'MULTIPLE_EDITOR'\r\n | 'MULTIPLEAUTOCOMPLETE_EDITOR';\r\n };\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n add?: (rowData: T) => void;\r\n edit?: (option: any, rowData: T) => void;\r\n delete?: (option: any, rowData: T) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\ninterface SdGridMaterialColumnImage<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'image';\r\n option: {\r\n height: number;\r\n width: number;\r\n };\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\ntype SdGridMaterialNormalColumn<T> = Exclude<\r\n Exclude<SdGridMaterialColumn<T>, SdGridMaterialColumnChildren<T>>,\r\n SdGridMaterialColumnChildrenCol<T>\r\n>;\r\n\r\nexport type SdGridMaterialChildColumn<T = any> = SdGridMaterialNormalColumn<T> & {\r\n dynamicTitle?: (rowData: T) => string | Promise<string>;\r\n colSpan: 1 | 2;\r\n};\r\n\r\nexport interface SdGridMaterialColumnChildren<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'children';\r\n children: SdGridMaterialChildColumn<T>[];\r\n}\r\n\r\nexport interface SdGridMaterialColumnChildrenCol<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'children-col';\r\n children: SdGridMaterialNormalColumn<T>[];\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdFilterOperator, SdFilterOperators, 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 value: any;\r\n @Input('value') _value(value: any) {\r\n this.value = value;\r\n this.#valueChanges.next();\r\n }\r\n inlineSymbol: string = 'filter_alt';\r\n #inlineOperator: SdFilterOperator;\r\n @Input('inlineOperator') set _inlineOperator(inlineOperator: SdFilterOperator) {\r\n if(this.#inlineOperator !== inlineOperator) {\r\n this.#inlineOperator = inlineOperator;\r\n this.inlineSymbol = SdFilterOperators.find(e => e.value === inlineOperator)?.symbol ?? 'filter_alt';\r\n }\r\n }\r\n @Output() inlineOperatorChange = new EventEmitter<SdFilterOperator>();\r\n @Output() operatorChange = new EventEmitter<SdFilterOperator>();\r\n\r\n columnFilter: Record<string, any> = {};\r\n @Input('columnFilter') set _columnFilter(columnFilter: Record<string, any>) {\r\n this.columnFilter = columnFilter || {};\r\n this.#valueChanges.next();\r\n }\r\n operators: { value: SdFilterOperator, symbol?: string, display: string }[] = [];\r\n column: SdGridMaterialColumn;\r\n @Input('column') set _column(column: SdGridMaterialColumn) {\r\n this.column = column;\r\n if (!column?.filter?.disabled && column?.filter?.operator?.enable) {\r\n this.operators = SdFilterOperators.filter(e => column.filter.operator.list?.includes?.(e.value));\r\n } else {\r\n this.operators = [];\r\n }\r\n }\r\n @Output() filterChange = new EventEmitter();\r\n #valueChanges = new Subject();\r\n #subcription = new Subscription();\r\n constructor(private ref: ChangeDetectorRef) { }\r\n\r\n ngOnInit() {\r\n this.#subcription.add(\r\n this.#valueChanges.pipe(startWith(this.columnFilter)).subscribe(() => {\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 }\r\n\r\n ngOnDestroy() {\r\n this.#subcription.unsubscribe();\r\n }\r\n\r\n onFilterChange = () => {\r\n this.filterChange.emit();\r\n };\r\n\r\n\r\n onChangeOperator = (operator: { value: SdFilterOperator, symbol?: string, display: string }) => {\r\n if (operator) {\r\n this.#inlineOperator = operator.value;\r\n this.inlineSymbol = operator.symbol;\r\n } else {\r\n this.#inlineOperator = null;\r\n this.inlineSymbol = 'filter_alt';\r\n }\r\n this.inlineOperatorChange.emit(this.#inlineOperator);\r\n this.operatorChange.emit(this.#inlineOperator);\r\n this.ref.markForCheck();\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): 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 const date = Date.toFormat(value, 'dd/MM/yyyy');\r\n const time = Date.toFormat(value, 'HH:mm');\r\n const dateTime = Date.toFormat(value, 'HH:mm');\r\n if (column.type === 'datetime' && time && time !== '00:00') {\r\n result.display.value = dateTime;\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 } else {\r\n result.display.value = date;\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 if(result.display.value === null) {\r\n result.display.value = undefined;\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/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\nimport { SdGroupModule } from '@sd-angular/core/group';\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 SdGroupModule\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {SdColumnInlineFilter as ɵp} from './src/lib/components/column-inline-filter/column-inline-filter.component';\nexport {SdDesktopCellChildrenView as ɵn} from './src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component';\nexport {SdDesktopCellEditor as ɵk} from './src/lib/components/desktop-cell-editor/desktop-cell-editor.component';\nexport {SdDesktopCellView as ɵm} from './src/lib/components/desktop-cell-view/desktop-cell-view.component';\nexport {SdDesktopCell as ɵj} from './src/lib/components/desktop-cell/desktop-cell.component';\nexport {SdDesktopCommand as ɵo} from './src/lib/components/desktop-command/desktop-command.component';\nexport {SdDesktopEditorValidation as ɵl} from './src/lib/components/desktop-editor-validation/desktop-editor-validation.component';\nexport {SdDynamicColumn as ɵr} from './src/lib/components/dynamic-column/dynamic-column.component';\nexport {SdGridFilter as ɵb} from './src/lib/components/grid-filter/grid-filter.component';\nexport {SdPopupExport as ɵd} from './src/lib/components/popup-export/popup-export.component';\nexport {SdPopupFilter as ɵc} from './src/lib/components/popup-filter/popup-filter.component';\nexport {SdPopupGridConfiguration as ɵq} from './src/lib/components/popup-grid-configuration/popup-grid-configuration.component';\nexport {SdGridQuickAction as ɵi} from './src/lib/components/quick-action/quick-action.component';\nexport {MatPaginatorIntlCro as ɵa} from './src/lib/grid-material.module';\nexport {SdCellViewPipe as ɵbn} from './src/lib/pipes/cell-view.pipe';\nexport {SdColumnBadgePipe as ɵbd} from './src/lib/pipes/column-badge.pipe';\nexport {SdColumnChildrenFilterPipe as ɵu} from './src/lib/pipes/column-children-filter.pipe';\nexport {SdColumnHtmlTemplatePipe as ɵba} from './src/lib/pipes/column-html-template.pipe';\nexport {SdColumnTitlePipe as ɵv} from './src/lib/pipes/column-title.pipe';\nexport {SdColumnTooltipPipe as ɵbc} from './src/lib/pipes/column-tooltip.pipe';\nexport {SdColumnTransformPipe as ɵbb} from './src/lib/pipes/column-transform.pipe';\nexport {SdColumnValuesPipe as ɵf} from './src/lib/pipes/column-values.pipe';\nexport {SdCommandDisablePipe as ɵx} from './src/lib/pipes/command-disable.pipe';\nexport {SdCommandFilterPipe as ɵw} from './src/lib/pipes/command-filter.pipe';\nexport {SdCommandIconPipe as ɵy} from './src/lib/pipes/command-icon.pipe';\nexport {SdCommandTitlePipe as ɵz} from './src/lib/pipes/command-title.pipe';\nexport {SdEditorHandlerColumnPipe as ɵh} from './src/lib/pipes/editor-handler-column.pipe';\nexport {SdEditorHandlerRowPipe as ɵbk} from './src/lib/pipes/editor-handler-row.pipe';\nexport {SdEditorValidatePipe as ɵbl} from './src/lib/pipes/editor-validate.pipe';\nexport {SdFilterColumnPipe as ɵbe} from './src/lib/pipes/filter-column.pipe';\nexport {SdFilterExternalPipe as ɵbf} from './src/lib/pipes/filter-external.pipe';\nexport {SdGridConfigurationResultPipe as ɵt} from './src/lib/pipes/grid-configuration-result.pipe';\nexport {SdGroupPipe as ɵbo} from './src/lib/pipes/sd-group.pipe';\nexport {SdSelectionActionFilterPipe as ɵbg} from './src/lib/pipes/selection-action-filter.pipe';\nexport {SdSelectionDisablePipe as ɵbi} from './src/lib/pipes/selection-disable.pipe';\nexport {SdSelectionVisibleSelectAllPipe as ɵbj} from './src/lib/pipes/selection-visible-select-all.pipe';\nexport {SdSelectionVisiblePipe as ɵbh} from './src/lib/pipes/selection-visible.pipe';\nexport {SdStyleRowCss as ɵbm} from './src/lib/pipes/style-row-css.pipe';\nexport {SdGeneratedColumnService as ɵs} from './src/lib/services/generated-column/generated-column.service';\nexport {SdGridConfigurationService as ɵe} from './src/lib/services/grid-configuration.service';\nexport {SdGridFilterService as ɵg} from './src/lib/services/grid-filter/grid-filter.service';"],"names":["_cache","uuid.v4","_subscription","_initConfiguration","_load","_visible","_isMobileOrTablet"],"mappings":"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"}
|