@sd-angular/core 1.3.161 → 1.3.163
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/sd-angular-core-header-title.umd.js +1 -1
- package/bundles/sd-angular-core-header-title.umd.min.js +1 -1
- package/bundles/sd-angular-core-table.umd.js +30 -49
- package/bundles/sd-angular-core-table.umd.js.map +1 -1
- package/bundles/sd-angular-core-table.umd.min.js +1 -1
- package/bundles/sd-angular-core-table.umd.min.js.map +1 -1
- package/esm2015/header-title/src/lib/header-title.component.js +1 -1
- package/esm2015/table/sd-angular-core-table.js +17 -18
- package/esm2015/table/src/lib/components/desktop-cell/desktop-cell.component.js +2 -2
- package/esm2015/table/src/lib/directives/sd-table-cell-def.directive.js +18 -0
- package/esm2015/table/src/lib/table.component.js +5 -7
- package/esm2015/table/src/lib/table.module.js +4 -7
- package/fesm2015/sd-angular-core-header-title.js +1 -1
- package/fesm2015/sd-angular-core-table.js +13 -30
- package/fesm2015/sd-angular-core-table.js.map +1 -1
- package/header-title/sd-angular-core-header-title.metadata.json +1 -1
- package/package.json +1 -1
- package/{sd-angular-core-1.3.161.tgz → sd-angular-core-1.3.163.tgz} +0 -0
- package/table/sd-angular-core-table.d.ts +16 -17
- package/table/sd-angular-core-table.metadata.json +1 -1
- package/table/src/lib/components/desktop-cell/desktop-cell.component.d.ts +2 -2
- package/table/src/lib/directives/{sd-material-empty-data-def.directive.d.ts → sd-table-cell-def.directive.d.ts} +2 -1
- package/table/src/lib/table.component.d.ts +3 -5
- package/esm2015/table/src/lib/directives/sd-material-cell-def.directive.js +0 -18
- package/esm2015/table/src/lib/directives/sd-material-empty-data-def.directive.js +0 -15
- package/table/src/lib/directives/sd-material-cell-def.directive.d.ts +0 -6
|
@@ -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-material-cell-def.directive.ts","../../../../projects/sd-core/table/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/table/src/lib/components/table-filter/table-filter.component.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-filter-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-sub-information-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-footer-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-empty-data-def.directive.ts","../../../../projects/sd-core/table/src/lib/services/table-configuration.service.ts","../../../../projects/sd-core/table/src/lib/models/table-item.model.ts","../../../../projects/sd-core/table/src/lib/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","Error","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","sdMaterialFilterDef","_e","_d","_g","_f","from","to","_k","_j","_h","_l","_o","_m","_q","_p","SdPopupConfiguration","notifyService","gridConfigurationService","changes","EventEmitter","_setting","isCreatingColumn","selected","disabledDrag","onSave","detectChanges","onReset","confirm","ngOnInit","mouseUp","event","dropTable","moveItemInArray","previousIndex","currentIndex","table","renderRows","handleMouseDown","handleMouseUp","SdNotifyService","SdTableConfigurationService","HostListener","SdTable","tableConfiguration","exportService","gridFilterService","_gridId","uuid.v4","_optionChanges","Subject","_localItems","items","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_reload","isExporting","isSelectAll","exportTitle","_loadCompleted","cacheValues","_cacheObjValues","_initCellDef","_9","_10","sdMaterialCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","_8","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","_11","_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","_14","exportCSV","fileName","sheets","sheet","name","_12","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","objValues","this_3","values","union","views","badge","text-align","isHtml","newValue","time","endsWith","Number","isNumber","toVNCurrency","color","icon","badgeType","badgeIcon","e_13","items_2","items_2_1","columns_5","columns_5_1","_initConfiguration$1","setting","subject","getValue","configurationResult","displayColumns","paginator","page","sortChange","switchMap","combineLatest","animations","trigger","style","height","minHeight","visibility","transition","animate","SdExportService","SdTableFilterService","SdScrollDirective","SdQuickAction","MatPaginator","MatSort","ContentChild","SdMaterialSubInformationDefDirective","SdMaterialEmptyDataDefDirective","ContentChildren","SdMaterialCellDefDirective","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","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","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","FormsModule","ReactiveFormsModule","MatInputModule","MatFormFieldModule","MatSortModule","MatPaginatorModule","MatTableModule","MatMenuModule","MatIconModule","MatButtonModule","MatTooltipModule","MatProgressSpinnerModule","MatChipsModule","MatRadioModule","MatSlideToggleModule","MatCheckboxModule","MatListModule","MatDividerModule","CdkTableModule","DragDropModule","SdFormModule","SdServiceModule","MatSliderModule","ScrollingModule","SdCommonModule","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: 50,\r\n pages: [50, 100, 200]\r\n }\r\n};\r\n\r\nexport const TABLE_CONFIG = new InjectionToken<ISdTableConfiguration>('sd-table.configuration');\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialCellDef]'\r\n})\r\nexport class SdMaterialCellDefDirective {\r\n @Input() sdMaterialCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Component, ViewChild, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableExternalFilter, SdTableFilterRegister } from '../../services/table-filter/table-filter.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'sd-popup-filter',\r\n templateUrl: './popup-filter.component.html',\r\n styleUrls: ['./popup-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdPopupFilter {\r\n @ViewChild(SdModal) modal: SdModal;\r\n #filterRegister: 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-material-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: '[sdMaterialFilterDef]'\r\n})\r\nexport class SdMaterialFilterDefDirective {\r\n @Input() sdMaterialFilterDef: string;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n defaultShowing: boolean;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialSubInformationDef]'\r\n})\r\nexport class SdMaterialSubInformationDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFooterDef]'\r\n})\r\nexport class SdMaterialFooterDefDirective {\r\n @Input() sdMaterialFooterDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialEmptyDataDef]'\r\n})\r\nexport class SdMaterialEmptyDataDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { 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 throw new Error('Invalid key');\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-material-filter-def.directive';\r\nimport { map, startWith } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class SdTableFilterService {\r\n #filterConfiguration = 'GRID-FILTER-CONFIGURATION';\r\n #filterValue = 'GRID-FILTER-VALUE';\r\n #cache: Record<string, 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: !!notReload,\r\n };\r\n filterValue.set(updatedFilter);\r\n return updatedFilter;\r\n },\r\n remove: () => {\r\n filterValue.set(this.#defaultValue(args));\r\n },\r\n observer: filterValue.observer.pipe(\r\n startWith(filterValue.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(value => value || this.#defaultValue(args))\r\n ),\r\n },\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #defaultConfiguration = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #defaultValue = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n externalFilter[item.field] = item?.default;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n\r\n #initConfiguration = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n configuration: SdTableFilterConfiguration\r\n ): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = configuration?.inlineColumn?.[item.field] ?? item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = configuration?.inlineExternal?.[item.field] ?? item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = configuration?.inlineFilterDef?.[item.sdMaterialFilterDef] ?? item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #initValue = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n value: SdTableFilterValue\r\n ): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = value?.columnFilter?.[item.field] ?? item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n if (item.type === 'daterange') {\r\n externalFilter[item.field] = {\r\n from: value?.externalFilter?.[item.field]?.from ?? item.default?.from,\r\n to: value?.externalFilter?.[item.field]?.to ?? item.default?.to,\r\n };\r\n } else {\r\n externalFilter[item.field] = value?.externalFilter?.[item.field] ?? item?.default;\r\n }\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = value?.filterDef?.[item.sdMaterialFilterDef] ?? undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n}\r\n","import { 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() gridOption: 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.gridOption);\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 { SdMaterialCellDefDirective } from './directives/sd-material-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-material-filter-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { SdExportColumn, 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 gridOption: 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.gridOption = option;\r\n this.#loadCompleted = false;\r\n const setting = this.gridConfigurationService.init(this.gridOption);\r\n this.#subscription.add(\r\n setting.observer.pipe(startWith(setting.subject.getValue())).subscribe(async configuration => {\r\n const configurationResult = this.gridConfigurationService.loadConfigurationResult(this.gridOption, configuration);\r\n const displayColumns = configurationResult.displayedColumns || [];\r\n await this.#loadValues(this.gridOption.columns.filter(column => displayColumns.includes(column.field)));\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.gridOption);\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 selectedItems: T[] = [];\r\n total: number;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n // Paginate\r\n isHiddenPaginator = false;\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(\r\n paginator.page\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sorting\r\n #sort: MatSort;\r\n @ViewChild(MatSort) set sort(sort: MatSort) {\r\n if (sort && this.#sort !== sort) {\r\n this.#sort = sort;\r\n this.#subscription.add(\r\n sort.sortChange\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective)\r\n sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective)\r\n sdEmptyData: SdMaterialEmptyDataDefDirective;\r\n\r\n // Cell Def\r\n @ContentChildren(SdMaterialCellDefDirective) sdCellDefs = new QueryList<SdMaterialCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdMaterialCellDefDirective;\r\n } = {};\r\n\r\n // Footer Def\r\n @ContentChildren(SdMaterialFooterDefDirective) sdFooterDefs = new QueryList<SdMaterialFooterDefDirective>();\r\n footerDef: {\r\n [column: string]: SdMaterialFooterDefDirective;\r\n } = {};\r\n hasFooter = false;\r\n\r\n // Filter Def\r\n @ContentChildren(SdMaterialFilterDefDirective) sdFilterDefs = new QueryList<SdMaterialFilterDefDirective>();\r\n filterDefs: SdMaterialFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnOperator: Record<string, SdFilterOperator> = {};\r\n columnFilter: Record<string, any> = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #reload = new Subject<{\r\n force: boolean;\r\n }>();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n #loadCompleted = false;\r\n 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 gridConfigurationService: 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.gridOption)),\r\n this.sdFilterDefs.changes.pipe(startWith(this.filterDefs)),\r\n ]).subscribe(() => {\r\n this.#loadFilterRegister();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.#optionChanges.subscribe(() => {\r\n if (this.filterRegister) {\r\n this.#reload.next({\r\n force: true,\r\n });\r\n }\r\n })\r\n );\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #initCellDef = () => {\r\n this.cellDef = {};\r\n for (const cellDef of this.sdCellDefs) {\r\n if (cellDef.sdMaterialCellDef) {\r\n this.cellDef[cellDef.sdMaterialCellDef] = cellDef;\r\n }\r\n }\r\n };\r\n\r\n #initFilterDef = () => {\r\n this.filterDefs = [];\r\n for (const filterDef of this.sdFilterDefs) {\r\n this.filterDefs.push(filterDef);\r\n }\r\n };\r\n\r\n #initFooterDef = () => {\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdMaterialFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdMaterialFooterDef] = footerDef;\r\n }\r\n }\r\n };\r\n\r\n #filterExportInfo = (pageNumber: number, pageSize: number): SdTableFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber,\r\n pageSize,\r\n isExported: true,\r\n };\r\n };\r\n\r\n #initConfiguration = (option: SdTableOption) => {\r\n // Init pagination\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize: option?.paginate?.pageSize ?? this.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.gridOption) {\r\n if (!this.filterRegister) {\r\n this.filterRegister = this.gridFilterService.register(this.gridOption?.filter, {\r\n id: this.#gridId,\r\n columns: this.gridOption?.columns,\r\n externalFilters: this.gridOption?.filter?.externalFilters,\r\n filterDefs: this.filterDefs,\r\n });\r\n this.#subscription.add(\r\n this.filterRegister.value.observer\r\n .pipe(\r\n debounceTime(500),\r\n map(filterValue => {\r\n const { columnOperator, columnFilter, notReload } = filterValue;\r\n this.columnOperator = columnOperator || {};\r\n this.columnFilter = columnFilter;\r\n if (!notReload) {\r\n 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.gridOption;\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.gridOption?.paginate?.pageSize || 50,\r\n };\r\n };\r\n\r\n #load = async (filterReq: SdTableFilterRequest, force: boolean = true) => {\r\n this.isLoading = true;\r\n if (this.gridOption.type === 'server') {\r\n const { items } = this.gridOption;\r\n const data = await items(filterReq).catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return {\r\n items: [] as T[],\r\n total: 0,\r\n };\r\n });\r\n this.isLoading = false;\r\n return {\r\n items: await this.#format(data?.items, this.gridOption.columns),\r\n total: data?.total || 0,\r\n };\r\n }\r\n if (force) {\r\n const { items } = this.gridOption;\r\n const results = items();\r\n let data: T[] = [];\r\n if (results instanceof Promise) {\r\n data = await results.catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return [];\r\n });\r\n } else {\r\n data = results;\r\n }\r\n if (!Array.isArray(data)) {\r\n this.notifyService.notify.warning('Dữ liệu không phải là một mảng');\r\n data = [];\r\n }\r\n this.#localItems = await this.#format(data, this.gridOption.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.gridOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n };\r\n\r\n reload = async (force: boolean = true) => {\r\n this.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.gridOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n if (Array.isArray(result)) {\r\n return result;\r\n }\r\n if (isObservable<any[]>(result)) {\r\n result = result.toPromise();\r\n }\r\n if (isObservable<{ items: any[]; total: number }>(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n const filterInfo = this.#filterExportInfo(pageNumber, pageSize);\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterInfo);\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof this.gridOption.items === 'function') {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n exportedItems = await results;\r\n } else {\r\n exportedItems = results;\r\n }\r\n } else {\r\n exportedItems = this.gridOption.items;\r\n }\r\n return this.#filterLocal(exportedItems, filterInfo);\r\n }\r\n }\r\n };\r\n\r\n #allColumns = (): SdTableColumn[] => {\r\n const columns: SdTableColumn[] = [];\r\n this.gridOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns;\r\n };\r\n\r\n #allExportedColumns = (): SdTableOptionExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n };\r\n\r\n #onExport = async (isCSV?: boolean) => {\r\n try {\r\n let columns = this.#getExportColumns();\r\n const pageSize = this.gridOption?.export?.maxItemsPerRequest || 1000;\r\n const batch = this.gridOption?.export?.batch || 1;\r\n let total = this.total;\r\n let pageNumber = 0;\r\n let exportItems = [];\r\n this.isExporting = true;\r\n const items: any[] = [];\r\n let promises: Promise<\r\n | any[]\r\n | {\r\n items: any[];\r\n total: number;\r\n }\r\n >[] = [];\r\n const handleData = async () => {\r\n const results = await Promise.all(promises);\r\n promises = [];\r\n exportItems = [];\r\n for (const result of results) {\r\n if ('items' in result) {\r\n exportItems = [...exportItems, ...result.items];\r\n total = result.total;\r\n } else {\r\n exportItems = [...exportItems, ...result];\r\n }\r\n }\r\n if (this.gridOption.export?.mapping) {\r\n const results = this.gridOption.export.mapping(exportItems);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n const totalPage = total / pageSize;\r\n const percent = Math.round(((pageNumber - 1) * 100.0) / totalPage);\r\n this.exportTitle = `Exporting...${percent}%`;\r\n const allColumns = this.#allColumns();\r\n const allExportedColumns = this.#allExportedColumns();\r\n for (const item of exportItems) {\r\n const obj: any = {};\r\n const handle = async (exportColumn: SdExportColumn) => {\r\n obj[exportColumn.field] = item[exportColumn.field];\r\n const column = allColumns.find(e => e.field === exportColumn.field);\r\n const exportedColumn = allExportedColumns.find(e => e.field === exportColumn.field);\r\n if (exportedColumn?.transform) {\r\n obj[exportedColumn.field] = exportedColumn.transform(item[exportedColumn.field], item);\r\n return;\r\n }\r\n if (!column) {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column?.children.forEach(childColumn => handle(childColumn));\r\n return;\r\n }\r\n if (!columns.some(e => e.field === column.field)) {\r\n return;\r\n }\r\n if (column.transform) {\r\n const transform = column.transform(item[column.field], item, {\r\n isExport: true,\r\n });\r\n if (transform instanceof Promise) {\r\n obj[column.field] = await transform;\r\n } else {\r\n obj[column.field] = transform;\r\n }\r\n obj[column.field] = obj[column.field] ?? '';\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.option?.displayOnTrue || 'True';\r\n } else if (obj[column.field] !== undefined && obj[column.field] !== null) {\r\n obj[column.field] = column.option?.displayOnFalse || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n let date = item[column.field];\r\n // 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.gridOption?.export?.fileName,\r\n });\r\n return;\r\n }\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n await this.exportService.export({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName,\r\n sheets,\r\n });\r\n return;\r\n } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n #getExportColumns = () => {\r\n const columns = [\r\n ...this.gridOption.columns.filter(e => !e.export?.disabled),\r\n ...(this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || []),\r\n ];\r\n return columns;\r\n };\r\n\r\n exportExcel = () => {\r\n this.#onExport();\r\n };\r\n\r\n exportCSV = () => {\r\n this.#onExport(true);\r\n };\r\n\r\n onFilterChange = () => {\r\n this.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.gridOption.expand?.always) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanding) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanded) {\r\n rowData.meta.expand.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.expand?.onExpand?.(rowData.data);\r\n if (!this.gridOption.expand?.multiple) {\r\n this.items.forEach(item => (item.meta.expand.isExpanding = item.meta.expand.isExpanded = false));\r\n }\r\n if (data instanceof Promise) {\r\n rowData.meta.expand.isExpanding = true;\r\n data\r\n .then(res => {\r\n rowData.meta.expand.data = res;\r\n rowData.meta.expand.isExpanded = true;\r\n })\r\n .finally(() => (rowData.meta.expand.isExpanding = false));\r\n } else {\r\n rowData.meta.expand.data = data;\r\n rowData.meta.expand.isExpanded = true;\r\n }\r\n };\r\n\r\n onSelect = (rowData: SdTableItem<T>) => {\r\n if (rowData.meta.group?.items?.length) {\r\n rowData.meta.group.items.forEach(e => (e.meta.selector.isSelected = rowData.meta.selector.isSelected));\r\n this.gridOption.selector?.onSelect?.(\r\n rowData.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.gridOption.selector?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selector?.onSelect?.(\r\n rowData.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.gridOption?.selector?.actions?.length || e.meta.selector.actions?.length)) {\r\n e.meta.selector.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.gridOption.selector?.onSelectAll?.(this.items.filter(e => e.meta.selector.isSelected).map(e => e.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.selectedItems = this.items.filter(item => item.meta.selector.isSelected).map(item => item.data);\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 gridItems(): T[] {\r\n return this.items.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 let objValues: Record<string, string> = {};\r\n if (column.type === 'values') {\r\n objValues = this.#cacheObjValues[field] || {};\r\n }\r\n if (column.type === 'lazy-values') {\r\n const values = items.map(item => item.data?.[field]).filter(val => !!val || val === 0).union();\r\n const {\r\n option: { views },\r\n } = column;\r\n if (views && values.length) {\r\n objValues = Array.toObject(await views(values).catch((err) => {\r\n console.error(err);\r\n return [];\r\n }), 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 display.data = objValues[value]?.[column.option.displayField] || value;\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 ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column.badgeIcon?.(value, rowData),\r\n };\r\n } else if (column.type === 'bool') {\r\n 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","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() sdId: string;\r\n @Input() key: string;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() gridOption: SdTableOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { 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 { SdMaterialCellDefDirective } from '../../directives/sd-material-cell-def.directive';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() sdId: string;\r\n @Input() value: any;\r\n @Input() key: string;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() gridOption: SdTableOption;\r\n @Input() cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n @Input() idx: number;\r\n constructor(\r\n ) { }\r\n}\r\n","import { SdBadgeColor } from '@sd-angular/core/badge';\r\n\r\nexport type SdTableColumn<T = any> =\r\n | SdTableColumnText<T>\r\n | SdTableColumnNumber<T>\r\n | SdTableColumnBool<T>\r\n | SdTableColumnDate<T>\r\n | SdTableColumnValues<T>\r\n | 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?: 'circle' | 'icon';\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 views?: (values: string[]) => Promise<any[]>; // Hiển thị\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\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() gridOption: SdTableOption;\r\n @Input() selectedItems: any[];\r\n @Output() clear = new EventEmitter();\r\n constructor(\r\n ) { }\r\n onClear = () => {\r\n this.clear.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { MapToSdTableItem, SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'sdGroup',\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: SdTableItem[], gridOption: SdTableOption): SdTableItem[] {\r\n const { group } = gridOption;\r\n if (!group) {\r\n return items;\r\n }\r\n const { fields, htmlTemplate } = group;\r\n if (!fields?.length) {\r\n return items;\r\n }\r\n const groupItem: {\r\n [key: string]: SdTableItem[];\r\n } = {};\r\n for (const item of items) {\r\n let obj = {};\r\n for (const field of fields) {\r\n obj = {\r\n ...obj,\r\n ...(item[field] ?? { [field]: item[field] }),\r\n };\r\n }\r\n const key = hash(obj);\r\n if (!groupItem[key]) {\r\n groupItem[key] = [];\r\n }\r\n groupItem[key].push(item);\r\n }\r\n const results: SdTableItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n const result = MapToSdTableItem({});\r\n result.meta.group.items = groupItem[key];\r\n result.meta.group.htmlTemplate = htmlTemplate(groupItem[key]);\r\n results.push(result);\r\n for (const item of groupItem[key]) {\r\n results.push(item);\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Injectable, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdTable } from './table.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { CdkTableModule, CdkColumnDef } from '@angular/cdk/table';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { SdCommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { SdCommandDisablePipe } from './pipes/command-disable.pipe';\r\nimport { SdCommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { SdCommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { 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 { MatChipsModule } from '@angular/material/chips';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SdFilterExternalPipe } from './pipes/filter-external.pipe';\r\nimport { SdFilterColumnPipe } from './pipes/filter-column.pipe';\r\nimport { 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-material-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { 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 { MatDividerModule } from '@angular/material/divider';\r\nimport { SdColumnTooltipPipe } from './pipes/column-tooltip.pipe';\r\nimport { SdSelectionActionFilterPipe } from './pipes/selection-action-filter.pipe';\r\nimport { SdSelectionDisablePipe } from './pipes/selection-disable.pipe';\r\nimport { SdSelectionVisibleSelectAllPipe } from './pipes/selection-visible-select-all.pipe';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdColumnInlineFilter } from './components/column-inline-filter/column-inline-filter.component';\r\nimport { SdSelectionVisiblePipe } from './pipes/selection-visible.pipe';\r\nimport { 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 FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSortModule,\r\n MatPaginatorModule,\r\n MatTableModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatChipsModule,\r\n MatRadioModule,\r\n MatSlideToggleModule,\r\n MatCheckboxModule,\r\n MatListModule,\r\n MatDividerModule,\r\n CdkTableModule,\r\n DragDropModule,\r\n SdFormModule,\r\n SdServiceModule,\r\n MatSliderModule,\r\n ScrollingModule,\r\n SdCommonModule,\r\n SdGroupModule,\r\n ],\r\n declarations: [\r\n SdTableQuickAction,\r\n SdDesktopCell,\r\n SdDesktopCellView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdTable,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n 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 SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n ],\r\n providers: [\r\n DatePipe,\r\n DecimalPipe,\r\n CdkColumnDef,\r\n SdTableFilterService,\r\n SdTableConfigurationService,\r\n {\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-material-filter-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-sub-information-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-footer-def.directive.ts","../../../../projects/sd-core/table/src/lib/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","Error","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","sdMaterialFilterDef","_e","_d","_g","_f","from","to","_k","_j","_h","_l","_o","_m","_q","_p","SdPopupConfiguration","notifyService","gridConfigurationService","changes","EventEmitter","_setting","isCreatingColumn","selected","disabledDrag","onSave","detectChanges","onReset","confirm","ngOnInit","mouseUp","event","dropTable","moveItemInArray","previousIndex","currentIndex","table","renderRows","handleMouseDown","handleMouseUp","SdNotifyService","SdTableConfigurationService","HostListener","SdTable","tableConfiguration","exportService","gridFilterService","_gridId","uuid.v4","_optionChanges","Subject","_localItems","items","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_reload","isExporting","isSelectAll","exportTitle","_loadCompleted","cacheValues","_cacheObjValues","_initCellDef","_9","_10","sdTableCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","_8","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","_11","_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","_14","exportCSV","fileName","sheets","sheet","name","_12","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","objValues","this_3","values","union","views","badge","text-align","isHtml","newValue","time","endsWith","Number","isNumber","toVNCurrency","color","icon","badgeType","badgeIcon","e_13","items_2","items_2_1","columns_5","columns_5_1","_initConfiguration$1","setting","subject","getValue","configurationResult","displayColumns","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","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","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","FormsModule","ReactiveFormsModule","MatInputModule","MatFormFieldModule","MatSortModule","MatPaginatorModule","MatTableModule","MatMenuModule","MatIconModule","MatButtonModule","MatTooltipModule","MatProgressSpinnerModule","MatChipsModule","MatRadioModule","MatSlideToggleModule","MatCheckboxModule","MatListModule","MatDividerModule","CdkTableModule","DragDropModule","SdFormModule","SdServiceModule","MatSliderModule","ScrollingModule","SdCommonModule","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: 50,\r\n pages: [50, 100, 200]\r\n }\r\n};\r\n\r\nexport const TABLE_CONFIG = new InjectionToken<ISdTableConfiguration>('sd-table.configuration');\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[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-material-filter-def.directive';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'sd-popup-filter',\r\n templateUrl: './popup-filter.component.html',\r\n styleUrls: ['./popup-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdPopupFilter {\r\n @ViewChild(SdModal) modal: SdModal;\r\n #filterRegister: 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-material-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: '[sdMaterialFilterDef]'\r\n})\r\nexport class SdMaterialFilterDefDirective {\r\n @Input() sdMaterialFilterDef: string;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n defaultShowing: boolean;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialSubInformationDef]'\r\n})\r\nexport class SdMaterialSubInformationDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFooterDef]'\r\n})\r\nexport class SdMaterialFooterDefDirective {\r\n @Input() sdMaterialFooterDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { 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 throw new Error('Invalid key');\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-material-filter-def.directive';\r\nimport { map, startWith } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class SdTableFilterService {\r\n #filterConfiguration = 'GRID-FILTER-CONFIGURATION';\r\n #filterValue = 'GRID-FILTER-VALUE';\r\n #cache: Record<string, 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: !!notReload,\r\n };\r\n filterValue.set(updatedFilter);\r\n return updatedFilter;\r\n },\r\n remove: () => {\r\n filterValue.set(this.#defaultValue(args));\r\n },\r\n observer: filterValue.observer.pipe(\r\n startWith(filterValue.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(value => value || this.#defaultValue(args))\r\n ),\r\n },\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #defaultConfiguration = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #defaultValue = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n externalFilter[item.field] = item?.default;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n\r\n #initConfiguration = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n configuration: SdTableFilterConfiguration\r\n ): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = configuration?.inlineColumn?.[item.field] ?? item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = configuration?.inlineExternal?.[item.field] ?? item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = configuration?.inlineFilterDef?.[item.sdMaterialFilterDef] ?? item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #initValue = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n value: SdTableFilterValue\r\n ): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = value?.columnFilter?.[item.field] ?? item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n if (item.type === 'daterange') {\r\n externalFilter[item.field] = {\r\n from: value?.externalFilter?.[item.field]?.from ?? item.default?.from,\r\n to: value?.externalFilter?.[item.field]?.to ?? item.default?.to,\r\n };\r\n } else {\r\n externalFilter[item.field] = value?.externalFilter?.[item.field] ?? item?.default;\r\n }\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = value?.filterDef?.[item.sdMaterialFilterDef] ?? undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n}\r\n","import { 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() gridOption: 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.gridOption);\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-material-filter-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { 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 gridOption: 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.gridOption = option;\r\n this.#loadCompleted = false;\r\n const setting = this.gridConfigurationService.init(this.gridOption);\r\n this.#subscription.add(\r\n setting.observer.pipe(startWith(setting.subject.getValue())).subscribe(async configuration => {\r\n const configurationResult = this.gridConfigurationService.loadConfigurationResult(this.gridOption, configuration);\r\n const displayColumns = configurationResult.displayedColumns || [];\r\n await this.#loadValues(this.gridOption.columns.filter(column => displayColumns.includes(column.field)));\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.gridOption);\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 selectedItems: T[] = [];\r\n total: number;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n // Paginate\r\n isHiddenPaginator = false;\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(\r\n paginator.page\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sorting\r\n #sort: MatSort;\r\n @ViewChild(MatSort) set sort(sort: MatSort) {\r\n if (sort && this.#sort !== sort) {\r\n this.#sort = sort;\r\n this.#subscription.add(\r\n sort.sortChange\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective)\r\n sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // 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 gridConfigurationService: 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.gridOption)),\r\n this.sdFilterDefs.changes.pipe(startWith(this.filterDefs)),\r\n ]).subscribe(() => {\r\n this.#loadFilterRegister();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.#optionChanges.subscribe(() => {\r\n if (this.filterRegister) {\r\n this.#reload.next({\r\n force: true,\r\n });\r\n }\r\n })\r\n );\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #initCellDef = () => {\r\n this.cellDef = {};\r\n for (const cellDef of this.sdCellDefs) {\r\n if (cellDef.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.sdMaterialFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdMaterialFooterDef] = footerDef;\r\n }\r\n }\r\n };\r\n\r\n #filterExportInfo = (pageNumber: number, pageSize: number): SdTableFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber,\r\n pageSize,\r\n isExported: true,\r\n };\r\n };\r\n\r\n #initConfiguration = (option: SdTableOption) => {\r\n // Init pagination\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize: option?.paginate?.pageSize ?? this.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.gridOption) {\r\n if (!this.filterRegister) {\r\n this.filterRegister = this.gridFilterService.register(this.gridOption?.filter, {\r\n id: this.#gridId,\r\n columns: this.gridOption?.columns,\r\n externalFilters: this.gridOption?.filter?.externalFilters,\r\n filterDefs: this.filterDefs,\r\n });\r\n this.#subscription.add(\r\n this.filterRegister.value.observer\r\n .pipe(\r\n debounceTime(500),\r\n map(filterValue => {\r\n const { columnOperator, columnFilter, notReload } = filterValue;\r\n this.columnOperator = columnOperator || {};\r\n this.columnFilter = columnFilter;\r\n if (!notReload) {\r\n 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.gridOption;\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.gridOption?.paginate?.pageSize || 50,\r\n };\r\n };\r\n\r\n #load = async (filterReq: SdTableFilterRequest, force: boolean = true) => {\r\n this.isLoading = true;\r\n if (this.gridOption.type === 'server') {\r\n const { items } = this.gridOption;\r\n const data = await items(filterReq).catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return {\r\n items: [] as T[],\r\n total: 0,\r\n };\r\n });\r\n this.isLoading = false;\r\n return {\r\n items: await this.#format(data?.items, this.gridOption.columns),\r\n total: data?.total || 0,\r\n };\r\n }\r\n if (force) {\r\n const { items } = this.gridOption;\r\n const results = items();\r\n let data: T[] = [];\r\n if (results instanceof Promise) {\r\n data = await results.catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return [];\r\n });\r\n } else {\r\n data = results;\r\n }\r\n if (!Array.isArray(data)) {\r\n this.notifyService.notify.warning('Dữ liệu không phải là một mảng');\r\n data = [];\r\n }\r\n this.#localItems = await this.#format(data, this.gridOption.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.gridOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n };\r\n\r\n reload = async (force: boolean = true) => {\r\n this.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.gridOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n if (Array.isArray(result)) {\r\n return result;\r\n }\r\n if (isObservable<any[]>(result)) {\r\n result = result.toPromise();\r\n }\r\n if (isObservable<{ items: any[]; total: number }>(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n const filterInfo = this.#filterExportInfo(pageNumber, pageSize);\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterInfo);\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof this.gridOption.items === 'function') {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n exportedItems = await results;\r\n } else {\r\n exportedItems = results;\r\n }\r\n } else {\r\n exportedItems = this.gridOption.items;\r\n }\r\n return this.#filterLocal(exportedItems, filterInfo);\r\n }\r\n }\r\n };\r\n\r\n #allColumns = (): SdTableColumn[] => {\r\n const columns: SdTableColumn[] = [];\r\n this.gridOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns;\r\n };\r\n\r\n #allExportedColumns = (): SdTableOptionExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n };\r\n\r\n #onExport = async (isCSV?: boolean) => {\r\n try {\r\n let columns = this.#getExportColumns();\r\n const pageSize = this.gridOption?.export?.maxItemsPerRequest || 1000;\r\n const batch = this.gridOption?.export?.batch || 1;\r\n let total = this.total;\r\n let pageNumber = 0;\r\n let exportItems = [];\r\n this.isExporting = true;\r\n const items: any[] = [];\r\n let promises: Promise<\r\n | any[]\r\n | {\r\n items: any[];\r\n total: number;\r\n }\r\n >[] = [];\r\n const handleData = async () => {\r\n const results = await Promise.all(promises);\r\n promises = [];\r\n exportItems = [];\r\n for (const result of results) {\r\n if ('items' in result) {\r\n exportItems = [...exportItems, ...result.items];\r\n total = result.total;\r\n } else {\r\n exportItems = [...exportItems, ...result];\r\n }\r\n }\r\n if (this.gridOption.export?.mapping) {\r\n const results = this.gridOption.export.mapping(exportItems);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n const totalPage = total / pageSize;\r\n const percent = Math.round(((pageNumber - 1) * 100.0) / totalPage);\r\n this.exportTitle = `Exporting...${percent}%`;\r\n const allColumns = this.#allColumns();\r\n const allExportedColumns = this.#allExportedColumns();\r\n for (const item of exportItems) {\r\n const obj: any = {};\r\n const handle = async (exportColumn: SdExportColumn) => {\r\n obj[exportColumn.field] = item[exportColumn.field];\r\n const column = allColumns.find(e => e.field === exportColumn.field);\r\n const exportedColumn = allExportedColumns.find(e => e.field === exportColumn.field);\r\n if (exportedColumn?.transform) {\r\n obj[exportedColumn.field] = exportedColumn.transform(item[exportedColumn.field], item);\r\n return;\r\n }\r\n if (!column) {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column?.children.forEach(childColumn => handle(childColumn));\r\n return;\r\n }\r\n if (!columns.some(e => e.field === column.field)) {\r\n return;\r\n }\r\n if (column.transform) {\r\n const transform = column.transform(item[column.field], item, {\r\n isExport: true,\r\n });\r\n if (transform instanceof Promise) {\r\n obj[column.field] = await transform;\r\n } else {\r\n obj[column.field] = transform;\r\n }\r\n obj[column.field] = obj[column.field] ?? '';\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.option?.displayOnTrue || 'True';\r\n } else if (obj[column.field] !== undefined && obj[column.field] !== null) {\r\n obj[column.field] = column.option?.displayOnFalse || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n let date = item[column.field];\r\n // 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.gridOption?.export?.fileName,\r\n });\r\n return;\r\n }\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n await this.exportService.export({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName,\r\n sheets,\r\n });\r\n return;\r\n } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n #getExportColumns = () => {\r\n const columns = [\r\n ...this.gridOption.columns.filter(e => !e.export?.disabled),\r\n ...(this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || []),\r\n ];\r\n return columns;\r\n };\r\n\r\n exportExcel = () => {\r\n this.#onExport();\r\n };\r\n\r\n exportCSV = () => {\r\n this.#onExport(true);\r\n };\r\n\r\n onFilterChange = () => {\r\n this.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.gridOption.expand?.always) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanding) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanded) {\r\n rowData.meta.expand.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.expand?.onExpand?.(rowData.data);\r\n if (!this.gridOption.expand?.multiple) {\r\n this.items.forEach(item => (item.meta.expand.isExpanding = item.meta.expand.isExpanded = false));\r\n }\r\n if (data instanceof Promise) {\r\n rowData.meta.expand.isExpanding = true;\r\n data\r\n .then(res => {\r\n rowData.meta.expand.data = res;\r\n rowData.meta.expand.isExpanded = true;\r\n })\r\n .finally(() => (rowData.meta.expand.isExpanding = false));\r\n } else {\r\n rowData.meta.expand.data = data;\r\n rowData.meta.expand.isExpanded = true;\r\n }\r\n };\r\n\r\n onSelect = (rowData: SdTableItem<T>) => {\r\n if (rowData.meta.group?.items?.length) {\r\n rowData.meta.group.items.forEach(e => (e.meta.selector.isSelected = rowData.meta.selector.isSelected));\r\n this.gridOption.selector?.onSelect?.(\r\n rowData.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.gridOption.selector?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selector?.onSelect?.(\r\n rowData.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.gridOption?.selector?.actions?.length || e.meta.selector.actions?.length)) {\r\n e.meta.selector.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.gridOption.selector?.onSelectAll?.(this.items.filter(e => e.meta.selector.isSelected).map(e => e.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.selectedItems = this.items.filter(item => item.meta.selector.isSelected).map(item => item.data);\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 gridItems(): T[] {\r\n return this.items.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 let objValues: Record<string, string> = {};\r\n if (column.type === 'values') {\r\n objValues = this.#cacheObjValues[field] || {};\r\n }\r\n if (column.type === 'lazy-values') {\r\n const values = items.map(item => item.data?.[field]).filter(val => !!val || val === 0).union();\r\n const {\r\n option: { views },\r\n } = column;\r\n if (views && values.length) {\r\n objValues = Array.toObject(await views(values).catch((err) => {\r\n console.error(err);\r\n return [];\r\n }), 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 display.data = objValues[value]?.[column.option.displayField] || value;\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 ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column.badgeIcon?.(value, rowData),\r\n };\r\n } else if (column.type === 'bool') {\r\n 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","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() sdId: string;\r\n @Input() key: string;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() gridOption: SdTableOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { 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() sdId: string;\r\n @Input() value: any;\r\n @Input() key: string;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() gridOption: SdTableOption;\r\n @Input() cellDef: {\r\n [column: string]: SdTabelCellDefDirective\r\n } = {};\r\n @Input() idx: number;\r\n constructor(\r\n ) { }\r\n}\r\n","import { SdBadgeColor } from '@sd-angular/core/badge';\r\n\r\nexport type SdTableColumn<T = any> =\r\n | SdTableColumnText<T>\r\n | SdTableColumnNumber<T>\r\n | SdTableColumnBool<T>\r\n | SdTableColumnDate<T>\r\n | SdTableColumnValues<T>\r\n | 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?: 'circle' | 'icon';\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 views?: (values: string[]) => Promise<any[]>; // Hiển thị\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\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() gridOption: SdTableOption;\r\n @Input() selectedItems: any[];\r\n @Output() clear = new EventEmitter();\r\n constructor(\r\n ) { }\r\n onClear = () => {\r\n this.clear.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { MapToSdTableItem, SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'sdGroup',\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: SdTableItem[], gridOption: SdTableOption): SdTableItem[] {\r\n const { group } = gridOption;\r\n if (!group) {\r\n return items;\r\n }\r\n const { fields, htmlTemplate } = group;\r\n if (!fields?.length) {\r\n return items;\r\n }\r\n const groupItem: {\r\n [key: string]: SdTableItem[];\r\n } = {};\r\n for (const item of items) {\r\n let obj = {};\r\n for (const field of fields) {\r\n obj = {\r\n ...obj,\r\n ...(item[field] ?? { [field]: item[field] }),\r\n };\r\n }\r\n const key = hash(obj);\r\n if (!groupItem[key]) {\r\n groupItem[key] = [];\r\n }\r\n groupItem[key].push(item);\r\n }\r\n const results: SdTableItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n const result = MapToSdTableItem({});\r\n result.meta.group.items = groupItem[key];\r\n result.meta.group.htmlTemplate = htmlTemplate(groupItem[key]);\r\n results.push(result);\r\n for (const item of groupItem[key]) {\r\n results.push(item);\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Injectable, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdTable } from './table.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { CdkTableModule, CdkColumnDef } from '@angular/cdk/table';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { SdCommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { SdCommandDisablePipe } from './pipes/command-disable.pipe';\r\nimport { SdCommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { SdCommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { 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 { MatChipsModule } from '@angular/material/chips';\r\nimport { MatRadioModule } from '@angular/material/radio';\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-material-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { 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 { MatDividerModule } from '@angular/material/divider';\r\nimport { SdColumnTooltipPipe } from './pipes/column-tooltip.pipe';\r\nimport { SdSelectionActionFilterPipe } from './pipes/selection-action-filter.pipe';\r\nimport { SdSelectionDisablePipe } from './pipes/selection-disable.pipe';\r\nimport { SdSelectionVisibleSelectAllPipe } from './pipes/selection-visible-select-all.pipe';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdColumnInlineFilter } from './components/column-inline-filter/column-inline-filter.component';\r\nimport { SdSelectionVisiblePipe } from './pipes/selection-visible.pipe';\r\nimport { 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 FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSortModule,\r\n MatPaginatorModule,\r\n MatTableModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatChipsModule,\r\n MatRadioModule,\r\n MatSlideToggleModule,\r\n MatCheckboxModule,\r\n MatListModule,\r\n MatDividerModule,\r\n CdkTableModule,\r\n DragDropModule,\r\n SdFormModule,\r\n SdServiceModule,\r\n MatSliderModule,\r\n ScrollingModule,\r\n SdCommonModule,\r\n SdGroupModule,\r\n ],\r\n declarations: [\r\n 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"]}
|