@sd-angular/core 1.3.254 → 1.3.256

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.
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-table.umd.js","sources":["../../../../projects/sd-core/table/src/lib/directives/sd-table-cell-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-filter-def.directive.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/table/src/lib/models/table-configuration.model.ts","../../../../projects/sd-core/table/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/table/src/lib/components/table-filter/table-filter.component.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-expand-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-footer-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/services/table-filter/table-filter.service.ts","../../../../projects/sd-core/table/src/lib/components/popup-configuration/popup-configuration.component.ts","../../../../projects/sd-core/table/src/lib/components/popup-export/popup-export.component.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/components/desktop-cell-view/desktop-cell-view.component.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/components/desktop-command/desktop-command.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/sd-group.pipe.ts","../../../../projects/sd-core/table/src/lib/table.module.ts","../../../../projects/sd-core/table/src/lib/services/table-filter/table-filter.model.ts","../../../../projects/sd-core/table/sd-angular-core-table.ts"],"sourcesContent":["import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableCellDef]'\r\n})\r\nexport class SdTabelCellDefDirective {\r\n @Input() sdTableCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableFilterDef]'\r\n})\r\nexport class SdTableFilterDefDirective {\r\n @Input() sdTableFilterDef: string;\r\n defaultShowing: boolean;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { SdFilterOperator, SdTableColumn } 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 defaultOperator?:{\r\n [key in SdTableColumn['type']]?:SdFilterOperator\r\n }\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: 20,\r\n pages: [20, 50, 100, 200]\r\n }\r\n};\r\n\r\nexport const TABLE_CONFIG = new InjectionToken<ISdTableConfiguration>('sd-table.configuration');\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, SdTableFilterRegister } from '../../services/table-filter/table-filter.model';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-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: SdTableFilterRegister;\r\n @Input() set filterRegister(value: SdTableFilterRegister) {\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: SdTableFilterDefDirective[] = [];\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 SdTableFilterRegister,\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 { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { startWith } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'sd-table-filter',\r\n templateUrl: './table-filter.component.html',\r\n styleUrls: ['./table-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTableFilter 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: SdTableFilterDefDirective[] = [];\r\n filterRegister: SdTableFilterRegister;\r\n @Input('filterRegister') set _filterRegister(value: SdTableFilterRegister) {\r\n this.filterRegister = value;\r\n this.filterRegisterChange.next(this.filterRegister);\r\n }\r\n filterRegisterChange = new BehaviorSubject<SdTableFilterRegister>(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, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableExpandDef]'\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: '[sdTableFooterDef]'\r\n})\r\nexport class SdMaterialFooterDefDirective {\r\n @Input() sdTableFooterDef: string;\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 { SdSetting, SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport {\r\n SdColumnConfiguration,\r\n SdTableConfiguration,\r\n SdTableConfigurationResult,\r\n} from '../models/table-option-config.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 SUBINFORMATION: 'sdSubInformationAction',\r\n COMMAND: 'sdCommand',\r\n SELECTION: 'sdSelection',\r\n GROUP: 'sdGroup',\r\n };\r\n #prefix = 'c9e94836-6ace-4aeb-b148-4f0be63589ee';\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(TABLE_CONFIG) @Optional() public gridMaterialConfiguration: ISdTableConfiguration\r\n ) { }\r\n\r\n #getSetting = (option: SdTableOption): SdSetting<SdTableConfiguration> => {\r\n // Nếu không có key thì không lấy được setting\r\n if (!option?.key) {\r\n return null;\r\n }\r\n // Key của setting là tổ hợp từ key truyền vào và prefix để tránh chung key với các tính năng khác cũng dùng key trong core table\r\n return this.settingService.create<SdTableConfiguration>(\r\n { prefix: this.#prefix, key: option.key },\r\n {\r\n default: this.#default(option),\r\n }\r\n );\r\n };\r\n\r\n loadConfiguration = (option: SdTableOption) => {\r\n // Nếu không có key thì trả về thông tin mặc định\r\n if (!option?.key) {\r\n return this.#default(option);\r\n }\r\n const setting = this.#getSetting(option);\r\n return setting.get();\r\n };\r\n\r\n loadConfigurationResult = (option: SdTableOption, configuration: SdTableConfiguration) => {\r\n const result: SdTableConfigurationResult = {\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 } = option || {};\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 // Kiểm tra column trong config có còn được khai báo trong option\r\n // Nếu không thì ẩn column đó đi\r\n const column = option?.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 // Nếu có thêm các column mới, chèn các column đó vào cuối\r\n option?.columns?.filter(column=> !configuration?.columns?.some(e=>e.origin.field === column.field))\r\n .forEach(column =>{\r\n result.firstColumns.push({\r\n ...column,\r\n title: column.title,\r\n width: column.width,\r\n });\r\n result.firstHeaders.push(column.field);\r\n result.displayedColumns.push(column.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 if (option.expand) {\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 init = (gridOption: SdTableOption) => {\r\n return this.#getSetting(gridOption);\r\n };\r\n\r\n #default = (gridOption: SdTableOption): SdTableConfiguration => {\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","import * as hash from 'object-hash';\r\nimport { SdTableColumn } from './table-column.model';\r\nimport { SdBadgeColor } from '@sd-angular/core/badge';\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 SdTableDisplay {\r\n tooltip: string;\r\n badge: {\r\n type: 'round' | 'circle' | 'icon';\r\n color: SdBadgeColor;\r\n icon: string;\r\n };\r\n cellStyle: Record<string, string>;\r\n data: string;\r\n isHtml: boolean;\r\n click: () => void;\r\n}\r\n\r\nexport interface SdTableMeta<T> {\r\n id?: string;\r\n display: Record<string, SdTableDisplay>;\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 data: T;\r\n}\r\n\r\nexport const MapToSdTableItem = <T = any>(item: T): SdTableItem<T> => ({\r\n data: item,\r\n meta: {\r\n id: hash(item),\r\n display: {},\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 { 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 SdTableFilterRegister,\r\n SdTableFilterValue,\r\n} from './table-filter.model';\r\nimport { SdFilterOperator, SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-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, SdTableFilterRegister> = {};\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: SdTableFilterDefDirective[];\r\n columnOperator?:Record<string,SdFilterOperator>;\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: !!value?.notReload,\r\n };\r\n filterValue.set(updatedFilter);\r\n return updatedFilter;\r\n },\r\n remove: () => {\r\n filterValue.set(this.#defaultValue(args));\r\n },\r\n observer: filterValue.observer.pipe(\r\n startWith(filterValue.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(value => value || this.#defaultValue(args))\r\n ),\r\n },\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #defaultConfiguration = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\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.sdTableFilterDef] = 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: SdTableFilterDefDirective[];\r\n columnOperator?:Record<string,SdFilterOperator>\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 columnOperator:Record<string,SdFilterOperator> = args.columnOperator || {}\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 if (item?.filter?.operator?.enable && item?.filter?.operator?.default){\r\n columnOperator[item.field]=item.filter.operator.default;\r\n }\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.sdTableFilterDef] = undefined;\r\n }\r\n\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 // columnOperator\r\n columnOperator,\r\n };\r\n };\r\n\r\n #initConfiguration = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\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.sdTableFilterDef] = configuration?.inlineFilterDef?.[item.sdTableFilterDef] ?? 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: SdTableFilterDefDirective[];\r\n columnOperator?:Record<string, SdFilterOperator>\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 columnOperator:Record<string, SdFilterOperator> = args.columnOperator || {};\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 if (item?.filter?.operator?.enable && item?.filter?.operator?.default){\r\n columnOperator[item.field]=item.filter.operator.default;\r\n }\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.sdTableFilterDef] = value?.filterDef?.[item.sdTableFilterDef] ?? 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 //column Operator\r\n columnOperator\r\n };\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 { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableConfigurationResult, SdTableConfiguration } from '../../models/table-option-config.model';\r\nimport { SdTableConfigurationService } from '../../services/table-configuration.service';\r\nimport { MatTable } from '@angular/material/table';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdSetting } from '@sd-angular/core/setting';\r\n\r\n@Component({\r\n selector: 'sd-popup-configuration',\r\n templateUrl: './popup-configuration.component.html',\r\n styleUrls: ['./popup-configuration.component.scss'],\r\n})\r\nexport class SdPopupConfiguration implements OnInit {\r\n @Input() tableOption: SdTableOption;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdTableColumn>;\r\n readonly changes = new EventEmitter<SdTableConfigurationResult>();\r\n #setting: SdSetting<SdTableConfiguration>;\r\n configuration: SdTableConfiguration;\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 tableConfigurationService: 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.#setting = this.tableConfigurationService.init(this.tableOption);\r\n this.configuration = this.#setting.get();\r\n this.modal.open();\r\n };\r\n\r\n onSave = () => {\r\n this.#setting.set(this.configuration);\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n };\r\n\r\n onReset = async () => {\r\n this.notifyService.confirm('Xác nhận đưa tất cả thiết lập về mặc định').then(() => {\r\n this.#setting.remove();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n });\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 {\r\n Component,\r\n OnInit,\r\n AfterViewInit,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n Input,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n\r\nimport * as uuid from 'uuid';\r\n\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\n\r\nimport { SdLoadingService } from '@sd-angular/core/loading';\r\n\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport hash from 'object-hash';\r\nimport { MatSelectionList } from '@angular/material/list';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdExportFile, SdExportService, SdExportColumn } from '@sd-angular/core/export';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdTableColumn, SdTableOption } from '../../models';\r\nimport { SdTableConfigurationResult } from '../../models/table-option-config.model';\r\n\r\n@Component({\r\n selector: 'sd-popup-export',\r\n templateUrl: './popup-export.component.html',\r\n styleUrls: ['./popup-export.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdPopupExport implements OnInit, AfterViewInit {\r\n tableOption: SdTableOption;\r\n columns: SdExportColumn[] = [];\r\n templateName: string;\r\n enableCreating = false;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('listGroups') listGroups: MatSelectionList;\r\n\r\n selected: {\r\n [key: string]: boolean;\r\n } = {};\r\n files: SdExportFile[] = [];\r\n\r\n @Output() export = new EventEmitter<{ file: SdExportFile; columns: SdExportColumn[]; isCSV?: boolean }>();\r\n form = new FormGroup({});\r\n\r\n @Input('tableOption') set _tableOption(option: SdTableOption) {\r\n this.tableOption = option;\r\n this.columns = this.#getExportableColumns();\r\n }\r\n @Input() configuration: SdTableConfigurationResult;\r\n private get key(): string {\r\n const prefix = '93889e78-f971-4a1d-8c73-fe2321af9233';\r\n if (!this.tableOption?.export?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: this.tableOption?.export?.key,\r\n });\r\n }\r\n\r\n private get tableColumns() {\r\n const columns: SdExportColumn[] = [];\r\n this.tableOption.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.map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width,\r\n }));\r\n }\r\n private get additionalColumns() {\r\n return (this.tableOption.export?.columns?.filter(e => !e.export?.disabled) || []).map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width,\r\n }));\r\n }\r\n\r\n #getExportableColumns = (): SdExportColumn[] => {\r\n return [...this.tableColumns, ...this.additionalColumns];\r\n };\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n open = async () => {\r\n if (!this.key) {\r\n this.exportDefault();\r\n return;\r\n }\r\n this.loadFiles(null);\r\n this.selected = {};\r\n this.modal.open();\r\n this.ref.detectChanges();\r\n };\r\n\r\n #getExportColumns = () => {\r\n if (this.configuration) {\r\n const columns = [...this.tableColumns];\r\n const { firstColumns, secondColumns } = this.configuration;\r\n const displayColumns: SdTableColumn[] = [...firstColumns, ...secondColumns].reduce((first, next) => {\r\n const column = this.tableOption.columns.find(e => e.field === next.field);\r\n if (!column) {\r\n return first;\r\n }\r\n if (column.type !== 'children') {\r\n return [...first, column];\r\n }\r\n return [...first, ...column.children];\r\n }, []);\r\n const results = displayColumns\r\n .map(e => ({\r\n ...e,\r\n data: columns.find(e1 => e1.field === e.field),\r\n }))\r\n .filter(e => !!e.data)\r\n .map(e => e.data);\r\n return [...results, ...this.additionalColumns];\r\n } else {\r\n return this.columns;\r\n }\r\n };\r\n\r\n exportDefault = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: false,\r\n });\r\n };\r\n\r\n exportCSV = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: true,\r\n });\r\n };\r\n\r\n loadFiles = async (group: string = null) => {\r\n this.files = await this.exportService.filesInFolder({\r\n key: this.key,\r\n group,\r\n });\r\n this.ref.markForCheck();\r\n };\r\n\r\n #initTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.tableOption?.export?.sheets)) {\r\n for (const sheet of this.tableOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.exportService.generateTemplate({\r\n fileName: fileName || this.tableOption?.export?.fileName,\r\n columns: this.columns,\r\n sheets,\r\n });\r\n };\r\n\r\n generateTemplate = async () => {\r\n this.loadingService.start();\r\n await this.#initTemplate().finally(this.loadingService.stop);\r\n };\r\n\r\n generateAndUploadTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.tableOption?.export?.sheets)) {\r\n for (const sheet of this.tableOption?.export?.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.exportService.generateUploadTemplate({\r\n key: this.key,\r\n template: {\r\n fileName: fileName || this.tableOption?.export?.fileName,\r\n columns: this.columns.filter(e => this.selected[e.field]),\r\n sheets,\r\n },\r\n });\r\n };\r\n\r\n onExport = (file: SdExportFile) => {\r\n this.export.emit({\r\n file,\r\n columns: this.columns,\r\n });\r\n this.ref.detectChanges();\r\n };\r\n\r\n uploadTemplate = async () => {\r\n const file = await this.exportService.uploadTemplate({\r\n key: this.key,\r\n });\r\n if (file) {\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n removeFile = (file: SdExportFile) => {\r\n this.notifyService.confirm(this.translateService.translate('Remove template')).then(() => {\r\n this.exportService.removeFile({\r\n key: this.key,\r\n fileName: file.fileName,\r\n });\r\n const idx = this.files.indexOf(file);\r\n this.files.splice(idx, 1);\r\n this.files = [...this.files];\r\n this.ref.detectChanges();\r\n });\r\n };\r\n\r\n createTemplate = async () => {\r\n if (this.form.invalid) {\r\n this.form.markAllAsTouched();\r\n return;\r\n }\r\n if (!this.columns.some(e => this.selected[e.field])) {\r\n this.notifyService.notify.warning(`Vui lòng chọn cột dữ liệu để xuất`);\r\n return;\r\n }\r\n this.loadingService.start();\r\n const fileName = this.templateName + '.xlsx';\r\n try {\r\n const result = await this.generateAndUploadTemplate(fileName);\r\n if (result?.filePath) {\r\n const file: SdExportFile = {\r\n filePath: result.filePath,\r\n fileName: result.fileName,\r\n };\r\n this.onExport(file);\r\n this.templateName = null;\r\n this.enableCreating = false;\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n };\r\n\r\n templateNameValidator = (val: string) => {\r\n const { translate } = this.translateService;\r\n const regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;\r\n if (!val) {\r\n return translate('Please enter your template name');\r\n }\r\n if (val.length > 50) {\r\n return translate('Template name is too long');\r\n }\r\n if (!regex.test(val)) {\r\n return translate('Template name only contains letters, numbers and spaces');\r\n }\r\n return null;\r\n };\r\n}\r\n","import {\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 { MatTable } from '@angular/material/table';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport * as uuid from 'uuid';\r\nimport { SdTableFilterRegister, 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, Subject, combineLatest } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdFilterOperator, SdTableColumn, SdTableColumnLazyValues, SdTableColumnValues } from './models/table-column.model';\r\nimport { SdTabelCellDefDirective } from './directives/sd-table-cell-def.directive';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { SdTableFilter } from './components/table-filter/table-filter.component';\r\nimport { SdTableFilterDefDirective } from './directives/sd-table-filter-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-table-expand-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-table-footer-def.directive';\r\nimport { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';\r\nimport { SdTableConfigurationResult } 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 { SdScrollDirective } from '@sd-angular/core/common';\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\nimport { SdPopupConfiguration } from './components/popup-configuration/popup-configuration.component';\r\nimport { SdLoadingService } from '@sd-angular/core/loading';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\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 @ViewChild(MatTable) table: MatTable<any>;\r\n @ViewChild(SdPopupConfiguration) popupConfiguration: SdPopupConfiguration;\r\n // Export\r\n @ViewChild(SdPopupExport) sdPopupExport: SdPopupExport;\r\n #gridId = uuid.v4();\r\n @ViewChild(SdScrollDirective) sdScroll: SdScrollDirective;\r\n filterRegister: SdTableFilterRegister;\r\n key = uuid.v4();\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\r\n @ViewChild(SdTableFilter) tableFilter: SdTableFilter;\r\n tableOption: SdTableOption<T>;\r\n configuration: SdTableConfigurationResult;\r\n @Input() set option(option: SdTableOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.tableOption = option;\r\n this.#loadCompleted = false;\r\n const setting = this.tableConfigurationService.init(this.tableOption);\r\n if (setting) {\r\n this.#subscription.add(\r\n setting.observer.pipe(startWith(setting.subject.getValue())).subscribe(() => {\r\n const configurationResult = this.tableConfigurationService.loadConfigurationResult(this.tableOption, setting.get());\r\n const displayColumns = configurationResult.displayedColumns || [];\r\n this.loadingService.start();\r\n this.ref.detectChanges();\r\n this.#loadValues(this.tableOption.columns.filter(column => displayColumns.includes(column.field)))\r\n .then(() => {\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.tableOption);\r\n })\r\n .finally(() => {\r\n this.loadingService.stop();\r\n this.ref.detectChanges();\r\n });\r\n })\r\n );\r\n } else {\r\n const configuration = this.tableConfigurationService.loadConfiguration(this.tableOption);\r\n const configurationResult = this.tableConfigurationService.loadConfigurationResult(this.tableOption, configuration);\r\n const displayColumns = configurationResult.displayedColumns || [];\r\n this.loadingService.start();\r\n this.ref.detectChanges();\r\n this.#loadValues(this.tableOption.columns.filter(column => displayColumns.includes(column.field)))\r\n .then(() => {\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.tableOption);\r\n })\r\n .finally(() => {\r\n this.loadingService.stop();\r\n this.ref.detectChanges();\r\n });\r\n }\r\n }\r\n }\r\n #optionChanges = new Subject<SdTableOption>();\r\n\r\n #localItems: SdTableItem<T>[] = [];\r\n items: SdTableItem<T>[] = [];\r\n selectedTableItems: SdTableItem<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 // Cell Def\r\n @ContentChildren(SdTabelCellDefDirective) sdCellDefs = new QueryList<SdTabelCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdTabelCellDefDirective;\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(SdTableFilterDefDirective) sdFilterDefs = new QueryList<SdTableFilterDefDirective>();\r\n filterDefs: SdTableFilterDefDirective[] = [];\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 cacheValues: Record<string, any[]> = {};\r\n #cacheObjValues: Record<string, Record<string, string>> = {};\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n @Inject(TABLE_CONFIG)\r\n @Optional()\r\n public tableConfiguration: ISdTableConfiguration,\r\n private tableConfigurationService: SdTableConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private gridFilterService: SdTableFilterService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\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.tableOption)),\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.sdTableCellDef) {\r\n this.cellDef[cellDef.sdTableCellDef] = 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 // NOTE: ContentChildren nên subcribe trong AfterViewInit\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdTableFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdTableFooterDef] = 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.tableConfiguration?.paginate?.pageSize ?? DEFAULT_TABLE_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.tableConfiguration?.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) {\r\n if (!column.filter?.operator?.list?.length) {\r\n if (column.type === 'string') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListString || [];\r\n }\r\n if (column.type === 'number') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListNumber || [];\r\n }\r\n if (column.type === 'values' || column.type === 'lazy-values') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListValues || [];\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListDate || [];\r\n }\r\n }\r\n\r\n this.columnOperator[column.field] = this.tableConfiguration?.filter?.operator?.defaultOperator?.[column.type] || undefined;\r\n if (column.filter.operator.default && column.filter.operator.list.some(el => el === column.filter.operator.default)) {\r\n this.columnOperator[column.field] = column.filter.operator.default;\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.tableOption) {\r\n if (!this.filterRegister) {\r\n this.filterRegister = this.gridFilterService.register(this.tableOption?.filter, {\r\n id: this.#gridId,\r\n columns: this.tableOption?.columns,\r\n externalFilters: this.tableOption?.filter?.externalFilters,\r\n filterDefs: this.filterDefs,\r\n columnOperator: this.columnOperator,\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 if (this.#paginator) {\r\n this.#paginator.pageIndex = 0;\r\n }\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.tableOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(tableItem => {\r\n const item = tableItem.data;\r\n for (const column of columns) {\r\n const { field, type } = column;\r\n const filterValue: string = (rawColumnFilter[field as string] || '').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' || type === 'lazy-values') {\r\n const columnType = column as SdTableColumnValues<T> | SdTableColumnLazyValues<T>;\r\n const isMultiple = ['MULTIPLE'].includes(columnType.option.selection);\r\n if (isMultiple) {\r\n const columnValues: string[] =\r\n (item[field] as any).map(i => (i[columnType.option.valueField] ?? '').toString().trim().toLowerCase()) ?? [];\r\n const filterValues: string[] = rawColumnFilter[field as string]?.map(v => (v ?? '').toString().trim().toLowerCase());\r\n if (filterValues?.length && filterValues.every(fv => !columnValues.includes(fv))) {\r\n return false;\r\n }\r\n } else {\r\n if (columnValue !== filterValue) {\r\n return false;\r\n }\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 data = tableItemCurrent.data;\r\n const next = tableItemNext.data;\r\n if (type === 'number') {\r\n return (data[field as string] || 0) - (next[field as string] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(data[field as string] || '').getTime();\r\n const d2 = new Date(data[field as string] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (data[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.tableOption?.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 this.ref.detectChanges();\r\n if (this.tableOption.type === 'server') {\r\n const { items } = this.tableOption;\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 return {\r\n items: await this.#format(data?.items, this.tableOption.columns).finally(() => {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }),\r\n total: data?.total || 0,\r\n };\r\n }\r\n if (force) {\r\n const { items } = this.tableOption;\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 = await this.#format(data, this.tableOption.columns);\r\n }\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n return this.#filterLocal(this.#localItems, filterReq);\r\n };\r\n\r\n #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.tableOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n setTimeout(() => {\r\n this.table?.updateStickyColumnStyles();\r\n }, 0);\r\n };\r\n\r\n reload = async (force: boolean = true) => {\r\n this.tableFilter?.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.tableOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.tableOption.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.tableOption.type === 'server') {\r\n let result = this.tableOption.items(filterInfo);\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof this.tableOption.items === 'function') {\r\n const results = this.tableOption.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.tableOption.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.tableOption.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.tableOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n };\r\n\r\n onExport = async (args?: { file?: SdExportFile; columns?: SdExportColumn[]; isCSV?: boolean }) => {\r\n const { file, isCSV } = { ...args };\r\n try {\r\n let columns = this.#getExportColumns(args?.columns);\r\n const pageSize = this.tableOption?.export?.maxItemsPerRequest || 1000;\r\n const batch = this.tableOption?.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.tableOption.export?.mapping) {\r\n const results = this.tableOption.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 // Nếu là date thì convert theo đúng format ISO\r\n obj[column.field] = Date.toFormat(date, 'MM/dd/yyyy');\r\n } else if (column.type === 'datetime') {\r\n let date = item[column.field];\r\n // Nếu là datetime thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'MM/dd/yyyy HH:mm:ss');\r\n } else if (column.type === 'time') {\r\n let date = item[column.field];\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' || column.type === 'lazy-values') {\r\n const value = item[column.field];\r\n if (column.type === 'lazy-values' && typeof column.option.mapValue === 'function') {\r\n const val = column.option.mapValue(value, item);\r\n const vals = (Array.isArray(val) ? val : [val]).filter(e => !!e?.toString());\r\n obj[column.field] = vals\r\n .map(val => this.#cacheObjValues[column.field]?.[val]?.[column.option.displayField] || val)\r\n ?.join(', ');\r\n } else {\r\n const vals = (Array.isArray(value) ? value : [value]).filter(e => !!e?.toString());\r\n obj[column.field] = vals\r\n .map(val => this.#cacheObjValues[column.field]?.[val]?.[column.option.displayField] || val)\r\n ?.join(', ');\r\n }\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n for (const exportColumn of columns) {\r\n await handle(exportColumn);\r\n }\r\n items.push(obj);\r\n }\r\n };\r\n while (pageNumber * pageSize < total) {\r\n promises.push(this.#exportedItems(pageNumber, pageSize));\r\n pageNumber++;\r\n if (promises.length < batch) {\r\n continue;\r\n }\r\n await handleData();\r\n }\r\n if (promises.length > 0) {\r\n await handleData();\r\n }\r\n if (file?.filePath) {\r\n await this.exportService.exportByTemplate({\r\n filePath: file.filePath,\r\n fileName: file.fileName,\r\n columns,\r\n items,\r\n });\r\n return;\r\n }\r\n if (isCSV) {\r\n await this.exportService.exportCSV({\r\n columns,\r\n items,\r\n fileName: this.tableOption?.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.tableOption?.export?.sheets)) {\r\n for (const sheet of this.tableOption.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.tableOption?.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 = (columns?: SdExportColumn[]) => {\r\n let tableColumns: SdExportColumn[] = [];\r\n // Lấy column từ option\r\n this.tableOption.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 tableColumns.push(childColumn);\r\n });\r\n return;\r\n }\r\n tableColumns.push({\r\n field: column.field,\r\n title: column.title,\r\n description: column.description,\r\n width: column.width,\r\n });\r\n });\r\n // Lấy columns từ configuration\r\n if (this.configuration) {\r\n const columns = [...tableColumns];\r\n const { firstColumns, secondColumns } = this.configuration;\r\n const displayColumns: SdTableColumn[] = [...firstColumns, ...secondColumns].reduce((first, next) => {\r\n const column = this.tableOption.columns.find(e => e.field === next.field);\r\n if (!column) {\r\n return first;\r\n }\r\n if (column.type !== 'children') {\r\n return [...first, column];\r\n }\r\n const children = column.children;\r\n return [...first, ...children];\r\n }, []);\r\n tableColumns = displayColumns\r\n .map(e => ({\r\n ...e,\r\n data: columns.find(e1 => e1.field === e.field),\r\n }))\r\n .filter(e => !!e.data)\r\n .map(e => e.data);\r\n }\r\n // Chỉ lấy các columns được thiết lập\r\n const columnFields = columns?.map(e => e.field) || [];\r\n return [...tableColumns, ...(this.tableOption.export?.columns?.filter(e => !e.export?.disabled) || [])].filter(\r\n column => !columnFields?.length || columnFields.includes(column.field)\r\n );\r\n };\r\n\r\n exportExcel = () => {\r\n this.onExport();\r\n };\r\n\r\n exportCSV = () => {\r\n this.onExport({ isCSV: true });\r\n };\r\n\r\n onFilterChange = () => {\r\n this.tableFilter?.updateFilter?.();\r\n this.filterRegister.value.set({\r\n columnOperator: this.columnOperator || {},\r\n columnFilter: this.columnFilter,\r\n });\r\n };\r\n\r\n onExpand = async (rowData: SdTableItem<T>) => {\r\n if (this.tableOption.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.tableOption?.expand?.onExpand?.(rowData.data);\r\n if (!this.tableOption.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.tableOption.selector?.onSelect?.(\r\n rowData.data,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.data)\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.tableOption.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.tableOption.selector?.onSelect?.(\r\n rowData.data,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.data)\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.tableOption?.selector?.actions?.length || e.meta.selector.actions?.length)) {\r\n e.meta.selector.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.tableOption.selector?.onSelectAll?.(this.items.filter(e => e.meta.selector.isSelected).map(e => e.data));\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.selectedTableItems = this.items.filter(item => item.meta.selector.isSelected);\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 (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 dataItems(): T[] {\r\n return this.items.map(item => item.data);\r\n }\r\n\r\n get selectedItems(): T[] {\r\n return this.selectedTableItems.map(item => item.data);\r\n }\r\n\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n #loadValues = async (columns: SdTableColumn[]) => {\r\n const promises: Promise<{\r\n key: string;\r\n valueField: string;\r\n displayField: string;\r\n data: any[];\r\n }>[] = [];\r\n for (const column of columns) {\r\n if (column.type === 'values' && !this.cacheValues[column.field]) {\r\n if (typeof column.option.items === 'function') {\r\n promises.push(\r\n column.option\r\n .items()\r\n .then(data => ({\r\n key: column.field,\r\n valueField: column.option.valueField,\r\n displayField: column.option.displayField,\r\n data: Array.isArray(data) ? data : [],\r\n }))\r\n .catch(err => {\r\n console.error(err);\r\n return {\r\n key: column.field,\r\n valueField: column.option.valueField,\r\n displayField: column.option.displayField,\r\n data: [],\r\n };\r\n })\r\n );\r\n } else {\r\n this.cacheValues[column.field] = column.option.items.map(e => ({\r\n [column.option.valueField]: e?.[column.option.valueField],\r\n [column.option.displayField]: e?.[column.option.displayField],\r\n }));\r\n this.#cacheObjValues[column.field] = Array.toObject(this.cacheValues[column.field], column.option.valueField);\r\n }\r\n }\r\n }\r\n if (promises.length) {\r\n const results = await Promise.all(promises);\r\n for (const result of results) {\r\n this.cacheValues[result.key] = result.data.map(e => ({\r\n [result.valueField]: e?.[result.valueField],\r\n [result.displayField]: e?.[result.displayField],\r\n }));\r\n this.#cacheObjValues[result.key] = Array.toObject(this.cacheValues[result.key], result.valueField);\r\n }\r\n }\r\n };\r\n\r\n #format = async <T = any>(rawItems: T[], columns: SdTableColumn[]) => {\r\n const items = rawItems.map(MapToSdTableItem);\r\n for (const column of columns) {\r\n // Clickable\r\n const { field, cellStyle, click, tooltip, htmlTemplate, transform } = column;\r\n if (!transform && !htmlTemplate && column.type === 'lazy-values' && typeof column.option.views === 'function') {\r\n const {\r\n option: { views, mapValue },\r\n } = column;\r\n this.#cacheObjValues[field] = this.#cacheObjValues[field] || {};\r\n const values = items\r\n .map(item => {\r\n if (typeof mapValue === 'function') {\r\n return mapValue(item.data?.[field], item.data);\r\n }\r\n return item.data?.[field];\r\n })\r\n .filter(val => !!val?.toString())\r\n .reduce<string[]>((current, next) => [...current, ...(Array.isArray(next) ? next : [next])], [])\r\n .filter(val => !Object.keys(this.#cacheObjValues[field]).includes(val))\r\n .union();\r\n\r\n if (values.length) {\r\n const lazyItems: any[] = (\r\n await views(values).catch(err => {\r\n console.error(err);\r\n return [];\r\n })\r\n )\r\n .filter(item => values.includes(item?.[column.option.valueField]))\r\n .map(e => ({\r\n [column.option.valueField]: e?.[column.option.valueField],\r\n [column.option.displayField]: e?.[column.option.displayField],\r\n }));\r\n Object.assign(this.#cacheObjValues[field], Array.toObject(lazyItems, column.option.valueField) || {});\r\n }\r\n }\r\n for (const item of items) {\r\n const rowData = item.data;\r\n const value = rowData?.[field];\r\n item.meta.display[field] = {\r\n badge: undefined,\r\n cellStyle: column.type === 'number' ? { 'text-align': 'right!important' } : undefined,\r\n data: value,\r\n isHtml: false,\r\n tooltip: typeof tooltip === 'function' ? tooltip(value, rowData) : undefined,\r\n click: typeof click === 'function' ? () => click(value, rowData) : undefined,\r\n };\r\n const display = item.meta.display[field];\r\n // Display\r\n if (typeof htmlTemplate === 'function') {\r\n display.isHtml = true;\r\n display.data = htmlTemplate(value, rowData);\r\n } else if (typeof transform === 'function') {\r\n const newValue = transform(value, rowData);\r\n if (newValue instanceof Promise) {\r\n display.data = await newValue;\r\n } else {\r\n display.data = newValue;\r\n }\r\n } else {\r\n if (column.type === 'date' || column.type === 'datetime' || column.type === 'time') {\r\n const date = Date.toFormat(value, 'dd/MM/yyyy');\r\n let time = Date.toFormat(value, 'HH:mm:ss');\r\n if (time?.endsWith('00')) {\r\n time = Date.toFormat(value, 'HH:mm');\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n if (column.type === 'datetime') {\r\n display.isHtml = true;\r\n display.data = `<span class=\"d-block T14R text-black400\">${time}</span><span class=\"d-block T14R\">${date}</span>`;\r\n } else {\r\n display.data = date;\r\n }\r\n }\r\n if (column.type === 'time') {\r\n display.data = time;\r\n }\r\n }\r\n if (column.type === 'values' || column.type === 'lazy-values') {\r\n if (column.type === 'lazy-values' && typeof column.option.mapValue === 'function') {\r\n const val = column.option.mapValue(value, rowData);\r\n const vals = (Array.isArray(val) ? val : [val]).filter(e => !!e?.toString());\r\n display.data = vals.map(val => this.#cacheObjValues[field]?.[val]?.[column.option.displayField] || val)?.join(', ');\r\n } else {\r\n const vals = (Array.isArray(value) ? value : [value]).filter(e => !!e?.toString());\r\n display.data = vals.map(val => this.#cacheObjValues[field]?.[val]?.[column.option.displayField] || val)?.join(', ');\r\n }\r\n }\r\n if (column.type === 'number' && Number.isNumber(value)) {\r\n display.data = 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 display.data = value === true ? option?.displayOnTrue || 'True' : option?.displayOnFalse || 'False';\r\n } else {\r\n display.data = null;\r\n }\r\n }\r\n // Badge\r\n if ((column.type === 'string' || column.type === 'number' || column.type === 'values') && column.badge) {\r\n display.badge = {\r\n type: !column?.badgeType ? 'icon' : 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 display.badge = {\r\n type: 'circle',\r\n color: !!value ? 'success' : 'danger',\r\n icon: null,\r\n };\r\n }\r\n }\r\n }\r\n }\r\n return items;\r\n };\r\n\r\n onOperatorChange = (column: SdTableColumn, operator: SdFilterOperator) => {\r\n this.tableOption?.filter?.operatorChange?.(column, operator);\r\n };\r\n\r\n trackBy = (index: number, item: SdTableItem) => {\r\n return item.meta.id;\r\n };\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.data);\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.data);\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\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandDisable',\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: SdTableItem, command: SdTableCommand): boolean {\r\n if ('disabled' in command) {\r\n const { disabled } = command;\r\n if (typeof disabled === 'boolean') {\r\n return disabled;\r\n }\r\n return disabled(item.data);\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: SdTableItem): string {\r\n if (!command?.icon) {\r\n return undefined;\r\n }\r\n if (typeof (command.icon) === 'string') {\r\n return command.icon;\r\n }\r\n return command.icon(item.data);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: SdTableItem): string {\r\n if (!command?.title) {\r\n return undefined;\r\n }\r\n if (typeof (command.title) === 'string') {\r\n return command.title;\r\n }\r\n return command.title(item.data);\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() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n constructor(\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 { 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 { 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 } from '@angular/core';\r\nimport { SdTabelCellDefDirective } from '../../directives/sd-table-cell-def.directive';\r\nimport { SdTableColumn } from '../../models/table-column.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() value: any;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() cellDef: {\r\n [column: string]: SdTabelCellDefDirective\r\n } = {};\r\n constructor(\r\n ) { }\r\n}\r\n","import { SdBadgeColor } from '@sd-angular/core/badge';\r\nimport { SdTabelCellDefDirective } from '../directives/sd-table-cell-def.directive';\r\nimport { TemplateRef } from '@angular/core';\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 | SdTableColumnLazyValues<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 | 'NULL'\r\n | 'NOT_NULL';\r\n\r\nexport const SdFilterOperators: { value: SdFilterOperator; symbol?: string; display: string }[] = [\r\n {\r\n value: 'EQUAL',\r\n symbol: '=',\r\n display: 'Bằng',\r\n },\r\n {\r\n value: 'NOT_EQUAL',\r\n symbol: '≠',\r\n display: 'Không bằng',\r\n },\r\n {\r\n value: 'GREATER_THAN',\r\n symbol: '>',\r\n display: 'Lớn hơn',\r\n },\r\n {\r\n value: 'LESS_THAN',\r\n symbol: '<',\r\n display: 'Nhỏ hơn',\r\n },\r\n {\r\n value: 'GREATER_OR_EQUAL',\r\n symbol: '≥',\r\n display: 'Lớn hơn, hoặc bằng',\r\n },\r\n {\r\n value: 'LESS_OR_EQUAL',\r\n symbol: '≤',\r\n display: 'Nhỏ hơn, hoặc bằng',\r\n },\r\n {\r\n value: 'CONTAIN',\r\n symbol: 'join_inner',\r\n display: 'Chứa',\r\n },\r\n {\r\n value: 'NOT_CONTAIN',\r\n symbol: 'join',\r\n display: 'Không chứa',\r\n },\r\n {\r\n value: 'START_WITH',\r\n symbol: 'line_start_circle',\r\n display: 'Bắt đầu bởi',\r\n },\r\n {\r\n value: 'END_WITH',\r\n symbol: 'line_end_circle',\r\n display: 'Kết thúc bởi',\r\n },\r\n {\r\n value: 'IN',\r\n symbol: 'checklist_rtl',\r\n display: 'Nằm trong',\r\n },\r\n {\r\n value: 'NOT_IN',\r\n symbol: 'event_list',\r\n display: 'Không nằm trong',\r\n },\r\n {\r\n value: 'NULL',\r\n symbol: 'motion_photos_off',\r\n display: 'Là rỗng',\r\n },\r\n {\r\n value: 'NOT_NULL',\r\n symbol: 'adjust',\r\n display: 'Không rỗng',\r\n },\r\n];\r\n\r\nexport type 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: Extract<keyof T, 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 cellStyle?: (value: any, rowData: T) => Record<string, string>;\r\n htmlTemplate?: (value: any, rowData: T) => 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 default?:SdFilterOperator;\r\n enable?: boolean;\r\n list?: SdFilterOperator[];\r\n };\r\n };\r\n export?: {\r\n disabled?: boolean;\r\n };\r\n cellDef?: TemplateRef<SdTabelCellDefDirective>;\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}\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}\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}\r\n\r\ninterface SdTableColumnDate<T = any> extends SdTableColumnBase<T> {\r\n type: 'date' | 'datetime' | 'time';\r\n filter?: SdTableColumnBase['filter'] & { useFilterDate?: boolean }\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?: 'icon' | 'circle' | 'round';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: any[] | (() => Promise<any[]>);\r\n selection?: 'AUTOCOMPLETE' | 'MULTIPLE' | 'MULTIPLEAUTOCOMPLETE';\r\n };\r\n}\r\n\r\nexport interface SdTableColumnLazyValues<T = any> extends SdTableColumnBase<T> {\r\n type: 'lazy-values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: (searchText: string) => Promise<any[]>; // Filter\r\n // Nếu không có tranform hay htmlTemplate cần khai báo views\r\n views?: (values: string[]) => Promise<any[]>; // Hiển thị\r\n mapValue?: (value: any, rowData?: T) => string | string[]; // Một số trường hợp dữ liệu của field là object hoặc muốn value lấy dữ liệu khác thì sử dụng hàm này\r\n selection?: 'MULTIPLE';\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<SdFilterOperator>();\r\n @Output() operatorChange = new EventEmitter<SdFilterOperator>();\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 items: any[] | ((searchText: string) => Promise<any[]>) = [];\r\n @Input() cacheValues: Record<string, any[]>;\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 if (this.column.type === 'values') {\r\n if (Array.isArray(this.column.option.items)) {\r\n this.items = this.column.option.items;\r\n } else {\r\n this.items = this.cacheValues?.[column.field] || []\r\n }\r\n } else if (this.column.type === 'lazy-values') {\r\n this.items = this.column.option.items;\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 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?.filter?.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.operatorChange.emit(this.#inlineOperator);\r\n this.ref.markForCheck();\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { 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.data)) {\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.data)) {\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\nimport { SdTableItem } from '../../models/table-item.model';\r\nimport { SdTableAction } from '../../models/table-option-selector.model';\r\n\r\n@Component({\r\n selector: 'sd-table-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 SdTableQuickAction {\r\n @Input() tableOption: SdTableOption;\r\n @Input() selectedTableItems: SdTableItem[];\r\n @Output() clear = new EventEmitter();\r\n constructor() {}\r\n onClear = () => {\r\n this.clear.emit();\r\n };\r\n\r\n onClickAction = (action: SdTableAction) => {\r\n if ('click' in action) {\r\n action?.click(this.selectedTableItems.map(e => e.data));\r\n }\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 { MatIconModule } from '@angular/material/icon';\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 { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\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 { SdDesktopCellView } from './components/desktop-cell-view/desktop-cell-view.component';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SdTabelCellDefDirective } from './directives/sd-table-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 { SdTableFilter } from './components/table-filter/table-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 { SdDesktopCommand } from './components/desktop-command/desktop-command.component';\r\nimport { SdTableFilterDefDirective } from './directives/sd-table-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-table-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-table-expand-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdPopupConfiguration } from './components/popup-configuration/popup-configuration.component';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { MatListModule } from '@angular/material/list';\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 { SdTableQuickAction } from './components/quick-action/quick-action.component';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdGroupPipe } from './pipes/sd-group.pipe';\r\nimport { SdGroupModule } from '@sd-angular/core/group';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { MatChipsModule } from '@angular/material/chips';\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}/${length}`;\r\n };\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\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 MatSlideToggleModule,\r\n MatCheckboxModule,\r\n MatListModule,\r\n MatChipsModule,\r\n CdkTableModule,\r\n DragDropModule,\r\n SdFormModule,\r\n SdServiceModule,\r\n SdCommonModule,\r\n SdGroupModule,\r\n ],\r\n declarations: [\r\n SdTableQuickAction,\r\n SdDesktopCell,\r\n SdDesktopCellView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdTable,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdTabelCellDefDirective,\r\n SdTableFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdPopupConfiguration,\r\n SdTableFilter,\r\n SdPopupFilter,\r\n SdPopupExport,\r\n // Pipes\r\n SdCommandFilterPipe,\r\n SdCommandDisablePipe,\r\n SdCommandIconPipe,\r\n SdCommandTitlePipe,\r\n SdColumnTooltipPipe,\r\n SdFilterColumnPipe,\r\n SdFilterExternalPipe,\r\n SdSelectionActionFilterPipe,\r\n SdSelectionVisiblePipe,\r\n SdSelectionDisablePipe,\r\n SdSelectionVisibleSelectAllPipe,\r\n SdGroupPipe,\r\n ],\r\n exports: [\r\n SdTable,\r\n SdMaterialFooterDefDirective,\r\n SdTabelCellDefDirective,\r\n SdTableFilterDefDirective,\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 {\r\n provide: MatPaginatorIntl,\r\n useClass: MatPaginatorIntlCro,\r\n },\r\n ],\r\n})\r\nexport class SdTableModule {}\r\n","import { Observable } from 'rxjs';\r\nimport { SdFilterOperator, SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { TemplateRef } from '@angular/core';\r\n\r\nexport class SdTableQuickFilter {\r\n code: string;\r\n columnFilter: {\r\n [field: string]: any;\r\n };\r\n externalFilter: {\r\n [field: string]: any;\r\n };\r\n filterDef: {\r\n [field: string]: any;\r\n };\r\n}\r\n\r\nexport interface SdTableFilterConfiguration {\r\n // selectedQuickFilter: string;\r\n // quickFilters: SdGridMaterialQuickFilter[];\r\n\r\n inlineColumn: Record<string, boolean>; // Ẩn hiện filter column\r\n // columnFilter?: Record<string, any>; // Giá trị filter column\r\n\r\n inlineExternal: Record<string, boolean>; // Ẩn hiện filter external\r\n // externalFilter?: Record<string, any>; // Giá trị filter external\r\n\r\n inlineFilterDef: Record<string, boolean>; // Ẩn hiện filter def\r\n // filterDef?: Record<string, any>; // Giá trị filter def\r\n}\r\n\r\nexport interface SdTableFilterValue {\r\n columnOperator?: Record<string, SdFilterOperator>;\r\n\r\n columnFilter?: Record<string, any>; // Giá trị filter column\r\n\r\n externalFilter?: Record<string, any>; // Giá trị filter external\r\n\r\n filterDef?: Record<string, any>; // Giá trị filter def\r\n\r\n notReload?: boolean; // Để nhận biết là chỉ set giá trị, không trigger change\r\n}\r\n\r\nexport interface SdTableFilterRequest<T = any> {\r\n columnOperator: Record<string, SdFilterOperator>;\r\n rawColumnFilter: Record<keyof T, any>;\r\n rawExternalFilter: Record<string, any>;\r\n rawFilterDef: Record<string, any>;\r\n pageNumber: number;\r\n pageSize: number;\r\n orderBy: string;\r\n orderDirection: 'asc' | 'desc' | '';\r\n isExported?: boolean;\r\n}\r\n\r\nexport interface SdTableOptionFilter {\r\n key?: string;\r\n cacheFilter?: boolean;\r\n disabled?: boolean;\r\n hideInlineFilter?: boolean;\r\n externalFilters?: SdTableExternalFilter[];\r\n sorts?: string[];\r\n enableCollapse?: boolean;\r\n operatorChange?: (column?: SdTableColumn, operator?: SdFilterOperator) => void;\r\n}\r\n\r\nexport declare type SdTableExternalFilter =\r\n | TextFilter\r\n | DateFilter\r\n | DateTimeFilter\r\n | DateRangeFilter\r\n | NumberFilter\r\n | ValuesFilter\r\n | LazyValuesFilter\r\n | BoolFilter\r\n | CustomFilter;\r\n\r\ninterface BaseFilter {\r\n field: string;\r\n title: string;\r\n defaultShowing?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\ninterface TextFilter extends BaseFilter {\r\n type: 'string';\r\n default?: string;\r\n}\r\n\r\ninterface DateFilter extends BaseFilter {\r\n type: 'date';\r\n default?: Date | string;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n}\r\n\r\ninterface DateTimeFilter extends BaseFilter {\r\n type: 'datetime';\r\n default?: Date | string;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n}\r\n\r\ninterface DateRangeFilter extends BaseFilter {\r\n type: 'daterange';\r\n enableTime?: boolean;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n default?: {\r\n from?: Date | string;\r\n to?: Date | string;\r\n };\r\n}\r\n\r\ninterface NumberFilter extends BaseFilter {\r\n type: 'number';\r\n default?: number;\r\n}\r\n\r\ninterface ValuesFilter extends BaseFilter {\r\n type: 'values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: any[] | (() => Promise<any[]>);\r\n selection?: 'AUTOCOMPLETE' | 'MULTIPLE' | 'MULTIPLEAUTOCOMPLETE';\r\n };\r\n default?: string | string[];\r\n}\r\n\r\ninterface LazyValuesFilter extends BaseFilter {\r\n type: 'lazy-values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: (searchText: string) => Promise<any[]>; // Filter\r\n selection?: 'MULTIPLE';\r\n };\r\n default?: string | string[];\r\n}\r\n\r\ninterface BoolFilter extends BaseFilter {\r\n type: 'bool';\r\n option?: {\r\n displayOnTrue?: string;\r\n displayOnFalse?: string;\r\n };\r\n default?: boolean;\r\n}\r\n\r\ninterface CustomFilter extends BaseFilter {\r\n type: 'custom';\r\n filterDef?: TemplateRef<SdTableFilterDefDirective>;\r\n default?: any;\r\n}\r\n\r\nexport interface SdTableFilterRegister {\r\n configuration: {\r\n get: () => SdTableFilterConfiguration;\r\n set: (configuration: Partial<SdTableFilterConfiguration>) => SdTableFilterConfiguration;\r\n remove: () => void;\r\n observer: Observable<SdTableFilterConfiguration>;\r\n };\r\n value: {\r\n get: () => SdTableFilterValue;\r\n set: (value: Partial<SdTableFilterValue>) => SdTableFilterValue;\r\n remove: () => void;\r\n observer: Observable<SdTableFilterValue>;\r\n };\r\n}\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 {SdPopupConfiguration as ɵf} from './src/lib/components/popup-configuration/popup-configuration.component';\nexport {SdPopupExport as ɵj} from './src/lib/components/popup-export/popup-export.component';\nexport {SdPopupFilter as ɵl} from './src/lib/components/popup-filter/popup-filter.component';\nexport {SdTableQuickAction as ɵa} from './src/lib/components/quick-action/quick-action.component';\nexport {SdTableFilter as ɵk} from './src/lib/components/table-filter/table-filter.component';\nexport {SdMaterialSubInformationDefDirective as ɵm} from './src/lib/directives/sd-table-expand-def.directive';\nexport {SdMaterialFooterDefDirective as ɵn} from './src/lib/directives/sd-table-footer-def.directive';\nexport {ISdTableConfiguration as ɵh,TABLE_CONFIG as ɵi} from './src/lib/models/table-configuration.model';\nexport {SdColumnTooltipPipe as ɵt} from './src/lib/pipes/column-tooltip.pipe';\nexport {SdCommandDisablePipe as ɵq} from './src/lib/pipes/command-disable.pipe';\nexport {SdCommandFilterPipe as ɵp} from './src/lib/pipes/command-filter.pipe';\nexport {SdCommandIconPipe as ɵr} from './src/lib/pipes/command-icon.pipe';\nexport {SdCommandTitlePipe as ɵs} from './src/lib/pipes/command-title.pipe';\nexport {SdFilterColumnPipe as ɵu} from './src/lib/pipes/filter-column.pipe';\nexport {SdFilterExternalPipe as ɵv} from './src/lib/pipes/filter-external.pipe';\nexport {SdGroupPipe as ɵba} from './src/lib/pipes/sd-group.pipe';\nexport {SdSelectionActionFilterPipe as ɵw} from './src/lib/pipes/selection-action-filter.pipe';\nexport {SdSelectionDisablePipe as ɵy} from './src/lib/pipes/selection-disable.pipe';\nexport {SdSelectionVisibleSelectAllPipe as ɵz} from './src/lib/pipes/selection-visible-select-all.pipe';\nexport {SdSelectionVisiblePipe as ɵx} from './src/lib/pipes/selection-visible.pipe';\nexport {SdTableConfigurationService as ɵg} from './src/lib/services/table-configuration.service';\nexport {SdTableFilterService as ɵo} from './src/lib/services/table-filter/table-filter.service';"],"names":["Directive","TemplateRef","Input","InjectionToken","Component","ChangeDetectionStrategy","ChangeDetectorRef","ViewChild","SdModal","BehaviorSubject","Subscription","startWith","DeviceDetectorService","Injectable","SdSettingService","Inject","Optional","hash","map","EventEmitter","moveItemInArray","SdNotifyService","HostListener","FormGroup","SdLoadingService","SdExportService","SdTranslateService","Output","uuid.v4","Subject","QueryList","_subscription","_initConfiguration","debounceTime","isObservable","_getExportColumns","switchMap","combineLatest","trigger","state","style","transition","animate","MatTable","SdScrollDirective","SdQuickAction","MatPaginator","MatSort","ContentChild","ContentChildren","Pipe","MatPaginatorIntl","NgModule","CommonModule","MatSortModule","MatPaginatorModule","MatTableModule","MatMenuModule","MatIconModule","MatButtonModule","MatTooltipModule","MatProgressSpinnerModule","MatSlideToggleModule","MatCheckboxModule","MatListModule","MatChipsModule","CdkTableModule","DragDropModule","SdFormModule","SdServiceModule","SdCommonModule","SdGroupModule","DatePipe","DecimalPipe","CdkColumnDef"],"mappings":"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"}
1
+ {"version":3,"file":"sd-angular-core-table.umd.js","sources":["../../../../projects/sd-core/table/src/lib/directives/sd-table-cell-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-filter-def.directive.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/table/src/lib/models/table-configuration.model.ts","../../../../projects/sd-core/table/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/table/src/lib/components/table-filter/table-filter.component.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-expand-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-footer-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/services/table-filter/table-filter.service.ts","../../../../projects/sd-core/table/src/lib/components/popup-configuration/popup-configuration.component.ts","../../../../projects/sd-core/table/src/lib/components/popup-export/popup-export.component.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/components/desktop-cell-view/desktop-cell-view.component.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/components/desktop-command/desktop-command.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/sd-group.pipe.ts","../../../../projects/sd-core/table/src/lib/table.module.ts","../../../../projects/sd-core/table/src/lib/services/table-filter/table-filter.model.ts","../../../../projects/sd-core/table/sd-angular-core-table.ts"],"sourcesContent":["import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableCellDef]'\r\n})\r\nexport class SdTabelCellDefDirective {\r\n @Input() sdTableCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableFilterDef]'\r\n})\r\nexport class SdTableFilterDefDirective {\r\n @Input() sdTableFilterDef: string;\r\n defaultShowing: boolean;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { SdFilterOperator, SdTableColumn } 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 defaultOperator?:{\r\n [key in SdTableColumn['type']]?:SdFilterOperator\r\n }\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: 20,\r\n pages: [20, 50, 100, 200]\r\n }\r\n};\r\n\r\nexport const TABLE_CONFIG = new InjectionToken<ISdTableConfiguration>('sd-table.configuration');\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, SdTableFilterRegister } from '../../services/table-filter/table-filter.model';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-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: SdTableFilterRegister;\r\n @Input() set filterRegister(value: SdTableFilterRegister) {\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: SdTableFilterDefDirective[] = [];\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 SdTableFilterRegister,\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 { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { startWith } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'sd-table-filter',\r\n templateUrl: './table-filter.component.html',\r\n styleUrls: ['./table-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTableFilter 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: SdTableFilterDefDirective[] = [];\r\n filterRegister: SdTableFilterRegister;\r\n @Input('filterRegister') set _filterRegister(value: SdTableFilterRegister) {\r\n this.filterRegister = value;\r\n this.filterRegisterChange.next(this.filterRegister);\r\n }\r\n filterRegisterChange = new BehaviorSubject<SdTableFilterRegister>(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, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableExpandDef]'\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: '[sdTableFooterDef]'\r\n})\r\nexport class SdMaterialFooterDefDirective {\r\n @Input() sdTableFooterDef: string;\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 { SdSetting, SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport {\r\n SdColumnConfiguration,\r\n SdTableConfiguration,\r\n SdTableConfigurationResult,\r\n} from '../models/table-option-config.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 SUBINFORMATION: 'sdSubInformationAction',\r\n COMMAND: 'sdCommand',\r\n SELECTION: 'sdSelection',\r\n GROUP: 'sdGroup',\r\n };\r\n #prefix = 'c9e94836-6ace-4aeb-b148-4f0be63589ee';\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(TABLE_CONFIG) @Optional() public gridMaterialConfiguration: ISdTableConfiguration\r\n ) { }\r\n\r\n #getSetting = (option: SdTableOption): SdSetting<SdTableConfiguration> => {\r\n // Nếu không có key thì không lấy được setting\r\n if (!option?.key) {\r\n return null;\r\n }\r\n // Key của setting là tổ hợp từ key truyền vào và prefix để tránh chung key với các tính năng khác cũng dùng key trong core table\r\n return this.settingService.create<SdTableConfiguration>(\r\n { prefix: this.#prefix, key: option.key },\r\n {\r\n default: this.#default(option),\r\n }\r\n );\r\n };\r\n\r\n loadConfiguration = (option: SdTableOption) => {\r\n // Nếu không có key thì trả về thông tin mặc định\r\n if (!option?.key) {\r\n return this.#default(option);\r\n }\r\n const setting = this.#getSetting(option);\r\n return setting.get();\r\n };\r\n\r\n loadConfigurationResult = (option: SdTableOption, configuration: SdTableConfiguration) => {\r\n const result: SdTableConfigurationResult = {\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 } = option || {};\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 // Kiểm tra column trong config có còn được khai báo trong option\r\n // Nếu không thì ẩn column đó đi\r\n const column = option?.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 // Nếu có thêm các column mới, chèn các column đó vào cuối\r\n option?.columns?.filter(column=> !configuration?.columns?.some(e=>e.origin.field === column.field))\r\n .forEach(column =>{\r\n result.firstColumns.push({\r\n ...column,\r\n title: column.title,\r\n width: column.width,\r\n });\r\n result.firstHeaders.push(column.field);\r\n result.displayedColumns.push(column.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 if (option.expand) {\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 init = (gridOption: SdTableOption) => {\r\n return this.#getSetting(gridOption);\r\n };\r\n\r\n #default = (gridOption: SdTableOption): SdTableConfiguration => {\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","import * as hash from 'object-hash';\r\nimport { SdTableColumn } from './table-column.model';\r\nimport { SdBadgeColor } from '@sd-angular/core/badge';\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 SdTableDisplay {\r\n tooltip: string;\r\n badge: {\r\n type: 'round' | 'circle' | 'icon';\r\n color: SdBadgeColor;\r\n icon: string;\r\n };\r\n cellStyle: Record<string, string>;\r\n data: string;\r\n isHtml: boolean;\r\n click: () => void;\r\n}\r\n\r\nexport interface SdTableMeta<T> {\r\n id?: string;\r\n display: Record<string, SdTableDisplay>;\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 data: T;\r\n}\r\n\r\nexport const MapToSdTableItem = <T = any>(item: T): SdTableItem<T> => ({\r\n data: item,\r\n meta: {\r\n id: hash(item),\r\n display: {},\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 { 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 SdTableFilterRegister,\r\n SdTableFilterValue,\r\n} from './table-filter.model';\r\nimport { SdFilterOperator, SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-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, SdTableFilterRegister> = {};\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: SdTableFilterDefDirective[];\r\n columnOperator?:Record<string,SdFilterOperator>;\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: !!value?.notReload,\r\n };\r\n filterValue.set(updatedFilter);\r\n return updatedFilter;\r\n },\r\n remove: () => {\r\n filterValue.set(this.#defaultValue(args));\r\n },\r\n observer: filterValue.observer.pipe(\r\n startWith(filterValue.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(value => value || this.#defaultValue(args))\r\n ),\r\n },\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #defaultConfiguration = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\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.sdTableFilterDef] = 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: SdTableFilterDefDirective[];\r\n columnOperator?:Record<string,SdFilterOperator>\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 columnOperator:Record<string,SdFilterOperator> = args.columnOperator || {}\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 if (item?.filter?.operator?.enable && item?.filter?.operator?.default){\r\n columnOperator[item.field]=item.filter.operator.default;\r\n }\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.sdTableFilterDef] = undefined;\r\n }\r\n\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 // columnOperator\r\n columnOperator,\r\n };\r\n };\r\n\r\n #initConfiguration = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\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.sdTableFilterDef] = configuration?.inlineFilterDef?.[item.sdTableFilterDef] ?? 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: SdTableFilterDefDirective[];\r\n columnOperator?:Record<string, SdFilterOperator>\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 columnOperator:Record<string, SdFilterOperator> = args.columnOperator || {};\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 if (item?.filter?.operator?.enable && item?.filter?.operator?.default){\r\n columnOperator[item.field]=item.filter.operator.default;\r\n }\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.sdTableFilterDef] = value?.filterDef?.[item.sdTableFilterDef] ?? 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 //column Operator\r\n columnOperator\r\n };\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 { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableConfigurationResult, SdTableConfiguration } from '../../models/table-option-config.model';\r\nimport { SdTableConfigurationService } from '../../services/table-configuration.service';\r\nimport { MatTable } from '@angular/material/table';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdSetting } from '@sd-angular/core/setting';\r\n\r\n@Component({\r\n selector: 'sd-popup-configuration',\r\n templateUrl: './popup-configuration.component.html',\r\n styleUrls: ['./popup-configuration.component.scss'],\r\n})\r\nexport class SdPopupConfiguration implements OnInit {\r\n @Input() tableOption: SdTableOption;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdTableColumn>;\r\n readonly changes = new EventEmitter<SdTableConfigurationResult>();\r\n #setting: SdSetting<SdTableConfiguration>;\r\n configuration: SdTableConfiguration;\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 tableConfigurationService: 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.#setting = this.tableConfigurationService.init(this.tableOption);\r\n this.configuration = this.#setting.get();\r\n this.modal.open();\r\n };\r\n\r\n onSave = () => {\r\n this.#setting.set(this.configuration);\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n };\r\n\r\n onReset = async () => {\r\n this.notifyService.confirm('Xác nhận đưa tất cả thiết lập về mặc định').then(() => {\r\n this.#setting.remove();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n });\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 {\r\n Component,\r\n OnInit,\r\n AfterViewInit,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n Input,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n\r\nimport * as uuid from 'uuid';\r\n\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\n\r\nimport { SdLoadingService } from '@sd-angular/core/loading';\r\n\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport hash from 'object-hash';\r\nimport { MatSelectionList } from '@angular/material/list';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdExportFile, SdExportService, SdExportColumn } from '@sd-angular/core/export';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdTableColumn, SdTableOption } from '../../models';\r\nimport { SdTableConfigurationResult } from '../../models/table-option-config.model';\r\n\r\n@Component({\r\n selector: 'sd-popup-export',\r\n templateUrl: './popup-export.component.html',\r\n styleUrls: ['./popup-export.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdPopupExport implements OnInit, AfterViewInit {\r\n tableOption: SdTableOption;\r\n columns: SdExportColumn[] = [];\r\n templateName: string;\r\n enableCreating = false;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('listGroups') listGroups: MatSelectionList;\r\n\r\n selected: {\r\n [key: string]: boolean;\r\n } = {};\r\n files: SdExportFile[] = [];\r\n\r\n @Output() export = new EventEmitter<{ file: SdExportFile; columns: SdExportColumn[]; isCSV?: boolean }>();\r\n form = new FormGroup({});\r\n\r\n @Input('tableOption') set _tableOption(option: SdTableOption) {\r\n this.tableOption = option;\r\n this.columns = this.#getExportableColumns();\r\n }\r\n @Input() configuration: SdTableConfigurationResult;\r\n private get key(): string {\r\n const prefix = '93889e78-f971-4a1d-8c73-fe2321af9233';\r\n if (!this.tableOption?.export?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: this.tableOption?.export?.key,\r\n });\r\n }\r\n\r\n private get tableColumns() {\r\n const columns: SdExportColumn[] = [];\r\n this.tableOption.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.map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width,\r\n }));\r\n }\r\n private get additionalColumns() {\r\n return (this.tableOption.export?.columns?.filter(e => !e.export?.disabled) || []).map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width,\r\n }));\r\n }\r\n\r\n #getExportableColumns = (): SdExportColumn[] => {\r\n return [...this.tableColumns, ...this.additionalColumns];\r\n };\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n open = async () => {\r\n if (!this.key) {\r\n this.exportDefault();\r\n return;\r\n }\r\n this.loadFiles(null);\r\n this.selected = {};\r\n this.modal.open();\r\n this.ref.detectChanges();\r\n };\r\n\r\n #getExportColumns = () => {\r\n if (this.configuration) {\r\n const columns = [...this.tableColumns];\r\n const { firstColumns, secondColumns } = this.configuration;\r\n const displayColumns: SdTableColumn[] = [...firstColumns, ...secondColumns].reduce((first, next) => {\r\n const column = this.tableOption.columns.find(e => e.field === next.field);\r\n if (!column) {\r\n return first;\r\n }\r\n if (column.type !== 'children') {\r\n return [...first, column];\r\n }\r\n return [...first, ...column.children];\r\n }, []);\r\n const results = displayColumns\r\n .map(e => ({\r\n ...e,\r\n data: columns.find(e1 => e1.field === e.field),\r\n }))\r\n .filter(e => !!e.data)\r\n .map(e => e.data);\r\n return [...results, ...this.additionalColumns];\r\n } else {\r\n return this.columns;\r\n }\r\n };\r\n\r\n exportDefault = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: false,\r\n });\r\n };\r\n\r\n exportCSV = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: true,\r\n });\r\n };\r\n\r\n loadFiles = async (group: string = null) => {\r\n this.files = await this.exportService.filesInFolder({\r\n key: this.key,\r\n group,\r\n });\r\n this.ref.markForCheck();\r\n };\r\n\r\n #initTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.tableOption?.export?.sheets)) {\r\n for (const sheet of this.tableOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.exportService.generateTemplate({\r\n fileName: fileName || this.tableOption?.export?.fileName,\r\n columns: this.columns,\r\n sheets,\r\n });\r\n };\r\n\r\n generateTemplate = async () => {\r\n this.loadingService.start();\r\n await this.#initTemplate().finally(this.loadingService.stop);\r\n };\r\n\r\n generateAndUploadTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.tableOption?.export?.sheets)) {\r\n for (const sheet of this.tableOption?.export?.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.exportService.generateUploadTemplate({\r\n key: this.key,\r\n template: {\r\n fileName: fileName || this.tableOption?.export?.fileName,\r\n columns: this.columns.filter(e => this.selected[e.field]),\r\n sheets,\r\n },\r\n });\r\n };\r\n\r\n onExport = (file: SdExportFile) => {\r\n this.export.emit({\r\n file,\r\n columns: this.columns,\r\n });\r\n this.ref.detectChanges();\r\n };\r\n\r\n uploadTemplate = async () => {\r\n const file = await this.exportService.uploadTemplate({\r\n key: this.key,\r\n });\r\n if (file) {\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n removeFile = (file: SdExportFile) => {\r\n this.notifyService.confirm(this.translateService.translate('Remove template')).then(() => {\r\n this.exportService.removeFile({\r\n key: this.key,\r\n fileName: file.fileName,\r\n });\r\n const idx = this.files.indexOf(file);\r\n this.files.splice(idx, 1);\r\n this.files = [...this.files];\r\n this.ref.detectChanges();\r\n });\r\n };\r\n\r\n createTemplate = async () => {\r\n if (this.form.invalid) {\r\n this.form.markAllAsTouched();\r\n return;\r\n }\r\n if (!this.columns.some(e => this.selected[e.field])) {\r\n this.notifyService.notify.warning(`Vui lòng chọn cột dữ liệu để xuất`);\r\n return;\r\n }\r\n this.loadingService.start();\r\n const fileName = this.templateName + '.xlsx';\r\n try {\r\n const result = await this.generateAndUploadTemplate(fileName);\r\n if (result?.filePath) {\r\n const file: SdExportFile = {\r\n filePath: result.filePath,\r\n fileName: result.fileName,\r\n };\r\n this.onExport(file);\r\n this.templateName = null;\r\n this.enableCreating = false;\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n };\r\n\r\n templateNameValidator = (val: string) => {\r\n const { translate } = this.translateService;\r\n const regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;\r\n if (!val) {\r\n return translate('Please enter your template name');\r\n }\r\n if (val.length > 50) {\r\n return translate('Template name is too long');\r\n }\r\n if (!regex.test(val)) {\r\n return translate('Template name only contains letters, numbers and spaces');\r\n }\r\n return null;\r\n };\r\n}\r\n","import {\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 { MatTable } from '@angular/material/table';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport * as uuid from 'uuid';\r\nimport { SdTableFilterRegister, 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, Subject, combineLatest } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdFilterOperator, SdTableColumn, SdTableColumnLazyValues, SdTableColumnValues } from './models/table-column.model';\r\nimport { SdTabelCellDefDirective } from './directives/sd-table-cell-def.directive';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { SdTableFilter } from './components/table-filter/table-filter.component';\r\nimport { SdTableFilterDefDirective } from './directives/sd-table-filter-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-table-expand-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-table-footer-def.directive';\r\nimport { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';\r\nimport { SdTableConfigurationResult } 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 { SdScrollDirective } from '@sd-angular/core/common';\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\nimport { SdPopupConfiguration } from './components/popup-configuration/popup-configuration.component';\r\nimport { SdLoadingService } from '@sd-angular/core/loading';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\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 @ViewChild(MatTable) table: MatTable<any>;\r\n @ViewChild(SdPopupConfiguration) popupConfiguration: SdPopupConfiguration;\r\n // Export\r\n @ViewChild(SdPopupExport) sdPopupExport: SdPopupExport;\r\n #gridId = uuid.v4();\r\n @ViewChild(SdScrollDirective) sdScroll: SdScrollDirective;\r\n filterRegister: SdTableFilterRegister;\r\n key = uuid.v4();\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\r\n @ViewChild(SdTableFilter) tableFilter: SdTableFilter;\r\n tableOption: SdTableOption<T>;\r\n configuration: SdTableConfigurationResult;\r\n @Input() set option(option: SdTableOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.tableOption = option;\r\n this.#loadCompleted = false;\r\n const setting = this.tableConfigurationService.init(this.tableOption);\r\n if (setting) {\r\n this.#subscription.add(\r\n setting.observer.pipe(startWith(setting.subject.getValue())).subscribe(() => {\r\n const configurationResult = this.tableConfigurationService.loadConfigurationResult(this.tableOption, setting.get());\r\n const displayColumns = configurationResult.displayedColumns || [];\r\n this.loadingService.start();\r\n this.ref.detectChanges();\r\n this.#loadValues(this.tableOption.columns.filter(column => displayColumns.includes(column.field)))\r\n .then(() => {\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.tableOption);\r\n })\r\n .finally(() => {\r\n this.loadingService.stop();\r\n this.ref.detectChanges();\r\n });\r\n })\r\n );\r\n } else {\r\n const configuration = this.tableConfigurationService.loadConfiguration(this.tableOption);\r\n const configurationResult = this.tableConfigurationService.loadConfigurationResult(this.tableOption, configuration);\r\n const displayColumns = configurationResult.displayedColumns || [];\r\n this.loadingService.start();\r\n this.ref.detectChanges();\r\n this.#loadValues(this.tableOption.columns.filter(column => displayColumns.includes(column.field)))\r\n .then(() => {\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.tableOption);\r\n })\r\n .finally(() => {\r\n this.loadingService.stop();\r\n this.ref.detectChanges();\r\n });\r\n }\r\n }\r\n }\r\n #optionChanges = new Subject<SdTableOption>();\r\n\r\n #localItems: SdTableItem<T>[] = [];\r\n items: SdTableItem<T>[] = [];\r\n selectedTableItems: SdTableItem<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 // Cell Def\r\n @ContentChildren(SdTabelCellDefDirective) sdCellDefs = new QueryList<SdTabelCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdTabelCellDefDirective;\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(SdTableFilterDefDirective) sdFilterDefs = new QueryList<SdTableFilterDefDirective>();\r\n filterDefs: SdTableFilterDefDirective[] = [];\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 cacheValues: Record<string, any[]> = {};\r\n #cacheObjValues: Record<string, Record<string, string>> = {};\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n @Inject(TABLE_CONFIG)\r\n @Optional()\r\n public tableConfiguration: ISdTableConfiguration,\r\n private tableConfigurationService: SdTableConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private gridFilterService: SdTableFilterService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\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.tableOption)),\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.sdTableCellDef) {\r\n this.cellDef[cellDef.sdTableCellDef] = 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 // NOTE: ContentChildren nên subcribe trong AfterViewInit\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdTableFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdTableFooterDef] = 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.tableConfiguration?.paginate?.pageSize ?? DEFAULT_TABLE_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.tableConfiguration?.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) {\r\n if (!column.filter?.operator?.list?.length) {\r\n if (column.type === 'string') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListString || [];\r\n }\r\n if (column.type === 'number') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListNumber || [];\r\n }\r\n if (column.type === 'values' || column.type === 'lazy-values') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListValues || [];\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListDate || [];\r\n }\r\n }\r\n\r\n this.columnOperator[column.field] = this.tableConfiguration?.filter?.operator?.defaultOperator?.[column.type] || undefined;\r\n if (column.filter.operator.default && column.filter.operator.list.some(el => el === column.filter.operator.default)) {\r\n this.columnOperator[column.field] = column.filter.operator.default;\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.tableOption) {\r\n if (!this.filterRegister) {\r\n this.filterRegister = this.gridFilterService.register(this.tableOption?.filter, {\r\n id: this.#gridId,\r\n columns: this.tableOption?.columns,\r\n externalFilters: this.tableOption?.filter?.externalFilters,\r\n filterDefs: this.filterDefs,\r\n columnOperator: this.columnOperator,\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 if (this.#paginator) {\r\n this.#paginator.pageIndex = 0;\r\n }\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.tableOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(tableItem => {\r\n const item = tableItem.data;\r\n for (const column of columns) {\r\n const { field, type } = column;\r\n const filterValue: string = (rawColumnFilter[field as string] || '').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' || type === 'lazy-values') {\r\n const columnType = column as SdTableColumnValues<T> | SdTableColumnLazyValues<T>;\r\n const isMultiple = ['MULTIPLE'].includes(columnType.option.selection);\r\n if (isMultiple) {\r\n const columnValues: string[] =\r\n (item[field] as any).map(i => (i[columnType.option.valueField] ?? '').toString().trim().toLowerCase()) ?? [];\r\n const filterValues: string[] = rawColumnFilter[field as string]?.map(v => (v ?? '').toString().trim().toLowerCase());\r\n if (filterValues?.length && filterValues.every(fv => !columnValues.includes(fv))) {\r\n return false;\r\n }\r\n } else {\r\n if (columnValue !== filterValue) {\r\n return false;\r\n }\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 data = tableItemCurrent.data;\r\n const next = tableItemNext.data;\r\n if (type === 'number') {\r\n return (data[field as string] || 0) - (next[field as string] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(data[field as string] || '').getTime();\r\n const d2 = new Date(data[field as string] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (data[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.tableOption?.paginate?.pageSize || 50,\r\n visibledColumns: [...(this.configuration?.firstColumns || []), ...(this.configuration.secondColumns || [])].union('field')\r\n };\r\n };\r\n\r\n #load = async (filterReq: SdTableFilterRequest, force: boolean = true) => {\r\n this.isLoading = true;\r\n this.ref.detectChanges();\r\n if (this.tableOption.type === 'server') {\r\n const { items } = this.tableOption;\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 return {\r\n items: await this.#format(data?.items, this.tableOption.columns).finally(() => {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }),\r\n total: data?.total || 0,\r\n };\r\n }\r\n if (force) {\r\n const { items } = this.tableOption;\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 = await this.#format(data, this.tableOption.columns);\r\n }\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n return this.#filterLocal(this.#localItems, filterReq);\r\n };\r\n\r\n #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.tableOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n setTimeout(() => {\r\n this.table?.updateStickyColumnStyles();\r\n }, 0);\r\n };\r\n\r\n reload = async (force: boolean = true) => {\r\n this.tableFilter?.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.tableOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.tableOption.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.tableOption.type === 'server') {\r\n let result = this.tableOption.items(filterInfo);\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof this.tableOption.items === 'function') {\r\n const results = this.tableOption.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.tableOption.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.tableOption.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.tableOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n };\r\n\r\n onExport = async (args?: { file?: SdExportFile; columns?: SdExportColumn[]; isCSV?: boolean }) => {\r\n const { file, isCSV } = { ...args };\r\n try {\r\n let columns = this.#getExportColumns(args?.columns);\r\n const pageSize = this.tableOption?.export?.maxItemsPerRequest || 1000;\r\n const batch = this.tableOption?.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.tableOption.export?.mapping) {\r\n const results = this.tableOption.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 // Nếu là date thì convert theo đúng format ISO\r\n obj[column.field] = Date.toFormat(date, 'MM/dd/yyyy');\r\n } else if (column.type === 'datetime') {\r\n let date = item[column.field];\r\n // Nếu là datetime thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'MM/dd/yyyy HH:mm:ss');\r\n } else if (column.type === 'time') {\r\n let date = item[column.field];\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' || column.type === 'lazy-values') {\r\n const value = item[column.field];\r\n if (column.type === 'lazy-values' && typeof column.option.mapValue === 'function') {\r\n const val = column.option.mapValue(value, item);\r\n const vals = (Array.isArray(val) ? val : [val]).filter(e => !!e?.toString());\r\n obj[column.field] = vals\r\n .map(val => this.#cacheObjValues[column.field]?.[val]?.[column.option.displayField] || val)\r\n ?.join(', ');\r\n } else {\r\n const vals = (Array.isArray(value) ? value : [value]).filter(e => !!e?.toString());\r\n obj[column.field] = vals\r\n .map(val => this.#cacheObjValues[column.field]?.[val]?.[column.option.displayField] || val)\r\n ?.join(', ');\r\n }\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n for (const exportColumn of columns) {\r\n await handle(exportColumn);\r\n }\r\n items.push(obj);\r\n }\r\n };\r\n while (pageNumber * pageSize < total) {\r\n promises.push(this.#exportedItems(pageNumber, pageSize));\r\n pageNumber++;\r\n if (promises.length < batch) {\r\n continue;\r\n }\r\n await handleData();\r\n }\r\n if (promises.length > 0) {\r\n await handleData();\r\n }\r\n if (file?.filePath) {\r\n await this.exportService.exportByTemplate({\r\n filePath: file.filePath,\r\n fileName: file.fileName,\r\n columns,\r\n items,\r\n });\r\n return;\r\n }\r\n if (isCSV) {\r\n await this.exportService.exportCSV({\r\n columns,\r\n items,\r\n fileName: this.tableOption?.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.tableOption?.export?.sheets)) {\r\n for (const sheet of this.tableOption.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.tableOption?.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 = (columns?: SdExportColumn[]) => {\r\n let tableColumns: SdExportColumn[] = [];\r\n // Lấy column từ option\r\n this.tableOption.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 tableColumns.push(childColumn);\r\n });\r\n return;\r\n }\r\n tableColumns.push({\r\n field: column.field,\r\n title: column.title,\r\n description: column.description,\r\n width: column.width,\r\n });\r\n });\r\n // Lấy columns từ configuration\r\n if (this.configuration) {\r\n const columns = [...tableColumns];\r\n const { firstColumns, secondColumns } = this.configuration;\r\n const displayColumns: SdTableColumn[] = [...firstColumns, ...secondColumns].reduce((first, next) => {\r\n const column = this.tableOption.columns.find(e => e.field === next.field);\r\n if (!column) {\r\n return first;\r\n }\r\n if (column.type !== 'children') {\r\n return [...first, column];\r\n }\r\n const children = column.children;\r\n return [...first, ...children];\r\n }, []);\r\n tableColumns = displayColumns\r\n .map(e => ({\r\n ...e,\r\n data: columns.find(e1 => e1.field === e.field),\r\n }))\r\n .filter(e => !!e.data)\r\n .map(e => e.data);\r\n }\r\n // Chỉ lấy các columns được thiết lập\r\n const columnFields = columns?.map(e => e.field) || [];\r\n return [...tableColumns, ...(this.tableOption.export?.columns?.filter(e => !e.export?.disabled) || [])].filter(\r\n column => !columnFields?.length || columnFields.includes(column.field)\r\n );\r\n };\r\n\r\n exportExcel = () => {\r\n this.onExport();\r\n };\r\n\r\n exportCSV = () => {\r\n this.onExport({ isCSV: true });\r\n };\r\n\r\n onFilterChange = () => {\r\n this.tableFilter?.updateFilter?.();\r\n this.filterRegister.value.set({\r\n columnOperator: this.columnOperator || {},\r\n columnFilter: this.columnFilter,\r\n });\r\n };\r\n\r\n onExpand = async (rowData: SdTableItem<T>) => {\r\n if (this.tableOption.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.tableOption?.expand?.onExpand?.(rowData.data);\r\n if (!this.tableOption.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.tableOption.selector?.onSelect?.(\r\n rowData.data,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.data)\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.tableOption.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.tableOption.selector?.onSelect?.(\r\n rowData.data,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.data)\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.tableOption?.selector?.actions?.length || e.meta.selector.actions?.length)) {\r\n e.meta.selector.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.tableOption.selector?.onSelectAll?.(this.items.filter(e => e.meta.selector.isSelected).map(e => e.data));\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.selectedTableItems = this.items.filter(item => item.meta.selector.isSelected);\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 (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 dataItems(): T[] {\r\n return this.items.map(item => item.data);\r\n }\r\n\r\n get selectedItems(): T[] {\r\n return this.selectedTableItems.map(item => item.data);\r\n }\r\n\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n #loadValues = async (columns: SdTableColumn[]) => {\r\n const promises: Promise<{\r\n key: string;\r\n valueField: string;\r\n displayField: string;\r\n data: any[];\r\n }>[] = [];\r\n for (const column of columns) {\r\n if (column.type === 'values' && !this.cacheValues[column.field]) {\r\n if (typeof column.option.items === 'function') {\r\n promises.push(\r\n column.option\r\n .items()\r\n .then(data => ({\r\n key: column.field,\r\n valueField: column.option.valueField,\r\n displayField: column.option.displayField,\r\n data: Array.isArray(data) ? data : [],\r\n }))\r\n .catch(err => {\r\n console.error(err);\r\n return {\r\n key: column.field,\r\n valueField: column.option.valueField,\r\n displayField: column.option.displayField,\r\n data: [],\r\n };\r\n })\r\n );\r\n } else {\r\n this.cacheValues[column.field] = column.option.items.map(e => ({\r\n [column.option.valueField]: e?.[column.option.valueField],\r\n [column.option.displayField]: e?.[column.option.displayField],\r\n }));\r\n this.#cacheObjValues[column.field] = Array.toObject(this.cacheValues[column.field], column.option.valueField);\r\n }\r\n }\r\n }\r\n if (promises.length) {\r\n const results = await Promise.all(promises);\r\n for (const result of results) {\r\n this.cacheValues[result.key] = result.data.map(e => ({\r\n [result.valueField]: e?.[result.valueField],\r\n [result.displayField]: e?.[result.displayField],\r\n }));\r\n this.#cacheObjValues[result.key] = Array.toObject(this.cacheValues[result.key], result.valueField);\r\n }\r\n }\r\n };\r\n\r\n #format = async <T = any>(rawItems: T[], columns: SdTableColumn[]) => {\r\n const items = rawItems.map(MapToSdTableItem);\r\n for (const column of columns) {\r\n // Clickable\r\n const { field, cellStyle, click, tooltip, htmlTemplate, transform } = column;\r\n if (!transform && !htmlTemplate && column.type === 'lazy-values' && typeof column.option.views === 'function') {\r\n const {\r\n option: { views, mapValue },\r\n } = column;\r\n this.#cacheObjValues[field] = this.#cacheObjValues[field] || {};\r\n const values = items\r\n .map(item => {\r\n if (typeof mapValue === 'function') {\r\n return mapValue(item.data?.[field], item.data);\r\n }\r\n return item.data?.[field];\r\n })\r\n .filter(val => !!val?.toString())\r\n .reduce<string[]>((current, next) => [...current, ...(Array.isArray(next) ? next : [next])], [])\r\n .filter(val => !Object.keys(this.#cacheObjValues[field]).includes(val))\r\n .union();\r\n\r\n if (values.length) {\r\n const lazyItems: any[] = (\r\n await views(values).catch(err => {\r\n console.error(err);\r\n return [];\r\n })\r\n )\r\n .filter(item => values.includes(item?.[column.option.valueField]))\r\n .map(e => ({\r\n [column.option.valueField]: e?.[column.option.valueField],\r\n [column.option.displayField]: e?.[column.option.displayField],\r\n }));\r\n Object.assign(this.#cacheObjValues[field], Array.toObject(lazyItems, column.option.valueField) || {});\r\n }\r\n }\r\n for (const item of items) {\r\n const rowData = item.data;\r\n const value = rowData?.[field];\r\n item.meta.display[field] = {\r\n badge: undefined,\r\n cellStyle: column.type === 'number' ? { 'text-align': 'right!important' } : undefined,\r\n data: value,\r\n isHtml: false,\r\n tooltip: typeof tooltip === 'function' ? tooltip(value, rowData) : undefined,\r\n click: typeof click === 'function' ? () => click(value, rowData) : undefined,\r\n };\r\n const display = item.meta.display[field];\r\n // Display\r\n if (typeof htmlTemplate === 'function') {\r\n display.isHtml = true;\r\n display.data = htmlTemplate(value, rowData);\r\n } else if (typeof transform === 'function') {\r\n const newValue = transform(value, rowData);\r\n if (newValue instanceof Promise) {\r\n display.data = await newValue;\r\n } else {\r\n display.data = newValue;\r\n }\r\n } else {\r\n if (column.type === 'date' || column.type === 'datetime' || column.type === 'time') {\r\n const date = Date.toFormat(value, 'dd/MM/yyyy');\r\n let time = Date.toFormat(value, 'HH:mm:ss');\r\n if (time?.endsWith('00')) {\r\n time = Date.toFormat(value, 'HH:mm');\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n if (column.type === 'datetime') {\r\n display.isHtml = true;\r\n display.data = `<span class=\"d-block T14R text-black400\">${time}</span><span class=\"d-block T14R\">${date}</span>`;\r\n } else {\r\n display.data = date;\r\n }\r\n }\r\n if (column.type === 'time') {\r\n display.data = time;\r\n }\r\n }\r\n if (column.type === 'values' || column.type === 'lazy-values') {\r\n if (column.type === 'lazy-values' && typeof column.option.mapValue === 'function') {\r\n const val = column.option.mapValue(value, rowData);\r\n const vals = (Array.isArray(val) ? val : [val]).filter(e => !!e?.toString());\r\n display.data = vals.map(val => this.#cacheObjValues[field]?.[val]?.[column.option.displayField] || val)?.join(', ');\r\n } else {\r\n const vals = (Array.isArray(value) ? value : [value]).filter(e => !!e?.toString());\r\n display.data = vals.map(val => this.#cacheObjValues[field]?.[val]?.[column.option.displayField] || val)?.join(', ');\r\n }\r\n }\r\n if (column.type === 'number' && Number.isNumber(value)) {\r\n display.data = 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 display.data = value === true ? option?.displayOnTrue || 'True' : option?.displayOnFalse || 'False';\r\n } else {\r\n display.data = null;\r\n }\r\n }\r\n // Badge\r\n if ((column.type === 'string' || column.type === 'number' || column.type === 'values') && column.badge) {\r\n display.badge = {\r\n type: !column?.badgeType ? 'icon' : 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 display.badge = {\r\n type: 'circle',\r\n color: !!value ? 'success' : 'danger',\r\n icon: null,\r\n };\r\n }\r\n }\r\n }\r\n }\r\n return items;\r\n };\r\n\r\n onOperatorChange = (column: SdTableColumn, operator: SdFilterOperator) => {\r\n this.tableOption?.filter?.operatorChange?.(column, operator);\r\n };\r\n\r\n trackBy = (index: number, item: SdTableItem) => {\r\n return item.meta.id;\r\n };\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.data);\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.data);\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\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandDisable',\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: SdTableItem, command: SdTableCommand): boolean {\r\n if ('disabled' in command) {\r\n const { disabled } = command;\r\n if (typeof disabled === 'boolean') {\r\n return disabled;\r\n }\r\n return disabled(item.data);\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: SdTableItem): string {\r\n if (!command?.icon) {\r\n return undefined;\r\n }\r\n if (typeof (command.icon) === 'string') {\r\n return command.icon;\r\n }\r\n return command.icon(item.data);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: SdTableItem): string {\r\n if (!command?.title) {\r\n return undefined;\r\n }\r\n if (typeof (command.title) === 'string') {\r\n return command.title;\r\n }\r\n return command.title(item.data);\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() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n constructor(\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 { 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 { 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 } from '@angular/core';\r\nimport { SdTabelCellDefDirective } from '../../directives/sd-table-cell-def.directive';\r\nimport { SdTableColumn } from '../../models/table-column.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() value: any;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() cellDef: {\r\n [column: string]: SdTabelCellDefDirective\r\n } = {};\r\n constructor(\r\n ) { }\r\n}\r\n","import { SdBadgeColor } from '@sd-angular/core/badge';\r\nimport { SdTabelCellDefDirective } from '../directives/sd-table-cell-def.directive';\r\nimport { TemplateRef } from '@angular/core';\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 | SdTableColumnLazyValues<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 | 'NULL'\r\n | 'NOT_NULL';\r\n\r\nexport const SdFilterOperators: { value: SdFilterOperator; symbol?: string; display: string }[] = [\r\n {\r\n value: 'EQUAL',\r\n symbol: '=',\r\n display: 'Bằng',\r\n },\r\n {\r\n value: 'NOT_EQUAL',\r\n symbol: '≠',\r\n display: 'Không bằng',\r\n },\r\n {\r\n value: 'GREATER_THAN',\r\n symbol: '>',\r\n display: 'Lớn hơn',\r\n },\r\n {\r\n value: 'LESS_THAN',\r\n symbol: '<',\r\n display: 'Nhỏ hơn',\r\n },\r\n {\r\n value: 'GREATER_OR_EQUAL',\r\n symbol: '≥',\r\n display: 'Lớn hơn, hoặc bằng',\r\n },\r\n {\r\n value: 'LESS_OR_EQUAL',\r\n symbol: '≤',\r\n display: 'Nhỏ hơn, hoặc bằng',\r\n },\r\n {\r\n value: 'CONTAIN',\r\n symbol: 'join_inner',\r\n display: 'Chứa',\r\n },\r\n {\r\n value: 'NOT_CONTAIN',\r\n symbol: 'join',\r\n display: 'Không chứa',\r\n },\r\n {\r\n value: 'START_WITH',\r\n symbol: 'line_start_circle',\r\n display: 'Bắt đầu bởi',\r\n },\r\n {\r\n value: 'END_WITH',\r\n symbol: 'line_end_circle',\r\n display: 'Kết thúc bởi',\r\n },\r\n {\r\n value: 'IN',\r\n symbol: 'checklist_rtl',\r\n display: 'Nằm trong',\r\n },\r\n {\r\n value: 'NOT_IN',\r\n symbol: 'event_list',\r\n display: 'Không nằm trong',\r\n },\r\n {\r\n value: 'NULL',\r\n symbol: 'motion_photos_off',\r\n display: 'Là rỗng',\r\n },\r\n {\r\n value: 'NOT_NULL',\r\n symbol: 'adjust',\r\n display: 'Không rỗng',\r\n },\r\n];\r\n\r\nexport type 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: Extract<keyof T, 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 cellStyle?: (value: any, rowData: T) => Record<string, string>;\r\n htmlTemplate?: (value: any, rowData: T) => 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 default?:SdFilterOperator;\r\n enable?: boolean;\r\n list?: SdFilterOperator[];\r\n };\r\n };\r\n export?: {\r\n disabled?: boolean;\r\n };\r\n cellDef?: TemplateRef<SdTabelCellDefDirective>;\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}\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}\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}\r\n\r\ninterface SdTableColumnDate<T = any> extends SdTableColumnBase<T> {\r\n type: 'date' | 'datetime' | 'time';\r\n filter?: SdTableColumnBase['filter'] & { useFilterDate?: boolean }\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?: 'icon' | 'circle' | 'round';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: any[] | (() => Promise<any[]>);\r\n selection?: 'AUTOCOMPLETE' | 'MULTIPLE' | 'MULTIPLEAUTOCOMPLETE';\r\n };\r\n}\r\n\r\nexport interface SdTableColumnLazyValues<T = any> extends SdTableColumnBase<T> {\r\n type: 'lazy-values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: (searchText: string) => Promise<any[]>; // Filter\r\n // Nếu không có tranform hay htmlTemplate cần khai báo views\r\n views?: (values: string[]) => Promise<any[]>; // Hiển thị\r\n mapValue?: (value: any, rowData?: T) => string | string[]; // Một số trường hợp dữ liệu của field là object hoặc muốn value lấy dữ liệu khác thì sử dụng hàm này\r\n selection?: 'MULTIPLE';\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<SdFilterOperator>();\r\n @Output() operatorChange = new EventEmitter<SdFilterOperator>();\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 items: any[] | ((searchText: string) => Promise<any[]>) = [];\r\n @Input() cacheValues: Record<string, any[]>;\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 if (this.column.type === 'values') {\r\n if (Array.isArray(this.column.option.items)) {\r\n this.items = this.column.option.items;\r\n } else {\r\n this.items = this.cacheValues?.[column.field] || []\r\n }\r\n } else if (this.column.type === 'lazy-values') {\r\n this.items = this.column.option.items;\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 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?.filter?.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.operatorChange.emit(this.#inlineOperator);\r\n this.ref.markForCheck();\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { 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.data)) {\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.data)) {\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\nimport { SdTableItem } from '../../models/table-item.model';\r\nimport { SdTableAction } from '../../models/table-option-selector.model';\r\n\r\n@Component({\r\n selector: 'sd-table-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 SdTableQuickAction {\r\n @Input() tableOption: SdTableOption;\r\n @Input() selectedTableItems: SdTableItem[];\r\n @Output() clear = new EventEmitter();\r\n constructor() {}\r\n onClear = () => {\r\n this.clear.emit();\r\n };\r\n\r\n onClickAction = (action: SdTableAction) => {\r\n if ('click' in action) {\r\n action?.click(this.selectedTableItems.map(e => e.data));\r\n }\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 { MatIconModule } from '@angular/material/icon';\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 { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\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 { SdDesktopCellView } from './components/desktop-cell-view/desktop-cell-view.component';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SdTabelCellDefDirective } from './directives/sd-table-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 { SdTableFilter } from './components/table-filter/table-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 { SdDesktopCommand } from './components/desktop-command/desktop-command.component';\r\nimport { SdTableFilterDefDirective } from './directives/sd-table-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-table-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-table-expand-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdPopupConfiguration } from './components/popup-configuration/popup-configuration.component';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { MatListModule } from '@angular/material/list';\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 { SdTableQuickAction } from './components/quick-action/quick-action.component';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdGroupPipe } from './pipes/sd-group.pipe';\r\nimport { SdGroupModule } from '@sd-angular/core/group';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { MatChipsModule } from '@angular/material/chips';\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}/${length}`;\r\n };\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\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 MatSlideToggleModule,\r\n MatCheckboxModule,\r\n MatListModule,\r\n MatChipsModule,\r\n CdkTableModule,\r\n DragDropModule,\r\n SdFormModule,\r\n SdServiceModule,\r\n SdCommonModule,\r\n SdGroupModule,\r\n ],\r\n declarations: [\r\n SdTableQuickAction,\r\n SdDesktopCell,\r\n SdDesktopCellView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdTable,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdTabelCellDefDirective,\r\n SdTableFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdPopupConfiguration,\r\n SdTableFilter,\r\n SdPopupFilter,\r\n SdPopupExport,\r\n // Pipes\r\n SdCommandFilterPipe,\r\n SdCommandDisablePipe,\r\n SdCommandIconPipe,\r\n SdCommandTitlePipe,\r\n SdColumnTooltipPipe,\r\n SdFilterColumnPipe,\r\n SdFilterExternalPipe,\r\n SdSelectionActionFilterPipe,\r\n SdSelectionVisiblePipe,\r\n SdSelectionDisablePipe,\r\n SdSelectionVisibleSelectAllPipe,\r\n SdGroupPipe,\r\n ],\r\n exports: [\r\n SdTable,\r\n SdMaterialFooterDefDirective,\r\n SdTabelCellDefDirective,\r\n SdTableFilterDefDirective,\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 {\r\n provide: MatPaginatorIntl,\r\n useClass: MatPaginatorIntlCro,\r\n },\r\n ],\r\n})\r\nexport class SdTableModule {}\r\n","import { Observable } from 'rxjs';\r\nimport { SdFilterOperator, SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { TemplateRef } from '@angular/core';\r\n\r\nexport class SdTableQuickFilter {\r\n code: string;\r\n columnFilter: {\r\n [field: string]: any;\r\n };\r\n externalFilter: {\r\n [field: string]: any;\r\n };\r\n filterDef: {\r\n [field: string]: any;\r\n };\r\n}\r\n\r\nexport interface SdTableFilterConfiguration {\r\n // selectedQuickFilter: string;\r\n // quickFilters: SdGridMaterialQuickFilter[];\r\n\r\n inlineColumn: Record<string, boolean>; // Ẩn hiện filter column\r\n // columnFilter?: Record<string, any>; // Giá trị filter column\r\n\r\n inlineExternal: Record<string, boolean>; // Ẩn hiện filter external\r\n // externalFilter?: Record<string, any>; // Giá trị filter external\r\n\r\n inlineFilterDef: Record<string, boolean>; // Ẩn hiện filter def\r\n // filterDef?: Record<string, any>; // Giá trị filter def\r\n}\r\n\r\nexport interface SdTableFilterValue {\r\n columnOperator?: Record<string, SdFilterOperator>;\r\n\r\n columnFilter?: Record<string, any>; // Giá trị filter column\r\n\r\n externalFilter?: Record<string, any>; // Giá trị filter external\r\n\r\n filterDef?: Record<string, any>; // Giá trị filter def\r\n\r\n notReload?: boolean; // Để nhận biết là chỉ set giá trị, không trigger change\r\n}\r\n\r\nexport interface SdTableFilterRequest<T = any> {\r\n columnOperator: Record<string, SdFilterOperator>;\r\n rawColumnFilter: Record<keyof T, any>;\r\n rawExternalFilter: Record<string, any>;\r\n rawFilterDef: Record<string, any>;\r\n pageNumber: number;\r\n pageSize: number;\r\n orderBy: string;\r\n orderDirection: 'asc' | 'desc' | '';\r\n isExported?: boolean;\r\n visibledColumns?: SdTableColumn[];\r\n}\r\n\r\nexport interface SdTableOptionFilter {\r\n key?: string;\r\n cacheFilter?: boolean;\r\n disabled?: boolean;\r\n hideInlineFilter?: boolean;\r\n externalFilters?: SdTableExternalFilter[];\r\n sorts?: string[];\r\n enableCollapse?: boolean;\r\n operatorChange?: (column?: SdTableColumn, operator?: SdFilterOperator) => void;\r\n}\r\n\r\nexport declare type SdTableExternalFilter =\r\n | TextFilter\r\n | DateFilter\r\n | DateTimeFilter\r\n | DateRangeFilter\r\n | NumberFilter\r\n | ValuesFilter\r\n | LazyValuesFilter\r\n | BoolFilter\r\n | CustomFilter;\r\n\r\ninterface BaseFilter {\r\n field: string;\r\n title: string;\r\n defaultShowing?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\ninterface TextFilter extends BaseFilter {\r\n type: 'string';\r\n default?: string;\r\n}\r\n\r\ninterface DateFilter extends BaseFilter {\r\n type: 'date';\r\n default?: Date | string;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n}\r\n\r\ninterface DateTimeFilter extends BaseFilter {\r\n type: 'datetime';\r\n default?: Date | string;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n}\r\n\r\ninterface DateRangeFilter extends BaseFilter {\r\n type: 'daterange';\r\n enableTime?: boolean;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n default?: {\r\n from?: Date | string;\r\n to?: Date | string;\r\n };\r\n}\r\n\r\ninterface NumberFilter extends BaseFilter {\r\n type: 'number';\r\n default?: number;\r\n}\r\n\r\ninterface ValuesFilter extends BaseFilter {\r\n type: 'values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: any[] | (() => Promise<any[]>);\r\n selection?: 'AUTOCOMPLETE' | 'MULTIPLE' | 'MULTIPLEAUTOCOMPLETE';\r\n };\r\n default?: string | string[];\r\n}\r\n\r\ninterface LazyValuesFilter extends BaseFilter {\r\n type: 'lazy-values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: (searchText: string) => Promise<any[]>; // Filter\r\n selection?: 'MULTIPLE';\r\n };\r\n default?: string | string[];\r\n}\r\n\r\ninterface BoolFilter extends BaseFilter {\r\n type: 'bool';\r\n option?: {\r\n displayOnTrue?: string;\r\n displayOnFalse?: string;\r\n };\r\n default?: boolean;\r\n}\r\n\r\ninterface CustomFilter extends BaseFilter {\r\n type: 'custom';\r\n filterDef?: TemplateRef<SdTableFilterDefDirective>;\r\n default?: any;\r\n}\r\n\r\nexport interface SdTableFilterRegister {\r\n configuration: {\r\n get: () => SdTableFilterConfiguration;\r\n set: (configuration: Partial<SdTableFilterConfiguration>) => SdTableFilterConfiguration;\r\n remove: () => void;\r\n observer: Observable<SdTableFilterConfiguration>;\r\n };\r\n value: {\r\n get: () => SdTableFilterValue;\r\n set: (value: Partial<SdTableFilterValue>) => SdTableFilterValue;\r\n remove: () => void;\r\n observer: Observable<SdTableFilterValue>;\r\n };\r\n}\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 {SdPopupConfiguration as ɵf} from './src/lib/components/popup-configuration/popup-configuration.component';\nexport {SdPopupExport as ɵj} from './src/lib/components/popup-export/popup-export.component';\nexport {SdPopupFilter as ɵl} from './src/lib/components/popup-filter/popup-filter.component';\nexport {SdTableQuickAction as ɵa} from './src/lib/components/quick-action/quick-action.component';\nexport {SdTableFilter as ɵk} from './src/lib/components/table-filter/table-filter.component';\nexport {SdMaterialSubInformationDefDirective as ɵm} from './src/lib/directives/sd-table-expand-def.directive';\nexport {SdMaterialFooterDefDirective as ɵn} from './src/lib/directives/sd-table-footer-def.directive';\nexport {ISdTableConfiguration as ɵh,TABLE_CONFIG as ɵi} from './src/lib/models/table-configuration.model';\nexport {SdColumnTooltipPipe as ɵt} from './src/lib/pipes/column-tooltip.pipe';\nexport {SdCommandDisablePipe as ɵq} from './src/lib/pipes/command-disable.pipe';\nexport {SdCommandFilterPipe as ɵp} from './src/lib/pipes/command-filter.pipe';\nexport {SdCommandIconPipe as ɵr} from './src/lib/pipes/command-icon.pipe';\nexport {SdCommandTitlePipe as ɵs} from './src/lib/pipes/command-title.pipe';\nexport {SdFilterColumnPipe as ɵu} from './src/lib/pipes/filter-column.pipe';\nexport {SdFilterExternalPipe as ɵv} from './src/lib/pipes/filter-external.pipe';\nexport {SdGroupPipe as ɵba} from './src/lib/pipes/sd-group.pipe';\nexport {SdSelectionActionFilterPipe as ɵw} from './src/lib/pipes/selection-action-filter.pipe';\nexport {SdSelectionDisablePipe as ɵy} from './src/lib/pipes/selection-disable.pipe';\nexport {SdSelectionVisibleSelectAllPipe as ɵz} from './src/lib/pipes/selection-visible-select-all.pipe';\nexport {SdSelectionVisiblePipe as ɵx} from './src/lib/pipes/selection-visible.pipe';\nexport {SdTableConfigurationService as ɵg} from './src/lib/services/table-configuration.service';\nexport {SdTableFilterService as ɵo} from './src/lib/services/table-filter/table-filter.service';"],"names":["Directive","TemplateRef","Input","InjectionToken","Component","ChangeDetectionStrategy","ChangeDetectorRef","ViewChild","SdModal","BehaviorSubject","Subscription","startWith","DeviceDetectorService","Injectable","SdSettingService","Inject","Optional","hash","map","EventEmitter","moveItemInArray","SdNotifyService","HostListener","FormGroup","SdLoadingService","SdExportService","SdTranslateService","Output","uuid.v4","Subject","QueryList","_subscription","_initConfiguration","debounceTime","isObservable","_getExportColumns","switchMap","combineLatest","trigger","state","style","transition","animate","MatTable","SdScrollDirective","SdQuickAction","MatPaginator","MatSort","ContentChild","ContentChildren","Pipe","MatPaginatorIntl","NgModule","CommonModule","MatSortModule","MatPaginatorModule","MatTableModule","MatMenuModule","MatIconModule","MatButtonModule","MatTooltipModule","MatProgressSpinnerModule","MatSlideToggleModule","MatCheckboxModule","MatListModule","MatChipsModule","CdkTableModule","DragDropModule","SdFormModule","SdServiceModule","SdCommonModule","SdGroupModule","DatePipe","DecimalPipe","CdkColumnDef"],"mappings":"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"}