@sd-angular/core 1.3.176 → 1.3.178

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/api/sd-angular-core-api.metadata.json +1 -1
  2. package/api/src/lib/api.service.d.ts +2 -2
  3. package/autocomplete/sd-angular-core-autocomplete.metadata.json +1 -1
  4. package/bundles/sd-angular-core-api.umd.js +147 -126
  5. package/bundles/sd-angular-core-api.umd.js.map +1 -1
  6. package/bundles/sd-angular-core-api.umd.min.js +1 -1
  7. package/bundles/sd-angular-core-api.umd.min.js.map +1 -1
  8. package/bundles/sd-angular-core-autocomplete.umd.js +1 -1
  9. package/bundles/sd-angular-core-autocomplete.umd.min.js +1 -1
  10. package/bundles/sd-angular-core-autocomplete.umd.min.js.map +1 -1
  11. package/bundles/sd-angular-core-chart.umd.js +1 -1
  12. package/bundles/sd-angular-core-chart.umd.min.js +1 -1
  13. package/bundles/sd-angular-core-chart.umd.min.js.map +1 -1
  14. package/bundles/sd-angular-core-image-preview.umd.js +1 -1
  15. package/bundles/sd-angular-core-image-preview.umd.min.js +1 -1
  16. package/bundles/sd-angular-core-image-preview.umd.min.js.map +1 -1
  17. package/bundles/sd-angular-core-table.umd.js +4 -4
  18. package/bundles/sd-angular-core-table.umd.js.map +1 -1
  19. package/bundles/sd-angular-core-table.umd.min.js +1 -1
  20. package/bundles/sd-angular-core-table.umd.min.js.map +1 -1
  21. package/chart/sd-angular-core-chart.metadata.json +1 -1
  22. package/esm2015/api/src/lib/api.service.js +51 -51
  23. package/esm2015/autocomplete/src/lib/autocomplete.component.js +1 -1
  24. package/esm2015/chart/src/lib/chart.component.js +1 -1
  25. package/esm2015/image-preview/src/lib/image-preview/image-preview-sdmodal.component.js +1 -1
  26. package/esm2015/table/src/lib/components/quick-action/quick-action.component.js +4 -4
  27. package/esm2015/table/src/lib/table.component.js +2 -2
  28. package/fesm2015/sd-angular-core-api.js +50 -50
  29. package/fesm2015/sd-angular-core-api.js.map +1 -1
  30. package/fesm2015/sd-angular-core-autocomplete.js +1 -1
  31. package/fesm2015/sd-angular-core-chart.js +1 -1
  32. package/fesm2015/sd-angular-core-image-preview.js +1 -1
  33. package/fesm2015/sd-angular-core-table.js +4 -4
  34. package/fesm2015/sd-angular-core-table.js.map +1 -1
  35. package/image-preview/sd-angular-core-image-preview.metadata.json +1 -1
  36. package/package.json +1 -1
  37. package/{sd-angular-core-1.3.176.tgz → sd-angular-core-1.3.178.tgz} +0 -0
  38. package/table/sd-angular-core-table.metadata.json +1 -1
  39. package/table/src/lib/components/quick-action/quick-action.component.d.ts +1 -1
  40. package/utility/src/lib/utility.service.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/table/src/lib/models/table-configuration.model.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-cell-def.directive.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-filter-def.directive.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/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"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","pop","length","push","create","__values","o","s","m","i","__read","r","ar","error","__spread","arguments","concat","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","DEFAULT_TABLE_CONFIG","paginate","pageSize","pages","TABLE_CONFIG","InjectionToken","templateRef","Directive","args","selector","TemplateRef","Input","SdPopupFilter","cdRef","_this","_filterRegister","externalFilters","externalFilter","inlineExternal","columns","columnFilter","inlineColumn","filterDefs","filterDef","inlineFilterDef","open","configuration","JSON","parse","stringify","filterValue","modal","markForCheck","close","onApply","defineProperty","ngAfterViewInit","ngOnDestroy","onClear","remove","Component","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","ViewChild","SdModal","SdTableFilter","ref","deviceService","filterRegisterChange","BehaviorSubject","_subscription","Subscription","onFilter","item","filterRegister","updateFilter","notReload","popupFilter","isMobileOrTablet","isDesktop","filter","add","pipe","startWith","subscribe","observer","unsubscribe","DeviceDetectorService","SdMaterialFilterDefDirective","val","defaultShowing","settingService","gridMaterialConfiguration","_COLUMNS","SUBINFORMATION","COMMAND","SELECTION","GROUP","_prefix","_getSetting","gridOption","key","prefix","default","_default","loadConfiguration","loadConfigurationResult","column","fixedColumn","firstColumns","secondColumns","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","_c","commands","group","visible","_a","fields","_b","col","invisible","forEach","find","field","origin","title","width","fixed","assign","type","children","childColumn","expand","init","hidden","map","Injectable","SdSettingService","Inject","Optional","MapToSdTableItem","data","meta","id","hash","display","isExpanding","isExpanded","actions","isSelected","selectable","_filterConfiguration","_filterValue","_cache","register","cacheSession","tempKey","filterConfiguration_1","_defaultConfiguration","undefined","_initConfiguration","filterValue_1","cacheFilter","_defaultValue","_initValue","keys","current","columnOperator","updatedFilter","includes","_u","_v","_w","_x","_y","_z","sdTableFilterDef","_e","_d","_g","_f","from","to","_k","_j","_h","_l","_o","_m","_q","_p","SdPopupConfiguration","notifyService","gridConfigurationService","changes","EventEmitter","_setting","isCreatingColumn","selected","disabledDrag","tableOption","onSave","detectChanges","onReset","confirm","ngOnInit","mouseUp","event","dropTable","moveItemInArray","previousIndex","currentIndex","table","renderRows","handleMouseDown","handleMouseUp","SdNotifyService","SdTableConfigurationService","HostListener","SdTable","tableConfiguration","tableConfigurationService","exportService","gridFilterService","_gridId","uuid.v4","_optionChanges","Subject","_localItems","items","selectedTableItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_reload","isExporting","isSelectAll","exportTitle","_loadCompleted","cacheValues","_cacheObjValues","_initCellDef","_10","_11","sdTableCellDef","_initFilterDef","_initFooterDef","sdTableFooterDef","_filterExportInfo","pageNumber","_9","rawColumnFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","option","showFirstLastButtons","_s","_r","operator","enable","_t","list","defaultListString","_1","_0","defaultListNumber","_4","_3","_2","defaultListValues","_7","_6","_5","defaultListDate","_loadFilterRegister","_subscription$1","debounceTime","pageIndex","force","_filterLocal","localItems","filterInfo","tableItem","columns_1","columns_1_1","toString","trim","toLowerCase","columnValue","indexOf","fValue","replace","cValue","fromDate","Date","begin","toDate","end","columnTime","getTime","fromDateTime","toDateTime","type_1","field_1","sort","tableItemCurrent","tableItemNext","s1","s2","reverse","index","total","_getFilter","_load","filterReq","catch","err","notify","warning","console","_12","_format","results","isArray","_render","sdScroll","scrollTop","reload","onReload","every","_updateSelectedItems","tableFilter","_exportedItems","export","isObservable","toPromise","exportedItems","_allColumns","disabled","_allExportedColumns","_onExport","isCSV","columns_2","_getExportColumns","pageSize_1","maxItemsPerRequest","batch","total_1","pageNumber_1","exportItems_1","items_1","promises_1","handleData","all","results_1","results_1_1","mapping","results_2","totalPage","percent","Math","round","allColumns","allExportedColumns","obj","handle","exportColumn","exportedColumn","transform","some","isExport","displayOnTrue","displayOnFalse","date","toFormat","e_9","columns_3","columns_3_1","exportItems_2","exportItems_2_1","_15","exportCSV","fileName","sheets","sheet","name","_13","exportExcel","onFilterChange","onExpand","rowData","always","multiple","res","finally","onSelect","single","onSelectAll","onClearSelection","clearFilter","setFilter","_loadValues","promises","this_1","valueField","displayField","toObject","columns_4","columns_4_1","this_2","results_3","results_3_1","rawItems","cellStyle","click","tooltip","htmlTemplate","views","mapValue_1","mapValue","this_3","values_1","union","lazyItems","badge","text-align","isHtml","newValue","time","endsWith","Number","isNumber","toVNCurrency","color","icon","badgeType","_8","badgeIcon","e_13","items_2","items_2_1","columns_5","columns_5_1","trackBy","_initConfiguration$1","setting","subject","getValue","configurationResult","displayColumns","configurationResult_1","displayColumns_1","paginator","page","sortChange","switchMap","combineLatest","animations","trigger","style","height","minHeight","visibility","transition","animate","SdExportService","SdTableFilterService","SdScrollDirective","SdQuickAction","MatPaginator","MatSort","ContentChild","SdMaterialSubInformationDefDirective","ContentChildren","SdTabelCellDefDirective","SdMaterialFooterDefDirective","SdCommandFilterPipe","commands_1","commands_1_1","command","flag","isHidden","e_1","childCommand","hidden_1","Pipe","SdCommandDisablePipe","SdCommandIconPipe","SdCommandTitlePipe","SdFilterExternalPipe","externalFilters_1","externalFilters_1_1","SdFilterColumnPipe","e_2","columnChildren","SdColumnTooltipPipe","_convert","action","fontSet","selectedItems","childAction","key_1","actions_1","actions_1_1","selection","availableActions","availableActions_1","availableActions_1_1","e1","isGrouped","setTimeout","first","SdFilterOperators","symbol","SdColumnInlineFilter","inlineSymbol","_inlineOperator_1","inlineOperatorChange","operators","filterChange","_valueChanges","_subcription","emit","onChangeOperator","_value","inlineOperator","useFilterDate","Output","groupedActions","hasGroup","clear","onClickAction","SdGroupPipe","groupItem","items_1_1","fields_1","fields_1_1","e_4","MatPaginatorIntlCro","_super","firstPageLabel","lastPageLabel","itemsPerPageLabel","nextPageLabel","previousPageLabel","getRangeLabel","String","__","constructor","__extends","MatPaginatorIntl","NgModule","imports","CommonModule","MatSortModule","MatPaginatorModule","MatTableModule","MatMenuModule","MatIconModule","MatButtonModule","MatTooltipModule","MatProgressSpinnerModule","MatSlideToggleModule","MatCheckboxModule","MatListModule","CdkTableModule","DragDropModule","SdFormModule","SdServiceModule","SdCommonModule","SdGroupModule","declarations","SdTableQuickAction","SdDesktopCell","SdDesktopCellView","SdDesktopCommand","SdSelectionActionFilterPipe","SdSelectionVisiblePipe","SdSelectionDisablePipe","SdSelectionVisibleSelectAllPipe","exports","providers","DatePipe","DecimalPipe","CdkColumnDef","provide","useClass"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\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 } from './table-column.model';\r\n\r\nexport interface ISdTableConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n operator?: {\r\n defaultListString?: SdFilterOperator[];\r\n defaultListNumber?: SdFilterOperator[];\r\n defaultListDate?: SdFilterOperator[];\r\n defaultListValues?: SdFilterOperator[];\r\n };\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[]\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_TABLE_CONFIG: ISdTableConfiguration = {\r\n paginate: {\r\n pageSize: 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 { 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 { 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 { SdMaterialFilterDefDirective } 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: SdMaterialFilterDefDirective[] = [];\r\n filterDef: Record<string, any> = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n ngOnDestroy() {}\r\n\r\n open = () => {\r\n const configuration = this.#filterRegister.configuration.get();\r\n this.inlineColumn = JSON.parse(JSON.stringify(configuration.inlineColumn));\r\n this.inlineExternal = JSON.parse(JSON.stringify(configuration.inlineExternal));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(configuration.inlineFilterDef));\r\n const filterValue = this.#filterRegister.value.get();\r\n this.columnFilter = JSON.parse(JSON.stringify(filterValue.columnFilter));\r\n this.externalFilter = JSON.parse(JSON.stringify(filterValue.externalFilter));\r\n this.filterDef = JSON.parse(JSON.stringify(filterValue.filterDef));\r\n this.modal.open();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n close = () => {\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onApply = () => {\r\n this.#filterRegister.configuration.set({\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef,\r\n });\r\n this.#filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onClear() {\r\n this.#filterRegister.value.remove();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {\r\n SdTableOptionFilter,\r\n SdTableExternalFilter,\r\n 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 { SdMaterialFilterDefDirective } 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: SdMaterialFilterDefDirective[] = [];\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, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableFilterDef]'\r\n})\r\nexport class SdMaterialFilterDefDirective {\r\n @Input() sdTableFilterDef: string;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n defaultShowing: boolean;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[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 = 'bd364e28-fe67-48b9-a537-1a306f7d195c';\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(TABLE_CONFIG) @Optional() public gridMaterialConfiguration: ISdTableConfiguration\r\n ) { }\r\n\r\n #getSetting = (gridOption: SdTableOption): SdSetting<SdTableConfiguration> => {\r\n if (!gridOption?.key) {\r\n return null;\r\n }\r\n return this.settingService.create<SdTableConfiguration>(\r\n { prefix: this.#prefix, key: gridOption.key },\r\n {\r\n default: this.#default(gridOption),\r\n }\r\n );\r\n };\r\n\r\n loadConfiguration = (gridOption: SdTableOption) => {\r\n if (!gridOption?.key) {\r\n return this.#default(gridOption);\r\n }\r\n const setting = this.#getSetting(gridOption);\r\n return setting.get();\r\n };\r\n\r\n loadConfigurationResult = (gridOption: 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 } = gridOption || {};\r\n if (selector?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (commands?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.COMMAND);\r\n result.displayedColumns.push(this.#COLUMNS.COMMAND);\r\n }\r\n if (group?.fields?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.GROUP);\r\n result.displayedColumns.push(this.#COLUMNS.GROUP);\r\n }\r\n configuration?.columns\r\n ?.filter(col => !col.invisible)\r\n .forEach(col => {\r\n const column = gridOption?.columns.find(e => e.field === col.origin.field);\r\n if (column) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n result.firstColumns.push({\r\n ...column,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n result.displayedColumns.push(col.origin.field);\r\n if (column.type === 'children') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n }\r\n }\r\n });\r\n if (gridOption.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 { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdMaterialFilterDefDirective } 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: SdMaterialFilterDefDirective[];\r\n }\r\n ) => {\r\n let cacheSession = false;\r\n \r\n const { id, columns, externalFilters } = args;\r\n const tempKey = hash({\r\n id,\r\n columns: columns?.map(e => e.field).filter(field => !!field) || [],\r\n externalFilters: externalFilters?.map(e => e.field).filter(field => !!field) || [],\r\n });\r\n const key = filter?.key || tempKey;\r\n if (!filter?.key) {\r\n cacheSession = true; // Nếu không có key thì chỉ lưu theo session\r\n }\r\n if (!this.#cache[key]) {\r\n // Setting của filter configuration\r\n const filterConfiguration = this.settingService.create<SdTableFilterConfiguration>(\r\n {\r\n prefix: this.#filterConfiguration,\r\n key,\r\n },\r\n {\r\n default: this.#defaultConfiguration(args),\r\n type: cacheSession ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị configuration merge với giá trị defaultShowing của args nếu như args có thay đổi\r\n filterConfiguration.set(this.#initConfiguration(args, filterConfiguration.get()));\r\n // Setting của filter value\r\n const filterValue = this.settingService.create<SdTableFilterValue>(\r\n {\r\n prefix: this.#filterValue,\r\n key: !filter?.cacheFilter ? tempKey : key,\r\n },\r\n {\r\n default: this.#defaultValue(args),\r\n type: cacheSession || !filter?.cacheFilter ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị value merge với giá trị default của args nếu như args có thay đổi\r\n filterValue.set(this.#initValue(args, filterValue.get()));\r\n this.#cache[key] = {\r\n configuration: {\r\n get: (): SdTableFilterConfiguration => {\r\n return filterConfiguration.get();\r\n },\r\n set: (configuration: Partial<SdTableFilterConfiguration>): SdTableFilterConfiguration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n filterConfiguration.set({\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n });\r\n return {\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n };\r\n },\r\n remove: () => {\r\n filterConfiguration.set(this.#defaultConfiguration(args));\r\n },\r\n observer: filterConfiguration.observer.pipe(\r\n startWith(filterConfiguration.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(configuration => configuration || this.#defaultConfiguration(args))\r\n ),\r\n },\r\n value: {\r\n get: (): SdTableFilterValue => {\r\n return filterValue.get();\r\n },\r\n set: (value: Partial<SdTableFilterValue>): SdTableFilterValue => {\r\n const keys = Object.keys(value || {});\r\n const current = filterValue.get();\r\n const { columnOperator, columnFilter, externalFilter, filterDef, notReload } = current;\r\n const updatedFilter = {\r\n // Filter column\r\n columnOperator: keys.includes('columnOperator') ? value?.columnOperator || {} : columnOperator,\r\n columnFilter: keys.includes('columnFilter') ? value?.columnFilter || {} : columnFilter,\r\n // Filter external\r\n externalFilter: keys.includes('externalFilter') ? value?.externalFilter || {} : externalFilter,\r\n // Filter def\r\n filterDef: keys.includes('filterDef') ? value?.filterDef || {} : filterDef,\r\n // Force\r\n notReload: !!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: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.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: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n externalFilter[item.field] = item?.default;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.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 };\r\n };\r\n\r\n #initConfiguration = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n configuration: SdTableFilterConfiguration\r\n ): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = configuration?.inlineColumn?.[item.field] ?? item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = configuration?.inlineExternal?.[item.field] ?? item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.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: SdMaterialFilterDefDirective[];\r\n },\r\n value: SdTableFilterValue\r\n ): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = value?.columnFilter?.[item.field] ?? item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n if (item.type === 'daterange') {\r\n externalFilter[item.field] = {\r\n from: value?.externalFilter?.[item.field]?.from ?? item.default?.from,\r\n to: value?.externalFilter?.[item.field]?.to ?? item.default?.to,\r\n };\r\n } else {\r\n externalFilter[item.field] = value?.externalFilter?.[item.field] ?? item?.default;\r\n }\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.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 };\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 gridConfigurationService: SdTableConfigurationService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n @HostListener('window:mouseup', ['$event'])\r\n mouseUp(event) {\r\n this.disabledDrag = true;\r\n }\r\n open = async () => {\r\n this.#setting = this.gridConfigurationService.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 Input,\r\n ViewChild,\r\n AfterViewInit,\r\n Optional,\r\n Inject,\r\n ChangeDetectorRef,\r\n ContentChildren,\r\n QueryList,\r\n OnInit,\r\n OnDestroy,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport * as uuid from 'uuid';\r\nimport { 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 } 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 { SdMaterialFilterDefDirective } 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, 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\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(SdPopupConfiguration) popupConfiguration: SdPopupConfiguration;\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(configuration => {\r\n const configurationResult = this.tableConfigurationService.loadConfigurationResult(this.tableOption, configuration);\r\n const displayColumns = configurationResult.displayedColumns || [];\r\n this.#loadValues(this.tableOption.columns.filter(column => displayColumns.includes(column.field))).then(() => {\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.tableOption);\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.#loadValues(this.tableOption.columns.filter(column => displayColumns.includes(column.field))).then(() => {\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.tableOption);\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(SdMaterialFilterDefDirective) sdFilterDefs = new QueryList<SdMaterialFilterDefDirective>();\r\n filterDefs: SdMaterialFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnOperator: Record<string, SdFilterOperator> = {};\r\n columnFilter: Record<string, any> = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #reload = new Subject<{\r\n force: boolean;\r\n }>();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n #loadCompleted = false;\r\n cacheValues: Record<string, any[]> = {};\r\n #cacheObjValues: Record<string, Record<string, string>> = {};\r\n constructor(\r\n private ref: ChangeDetectorRef,\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\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 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 && !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 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 });\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 if (columnValue !== filterValue) {\r\n return false;\r\n }\r\n } else if (type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (type === 'datetime' || type === 'date' || type === 'time') {\r\n const from = rawColumnFilter[field]?.from ?? rawColumnFilter[field];\r\n const to = rawColumnFilter[field]?.to ?? rawColumnFilter[field];\r\n const fromDate = Date.begin(from);\r\n const toDate = Date.end(to);\r\n if (fromDate || toDate) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n\r\n const columnTime = new Date(columnValue).getTime();\r\n const fromDateTime = fromDate?.getTime() || null;\r\n const toDateTime = toDate?.getTime() || null;\r\n\r\n if (fromDateTime && fromDateTime > columnTime) {\r\n return false;\r\n }\r\n if (toDateTime && columnTime > toDateTime) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (orderBy && orderDirection) {\r\n const column = columns.find(e => e.field === orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((tableItemCurrent, tableItemNext) => {\r\n const 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 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 this.isLoading = false;\r\n return {\r\n items: await this.#format(data?.items, this.tableOption.columns),\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 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 };\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 (isCSV?: boolean) => {\r\n try {\r\n let columns = this.#getExportColumns();\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\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy');\r\n } else if (column.type === 'datetime') {\r\n let date = item[column.field];\r\n // Nếu là datetime thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy HH:mm');\r\n } else if (column.type === 'time') {\r\n let date = item[column.field];\r\n // Nếu là time thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'HH:mm');\r\n } else if (column.type === 'values') {\r\n // Nếu là values thì lấy giá trị của value được chọn\r\n obj[column.field] = this.#cacheObjValues[column.field]?.[item[column.field]] || item[column.field];\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n for (const exportColumn of columns) {\r\n await handle(exportColumn);\r\n }\r\n items.push(obj);\r\n }\r\n };\r\n while (pageNumber * pageSize < total) {\r\n promises.push(this.#exportedItems(pageNumber, pageSize));\r\n pageNumber++;\r\n if (promises.length < batch) {\r\n continue;\r\n }\r\n await handleData();\r\n }\r\n if (promises.length > 0) {\r\n await handleData();\r\n }\r\n if (isCSV) {\r\n await this.exportService.exportCSV({\r\n columns,\r\n items,\r\n fileName: this.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 = () => {\r\n const columns = [\r\n ...this.tableOption.columns.filter(e => !e.export?.disabled),\r\n ...(this.tableOption.export?.columns?.filter(e => !e.export?.disabled) || []),\r\n ];\r\n return columns;\r\n };\r\n\r\n exportExcel = () => {\r\n this.#onExport();\r\n };\r\n\r\n exportCSV = () => {\r\n this.#onExport(true);\r\n };\r\n\r\n onFilterChange = () => {\r\n this.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 || val === 0) && !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 display.data = this.#cacheObjValues[field]?.[column.option.mapValue(value, rowData)]?.[column.option.displayField] || value;\r\n } else {\r\n display.data = this.#cacheObjValues[field]?.[value]?.[column.option.displayField] || value;\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 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\n@Pipe({\r\n name: 'commandDisable'\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: any, command: SdTableCommand): boolean {\r\n if (!command?.disabled) {\r\n return false;\r\n }\r\n if (typeof (command.disabled) === 'boolean') {\r\n return command.disabled;\r\n }\r\n return command.disabled(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\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, QueryList } from '@angular/core';\r\nimport { SdTabelCellDefDirective } from '../../directives/sd-table-cell-def.directive';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() 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\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\r\nexport const SdFilterOperators: { value: SdFilterOperator; symbol?: string; display: string }[] = [\r\n {\r\n value: 'EQUAL',\r\n symbol: '=',\r\n display: 'Bằng',\r\n },\r\n {\r\n value: 'NOT_EQUAL',\r\n symbol: '≠',\r\n display: 'Không bằng',\r\n },\r\n {\r\n value: 'GREATER_THAN',\r\n symbol: '>',\r\n display: 'Lớn hơn',\r\n },\r\n {\r\n value: 'LESS_THAN',\r\n symbol: '<',\r\n display: 'Nhỏ hơn',\r\n },\r\n {\r\n value: 'GREATER_OR_EQUAL',\r\n symbol: '≥',\r\n display: 'Lớn hơn, hoặc bằng',\r\n },\r\n {\r\n value: 'LESS_OR_EQUAL',\r\n symbol: '≤',\r\n display: 'Nhỏ hơn, hoặc bằng',\r\n },\r\n {\r\n value: 'CONTAIN',\r\n symbol: 'join_inner',\r\n display: 'Chứa',\r\n },\r\n {\r\n value: 'NOT_CONTAIN',\r\n symbol: 'join',\r\n display: 'Không chứa',\r\n },\r\n {\r\n value: 'START_WITH',\r\n symbol: 'line_start_circle',\r\n display: 'Bắt đầu bởi',\r\n },\r\n {\r\n value: 'END_WITH',\r\n symbol: 'line_end_circle',\r\n display: 'Kết thúc bởi',\r\n },\r\n {\r\n value: 'IN',\r\n symbol: 'checklist_rtl',\r\n display: 'Nằm trong',\r\n },\r\n {\r\n value: 'NOT_IN',\r\n symbol: 'event_list',\r\n display: 'Không nằm trong',\r\n },\r\n];\r\n\r\nexport type SdTableColumnTransformFunc<T = any> = (\r\n value: any,\r\n rowData: T,\r\n args?: {\r\n isExport?: boolean;\r\n }\r\n) => string | Promise<string>;\r\n\r\ninterface SdTableColumnBase<T = any> {\r\n field: 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 enable?: boolean;\r\n list?: SdFilterOperator[];\r\n };\r\n };\r\n export?: {\r\n disabled?: boolean;\r\n };\r\n}\r\n\r\ninterface SdTableColumnText<T = any> extends SdTableColumnBase<T> {\r\n type: 'string';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n}\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; // 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();\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.ref.markForCheck();\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.meta.selector.actions = rowData.meta.selector.actions || [];\r\n if (!actions?.length) {\r\n rowData.meta.selector.selectable = true;\r\n return rowData.meta.selector.selectable;\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n let flag = false;\r\n let hasGroup = false;\r\n for (const childAction of action.children) {\r\n const { hidden, isGrouped } = childAction;\r\n const key = hash(childAction);\r\n if (isGrouped) {\r\n hasGroup = true;\r\n }\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n if (flag) {\r\n rowData.meta.selector.actions.push(hash(action));\r\n if (hasGroup) {\r\n groupedActions.push(hash(action));\r\n }\r\n }\r\n } else {\r\n const { hidden, isGrouped } = action;\r\n const key = hash(action);\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.meta.selector.selectable = !!rowData.meta.selector.actions?.length;\r\n if (!rowData.meta.selector.selectable || !groupedActions.length || rowData?.meta.group?.items?.length) {\r\n return rowData.meta.selector.selectable;\r\n }\r\n // Đối với trường hợp grouped, tuy selectable là true nhưng vẫn ẩn đi checkbox\r\n // nếu các action đều thuộc groupedActions và rowData ko phải là dòng group\r\n return rowData.meta.selector.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\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() selectedItems: 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.selectedItems.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 { SdMaterialFilterDefDirective } 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\n\r\n@Injectable()\r\nexport class MatPaginatorIntlCro extends MatPaginatorIntl {\r\n firstPageLabel = 'Trang đầu';\r\n lastPageLabel = 'Trang cuối';\r\n itemsPerPageLabel = 'Kích thước trang';\r\n nextPageLabel = 'Trang sau';\r\n previousPageLabel = 'Trang trước';\r\n\r\n getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n if (length === 0 || pageSize === 0) {\r\n return '';\r\n }\r\n const from = page * pageSize + 1;\r\n const to = from + (length - page * pageSize > pageSize ? pageSize : length - page * pageSize) - 1;\r\n return `${from}-${to} trên ${length}`;\r\n };\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n 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 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 SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdPopupConfiguration,\r\n SdTableFilter,\r\n SdPopupFilter,\r\n\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 SdMaterialFilterDefDirective,\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"]}
1
+ {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/table/src/lib/models/table-configuration.model.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-cell-def.directive.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-filter-def.directive.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/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"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","pop","length","push","create","__values","o","s","m","i","__read","r","ar","error","__spread","arguments","concat","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","DEFAULT_TABLE_CONFIG","paginate","pageSize","pages","TABLE_CONFIG","InjectionToken","templateRef","Directive","args","selector","TemplateRef","Input","SdPopupFilter","cdRef","_this","_filterRegister","externalFilters","externalFilter","inlineExternal","columns","columnFilter","inlineColumn","filterDefs","filterDef","inlineFilterDef","open","configuration","JSON","parse","stringify","filterValue","modal","markForCheck","close","onApply","defineProperty","ngAfterViewInit","ngOnDestroy","onClear","remove","Component","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","ViewChild","SdModal","SdTableFilter","ref","deviceService","filterRegisterChange","BehaviorSubject","_subscription","Subscription","onFilter","item","filterRegister","updateFilter","notReload","popupFilter","isMobileOrTablet","isDesktop","filter","add","pipe","startWith","subscribe","observer","unsubscribe","DeviceDetectorService","SdMaterialFilterDefDirective","val","defaultShowing","settingService","gridMaterialConfiguration","_COLUMNS","SUBINFORMATION","COMMAND","SELECTION","GROUP","_prefix","_getSetting","gridOption","key","prefix","default","_default","loadConfiguration","loadConfigurationResult","column","fixedColumn","firstColumns","secondColumns","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","_c","commands","group","visible","_a","fields","_b","col","invisible","forEach","find","field","origin","title","width","fixed","assign","type","children","childColumn","expand","init","hidden","map","Injectable","SdSettingService","Inject","Optional","MapToSdTableItem","data","meta","id","hash","display","isExpanding","isExpanded","actions","isSelected","selectable","_filterConfiguration","_filterValue","_cache","register","cacheSession","tempKey","filterConfiguration_1","_defaultConfiguration","undefined","_initConfiguration","filterValue_1","cacheFilter","_defaultValue","_initValue","keys","current","columnOperator","updatedFilter","includes","_u","_v","_w","_x","_y","_z","sdTableFilterDef","_e","_d","_g","_f","from","to","_k","_j","_h","_l","_o","_m","_q","_p","SdPopupConfiguration","notifyService","gridConfigurationService","changes","EventEmitter","_setting","isCreatingColumn","selected","disabledDrag","tableOption","onSave","detectChanges","onReset","confirm","ngOnInit","mouseUp","event","dropTable","moveItemInArray","previousIndex","currentIndex","table","renderRows","handleMouseDown","handleMouseUp","SdNotifyService","SdTableConfigurationService","HostListener","SdTable","tableConfiguration","tableConfigurationService","exportService","gridFilterService","_gridId","uuid.v4","_optionChanges","Subject","_localItems","items","selectedTableItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_reload","isExporting","isSelectAll","exportTitle","_loadCompleted","cacheValues","_cacheObjValues","_initCellDef","_10","_11","sdTableCellDef","_initFilterDef","_initFooterDef","sdTableFooterDef","_filterExportInfo","pageNumber","_9","rawColumnFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","option","showFirstLastButtons","_s","_r","operator","enable","_t","list","defaultListString","_1","_0","defaultListNumber","_4","_3","_2","defaultListValues","_7","_6","_5","defaultListDate","_loadFilterRegister","_subscription$1","debounceTime","pageIndex","force","_filterLocal","localItems","filterInfo","tableItem","columns_1","columns_1_1","toString","trim","toLowerCase","columnValue","indexOf","fValue","replace","cValue","fromDate","Date","begin","toDate","end","columnTime","getTime","fromDateTime","toDateTime","type_1","field_1","sort","tableItemCurrent","tableItemNext","s1","s2","reverse","index","total","_getFilter","_load","filterReq","catch","err","notify","warning","console","_12","_format","results","isArray","_render","sdScroll","scrollTop","reload","onReload","every","_updateSelectedItems","tableFilter","_exportedItems","export","isObservable","toPromise","exportedItems","_allColumns","disabled","_allExportedColumns","_onExport","isCSV","columns_2","_getExportColumns","pageSize_1","maxItemsPerRequest","batch","total_1","pageNumber_1","exportItems_1","items_1","promises_1","handleData","all","results_1","results_1_1","mapping","results_2","totalPage","percent","Math","round","allColumns","allExportedColumns","obj","handle","exportColumn","exportedColumn","transform","some","isExport","displayOnTrue","displayOnFalse","date","toFormat","e_9","columns_3","columns_3_1","exportItems_2","exportItems_2_1","_15","exportCSV","fileName","sheets","sheet","name","_13","exportExcel","onFilterChange","onExpand","rowData","always","multiple","res","finally","onSelect","single","onSelectAll","onClearSelection","clearFilter","setFilter","_loadValues","promises","this_1","valueField","displayField","toObject","columns_4","columns_4_1","this_2","results_3","results_3_1","rawItems","cellStyle","click","tooltip","htmlTemplate","views","mapValue_1","mapValue","this_3","values_1","union","lazyItems","badge","text-align","isHtml","newValue","time","endsWith","Number","isNumber","toVNCurrency","color","icon","badgeType","_8","badgeIcon","e_13","items_2","items_2_1","columns_5","columns_5_1","trackBy","_initConfiguration$1","setting","subject","getValue","configurationResult","displayColumns","configurationResult_1","displayColumns_1","paginator","page","sortChange","switchMap","combineLatest","animations","trigger","style","height","minHeight","visibility","transition","animate","SdExportService","SdTableFilterService","SdScrollDirective","SdQuickAction","MatPaginator","MatSort","ContentChild","SdMaterialSubInformationDefDirective","ContentChildren","SdTabelCellDefDirective","SdMaterialFooterDefDirective","SdCommandFilterPipe","commands_1","commands_1_1","command","flag","isHidden","e_1","childCommand","hidden_1","Pipe","SdCommandDisablePipe","SdCommandIconPipe","SdCommandTitlePipe","SdFilterExternalPipe","externalFilters_1","externalFilters_1_1","SdFilterColumnPipe","e_2","columnChildren","SdColumnTooltipPipe","_convert","action","fontSet","selectedItems","childAction","key_1","actions_1","actions_1_1","selection","availableActions","availableActions_1","availableActions_1_1","e1","isGrouped","setTimeout","first","SdFilterOperators","symbol","SdColumnInlineFilter","inlineSymbol","_inlineOperator_1","inlineOperatorChange","operators","filterChange","_valueChanges","_subcription","emit","onChangeOperator","_value","inlineOperator","useFilterDate","Output","groupedActions","hasGroup","clear","onClickAction","SdGroupPipe","groupItem","items_1_1","fields_1","fields_1_1","e_4","MatPaginatorIntlCro","_super","firstPageLabel","lastPageLabel","itemsPerPageLabel","nextPageLabel","previousPageLabel","getRangeLabel","String","__","constructor","__extends","MatPaginatorIntl","NgModule","imports","CommonModule","MatSortModule","MatPaginatorModule","MatTableModule","MatMenuModule","MatIconModule","MatButtonModule","MatTooltipModule","MatProgressSpinnerModule","MatSlideToggleModule","MatCheckboxModule","MatListModule","CdkTableModule","DragDropModule","SdFormModule","SdServiceModule","SdCommonModule","SdGroupModule","declarations","SdTableQuickAction","SdDesktopCell","SdDesktopCellView","SdDesktopCommand","SdSelectionActionFilterPipe","SdSelectionVisiblePipe","SdSelectionDisablePipe","SdSelectionVisibleSelectAllPipe","exports","providers","DatePipe","DecimalPipe","CdkColumnDef","provide","useClass"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\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 } from './table-column.model';\r\n\r\nexport interface ISdTableConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n operator?: {\r\n defaultListString?: SdFilterOperator[];\r\n defaultListNumber?: SdFilterOperator[];\r\n defaultListDate?: SdFilterOperator[];\r\n defaultListValues?: SdFilterOperator[];\r\n };\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[]\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_TABLE_CONFIG: ISdTableConfiguration = {\r\n paginate: {\r\n pageSize: 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 { 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 { 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 { SdMaterialFilterDefDirective } 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: SdMaterialFilterDefDirective[] = [];\r\n filterDef: Record<string, any> = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n ngOnDestroy() {}\r\n\r\n open = () => {\r\n const configuration = this.#filterRegister.configuration.get();\r\n this.inlineColumn = JSON.parse(JSON.stringify(configuration.inlineColumn));\r\n this.inlineExternal = JSON.parse(JSON.stringify(configuration.inlineExternal));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(configuration.inlineFilterDef));\r\n const filterValue = this.#filterRegister.value.get();\r\n this.columnFilter = JSON.parse(JSON.stringify(filterValue.columnFilter));\r\n this.externalFilter = JSON.parse(JSON.stringify(filterValue.externalFilter));\r\n this.filterDef = JSON.parse(JSON.stringify(filterValue.filterDef));\r\n this.modal.open();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n close = () => {\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onApply = () => {\r\n this.#filterRegister.configuration.set({\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef,\r\n });\r\n this.#filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onClear() {\r\n this.#filterRegister.value.remove();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {\r\n SdTableOptionFilter,\r\n SdTableExternalFilter,\r\n 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 { SdMaterialFilterDefDirective } 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: SdMaterialFilterDefDirective[] = [];\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, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableFilterDef]'\r\n})\r\nexport class SdMaterialFilterDefDirective {\r\n @Input() sdTableFilterDef: string;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n defaultShowing: boolean;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[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 = 'bd364e28-fe67-48b9-a537-1a306f7d195c';\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(TABLE_CONFIG) @Optional() public gridMaterialConfiguration: ISdTableConfiguration\r\n ) { }\r\n\r\n #getSetting = (gridOption: SdTableOption): SdSetting<SdTableConfiguration> => {\r\n if (!gridOption?.key) {\r\n return null;\r\n }\r\n return this.settingService.create<SdTableConfiguration>(\r\n { prefix: this.#prefix, key: gridOption.key },\r\n {\r\n default: this.#default(gridOption),\r\n }\r\n );\r\n };\r\n\r\n loadConfiguration = (gridOption: SdTableOption) => {\r\n if (!gridOption?.key) {\r\n return this.#default(gridOption);\r\n }\r\n const setting = this.#getSetting(gridOption);\r\n return setting.get();\r\n };\r\n\r\n loadConfigurationResult = (gridOption: 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 } = gridOption || {};\r\n if (selector?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (commands?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.COMMAND);\r\n result.displayedColumns.push(this.#COLUMNS.COMMAND);\r\n }\r\n if (group?.fields?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.GROUP);\r\n result.displayedColumns.push(this.#COLUMNS.GROUP);\r\n }\r\n configuration?.columns\r\n ?.filter(col => !col.invisible)\r\n .forEach(col => {\r\n const column = gridOption?.columns.find(e => e.field === col.origin.field);\r\n if (column) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n result.firstColumns.push({\r\n ...column,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n result.displayedColumns.push(col.origin.field);\r\n if (column.type === 'children') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n }\r\n }\r\n });\r\n if (gridOption.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 { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdMaterialFilterDefDirective } 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: SdMaterialFilterDefDirective[];\r\n }\r\n ) => {\r\n let cacheSession = false;\r\n \r\n const { id, columns, externalFilters } = args;\r\n const tempKey = hash({\r\n id,\r\n columns: columns?.map(e => e.field).filter(field => !!field) || [],\r\n externalFilters: externalFilters?.map(e => e.field).filter(field => !!field) || [],\r\n });\r\n const key = filter?.key || tempKey;\r\n if (!filter?.key) {\r\n cacheSession = true; // Nếu không có key thì chỉ lưu theo session\r\n }\r\n if (!this.#cache[key]) {\r\n // Setting của filter configuration\r\n const filterConfiguration = this.settingService.create<SdTableFilterConfiguration>(\r\n {\r\n prefix: this.#filterConfiguration,\r\n key,\r\n },\r\n {\r\n default: this.#defaultConfiguration(args),\r\n type: cacheSession ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị configuration merge với giá trị defaultShowing của args nếu như args có thay đổi\r\n filterConfiguration.set(this.#initConfiguration(args, filterConfiguration.get()));\r\n // Setting của filter value\r\n const filterValue = this.settingService.create<SdTableFilterValue>(\r\n {\r\n prefix: this.#filterValue,\r\n key: !filter?.cacheFilter ? tempKey : key,\r\n },\r\n {\r\n default: this.#defaultValue(args),\r\n type: cacheSession || !filter?.cacheFilter ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị value merge với giá trị default của args nếu như args có thay đổi\r\n filterValue.set(this.#initValue(args, filterValue.get()));\r\n this.#cache[key] = {\r\n configuration: {\r\n get: (): SdTableFilterConfiguration => {\r\n return filterConfiguration.get();\r\n },\r\n set: (configuration: Partial<SdTableFilterConfiguration>): SdTableFilterConfiguration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n filterConfiguration.set({\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n });\r\n return {\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n };\r\n },\r\n remove: () => {\r\n filterConfiguration.set(this.#defaultConfiguration(args));\r\n },\r\n observer: filterConfiguration.observer.pipe(\r\n startWith(filterConfiguration.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(configuration => configuration || this.#defaultConfiguration(args))\r\n ),\r\n },\r\n value: {\r\n get: (): SdTableFilterValue => {\r\n return filterValue.get();\r\n },\r\n set: (value: Partial<SdTableFilterValue>): SdTableFilterValue => {\r\n const keys = Object.keys(value || {});\r\n const current = filterValue.get();\r\n const { columnOperator, columnFilter, externalFilter, filterDef, notReload } = current;\r\n const updatedFilter = {\r\n // Filter column\r\n columnOperator: keys.includes('columnOperator') ? value?.columnOperator || {} : columnOperator,\r\n columnFilter: keys.includes('columnFilter') ? value?.columnFilter || {} : columnFilter,\r\n // Filter external\r\n externalFilter: keys.includes('externalFilter') ? value?.externalFilter || {} : externalFilter,\r\n // Filter def\r\n filterDef: keys.includes('filterDef') ? value?.filterDef || {} : filterDef,\r\n // Force\r\n notReload: !!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: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.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: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n externalFilter[item.field] = item?.default;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.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 };\r\n };\r\n\r\n #initConfiguration = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n configuration: SdTableFilterConfiguration\r\n ): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = configuration?.inlineColumn?.[item.field] ?? item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = configuration?.inlineExternal?.[item.field] ?? item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.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: SdMaterialFilterDefDirective[];\r\n },\r\n value: SdTableFilterValue\r\n ): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = value?.columnFilter?.[item.field] ?? item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n if (item.type === 'daterange') {\r\n externalFilter[item.field] = {\r\n from: value?.externalFilter?.[item.field]?.from ?? item.default?.from,\r\n to: value?.externalFilter?.[item.field]?.to ?? item.default?.to,\r\n };\r\n } else {\r\n externalFilter[item.field] = value?.externalFilter?.[item.field] ?? item?.default;\r\n }\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.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 };\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 gridConfigurationService: SdTableConfigurationService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n @HostListener('window:mouseup', ['$event'])\r\n mouseUp(event) {\r\n this.disabledDrag = true;\r\n }\r\n open = async () => {\r\n this.#setting = this.gridConfigurationService.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 Input,\r\n ViewChild,\r\n AfterViewInit,\r\n Optional,\r\n Inject,\r\n ChangeDetectorRef,\r\n ContentChildren,\r\n QueryList,\r\n OnInit,\r\n OnDestroy,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport * as uuid from 'uuid';\r\nimport { 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 } 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 { SdMaterialFilterDefDirective } 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, 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\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(SdPopupConfiguration) popupConfiguration: SdPopupConfiguration;\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(configuration => {\r\n const configurationResult = this.tableConfigurationService.loadConfigurationResult(this.tableOption, configuration);\r\n const displayColumns = configurationResult.displayedColumns || [];\r\n this.#loadValues(this.tableOption.columns.filter(column => displayColumns.includes(column.field))).then(() => {\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.tableOption);\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.#loadValues(this.tableOption.columns.filter(column => displayColumns.includes(column.field))).then(() => {\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.tableOption);\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(SdMaterialFilterDefDirective) sdFilterDefs = new QueryList<SdMaterialFilterDefDirective>();\r\n filterDefs: SdMaterialFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnOperator: Record<string, SdFilterOperator> = {};\r\n columnFilter: Record<string, any> = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #reload = new Subject<{\r\n force: boolean;\r\n }>();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n #loadCompleted = false;\r\n cacheValues: Record<string, any[]> = {};\r\n #cacheObjValues: Record<string, Record<string, string>> = {};\r\n constructor(\r\n private ref: ChangeDetectorRef,\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\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 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 && !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 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 });\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 if (columnValue !== filterValue) {\r\n return false;\r\n }\r\n } else if (type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (type === 'datetime' || type === 'date' || type === 'time') {\r\n const from = rawColumnFilter[field]?.from ?? rawColumnFilter[field];\r\n const to = rawColumnFilter[field]?.to ?? rawColumnFilter[field];\r\n const fromDate = Date.begin(from);\r\n const toDate = Date.end(to);\r\n if (fromDate || toDate) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n\r\n const columnTime = new Date(columnValue).getTime();\r\n const fromDateTime = fromDate?.getTime() || null;\r\n const toDateTime = toDate?.getTime() || null;\r\n\r\n if (fromDateTime && fromDateTime > columnTime) {\r\n return false;\r\n }\r\n if (toDateTime && columnTime > toDateTime) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (orderBy && orderDirection) {\r\n const column = columns.find(e => e.field === orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((tableItemCurrent, tableItemNext) => {\r\n const 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 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 this.isLoading = false;\r\n return {\r\n items: await this.#format(data?.items, this.tableOption.columns),\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 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 };\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 (isCSV?: boolean) => {\r\n try {\r\n let columns = this.#getExportColumns();\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\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy');\r\n } else if (column.type === 'datetime') {\r\n let date = item[column.field];\r\n // Nếu là datetime thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy HH:mm');\r\n } else if (column.type === 'time') {\r\n let date = item[column.field];\r\n // Nếu là time thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'HH:mm');\r\n } else if (column.type === 'values') {\r\n // Nếu là values thì lấy giá trị của value được chọn\r\n obj[column.field] = this.#cacheObjValues[column.field]?.[item[column.field]] || item[column.field];\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n for (const exportColumn of columns) {\r\n await handle(exportColumn);\r\n }\r\n items.push(obj);\r\n }\r\n };\r\n while (pageNumber * pageSize < total) {\r\n promises.push(this.#exportedItems(pageNumber, pageSize));\r\n pageNumber++;\r\n if (promises.length < batch) {\r\n continue;\r\n }\r\n await handleData();\r\n }\r\n if (promises.length > 0) {\r\n await handleData();\r\n }\r\n if (isCSV) {\r\n await this.exportService.exportCSV({\r\n columns,\r\n items,\r\n fileName: this.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 = () => {\r\n const columns = [\r\n ...this.tableOption.columns.filter(e => !e.export?.disabled),\r\n ...(this.tableOption.export?.columns?.filter(e => !e.export?.disabled) || []),\r\n ];\r\n return columns;\r\n };\r\n\r\n exportExcel = () => {\r\n this.#onExport();\r\n };\r\n\r\n exportCSV = () => {\r\n this.#onExport(true);\r\n };\r\n\r\n onFilterChange = () => {\r\n this.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 || val === 0) && !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 display.data = this.#cacheObjValues[field]?.[column.option.mapValue(value, rowData)]?.[column.option.displayField] || value;\r\n } else {\r\n display.data = this.#cacheObjValues[field]?.[value]?.[column.option.displayField] || value;\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 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\n@Pipe({\r\n name: 'commandDisable'\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: any, command: SdTableCommand): boolean {\r\n if (!command?.disabled) {\r\n return false;\r\n }\r\n if (typeof (command.disabled) === 'boolean') {\r\n return command.disabled;\r\n }\r\n return command.disabled(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\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, QueryList } from '@angular/core';\r\nimport { SdTabelCellDefDirective } from '../../directives/sd-table-cell-def.directive';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() 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\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\r\nexport const SdFilterOperators: { value: SdFilterOperator; symbol?: string; display: string }[] = [\r\n {\r\n value: 'EQUAL',\r\n symbol: '=',\r\n display: 'Bằng',\r\n },\r\n {\r\n value: 'NOT_EQUAL',\r\n symbol: '≠',\r\n display: 'Không bằng',\r\n },\r\n {\r\n value: 'GREATER_THAN',\r\n symbol: '>',\r\n display: 'Lớn hơn',\r\n },\r\n {\r\n value: 'LESS_THAN',\r\n symbol: '<',\r\n display: 'Nhỏ hơn',\r\n },\r\n {\r\n value: 'GREATER_OR_EQUAL',\r\n symbol: '≥',\r\n display: 'Lớn hơn, hoặc bằng',\r\n },\r\n {\r\n value: 'LESS_OR_EQUAL',\r\n symbol: '≤',\r\n display: 'Nhỏ hơn, hoặc bằng',\r\n },\r\n {\r\n value: 'CONTAIN',\r\n symbol: 'join_inner',\r\n display: 'Chứa',\r\n },\r\n {\r\n value: 'NOT_CONTAIN',\r\n symbol: 'join',\r\n display: 'Không chứa',\r\n },\r\n {\r\n value: 'START_WITH',\r\n symbol: 'line_start_circle',\r\n display: 'Bắt đầu bởi',\r\n },\r\n {\r\n value: 'END_WITH',\r\n symbol: 'line_end_circle',\r\n display: 'Kết thúc bởi',\r\n },\r\n {\r\n value: 'IN',\r\n symbol: 'checklist_rtl',\r\n display: 'Nằm trong',\r\n },\r\n {\r\n value: 'NOT_IN',\r\n symbol: 'event_list',\r\n display: 'Không nằm trong',\r\n },\r\n];\r\n\r\nexport type SdTableColumnTransformFunc<T = any> = (\r\n value: any,\r\n rowData: T,\r\n args?: {\r\n isExport?: boolean;\r\n }\r\n) => string | Promise<string>;\r\n\r\ninterface SdTableColumnBase<T = any> {\r\n field: 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 enable?: boolean;\r\n list?: SdFilterOperator[];\r\n };\r\n };\r\n export?: {\r\n disabled?: boolean;\r\n };\r\n}\r\n\r\ninterface SdTableColumnText<T = any> extends SdTableColumnBase<T> {\r\n type: 'string';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n}\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; // 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();\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.ref.markForCheck();\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.meta.selector.actions = rowData.meta.selector.actions || [];\r\n if (!actions?.length) {\r\n rowData.meta.selector.selectable = true;\r\n return rowData.meta.selector.selectable;\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n let flag = false;\r\n let hasGroup = false;\r\n for (const childAction of action.children) {\r\n const { hidden, isGrouped } = childAction;\r\n const key = hash(childAction);\r\n if (isGrouped) {\r\n hasGroup = true;\r\n }\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n if (flag) {\r\n rowData.meta.selector.actions.push(hash(action));\r\n if (hasGroup) {\r\n groupedActions.push(hash(action));\r\n }\r\n }\r\n } else {\r\n const { hidden, isGrouped } = action;\r\n const key = hash(action);\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.meta.selector.selectable = !!rowData.meta.selector.actions?.length;\r\n if (!rowData.meta.selector.selectable || !groupedActions.length || rowData?.meta.group?.items?.length) {\r\n return rowData.meta.selector.selectable;\r\n }\r\n // Đối với trường hợp grouped, tuy selectable là true nhưng vẫn ẩn đi checkbox\r\n // nếu các action đều thuộc groupedActions và rowData ko phải là dòng group\r\n return rowData.meta.selector.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\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 { SdMaterialFilterDefDirective } 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\n\r\n@Injectable()\r\nexport class MatPaginatorIntlCro extends MatPaginatorIntl {\r\n firstPageLabel = 'Trang đầu';\r\n lastPageLabel = 'Trang cuối';\r\n itemsPerPageLabel = 'Kích thước trang';\r\n nextPageLabel = 'Trang sau';\r\n previousPageLabel = 'Trang trước';\r\n\r\n getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n if (length === 0 || pageSize === 0) {\r\n return '';\r\n }\r\n const from = page * pageSize + 1;\r\n const to = from + (length - page * pageSize > pageSize ? pageSize : length - page * pageSize) - 1;\r\n return `${from}-${to} trên ${length}`;\r\n };\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n 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 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 SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdPopupConfiguration,\r\n SdTableFilter,\r\n SdPopupFilter,\r\n\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 SdMaterialFilterDefDirective,\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"]}