@sd-angular/core 1.3.147 → 1.3.149

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.
Files changed (26) hide show
  1. package/bundles/sd-angular-core-grid-material.umd.js +1 -1
  2. package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
  3. package/bundles/sd-angular-core-grid-material.umd.min.js +1 -1
  4. package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
  5. package/bundles/sd-angular-core-table.umd.js +219 -144
  6. package/bundles/sd-angular-core-table.umd.js.map +1 -1
  7. package/bundles/sd-angular-core-table.umd.min.js +1 -1
  8. package/bundles/sd-angular-core-table.umd.min.js.map +1 -1
  9. package/esm2015/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.js +2 -2
  10. package/esm2015/table/src/lib/components/column-inline-filter/column-inline-filter.component.js +34 -12
  11. package/esm2015/table/src/lib/models/index.js +2 -1
  12. package/esm2015/table/src/lib/models/table-column.model.js +43 -19
  13. package/esm2015/table/src/lib/models/table-configuration.model.js +1 -1
  14. package/esm2015/table/src/lib/table.component.js +19 -3
  15. package/fesm2015/sd-angular-core-grid-material.js +1 -1
  16. package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
  17. package/fesm2015/sd-angular-core-table.js +92 -30
  18. package/fesm2015/sd-angular-core-table.js.map +1 -1
  19. package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
  20. package/package.json +1 -1
  21. package/{sd-angular-core-1.3.147.tgz → sd-angular-core-1.3.149.tgz} +0 -0
  22. package/table/sd-angular-core-table.metadata.json +1 -1
  23. package/table/src/lib/components/column-inline-filter/column-inline-filter.component.d.ts +11 -4
  24. package/table/src/lib/models/index.d.ts +1 -0
  25. package/table/src/lib/models/table-column.model.d.ts +2 -1
  26. package/table/src/lib/models/table-configuration.model.d.ts +7 -0
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-table.js","sources":["../../../../projects/sd-core/table/src/lib/models/table-configuration.model.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-cell-def.directive.ts","../../../../projects/sd-core/table/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/table/src/lib/components/grid-filter/grid-filter.component.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-filter-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-sub-information-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-footer-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-empty-data-def.directive.ts","../../../../projects/sd-core/table/src/lib/services/table-configuration.service.ts","../../../../projects/sd-core/table/src/lib/models/table-item.model.ts","../../../../projects/sd-core/table/src/lib/pipes/column-values.pipe.ts","../../../../projects/sd-core/table/src/lib/services/table-filter/table-filter.service.ts","../../../../projects/sd-core/table/src/lib/table.component.ts","../../../../projects/sd-core/table/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/column-html-template.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-transform.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/column-children-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-badge.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/grid-configuration-result.pipe.ts","../../../../projects/sd-core/table/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible-select-all.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/table/src/lib/models/table-column.model.ts","../../../../projects/sd-core/table/src/lib/components/column-inline-filter/column-inline-filter.component.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible.pipe.ts","../../../../projects/sd-core/table/src/lib/components/quick-action/quick-action.component.ts","../../../../projects/sd-core/table/src/lib/pipes/cell-view.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/sd-group.pipe.ts","../../../../projects/sd-core/table/src/lib/table.module.ts","../../../../projects/sd-core/table/sd-angular-core-table.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport interface ISdTableConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[]\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_TABLE_CONFIG: ISdTableConfiguration = {\r\n paginate: {\r\n pageSize: 50,\r\n pages: [50, 100, 200]\r\n }\r\n};\r\n\r\nexport const TABLE_CONFIG = new InjectionToken<ISdTableConfiguration>('sd-table.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 { Component, ViewChild, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableExternalFilter, SdGridMaterialFilterRegister } from '../../services/table-filter/table-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: SdTableExternalFilter[] = [];\r\n externalFilter: Record<string, any> = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n @Input() columns: SdTableColumn[] = [];\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 SdTableOptionFilter,\r\n SdTableExternalFilter,\r\n SdGridMaterialFilterRegister,\r\n} from '../../services/table-filter/table-filter.model';\r\nimport { SdTableColumn } from '../../models/table-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<SdTableOptionFilter>;\r\n @Input('filter') set _filter(filter: SdTableOptionFilter) {\r\n this.filter = filter;\r\n }\r\n @Input() columns: SdTableColumn[] = [];\r\n externalFilters: SdTableExternalFilter[] = [];\r\n @Input('externalFilters') set _externalFilters(value: SdTableExternalFilter[]) {\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?: SdTableColumn | SdTableExternalFilter) => {\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 { 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, 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 { 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 { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport {\r\n SdColumnConfiguration,\r\n SdGridConfiguration,\r\n SdGridConfigurationCache,\r\n SdGridConfigurationResult,\r\n} from '../models/table-option-config.model';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\nimport { TABLE_CONFIG, ISdTableConfiguration } from '../models/table-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdTableConfigurationService {\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(TABLE_CONFIG) @Optional() public gridMaterialConfiguration: ISdTableConfiguration\r\n ) {}\r\n\r\n init = (key: string, gridOption: SdTableOption) => {\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: SdTableOption) => {\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: SdTableOption): SdGridConfiguration => {\r\n const columns: SdColumnConfiguration[] =\r\n gridOption?.columns\r\n ?.filter(e => !e.hidden)\r\n .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: SdTableOption, 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: SdTableOption) => {\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.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\r\n #set = (gridOption: SdTableOption, 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: SdTableOption) => {\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: SdTableOption,\r\n sdSubInformation: SdMaterialSubInformationDefDirective\r\n ) => {\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 { selector, commands, group } = gridOption || {};\r\n if (selector?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\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\r\n ?.filter(col => !col.invisible)\r\n .forEach(col => {\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 result.displayedColumns.push(col.origin.field);\r\n if (column.type === 'children') {\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 }\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 * as hash from 'object-hash';\r\nexport interface SdTableMetaSelector {\r\n selectable?: boolean;\r\n isSelected?: boolean;\r\n actions?: string[];\r\n}\r\n\r\nexport interface SdTableMetaExpand {\r\n isExpanded?: boolean;\r\n isExpanding?: boolean;\r\n data?: any;\r\n}\r\n\r\nexport interface SdTableMeta<T> {\r\n id?: string;\r\n selector?: SdTableMetaSelector;\r\n expand?: SdTableMetaExpand;\r\n group?: {\r\n htmlTemplate?: string;\r\n items?: SdTableItem<T>[];\r\n };\r\n}\r\n\r\nexport interface SdTableItem<T = any> {\r\n meta: SdTableMeta<T>;\r\n origin: T;\r\n current: T;\r\n}\r\n\r\nexport const MapToSdTableItem = <T = any>(item: T): SdTableItem<T> => ({\r\n current: JSON.parse(JSON.stringify(item)),\r\n origin: item,\r\n meta: {\r\n id: hash(item),\r\n expand: {\r\n isExpanding: false,\r\n isExpanded: false,\r\n },\r\n group: {},\r\n selector: { actions: [], isSelected: false, selectable: false },\r\n },\r\n});\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableColumn } from '../models/table-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: SdTableColumn): 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 { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport {\r\n SdTableExternalFilter,\r\n SdTableFilterConfiguration,\r\n SdTableOptionFilter,\r\n SdGridMaterialFilterRegister,\r\n SdTableFilterValue,\r\n} from './table-filter.model';\r\nimport { SdTableColumn } from '../../models/table-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 SdTableFilterService {\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: SdTableOptionFilter,\r\n args: {\r\n id: string;\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\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<SdTableFilterConfiguration>(\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<SdTableFilterValue>(\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: (): SdTableFilterConfiguration => {\r\n return filterConfiguration.get();\r\n },\r\n set: (configuration: Partial<SdTableFilterConfiguration>): SdTableFilterConfiguration => {\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: (): SdTableFilterValue => {\r\n return filterValue.get();\r\n },\r\n set: (value: Partial<SdTableFilterValue>): SdTableFilterValue => {\r\n const keys = Object.keys(value || {});\r\n const current = filterValue.get();\r\n const { columnOperator, columnFilter, externalFilter, filterDef, notReload } = 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: !!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: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterConfiguration => {\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: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterValue => {\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: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n configuration: SdTableFilterConfiguration\r\n ): SdTableFilterConfiguration => {\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: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n value: SdTableFilterValue\r\n ): SdTableFilterValue => {\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 ChangeDetectionStrategy,\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, SdTableFilterRequest } from './services/table-filter/table-filter.model';\r\nimport { SdTableOption } from './models/table-option.model';\r\nimport { TABLE_CONFIG, DEFAULT_TABLE_CONFIG, ISdTableConfiguration } from './models/table-configuration.model';\r\nimport { Subscription, isObservable, Observable, Subject, combineLatest } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdFilterOperator, SdTableColumn } from './models/table-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 { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';\r\nimport { SdGridConfiguration } from './models/table-option-config.model';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { SdTableOptionExportColumn } from './models/table-option-export.model';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { MapToSdTableItem, SdTableItem } from './models/table-item.model';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdScrollDirective } from '@sd-angular/core/common';\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\n\r\n@Component({\r\n selector: 'sd-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\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 SdTable<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: SdTableOption) {\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<SdTableOption>();\r\n\r\n gridOption: SdTableOption<T>;\r\n #localItems: SdTableItem<T>[] = [];\r\n items: SdTableItem<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 // 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(TABLE_CONFIG)\r\n @Optional()\r\n public configuration: ISdTableConfiguration,\r\n private gridConfigurationService: SdTableConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private columnValuesPipe: SdColumnValuesPipe,\r\n private gridFilterService: SdTableFilterService\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): SdTableFilterRequest => {\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: SdTableOption) => {\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_TABLE_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.configuration?.paginate?.pages ?? DEFAULT_TABLE_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false,\r\n };\r\n return option;\r\n };\r\n\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 (!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: SdTableItem<T>[], filterInfo: SdTableFilterRequest) => {\r\n const { columns } = this.gridOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(tableItem => {\r\n const item = tableItem.current;\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((tableItemCurrent, tableItemNext) => {\r\n const current = tableItemCurrent.current;\r\n const next = tableItemNext.current;\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 = (): SdTableFilterRequest => {\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: SdTableFilterRequest, force: boolean = true) => {\r\n this.isLoading = true;\r\n if (this.gridOption.type === 'server') {\r\n const { items } = this.gridOption;\r\n const data = await items(filterReq).catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return {\r\n items: [] as T[],\r\n total: 0,\r\n };\r\n });\r\n this.isLoading = false;\r\n return {\r\n items: data?.items.map(MapToSdTableItem) || [],\r\n total: data?.total || 0,\r\n };\r\n }\r\n if (force) {\r\n const { items } = this.gridOption;\r\n const results = items();\r\n let data: T[] = [];\r\n if (results instanceof Promise) {\r\n data = await results.catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return [];\r\n });\r\n } else {\r\n data = results;\r\n }\r\n if (!Array.isArray(data)) {\r\n this.notifyService.notify.warning('Dữ liệu không phải là một mảng');\r\n data = [];\r\n }\r\n this.#localItems = data.map(MapToSdTableItem);\r\n this.isLoading = false;\r\n }\r\n return this.#filterLocal(this.#localItems, filterReq);\r\n };\r\n\r\n #render = async (args: { items: SdTableItem<T>[]; total: number }) => {\r\n this.sdScroll?.scrollTop();\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n await this.gridOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.meta.selector.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 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 #allColumns = (): SdTableColumn[] => {\r\n const columns: SdTableColumn[] = [];\r\n this.gridOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\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 = (): SdTableOptionExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n };\r\n\r\n #onExport = async (isCSV?: boolean ) => {\r\n try {\r\n let columns = this.#getExportColumns();\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') {\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 (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 } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n #getExportColumns = () => {\r\n const columns = [\r\n ...this.gridOption.columns.filter(e => !e.export?.disabled),\r\n ...(this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || []),\r\n ];\r\n return columns;\r\n };\r\n\r\n exportExcel = () => {\r\n this.#onExport();\r\n };\r\n\r\n exportCSV = () => {\r\n this.#onExport(true);\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: SdTableItem<T>) => {\r\n if (this.gridOption.expand?.always) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanding) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanded) {\r\n rowData.meta.expand.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.expand?.onExpand?.(rowData.current);\r\n if (!this.gridOption.expand?.multiple) {\r\n this.items.forEach(item => (item.meta.expand.isExpanding = item.meta.expand.isExpanded = false));\r\n }\r\n if (data instanceof Promise) {\r\n rowData.meta.expand.isExpanding = true;\r\n data\r\n .then(res => {\r\n rowData.meta.expand.data = res;\r\n rowData.meta.expand.isExpanded = true;\r\n })\r\n .finally(() => (rowData.meta.expand.isExpanding = false));\r\n } else {\r\n rowData.meta.expand.data = data;\r\n rowData.meta.expand.isExpanded = true;\r\n }\r\n };\r\n\r\n onSelect = (rowData: SdTableItem<T>) => {\r\n if (rowData.meta.group?.items?.length) {\r\n rowData.meta.group.items.forEach(e => (e.meta.selector.isSelected = rowData.meta.selector.isSelected));\r\n this.gridOption.selector?.onSelect?.(\r\n rowData.current,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.current)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.gridOption.selector?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selector?.onSelect?.(\r\n rowData.current,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.current)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n };\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.meta.selector.selectable && (!this.gridOption?.selector?.actions?.length || e.meta.selector.actions?.length)) {\r\n e.meta.selector.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.gridOption.selector?.onSelectAll?.(this.items.filter(e => e.meta.selector.isSelected).map(e => e.current));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n onClearSelection = (items?: SdTableItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedItems = this.items.filter(item => item.meta.selector.isSelected).map(item => item.current);\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 get gridItems(): T[] {\r\n return this.items.map(item => item.current);\r\n }\r\n\r\n detectChanges = () => this.ref.detectChanges();\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand, SdTableCommandNormal } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: SdTableItem, commands: SdTableCommand[]): Promise<SdTableCommand[]> {\r\n const results: SdTableCommand[] = [];\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: SdTableCommandNormal[] = [];\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 { SdTableCommand } from '../models/table-command.model';\r\n@Pipe({\r\n name: 'commandDisable'\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: any, command: SdTableCommand): 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 { SdTableCommand } from '../models/table-command.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdTableCommand, 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 { SdTableCommand } from '../models/table-command.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdTableCommand, 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 { SdTableColumn } from '../models/table-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: SdTableColumn): 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 { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.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: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() gridOption: SdTableOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-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: SdTableColumn, 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 { SdTableExternalFilter } from '../services/table-filter/table-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdTableExternalFilter[], field?: string): SdTableExternalFilter[] {\r\n const results: SdTableExternalFilter[] = [];\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 { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdTableColumn[], field?: string): SdTableColumn[] {\r\n const results: SdTableColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\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 { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdTableColumn } from '../models/table-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: SdTableColumn[], item: any): SdTableColumn[] {\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 { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdTableCommand } from '../../models/table-command.model';\r\nimport { SdTableItem } from '../../models/table-item.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: SdTableItem;\r\n @Input() commands: SdTableCommand[] = [];\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 { SdTableColumn } from '../models/table-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: SdTableColumn): {\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 { SdTableOption } from '../models/table-option.model';\r\nimport { SdGridConfiguration, SdGridConfigurationResult } from '../models/table-option-config.model';\r\nimport { SdTableConfigurationService } from '../services/table-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: SdTableConfigurationService) { }\r\n transform(configuration: SdGridConfiguration, gridOption: SdTableOption, sdSubInformation: SdMaterialSubInformationDefDirective): SdGridConfigurationResult {\r\n const a = this.gridConfigurationService.generateConfigurationResult(configuration, gridOption, sdSubInformation);\r\n console.log(a);\r\n return a;\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 { SdTableOption } from '../../models/table-option.model';\r\nimport {\r\n SdGridConfigurationResult,\r\n SdGridConfiguration,\r\n SdGridConfigurationCache,\r\n SdColumnConfiguration,\r\n} from '../../models/table-option-config.model';\r\nimport { SdTableConfigurationService } from '../../services/table-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 { SdTableColumn } from '../../models/table-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: SdTableOption;\r\n @Input() key: string;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdTableColumn>;\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: SdTableConfigurationService\r\n ) {}\r\n\r\n ngOnInit() {}\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 };\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<SdTableColumn[]>) {\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 { SdTableColumn } from '../models/table-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: SdTableColumn): 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 { SdTableItem } from '../models/table-item.model';\r\nimport { SdTableAction, SdTableActionNormal } from '../models/table-option-selector.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdTableAction): SdTableAction => {\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: SdTableItem[], actions: SdTableAction[]): SdTableAction[] => {\r\n const results: SdTableAction[] = [];\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: SdTableActionNormal[] = [];\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.meta.selector.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.meta.selector.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 { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: SdTableItem[], rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { disabled, actions } = selection;\r\n if (!actions?.length) {\r\n if (!disabled) {\r\n rowData.meta.selector.selectable = true;\r\n return false;\r\n }\r\n rowData.meta.selector.selectable = !disabled(rowData, selectedItems);\r\n return !rowData.meta.selector.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.meta.selector.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.meta.selector.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.meta.selector.actions.includes(hash(childAction))) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if(rowData.meta.selector.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 { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionVisibleSelectAll'\r\n})\r\nexport class SdSelectionVisibleSelectAllPipe implements PipeTransform {\r\n transform = async (items: SdTableItem[], selection: SdTableOptionSelector): 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.meta.selector.actions?.length);\r\n if (first) {\r\n for (const action of first.meta.selector.actions) {\r\n if (items.filter(t => t.meta.selector.actions?.length).every(e => e.meta.selector.actions.includes(action))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdMaterialCellDefDirective } from '../../directives/sd-material-cell-def.directive';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() sdId: string;\r\n @Input() value: any;\r\n @Input() key: string;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() gridOption: SdTableOption;\r\n @Input() cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n @Input() idx: number;\r\n constructor(\r\n ) { }\r\n}\r\n","import { SdBadgeColor } from '@sd-angular/core/badge';\r\n\r\nexport type SdTableColumn<T = any> =\r\n | SdTableColumnText<T>\r\n | SdTableColumnNumber<T>\r\n | SdTableColumnBool<T>\r\n | SdTableColumnDate<T>\r\n | SdTableColumnValues<T>\r\n | SdTableColumnChildren<T>;\r\n\r\nexport type SdFilterOperator =\r\n | 'EQUAL'\r\n | 'NOT_EQUAL'\r\n | 'CONTAIN'\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\r\nexport const SdFilterOperators: { value: SdFilterOperator; display: string }[] = [\r\n {\r\n value: 'EQUAL',\r\n display: '=',\r\n },\r\n {\r\n value: 'NOT_EQUAL',\r\n display: '!=',\r\n },\r\n {\r\n value: 'CONTAIN',\r\n display: '∈',\r\n },\r\n // {\r\n // value: 'START_WITH';\r\n // display: '=';\r\n // },\r\n // {\r\n // value: 'END_WITH';\r\n // display: '=';\r\n // },\r\n {\r\n value: 'GREATER_THAN',\r\n display: '>',\r\n },\r\n {\r\n value: 'LESS_THAN',\r\n display: '<',\r\n },\r\n {\r\n value: 'GREATER_OR_EQUAL',\r\n display: '>=',\r\n },\r\n {\r\n value: 'LESS_OR_EQUAL',\r\n display: '<=',\r\n },\r\n];\r\n\r\nexport type SdTableColumnTransformFunc<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 SdTableColumnBase<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?: SdTableColumnTransformFunc<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 SdTableColumnText<T = any> extends SdTableColumnBase<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 SdTableColumnNumber<T = any> extends SdTableColumnBase<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 SdTableColumnBool<T = any> extends SdTableColumnBase<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 SdTableColumnDate<T = any> extends SdTableColumnBase<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 SdTableColumnValues<T = any> extends SdTableColumnBase<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:\r\n | any[]\r\n | ((searchText?: string, isFormValue?: boolean) => Promise<any[]>)\r\n | ((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\ntype SdTableColumnNormal<T> = Exclude<SdTableColumn<T>, SdTableColumnChildren<T>>;\r\n\r\nexport interface SdTableColumnChildren<T = any> extends SdTableColumnBase<T> {\r\n type: 'children';\r\n children: SdTableColumnNormal<T>[];\r\n}\r\n","import { ChangeDetectionStrategy, 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, SdTableColumn } from '../../models/table-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 columnOperator: Record<string, SdFilterOperator> = {};\r\n @Input('columnOperator') set _columnOperator(columnOperator: Record<string, SdFilterOperator>) {\r\n this.columnOperator = columnOperator || {};\r\n }\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; display: string }[] = [];\r\n column: SdTableColumn;\r\n @Input('column') set _column(column: SdTableColumn) {\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() {}\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","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.meta.selector.actions = rowData.meta.selector.actions || [];\r\n if (!actions?.length) {\r\n rowData.meta.selector.selectable = true;\r\n return rowData.meta.selector.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.meta.selector.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.meta.selector.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.meta.selector.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.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.meta.selector.selectable = !!rowData.meta.selector.actions?.length;\r\n if (!rowData.meta.selector.selectable || !groupedActions.length || rowData?.meta.group?.items?.length) {\r\n return rowData.meta.selector.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.meta.selector.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdTableOption } from '../../models/table-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: SdTableOption;\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 { SdTableColumn } from '../models/table-column.model';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\r\nimport { SdTableItem } from '../models/table-item.model';\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 tableItem: SdTableItem,\r\n column: SdTableColumn,\r\n gridOption: SdTableOption): Promise<SdCellView> {\r\n const { displayOnEmpty } = gridOption;\r\n const rowData = tableItem.current;\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 return result;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { MapToSdTableItem, SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'sdGroup',\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: SdTableItem[], gridOption: SdTableOption): SdTableItem[] {\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]: SdTableItem[];\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: SdTableItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n const result = MapToSdTableItem({});\r\n result.meta.group.items = groupItem[key];\r\n result.meta.group.htmlTemplate = htmlTemplate(groupItem[key]);\r\n results.push(result);\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 { SdTable } from './table.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 { SdTableFilterService } from './services/table-filter/table-filter.service';\r\nimport { SdColumnChildrenFilterPipe } from './pipes/column-children-filter.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 { SdPopupGridConfiguration } from './components/popup-grid-configuration/popup-grid-configuration.component';\r\nimport { SdTableConfigurationService } from './services/table-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 { SdDesktopCell } from './components/desktop-cell/desktop-cell.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 SdDesktopCellView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdTable,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdPopupGridConfiguration,\r\n SdGridFilter,\r\n SdPopupFilter,\r\n\r\n // Pipes\r\n SdGridConfigurationResultPipe,\r\n SdColumnChildrenFilterPipe,\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 SdCellViewPipe,\r\n SdGroupPipe,\r\n ],\r\n exports: [\r\n SdTable,\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 SdTableFilterService,\r\n SdTableConfigurationService,\r\n SdColumnValuesPipe,\r\n {\r\n provide: MatPaginatorIntl,\r\n useClass: MatPaginatorIntlCro,\r\n },\r\n ],\r\n})\r\nexport class SdTableModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {SdColumnInlineFilter as ɵe} from './src/lib/components/column-inline-filter/column-inline-filter.component';\nexport {SdDesktopCellView as ɵc} from './src/lib/components/desktop-cell-view/desktop-cell-view.component';\nexport {SdDesktopCell as ɵb} from './src/lib/components/desktop-cell/desktop-cell.component';\nexport {SdDesktopCommand as ɵd} from './src/lib/components/desktop-command/desktop-command.component';\nexport {SdGridFilter as ɵf} from './src/lib/components/grid-filter/grid-filter.component';\nexport {SdPopupFilter as ɵg} from './src/lib/components/popup-filter/popup-filter.component';\nexport {SdPopupGridConfiguration as ɵr} from './src/lib/components/popup-grid-configuration/popup-grid-configuration.component';\nexport {SdGridQuickAction as ɵa} from './src/lib/components/quick-action/quick-action.component';\nexport {SdMaterialCellDefDirective as ɵj} from './src/lib/directives/sd-material-cell-def.directive';\nexport {SdMaterialEmptyDataDefDirective as ɵi} from './src/lib/directives/sd-material-empty-data-def.directive';\nexport {SdMaterialFilterDefDirective as ɵl} from './src/lib/directives/sd-material-filter-def.directive';\nexport {SdMaterialFooterDefDirective as ɵk} from './src/lib/directives/sd-material-footer-def.directive';\nexport {SdMaterialSubInformationDefDirective as ɵh} from './src/lib/directives/sd-material-sub-information-def.directive';\nexport {ISdTableConfiguration as ɵm,TABLE_CONFIG as ɵn} from './src/lib/models/table-configuration.model';\nexport {SdCellViewPipe as ɵbi} from './src/lib/pipes/cell-view.pipe';\nexport {SdColumnBadgePipe as ɵbb} from './src/lib/pipes/column-badge.pipe';\nexport {SdColumnChildrenFilterPipe as ɵt} from './src/lib/pipes/column-children-filter.pipe';\nexport {SdColumnHtmlTemplatePipe as ɵy} from './src/lib/pipes/column-html-template.pipe';\nexport {SdColumnTooltipPipe as ɵba} from './src/lib/pipes/column-tooltip.pipe';\nexport {SdColumnTransformPipe as ɵz} from './src/lib/pipes/column-transform.pipe';\nexport {SdColumnValuesPipe as ɵp} from './src/lib/pipes/column-values.pipe';\nexport {SdCommandDisablePipe as ɵv} from './src/lib/pipes/command-disable.pipe';\nexport {SdCommandFilterPipe as ɵu} from './src/lib/pipes/command-filter.pipe';\nexport {SdCommandIconPipe as ɵw} from './src/lib/pipes/command-icon.pipe';\nexport {SdCommandTitlePipe as ɵx} from './src/lib/pipes/command-title.pipe';\nexport {SdFilterColumnPipe as ɵbc} from './src/lib/pipes/filter-column.pipe';\nexport {SdFilterExternalPipe as ɵbd} from './src/lib/pipes/filter-external.pipe';\nexport {SdGridConfigurationResultPipe as ɵs} from './src/lib/pipes/grid-configuration-result.pipe';\nexport {SdGroupPipe as ɵbj} from './src/lib/pipes/sd-group.pipe';\nexport {SdSelectionActionFilterPipe as ɵbe} from './src/lib/pipes/selection-action-filter.pipe';\nexport {SdSelectionDisablePipe as ɵbg} from './src/lib/pipes/selection-disable.pipe';\nexport {SdSelectionVisibleSelectAllPipe as ɵbh} from './src/lib/pipes/selection-visible-select-all.pipe';\nexport {SdSelectionVisiblePipe as ɵbf} from './src/lib/pipes/selection-visible.pipe';\nexport {SdTableConfigurationService as ɵo} from './src/lib/services/table-configuration.service';\nexport {SdTableFilterService as ɵq} from './src/lib/services/table-filter/table-filter.service';"],"names":["hash","_cache","uuid.v4","_subscription","_initConfiguration","_load","_isMobileOrTablet"],"mappings":"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"}
1
+ {"version":3,"file":"sd-angular-core-table.js","sources":["../../../../projects/sd-core/table/src/lib/models/table-configuration.model.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-cell-def.directive.ts","../../../../projects/sd-core/table/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/table/src/lib/components/grid-filter/grid-filter.component.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-filter-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-sub-information-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-footer-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-empty-data-def.directive.ts","../../../../projects/sd-core/table/src/lib/services/table-configuration.service.ts","../../../../projects/sd-core/table/src/lib/models/table-item.model.ts","../../../../projects/sd-core/table/src/lib/pipes/column-values.pipe.ts","../../../../projects/sd-core/table/src/lib/services/table-filter/table-filter.service.ts","../../../../projects/sd-core/table/src/lib/table.component.ts","../../../../projects/sd-core/table/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/column-html-template.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-transform.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/column-children-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-badge.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/grid-configuration-result.pipe.ts","../../../../projects/sd-core/table/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible-select-all.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/table/src/lib/models/table-column.model.ts","../../../../projects/sd-core/table/src/lib/components/column-inline-filter/column-inline-filter.component.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible.pipe.ts","../../../../projects/sd-core/table/src/lib/components/quick-action/quick-action.component.ts","../../../../projects/sd-core/table/src/lib/pipes/cell-view.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/sd-group.pipe.ts","../../../../projects/sd-core/table/src/lib/table.module.ts","../../../../projects/sd-core/table/sd-angular-core-table.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { SdFilterOperator } from './table-column.model';\r\n\r\nexport interface ISdTableConfiguration {\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_TABLE_CONFIG: ISdTableConfiguration = {\r\n paginate: {\r\n pageSize: 50,\r\n pages: [50, 100, 200]\r\n }\r\n};\r\n\r\nexport const TABLE_CONFIG = new InjectionToken<ISdTableConfiguration>('sd-table.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 { Component, ViewChild, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableExternalFilter, SdGridMaterialFilterRegister } from '../../services/table-filter/table-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: SdTableExternalFilter[] = [];\r\n externalFilter: Record<string, any> = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n @Input() columns: SdTableColumn[] = [];\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 SdTableOptionFilter,\r\n SdTableExternalFilter,\r\n SdGridMaterialFilterRegister,\r\n} from '../../services/table-filter/table-filter.model';\r\nimport { SdTableColumn } from '../../models/table-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<SdTableOptionFilter>;\r\n @Input('filter') set _filter(filter: SdTableOptionFilter) {\r\n this.filter = filter;\r\n }\r\n @Input() columns: SdTableColumn[] = [];\r\n externalFilters: SdTableExternalFilter[] = [];\r\n @Input('externalFilters') set _externalFilters(value: SdTableExternalFilter[]) {\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?: SdTableColumn | SdTableExternalFilter) => {\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 { 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, 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 { 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 { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport {\r\n SdColumnConfiguration,\r\n SdGridConfiguration,\r\n SdGridConfigurationCache,\r\n SdGridConfigurationResult,\r\n} from '../models/table-option-config.model';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\nimport { TABLE_CONFIG, ISdTableConfiguration } from '../models/table-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdTableConfigurationService {\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(TABLE_CONFIG) @Optional() public gridMaterialConfiguration: ISdTableConfiguration\r\n ) {}\r\n\r\n init = (key: string, gridOption: SdTableOption) => {\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: SdTableOption) => {\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: SdTableOption): SdGridConfiguration => {\r\n const columns: SdColumnConfiguration[] =\r\n gridOption?.columns\r\n ?.filter(e => !e.hidden)\r\n .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: SdTableOption, 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: SdTableOption) => {\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.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\r\n #set = (gridOption: SdTableOption, 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: SdTableOption) => {\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: SdTableOption,\r\n sdSubInformation: SdMaterialSubInformationDefDirective\r\n ) => {\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 { selector, commands, group } = gridOption || {};\r\n if (selector?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\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\r\n ?.filter(col => !col.invisible)\r\n .forEach(col => {\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 result.displayedColumns.push(col.origin.field);\r\n if (column.type === 'children') {\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 }\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 * as hash from 'object-hash';\r\nexport interface SdTableMetaSelector {\r\n selectable?: boolean;\r\n isSelected?: boolean;\r\n actions?: string[];\r\n}\r\n\r\nexport interface SdTableMetaExpand {\r\n isExpanded?: boolean;\r\n isExpanding?: boolean;\r\n data?: any;\r\n}\r\n\r\nexport interface SdTableMeta<T> {\r\n id?: string;\r\n selector?: SdTableMetaSelector;\r\n expand?: SdTableMetaExpand;\r\n group?: {\r\n htmlTemplate?: string;\r\n items?: SdTableItem<T>[];\r\n };\r\n}\r\n\r\nexport interface SdTableItem<T = any> {\r\n meta: SdTableMeta<T>;\r\n origin: T;\r\n current: T;\r\n}\r\n\r\nexport const MapToSdTableItem = <T = any>(item: T): SdTableItem<T> => ({\r\n current: JSON.parse(JSON.stringify(item)),\r\n origin: item,\r\n meta: {\r\n id: hash(item),\r\n expand: {\r\n isExpanding: false,\r\n isExpanded: false,\r\n },\r\n group: {},\r\n selector: { actions: [], isSelected: false, selectable: false },\r\n },\r\n});\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableColumn } from '../models/table-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: SdTableColumn): 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 { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport {\r\n SdTableExternalFilter,\r\n SdTableFilterConfiguration,\r\n SdTableOptionFilter,\r\n SdGridMaterialFilterRegister,\r\n SdTableFilterValue,\r\n} from './table-filter.model';\r\nimport { SdTableColumn } from '../../models/table-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 SdTableFilterService {\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: SdTableOptionFilter,\r\n args: {\r\n id: string;\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\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<SdTableFilterConfiguration>(\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<SdTableFilterValue>(\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: (): SdTableFilterConfiguration => {\r\n return filterConfiguration.get();\r\n },\r\n set: (configuration: Partial<SdTableFilterConfiguration>): SdTableFilterConfiguration => {\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: (): SdTableFilterValue => {\r\n return filterValue.get();\r\n },\r\n set: (value: Partial<SdTableFilterValue>): SdTableFilterValue => {\r\n const keys = Object.keys(value || {});\r\n const current = filterValue.get();\r\n const { columnOperator, columnFilter, externalFilter, filterDef, notReload } = 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: !!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: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterConfiguration => {\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: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterValue => {\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: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n configuration: SdTableFilterConfiguration\r\n ): SdTableFilterConfiguration => {\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: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n value: SdTableFilterValue\r\n ): SdTableFilterValue => {\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 ChangeDetectionStrategy,\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, SdTableFilterRequest } from './services/table-filter/table-filter.model';\r\nimport { SdTableOption } from './models/table-option.model';\r\nimport { TABLE_CONFIG, DEFAULT_TABLE_CONFIG, ISdTableConfiguration } from './models/table-configuration.model';\r\nimport { Subscription, isObservable, Observable, Subject, combineLatest } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdFilterOperator, SdTableColumn } from './models/table-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 { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';\r\nimport { SdGridConfiguration } from './models/table-option-config.model';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { SdTableOptionExportColumn } from './models/table-option-export.model';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { MapToSdTableItem, SdTableItem } from './models/table-item.model';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdScrollDirective } from '@sd-angular/core/common';\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\n\r\n@Component({\r\n selector: 'sd-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\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 SdTable<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: SdTableOption) {\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<SdTableOption>();\r\n\r\n gridOption: SdTableOption<T>;\r\n #localItems: SdTableItem<T>[] = [];\r\n items: SdTableItem<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 // 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(TABLE_CONFIG)\r\n @Optional()\r\n public configuration: ISdTableConfiguration,\r\n private gridConfigurationService: SdTableConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private columnValuesPipe: SdColumnValuesPipe,\r\n private gridFilterService: SdTableFilterService\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): SdTableFilterRequest => {\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: SdTableOption) => {\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_TABLE_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.configuration?.paginate?.pages ?? DEFAULT_TABLE_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 #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 (!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: SdTableItem<T>[], filterInfo: SdTableFilterRequest) => {\r\n const { columns } = this.gridOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(tableItem => {\r\n const item = tableItem.current;\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((tableItemCurrent, tableItemNext) => {\r\n const current = tableItemCurrent.current;\r\n const next = tableItemNext.current;\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 = (): SdTableFilterRequest => {\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: SdTableFilterRequest, force: boolean = true) => {\r\n this.isLoading = true;\r\n if (this.gridOption.type === 'server') {\r\n const { items } = this.gridOption;\r\n const data = await items(filterReq).catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return {\r\n items: [] as T[],\r\n total: 0,\r\n };\r\n });\r\n this.isLoading = false;\r\n return {\r\n items: data?.items.map(MapToSdTableItem) || [],\r\n total: data?.total || 0,\r\n };\r\n }\r\n if (force) {\r\n const { items } = this.gridOption;\r\n const results = items();\r\n let data: T[] = [];\r\n if (results instanceof Promise) {\r\n data = await results.catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return [];\r\n });\r\n } else {\r\n data = results;\r\n }\r\n if (!Array.isArray(data)) {\r\n this.notifyService.notify.warning('Dữ liệu không phải là một mảng');\r\n data = [];\r\n }\r\n this.#localItems = data.map(MapToSdTableItem);\r\n this.isLoading = false;\r\n }\r\n return this.#filterLocal(this.#localItems, filterReq);\r\n };\r\n\r\n #render = async (args: { items: SdTableItem<T>[]; total: number }) => {\r\n this.sdScroll?.scrollTop();\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n await this.gridOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.meta.selector.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 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 #allColumns = (): SdTableColumn[] => {\r\n const columns: SdTableColumn[] = [];\r\n this.gridOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\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 = (): SdTableOptionExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n };\r\n\r\n #onExport = async (isCSV?: boolean ) => {\r\n try {\r\n let columns = this.#getExportColumns();\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') {\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 (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 } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n #getExportColumns = () => {\r\n const columns = [\r\n ...this.gridOption.columns.filter(e => !e.export?.disabled),\r\n ...(this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || []),\r\n ];\r\n return columns;\r\n };\r\n\r\n exportExcel = () => {\r\n this.#onExport();\r\n };\r\n\r\n exportCSV = () => {\r\n this.#onExport(true);\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: SdTableItem<T>) => {\r\n if (this.gridOption.expand?.always) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanding) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanded) {\r\n rowData.meta.expand.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.expand?.onExpand?.(rowData.current);\r\n if (!this.gridOption.expand?.multiple) {\r\n this.items.forEach(item => (item.meta.expand.isExpanding = item.meta.expand.isExpanded = false));\r\n }\r\n if (data instanceof Promise) {\r\n rowData.meta.expand.isExpanding = true;\r\n data\r\n .then(res => {\r\n rowData.meta.expand.data = res;\r\n rowData.meta.expand.isExpanded = true;\r\n })\r\n .finally(() => (rowData.meta.expand.isExpanding = false));\r\n } else {\r\n rowData.meta.expand.data = data;\r\n rowData.meta.expand.isExpanded = true;\r\n }\r\n };\r\n\r\n onSelect = (rowData: SdTableItem<T>) => {\r\n if (rowData.meta.group?.items?.length) {\r\n rowData.meta.group.items.forEach(e => (e.meta.selector.isSelected = rowData.meta.selector.isSelected));\r\n this.gridOption.selector?.onSelect?.(\r\n rowData.current,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.current)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.gridOption.selector?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selector?.onSelect?.(\r\n rowData.current,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.current)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n };\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.meta.selector.selectable && (!this.gridOption?.selector?.actions?.length || e.meta.selector.actions?.length)) {\r\n e.meta.selector.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.gridOption.selector?.onSelectAll?.(this.items.filter(e => e.meta.selector.isSelected).map(e => e.current));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n onClearSelection = (items?: SdTableItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedItems = this.items.filter(item => item.meta.selector.isSelected).map(item => item.current);\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 get gridItems(): T[] {\r\n return this.items.map(item => item.current);\r\n }\r\n\r\n detectChanges = () => this.ref.detectChanges();\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand, SdTableCommandNormal } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: SdTableItem, commands: SdTableCommand[]): Promise<SdTableCommand[]> {\r\n const results: SdTableCommand[] = [];\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: SdTableCommandNormal[] = [];\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 { SdTableCommand } from '../models/table-command.model';\r\n@Pipe({\r\n name: 'commandDisable'\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: any, command: SdTableCommand): 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 { SdTableCommand } from '../models/table-command.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdTableCommand, 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 { SdTableCommand } from '../models/table-command.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdTableCommand, 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 { SdTableColumn } from '../models/table-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: SdTableColumn): 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 { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.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: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() gridOption: SdTableOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-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: SdTableColumn, 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 { SdTableExternalFilter } from '../services/table-filter/table-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdTableExternalFilter[], field?: string): SdTableExternalFilter[] {\r\n const results: SdTableExternalFilter[] = [];\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 { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdTableColumn[], field?: string): SdTableColumn[] {\r\n const results: SdTableColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\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 { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdTableColumn } from '../models/table-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: SdTableColumn[], item: any): SdTableColumn[] {\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 { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdTableCommand } from '../../models/table-command.model';\r\nimport { SdTableItem } from '../../models/table-item.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: SdTableItem;\r\n @Input() commands: SdTableCommand[] = [];\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 { SdTableColumn } from '../models/table-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: SdTableColumn): {\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 { SdTableOption } from '../models/table-option.model';\r\nimport { SdGridConfiguration, SdGridConfigurationResult } from '../models/table-option-config.model';\r\nimport { SdTableConfigurationService } from '../services/table-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: SdTableConfigurationService) { }\r\n transform(configuration: SdGridConfiguration, gridOption: SdTableOption, sdSubInformation: SdMaterialSubInformationDefDirective): SdGridConfigurationResult {\r\n const a = this.gridConfigurationService.generateConfigurationResult(configuration, gridOption, sdSubInformation);\r\n console.log(a);\r\n return a;\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 { SdTableOption } from '../../models/table-option.model';\r\nimport {\r\n SdGridConfigurationResult,\r\n SdGridConfiguration,\r\n SdGridConfigurationCache,\r\n SdColumnConfiguration,\r\n} from '../../models/table-option-config.model';\r\nimport { SdTableConfigurationService } from '../../services/table-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 { SdTableColumn } from '../../models/table-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: SdTableOption;\r\n @Input() key: string;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdTableColumn>;\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: SdTableConfigurationService\r\n ) {}\r\n\r\n ngOnInit() {}\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 };\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<SdTableColumn[]>) {\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 { SdTableColumn } from '../models/table-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: SdTableColumn): 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 { SdTableItem } from '../models/table-item.model';\r\nimport { SdTableAction, SdTableActionNormal } from '../models/table-option-selector.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdTableAction): SdTableAction => {\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: SdTableItem[], actions: SdTableAction[]): SdTableAction[] => {\r\n const results: SdTableAction[] = [];\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: SdTableActionNormal[] = [];\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.meta.selector.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.meta.selector.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 { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: SdTableItem[], rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { disabled, actions } = selection;\r\n if (!actions?.length) {\r\n if (!disabled) {\r\n rowData.meta.selector.selectable = true;\r\n return false;\r\n }\r\n rowData.meta.selector.selectable = !disabled(rowData, selectedItems);\r\n return !rowData.meta.selector.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.meta.selector.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.meta.selector.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.meta.selector.actions.includes(hash(childAction))) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if(rowData.meta.selector.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 { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionVisibleSelectAll'\r\n})\r\nexport class SdSelectionVisibleSelectAllPipe implements PipeTransform {\r\n transform = async (items: SdTableItem[], selection: SdTableOptionSelector): 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.meta.selector.actions?.length);\r\n if (first) {\r\n for (const action of first.meta.selector.actions) {\r\n if (items.filter(t => t.meta.selector.actions?.length).every(e => e.meta.selector.actions.includes(action))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdMaterialCellDefDirective } from '../../directives/sd-material-cell-def.directive';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() sdId: string;\r\n @Input() value: any;\r\n @Input() key: string;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() gridOption: SdTableOption;\r\n @Input() cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n @Input() idx: number;\r\n constructor(\r\n ) { }\r\n}\r\n","import { SdBadgeColor } from '@sd-angular/core/badge';\r\n\r\nexport type SdTableColumn<T = any> =\r\n | SdTableColumnText<T>\r\n | SdTableColumnNumber<T>\r\n | SdTableColumnBool<T>\r\n | SdTableColumnDate<T>\r\n | SdTableColumnValues<T>\r\n | SdTableColumnChildren<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\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\r\nexport type SdTableColumnTransformFunc<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 SdTableColumnBase<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?: SdTableColumnTransformFunc<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 SdTableColumnText<T = any> extends SdTableColumnBase<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 SdTableColumnNumber<T = any> extends SdTableColumnBase<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 SdTableColumnBool<T = any> extends SdTableColumnBase<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 SdTableColumnDate<T = any> extends SdTableColumnBase<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 SdTableColumnValues<T = any> extends SdTableColumnBase<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:\r\n | any[]\r\n | ((searchText?: string, isFormValue?: boolean) => Promise<any[]>)\r\n | ((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\ntype SdTableColumnNormal<T> = Exclude<SdTableColumn<T>, SdTableColumnChildren<T>>;\r\n\r\nexport interface SdTableColumnChildren<T = any> extends SdTableColumnBase<T> {\r\n type: 'children';\r\n children: SdTableColumnNormal<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, SdTableColumn } from '../../models/table-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();\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; display: string }[] = [];\r\n column: SdTableColumn;\r\n @Input('column') set _column(column: SdTableColumn) {\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 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.ref.markForCheck();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.meta.selector.actions = rowData.meta.selector.actions || [];\r\n if (!actions?.length) {\r\n rowData.meta.selector.selectable = true;\r\n return rowData.meta.selector.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.meta.selector.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.meta.selector.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.meta.selector.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.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.meta.selector.selectable = !!rowData.meta.selector.actions?.length;\r\n if (!rowData.meta.selector.selectable || !groupedActions.length || rowData?.meta.group?.items?.length) {\r\n return rowData.meta.selector.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.meta.selector.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdTableOption } from '../../models/table-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: SdTableOption;\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 { SdTableColumn } from '../models/table-column.model';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\r\nimport { SdTableItem } from '../models/table-item.model';\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 tableItem: SdTableItem,\r\n column: SdTableColumn,\r\n gridOption: SdTableOption): Promise<SdCellView> {\r\n const { displayOnEmpty } = gridOption;\r\n const rowData = tableItem.current;\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 return result;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { MapToSdTableItem, SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'sdGroup',\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: SdTableItem[], gridOption: SdTableOption): SdTableItem[] {\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]: SdTableItem[];\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: SdTableItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n const result = MapToSdTableItem({});\r\n result.meta.group.items = groupItem[key];\r\n result.meta.group.htmlTemplate = htmlTemplate(groupItem[key]);\r\n results.push(result);\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 { SdTable } from './table.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 { SdTableFilterService } from './services/table-filter/table-filter.service';\r\nimport { SdColumnChildrenFilterPipe } from './pipes/column-children-filter.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 { SdPopupGridConfiguration } from './components/popup-grid-configuration/popup-grid-configuration.component';\r\nimport { SdTableConfigurationService } from './services/table-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 { SdDesktopCell } from './components/desktop-cell/desktop-cell.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 SdDesktopCellView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdTable,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdPopupGridConfiguration,\r\n SdGridFilter,\r\n SdPopupFilter,\r\n\r\n // Pipes\r\n SdGridConfigurationResultPipe,\r\n SdColumnChildrenFilterPipe,\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 SdCellViewPipe,\r\n SdGroupPipe,\r\n ],\r\n exports: [\r\n SdTable,\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 SdTableFilterService,\r\n SdTableConfigurationService,\r\n SdColumnValuesPipe,\r\n {\r\n provide: MatPaginatorIntl,\r\n useClass: MatPaginatorIntlCro,\r\n },\r\n ],\r\n})\r\nexport class SdTableModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {SdColumnInlineFilter as ɵe} from './src/lib/components/column-inline-filter/column-inline-filter.component';\nexport {SdDesktopCellView as ɵc} from './src/lib/components/desktop-cell-view/desktop-cell-view.component';\nexport {SdDesktopCell as ɵb} from './src/lib/components/desktop-cell/desktop-cell.component';\nexport {SdDesktopCommand as ɵd} from './src/lib/components/desktop-command/desktop-command.component';\nexport {SdGridFilter as ɵf} from './src/lib/components/grid-filter/grid-filter.component';\nexport {SdPopupFilter as ɵg} from './src/lib/components/popup-filter/popup-filter.component';\nexport {SdPopupGridConfiguration as ɵr} from './src/lib/components/popup-grid-configuration/popup-grid-configuration.component';\nexport {SdGridQuickAction as ɵa} from './src/lib/components/quick-action/quick-action.component';\nexport {SdMaterialCellDefDirective as ɵj} from './src/lib/directives/sd-material-cell-def.directive';\nexport {SdMaterialEmptyDataDefDirective as ɵi} from './src/lib/directives/sd-material-empty-data-def.directive';\nexport {SdMaterialFilterDefDirective as ɵl} from './src/lib/directives/sd-material-filter-def.directive';\nexport {SdMaterialFooterDefDirective as ɵk} from './src/lib/directives/sd-material-footer-def.directive';\nexport {SdMaterialSubInformationDefDirective as ɵh} from './src/lib/directives/sd-material-sub-information-def.directive';\nexport {ISdTableConfiguration as ɵm,TABLE_CONFIG as ɵn} from './src/lib/models/table-configuration.model';\nexport {SdCellViewPipe as ɵbi} from './src/lib/pipes/cell-view.pipe';\nexport {SdColumnBadgePipe as ɵbb} from './src/lib/pipes/column-badge.pipe';\nexport {SdColumnChildrenFilterPipe as ɵt} from './src/lib/pipes/column-children-filter.pipe';\nexport {SdColumnHtmlTemplatePipe as ɵy} from './src/lib/pipes/column-html-template.pipe';\nexport {SdColumnTooltipPipe as ɵba} from './src/lib/pipes/column-tooltip.pipe';\nexport {SdColumnTransformPipe as ɵz} from './src/lib/pipes/column-transform.pipe';\nexport {SdColumnValuesPipe as ɵp} from './src/lib/pipes/column-values.pipe';\nexport {SdCommandDisablePipe as ɵv} from './src/lib/pipes/command-disable.pipe';\nexport {SdCommandFilterPipe as ɵu} from './src/lib/pipes/command-filter.pipe';\nexport {SdCommandIconPipe as ɵw} from './src/lib/pipes/command-icon.pipe';\nexport {SdCommandTitlePipe as ɵx} from './src/lib/pipes/command-title.pipe';\nexport {SdFilterColumnPipe as ɵbc} from './src/lib/pipes/filter-column.pipe';\nexport {SdFilterExternalPipe as ɵbd} from './src/lib/pipes/filter-external.pipe';\nexport {SdGridConfigurationResultPipe as ɵs} from './src/lib/pipes/grid-configuration-result.pipe';\nexport {SdGroupPipe as ɵbj} from './src/lib/pipes/sd-group.pipe';\nexport {SdSelectionActionFilterPipe as ɵbe} from './src/lib/pipes/selection-action-filter.pipe';\nexport {SdSelectionDisablePipe as ɵbg} from './src/lib/pipes/selection-disable.pipe';\nexport {SdSelectionVisibleSelectAllPipe as ɵbh} from './src/lib/pipes/selection-visible-select-all.pipe';\nexport {SdSelectionVisiblePipe as ɵbf} from './src/lib/pipes/selection-visible.pipe';\nexport {SdTableConfigurationService as ɵo} from './src/lib/services/table-configuration.service';\nexport {SdTableFilterService as ɵq} from './src/lib/services/table-filter/table-filter.service';"],"names":["hash","_cache","uuid.v4","_subscription","_initConfiguration","_load","_isMobileOrTablet"],"mappings":"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"}