@sd-angular/core 1.3.199 → 1.3.200
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-table.umd.js +2 -2
- 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/table/src/lib/components/desktop-cell/desktop-cell.component.js +2 -2
- package/esm2015/table/src/lib/components/table-filter/table-filter.component.js +2 -2
- package/esm2015/table/src/lib/models/table-column.model.js +1 -1
- package/esm2015/table/src/lib/services/table-filter/table-filter.model.js +1 -1
- package/fesm2015/sd-angular-core-table.js +2 -2
- package/fesm2015/sd-angular-core-table.js.map +1 -1
- package/package.json +1 -1
- package/{sd-angular-core-1.3.199.tgz → sd-angular-core-1.3.200.tgz} +0 -0
- package/table/sd-angular-core-table.metadata.json +1 -1
- package/table/src/lib/models/table-column.model.d.ts +2 -1
- package/table/src/lib/services/table-filter/table-filter.model.d.ts +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/table/src/lib/models/table-configuration.model.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-cell-def.directive.ts","../../../../projects/sd-core/table/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/table/src/lib/components/table-filter/table-filter.component.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-filter-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-expand-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-footer-def.directive.ts","../../../../projects/sd-core/table/src/lib/services/table-configuration.service.ts","../../../../projects/sd-core/table/src/lib/models/table-item.model.ts","../../../../projects/sd-core/table/src/lib/services/table-filter/table-filter.service.ts","../../../../projects/sd-core/table/src/lib/components/popup-configuration/popup-configuration.component.ts","../../../../projects/sd-core/table/src/lib/table.component.ts","../../../../projects/sd-core/table/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible-select-all.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/table/src/lib/models/table-column.model.ts","../../../../projects/sd-core/table/src/lib/components/column-inline-filter/column-inline-filter.component.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible.pipe.ts","../../../../projects/sd-core/table/src/lib/components/quick-action/quick-action.component.ts","../../../../projects/sd-core/table/src/lib/pipes/sd-group.pipe.ts","../../../../projects/sd-core/table/src/lib/table.module.ts","../../../../projects/sd-core/table/src/lib/services/table-filter/table-filter.model.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","SdTableFilterDefDirective","val","defaultShowing","settingService","gridMaterialConfiguration","_COLUMNS","SUBINFORMATION","COMMAND","SELECTION","GROUP","_prefix","_getSetting","gridOption","key","prefix","default","_default","loadConfiguration","loadConfigurationResult","column","fixedColumn","firstColumns","secondColumns","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","_c","commands","group","visible","_a","fields","_b","col","invisible","forEach","find","field","origin","title","width","fixed","assign","type","children","childColumn","expand","init","hidden","map","Injectable","SdSettingService","Inject","Optional","MapToSdTableItem","data","meta","id","hash","display","isExpanding","isExpanded","actions","isSelected","selectable","_filterConfiguration","_filterValue","_cache","register","cacheSession","tempKey","filterConfiguration_1","_defaultConfiguration","undefined","_initConfiguration","filterValue_1","cacheFilter","_defaultValue","_initValue","keys","current","columnOperator","updatedFilter","includes","_u","_v","_w","_x","_y","_z","sdTableFilterDef","_e","_d","_g","_f","from","to","_k","_j","_h","_l","_o","_m","_q","_p","SdPopupConfiguration","notifyService","tableConfigurationService","changes","EventEmitter","_setting","isCreatingColumn","selected","disabledDrag","tableOption","onSave","detectChanges","onReset","confirm","ngOnInit","mouseUp","event","dropTable","moveItemInArray","previousIndex","currentIndex","table","renderRows","handleMouseDown","handleMouseUp","SdNotifyService","SdTableConfigurationService","HostListener","SdTable","loadingService","tableConfiguration","exportService","gridFilterService","_gridId","uuid.v4","_optionChanges","Subject","_localItems","items","selectedTableItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_reload","isExporting","isSelectAll","exportTitle","_loadCompleted","cacheValues","_cacheObjValues","_initCellDef","_11","_12","sdTableCellDef","_initFilterDef","_initFooterDef","sdTableFooterDef","_filterExportInfo","pageNumber","_10","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","_13","_format","finally","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","displayField","e_9","columns_3","columns_3_1","exportItems_2","exportItems_2_1","_16","exportCSV","fileName","sheets","sheet","name","_14","gridColumns","columns_4","displayColumns","reduce","first","e1","exportExcel","onFilterChange","onExpand","rowData","always","multiple","res","onSelect","single","onSelectAll","onClearSelection","clearFilter","setFilter","_loadValues","promises","this_1","valueField","toObject","columns_5","columns_5_1","this_2","results_3","results_3_1","rawItems","cellStyle","click","tooltip","htmlTemplate","views","mapValue_1","mapValue","this_3","values_1","union","lazyItems","badge","text-align","isHtml","newValue","time","endsWith","_8","Number","isNumber","toVNCurrency","color","icon","badgeType","_9","badgeIcon","e_13","items_2","items_2_1","columns_6","columns_6_1","trackBy","_initConfiguration$1","setting_1","subject","getValue","configurationResult","start","stop","configurationResult_1","displayColumns_1","paginator","page","sortChange","switchMap","combineLatest","animations","trigger","style","height","minHeight","visibility","transition","animate","SdLoadingService","SdExportService","SdTableFilterService","SdScrollDirective","SdQuickAction","MatPaginator","MatSort","ContentChild","SdMaterialSubInformationDefDirective","ContentChildren","SdTabelCellDefDirective","SdMaterialFooterDefDirective","SdCommandFilterPipe","commands_1","commands_1_1","command","flag","isHidden","e_1","childCommand","hidden_1","Pipe","SdCommandDisablePipe","SdCommandIconPipe","SdCommandTitlePipe","SdFilterExternalPipe","externalFilters_1","externalFilters_1_1","SdFilterColumnPipe","e_2","columnChildren","SdColumnTooltipPipe","_convert","action","fontSet","selectedItems","childAction","key_1","actions_1","actions_1_1","selection","availableActions","availableActions_1","availableActions_1_1","isGrouped","setTimeout","SdFilterOperators","symbol","SdColumnInlineFilter","inlineSymbol","_inlineOperator_1","inlineOperatorChange","operators","filterChange","_valueChanges","_subcription","emit","onChangeOperator","_value","inlineOperator","useFilterDate","Output","groupedActions","hasGroup","clear","onClickAction","SdGroupPipe","groupItem","items_1_1","fields_1","fields_1_1","e_4","MatPaginatorIntlCro","_super","firstPageLabel","lastPageLabel","itemsPerPageLabel","nextPageLabel","previousPageLabel","getRangeLabel","String","__","constructor","__extends","MatPaginatorIntl","NgModule","imports","CommonModule","MatSortModule","MatPaginatorModule","MatTableModule","MatMenuModule","MatIconModule","MatButtonModule","MatTooltipModule","MatProgressSpinnerModule","MatSlideToggleModule","MatCheckboxModule","MatListModule","CdkTableModule","DragDropModule","SdFormModule","SdServiceModule","SdCommonModule","SdGroupModule","declarations","SdTableQuickAction","SdDesktopCell","SdDesktopCellView","SdDesktopCommand","SdSelectionActionFilterPipe","SdSelectionVisiblePipe","SdSelectionDisablePipe","SdSelectionVisibleSelectAllPipe","exports","providers","DatePipe","DecimalPipe","CdkColumnDef","provide","useClass"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { SdFilterOperator } from './table-column.model';\r\n\r\nexport interface ISdTableConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n operator?: {\r\n defaultListString?: SdFilterOperator[];\r\n defaultListNumber?: SdFilterOperator[];\r\n defaultListDate?: SdFilterOperator[];\r\n defaultListValues?: SdFilterOperator[];\r\n };\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[]\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_TABLE_CONFIG: ISdTableConfiguration = {\r\n paginate: {\r\n pageSize: 20,\r\n pages: [20, 50, 100, 200]\r\n }\r\n};\r\n\r\nexport const TABLE_CONFIG = new InjectionToken<ISdTableConfiguration>('sd-table.configuration');\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableCellDef]'\r\n})\r\nexport class SdTabelCellDefDirective {\r\n @Input() sdTableCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Component, ViewChild, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableExternalFilter, SdTableFilterRegister } from '../../services/table-filter/table-filter.model';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'sd-popup-filter',\r\n templateUrl: './popup-filter.component.html',\r\n styleUrls: ['./popup-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdPopupFilter {\r\n @ViewChild(SdModal) modal: SdModal;\r\n #filterRegister: SdTableFilterRegister;\r\n @Input() set filterRegister(value: SdTableFilterRegister) {\r\n this.#filterRegister = value;\r\n }\r\n @Input() externalFilters: SdTableExternalFilter[] = [];\r\n externalFilter: Record<string, any> = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n @Input() columns: SdTableColumn[] = [];\r\n columnFilter: Record<string, any> = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n\r\n @Input() filterDefs: SdTableFilterDefDirective[] = [];\r\n filterDef: Record<string, any> = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n ngOnDestroy() {}\r\n\r\n open = () => {\r\n const configuration = this.#filterRegister.configuration.get();\r\n this.inlineColumn = JSON.parse(JSON.stringify(configuration.inlineColumn));\r\n this.inlineExternal = JSON.parse(JSON.stringify(configuration.inlineExternal));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(configuration.inlineFilterDef));\r\n const filterValue = this.#filterRegister.value.get();\r\n this.columnFilter = JSON.parse(JSON.stringify(filterValue.columnFilter));\r\n this.externalFilter = JSON.parse(JSON.stringify(filterValue.externalFilter));\r\n this.filterDef = JSON.parse(JSON.stringify(filterValue.filterDef));\r\n this.modal.open();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n close = () => {\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onApply = () => {\r\n this.#filterRegister.configuration.set({\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef,\r\n });\r\n this.#filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onClear() {\r\n this.#filterRegister.value.remove();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {\r\n SdTableOptionFilter,\r\n SdTableExternalFilter,\r\n SdTableFilterRegister,\r\n} from '../../services/table-filter/table-filter.model';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { startWith } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'sd-table-filter',\r\n templateUrl: './table-filter.component.html',\r\n styleUrls: ['./table-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTableFilter implements AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupFilter) popupFilter: SdPopupFilter;\r\n filter: Readonly<SdTableOptionFilter>;\r\n @Input('filter') set _filter(filter: SdTableOptionFilter) {\r\n this.filter = filter;\r\n }\r\n @Input() columns: SdTableColumn[] = [];\r\n externalFilters: SdTableExternalFilter[] = [];\r\n @Input('externalFilters') set _externalFilters(value: SdTableExternalFilter[]) {\r\n this.externalFilters = value || [];\r\n }\r\n @Input() filterDefs: SdTableFilterDefDirective[] = [];\r\n filterRegister: SdTableFilterRegister;\r\n @Input('filterRegister') set _filterRegister(value: SdTableFilterRegister) {\r\n this.filterRegister = value;\r\n this.filterRegisterChange.next(this.filterRegister);\r\n }\r\n filterRegisterChange = new BehaviorSubject<SdTableFilterRegister>(null);\r\n\r\n filterDef: any = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n columnFilter: any = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n externalFilter: any = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n isMobileOrTablet: boolean;\r\n\r\n #subscription = new Subscription();\r\n\r\n constructor(private ref: ChangeDetectorRef, private deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n this.ref.markForCheck();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.filterRegisterChange.pipe(startWith(this.filterRegister)).subscribe(filterRegister => {\r\n if (this.filterRegister) {\r\n this.#subscription.add(\r\n this.filterRegister.configuration.observer.subscribe(configuration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n this.inlineColumn = inlineColumn;\r\n this.inlineExternal = inlineExternal;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.filterRegister.value.observer.subscribe(value => {\r\n const { columnFilter, externalFilter, filterDef } = value;\r\n this.columnFilter = columnFilter;\r\n this.externalFilter = externalFilter;\r\n this.filterDef = filterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFilter = (item?: SdTableColumn | SdTableExternalFilter) => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n };\r\n\r\n updateFilter = () => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n notReload: true\r\n });\r\n };\r\n\r\n open = () => {\r\n this.popupFilter.open();\r\n };\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableFilterDef]'\r\n})\r\nexport class SdTableFilterDefDirective {\r\n @Input() sdTableFilterDef: string;\r\n defaultShowing: boolean;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableExpandDef]'\r\n})\r\nexport class SdMaterialSubInformationDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableFooterDef]'\r\n})\r\nexport class SdMaterialFooterDefDirective {\r\n @Input() sdTableFooterDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSetting, SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport {\r\n SdColumnConfiguration,\r\n SdTableConfiguration,\r\n SdTableConfigurationResult,\r\n} from '../models/table-option-config.model';\r\nimport { TABLE_CONFIG, ISdTableConfiguration } from '../models/table-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdTableConfigurationService {\r\n #COLUMNS = {\r\n SUBINFORMATION: 'sdSubInformationAction',\r\n COMMAND: 'sdCommand',\r\n SELECTION: 'sdSelection',\r\n GROUP: 'sdGroup',\r\n };\r\n #prefix = 'c9e94836-6ace-4aeb-b148-4f0be63589ee';\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(TABLE_CONFIG) @Optional() public gridMaterialConfiguration: ISdTableConfiguration\r\n ) { }\r\n\r\n #getSetting = (gridOption: SdTableOption): SdSetting<SdTableConfiguration> => {\r\n if (!gridOption?.key) {\r\n return null;\r\n }\r\n return this.settingService.create<SdTableConfiguration>(\r\n { prefix: this.#prefix, key: gridOption.key },\r\n {\r\n default: this.#default(gridOption),\r\n }\r\n );\r\n };\r\n\r\n loadConfiguration = (gridOption: SdTableOption) => {\r\n if (!gridOption?.key) {\r\n return this.#default(gridOption);\r\n }\r\n const setting = this.#getSetting(gridOption);\r\n return setting.get();\r\n };\r\n\r\n loadConfigurationResult = (gridOption: SdTableOption, configuration: SdTableConfiguration) => {\r\n const result: SdTableConfigurationResult = {\r\n column: {},\r\n fixedColumn: {},\r\n firstColumns: [],\r\n secondColumns: [],\r\n firstHeaders: [],\r\n secondHeaders: [],\r\n displayedColumns: [],\r\n displayedFooters: [],\r\n multipleHeader: false,\r\n };\r\n const { selector, commands, group } = gridOption || {};\r\n if (selector?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (commands?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.COMMAND);\r\n result.displayedColumns.push(this.#COLUMNS.COMMAND);\r\n }\r\n if (group?.fields?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.GROUP);\r\n result.displayedColumns.push(this.#COLUMNS.GROUP);\r\n }\r\n configuration?.columns\r\n ?.filter(col => !col.invisible)\r\n .forEach(col => {\r\n const column = gridOption?.columns.find(e => e.field === col.origin.field);\r\n if (column) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n result.firstColumns.push({\r\n ...column,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n result.displayedColumns.push(col.origin.field);\r\n if (column.type === 'children') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n }\r\n }\r\n });\r\n if (gridOption.expand) {\r\n result.firstHeaders.push(this.#COLUMNS.SUBINFORMATION);\r\n result.displayedColumns.push(this.#COLUMNS.SUBINFORMATION);\r\n }\r\n result.multipleHeader = result.secondHeaders.length > 0;\r\n // Sub infomation không thể có footer\r\n result.displayedFooters = result.displayedColumns.filter(val => val !== this.#COLUMNS.SUBINFORMATION);\r\n return result;\r\n };\r\n\r\n init = (gridOption: SdTableOption) => {\r\n return this.#getSetting(gridOption);\r\n };\r\n\r\n #default = (gridOption: SdTableOption): SdTableConfiguration => {\r\n const columns: SdColumnConfiguration[] =\r\n gridOption?.columns\r\n ?.filter(e => !e.hidden)\r\n .map(e => ({\r\n origin: {\r\n field: e.field,\r\n title: e.title,\r\n width: e.width,\r\n invisible: e.invisible,\r\n },\r\n invisible: e.invisible,\r\n fixed: false,\r\n })) || [];\r\n return {\r\n columns,\r\n };\r\n };\r\n}\r\n","import * as hash from 'object-hash';\r\nimport { SdTableColumn } from './table-column.model';\r\nimport { SdBadgeColor } from '@sd-angular/core/badge';\r\nexport interface SdTableMetaSelector {\r\n selectable?: boolean;\r\n isSelected?: boolean;\r\n actions?: string[];\r\n}\r\n\r\nexport interface SdTableMetaExpand {\r\n isExpanded?: boolean;\r\n isExpanding?: boolean;\r\n data?: any;\r\n}\r\n\r\nexport interface SdTableDisplay {\r\n tooltip: string;\r\n badge: {\r\n type: 'round' | 'circle' | 'icon';\r\n color: SdBadgeColor;\r\n icon: string;\r\n };\r\n cellStyle: Record<string, string>;\r\n data: string;\r\n isHtml: boolean;\r\n click: () => void;\r\n}\r\n\r\nexport interface SdTableMeta<T> {\r\n id?: string;\r\n display: Record<string, SdTableDisplay>;\r\n selector?: SdTableMetaSelector;\r\n expand?: SdTableMetaExpand;\r\n group?: {\r\n htmlTemplate?: string;\r\n items?: SdTableItem<T>[];\r\n };\r\n}\r\n\r\nexport interface SdTableItem<T = any> {\r\n meta: SdTableMeta<T>;\r\n data: T;\r\n}\r\n\r\nexport const MapToSdTableItem = <T = any>(item: T): SdTableItem<T> => ({\r\n data: item,\r\n meta: {\r\n id: hash(item),\r\n display: {},\r\n expand: {\r\n isExpanding: false,\r\n isExpanded: false,\r\n },\r\n group: {},\r\n selector: { actions: [], isSelected: false, selectable: false },\r\n },\r\n});\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport {\r\n SdTableExternalFilter,\r\n SdTableFilterConfiguration,\r\n SdTableOptionFilter,\r\n SdTableFilterRegister,\r\n SdTableFilterValue,\r\n} from './table-filter.model';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { map, startWith } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class SdTableFilterService {\r\n #filterConfiguration = 'GRID-FILTER-CONFIGURATION';\r\n #filterValue = 'GRID-FILTER-VALUE';\r\n #cache: Record<string, SdTableFilterRegister> = {};\r\n constructor(private settingService: SdSettingService) {}\r\n register = (\r\n filter: SdTableOptionFilter,\r\n args: {\r\n id: string;\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n }\r\n ) => {\r\n let cacheSession = false;\r\n \r\n const { id, columns, externalFilters } = args;\r\n const tempKey = hash({\r\n id,\r\n columns: columns?.map(e => e.field).filter(field => !!field) || [],\r\n externalFilters: externalFilters?.map(e => e.field).filter(field => !!field) || [],\r\n });\r\n const key = filter?.key || tempKey;\r\n if (!filter?.key) {\r\n cacheSession = true; // Nếu không có key thì chỉ lưu theo session\r\n }\r\n if (!this.#cache[key]) {\r\n // Setting của filter configuration\r\n const filterConfiguration = this.settingService.create<SdTableFilterConfiguration>(\r\n {\r\n prefix: this.#filterConfiguration,\r\n key,\r\n },\r\n {\r\n default: this.#defaultConfiguration(args),\r\n type: cacheSession ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị configuration merge với giá trị defaultShowing của args nếu như args có thay đổi\r\n filterConfiguration.set(this.#initConfiguration(args, filterConfiguration.get()));\r\n // Setting của filter value\r\n const filterValue = this.settingService.create<SdTableFilterValue>(\r\n {\r\n prefix: this.#filterValue,\r\n key: !filter?.cacheFilter ? tempKey : key,\r\n },\r\n {\r\n default: this.#defaultValue(args),\r\n type: cacheSession || !filter?.cacheFilter ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị value merge với giá trị default của args nếu như args có thay đổi\r\n filterValue.set(this.#initValue(args, filterValue.get()));\r\n this.#cache[key] = {\r\n configuration: {\r\n get: (): SdTableFilterConfiguration => {\r\n return filterConfiguration.get();\r\n },\r\n set: (configuration: Partial<SdTableFilterConfiguration>): SdTableFilterConfiguration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n filterConfiguration.set({\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n });\r\n return {\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n };\r\n },\r\n remove: () => {\r\n filterConfiguration.set(this.#defaultConfiguration(args));\r\n },\r\n observer: filterConfiguration.observer.pipe(\r\n startWith(filterConfiguration.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(configuration => configuration || this.#defaultConfiguration(args))\r\n ),\r\n },\r\n value: {\r\n get: (): SdTableFilterValue => {\r\n return filterValue.get();\r\n },\r\n set: (value: Partial<SdTableFilterValue>): SdTableFilterValue => {\r\n const keys = Object.keys(value || {});\r\n const current = filterValue.get();\r\n const { columnOperator, columnFilter, externalFilter, filterDef, notReload } = current;\r\n const updatedFilter = {\r\n // Filter column\r\n columnOperator: keys.includes('columnOperator') ? value?.columnOperator || {} : columnOperator,\r\n columnFilter: keys.includes('columnFilter') ? value?.columnFilter || {} : columnFilter,\r\n // Filter external\r\n externalFilter: keys.includes('externalFilter') ? value?.externalFilter || {} : externalFilter,\r\n // Filter def\r\n filterDef: keys.includes('filterDef') ? value?.filterDef || {} : filterDef,\r\n // Force\r\n notReload: !!value?.notReload,\r\n };\r\n filterValue.set(updatedFilter);\r\n return updatedFilter;\r\n },\r\n remove: () => {\r\n filterValue.set(this.#defaultValue(args));\r\n },\r\n observer: filterValue.observer.pipe(\r\n startWith(filterValue.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(value => value || this.#defaultValue(args))\r\n ),\r\n },\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #defaultConfiguration = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n }): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdTableFilterDef] = item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #defaultValue = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n }): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n externalFilter[item.field] = item?.default;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdTableFilterDef] = undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n\r\n #initConfiguration = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n },\r\n configuration: SdTableFilterConfiguration\r\n ): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = configuration?.inlineColumn?.[item.field] ?? item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = configuration?.inlineExternal?.[item.field] ?? item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdTableFilterDef] = configuration?.inlineFilterDef?.[item.sdTableFilterDef] ?? item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #initValue = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n },\r\n value: SdTableFilterValue\r\n ): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = value?.columnFilter?.[item.field] ?? item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n if (item.type === 'daterange') {\r\n externalFilter[item.field] = {\r\n from: value?.externalFilter?.[item.field]?.from ?? item.default?.from,\r\n to: value?.externalFilter?.[item.field]?.to ?? item.default?.to,\r\n };\r\n } else {\r\n externalFilter[item.field] = value?.externalFilter?.[item.field] ?? item?.default;\r\n }\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdTableFilterDef] = value?.filterDef?.[item.sdTableFilterDef] ?? undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n}\r\n","import { Component, OnInit, ViewChild, EventEmitter, ChangeDetectorRef, Input, HostListener } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableConfigurationResult, SdTableConfiguration } from '../../models/table-option-config.model';\r\nimport { SdTableConfigurationService } from '../../services/table-configuration.service';\r\nimport { MatTable } from '@angular/material/table';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdSetting } from '@sd-angular/core/setting';\r\n\r\n@Component({\r\n selector: 'sd-popup-configuration',\r\n templateUrl: './popup-configuration.component.html',\r\n styleUrls: ['./popup-configuration.component.scss'],\r\n})\r\nexport class SdPopupConfiguration implements OnInit {\r\n @Input() tableOption: SdTableOption;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdTableColumn>;\r\n readonly changes = new EventEmitter<SdTableConfigurationResult>();\r\n #setting: SdSetting<SdTableConfiguration>;\r\n configuration: SdTableConfiguration;\r\n isCreatingColumn = false;\r\n selected: {\r\n [key: string]: boolean;\r\n } = {};\r\n disabledDrag = true;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private tableConfigurationService: SdTableConfigurationService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n @HostListener('window:mouseup', ['$event'])\r\n mouseUp(event) {\r\n this.disabledDrag = true;\r\n }\r\n open = async () => {\r\n this.#setting = this.tableConfigurationService.init(this.tableOption);\r\n this.configuration = this.#setting.get();\r\n this.modal.open();\r\n };\r\n\r\n onSave = () => {\r\n this.#setting.set(this.configuration);\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n };\r\n\r\n onReset = async () => {\r\n this.notifyService.confirm('Xác nhận đưa tất cả thiết lập về mặc định').then(() => {\r\n this.#setting.remove();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n });\r\n };\r\n\r\n dropTable(event: CdkDragDrop<SdTableColumn[]>) {\r\n moveItemInArray(this.configuration.columns, event.previousIndex, event.currentIndex);\r\n this.table.renderRows();\r\n }\r\n\r\n handleMouseDown() {\r\n this.disabledDrag = false;\r\n }\r\n\r\n handleMouseUp() {\r\n this.disabledDrag = true;\r\n }\r\n}\r\n","import {\r\n Component,\r\n 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 { SdTableFilterDefDirective } from './directives/sd-table-filter-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-table-expand-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-table-footer-def.directive';\r\nimport { SdExportColumn, SdExportService } from '@sd-angular/core/export';\r\nimport { SdTableConfigurationResult } from './models/table-option-config.model';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { SdTableOptionExportColumn } from './models/table-option-export.model';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { MapToSdTableItem, SdTableItem } from './models/table-item.model';\r\nimport { SdScrollDirective } from '@sd-angular/core/common';\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\nimport { SdPopupConfiguration } from './components/popup-configuration/popup-configuration.component';\r\nimport { SdLoadingService } from '@sd-angular/core/loading';\r\n\r\n@Component({\r\n selector: 'sd-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [\r\n trigger('detailExpand', [\r\n state('collapsed', style({ height: '0', minHeight: '0', visibility: 'hidden' })),\r\n state('expanded', style({ height: '*', visibility: 'visible' })),\r\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\r\n ]),\r\n ],\r\n})\r\nexport class SdTable<T = any> implements OnInit, AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupConfiguration) popupConfiguration: SdPopupConfiguration;\r\n #gridId = uuid.v4();\r\n @ViewChild(SdScrollDirective) sdScroll: SdScrollDirective;\r\n filterRegister: SdTableFilterRegister;\r\n key = uuid.v4();\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\r\n @ViewChild(SdTableFilter) tableFilter: SdTableFilter;\r\n tableOption: SdTableOption<T>;\r\n configuration: SdTableConfigurationResult;\r\n @Input() set option(option: SdTableOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.tableOption = option;\r\n this.#loadCompleted = false;\r\n const setting = this.tableConfigurationService.init(this.tableOption);\r\n if (setting) {\r\n this.#subscription.add(\r\n setting.observer.pipe(startWith(setting.subject.getValue())).subscribe(() => {\r\n const configurationResult = this.tableConfigurationService.loadConfigurationResult(this.tableOption, setting.get());\r\n const displayColumns = configurationResult.displayedColumns || [];\r\n this.loadingService.start();\r\n this.ref.detectChanges();\r\n this.#loadValues(this.tableOption.columns.filter(column => displayColumns.includes(column.field)))\r\n .then(() => {\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.tableOption);\r\n })\r\n .finally(() => {\r\n this.loadingService.stop();\r\n this.ref.detectChanges();\r\n });\r\n })\r\n );\r\n } else {\r\n const configuration = this.tableConfigurationService.loadConfiguration(this.tableOption);\r\n const configurationResult = this.tableConfigurationService.loadConfigurationResult(this.tableOption, configuration);\r\n const displayColumns = configurationResult.displayedColumns || [];\r\n this.loadingService.start();\r\n this.ref.detectChanges();\r\n this.#loadValues(this.tableOption.columns.filter(column => displayColumns.includes(column.field)))\r\n .then(() => {\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.tableOption);\r\n })\r\n .finally(() => {\r\n this.loadingService.stop();\r\n this.ref.detectChanges();\r\n });\r\n }\r\n }\r\n }\r\n #optionChanges = new Subject<SdTableOption>();\r\n\r\n #localItems: SdTableItem<T>[] = [];\r\n items: SdTableItem<T>[] = [];\r\n selectedTableItems: SdTableItem<T>[] = [];\r\n total: number;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n // Paginate\r\n isHiddenPaginator = false;\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(\r\n paginator.page\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sorting\r\n #sort: MatSort;\r\n @ViewChild(MatSort) set sort(sort: MatSort) {\r\n if (sort && this.#sort !== sort) {\r\n this.#sort = sort;\r\n this.#subscription.add(\r\n sort.sortChange\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective)\r\n sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Cell Def\r\n @ContentChildren(SdTabelCellDefDirective) sdCellDefs = new QueryList<SdTabelCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdTabelCellDefDirective;\r\n } = {};\r\n\r\n // Footer Def\r\n @ContentChildren(SdMaterialFooterDefDirective) sdFooterDefs = new QueryList<SdMaterialFooterDefDirective>();\r\n footerDef: {\r\n [column: string]: SdMaterialFooterDefDirective;\r\n } = {};\r\n hasFooter = false;\r\n\r\n // Filter Def\r\n @ContentChildren(SdTableFilterDefDirective) sdFilterDefs = new QueryList<SdTableFilterDefDirective>();\r\n filterDefs: SdTableFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnOperator: Record<string, SdFilterOperator> = {};\r\n columnFilter: Record<string, any> = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #reload = new Subject<{\r\n force: boolean;\r\n }>();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n #loadCompleted = false;\r\n cacheValues: Record<string, any[]> = {};\r\n #cacheObjValues: Record<string, Record<string, string>> = {};\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n @Inject(TABLE_CONFIG)\r\n @Optional()\r\n public tableConfiguration: ISdTableConfiguration,\r\n private tableConfigurationService: SdTableConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private gridFilterService: SdTableFilterService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.#reload\r\n .pipe(\r\n debounceTime(200),\r\n switchMap(async data => {\r\n const filterInfo = this.#getFilter();\r\n const result = await this.#load(filterInfo, !this.#loadCompleted || data.force);\r\n this.#loadCompleted = true;\r\n return result;\r\n })\r\n )\r\n .subscribe(this.#render)\r\n );\r\n this.#subscription.add(this.sdCellDefs.changes.pipe(startWith([])).subscribe(this.#initCellDef));\r\n this.#subscription.add(this.sdFooterDefs.changes.pipe(startWith([])).subscribe(this.#initFooterDef));\r\n this.#subscription.add(this.sdFilterDefs.changes.pipe(startWith([])).subscribe(this.#initFilterDef));\r\n this.#subscription.add(\r\n combineLatest([\r\n this.#optionChanges.pipe(startWith(this.tableOption)),\r\n this.sdFilterDefs.changes.pipe(startWith(this.filterDefs)),\r\n ]).subscribe(() => {\r\n this.#loadFilterRegister();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.#optionChanges.subscribe(() => {\r\n if (this.filterRegister) {\r\n this.#reload.next({\r\n force: true,\r\n });\r\n }\r\n })\r\n );\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #initCellDef = () => {\r\n this.cellDef = {};\r\n for (const cellDef of this.sdCellDefs || []) {\r\n if (cellDef.sdTableCellDef) {\r\n this.cellDef[cellDef.sdTableCellDef] = cellDef;\r\n }\r\n }\r\n };\r\n\r\n #initFilterDef = () => {\r\n this.filterDefs = [];\r\n for (const filterDef of this.sdFilterDefs) {\r\n this.filterDefs.push(filterDef);\r\n }\r\n };\r\n\r\n #initFooterDef = () => {\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdTableFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdTableFooterDef] = footerDef;\r\n }\r\n }\r\n };\r\n\r\n #filterExportInfo = (pageNumber: number, pageSize: number): SdTableFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber,\r\n pageSize,\r\n isExported: true,\r\n };\r\n };\r\n\r\n #initConfiguration = (option: SdTableOption) => {\r\n // Init pagination\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize: option?.paginate?.pageSize ?? this.tableConfiguration?.paginate?.pageSize ?? DEFAULT_TABLE_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.tableConfiguration?.paginate?.pages ?? DEFAULT_TABLE_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false,\r\n };\r\n for (const column of option.columns || []) {\r\n if (column.filter?.operator?.enable && !column.filter?.operator?.list?.length) {\r\n if (column.type === 'string') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListString || [];\r\n }\r\n if (column.type === 'number') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListNumber || [];\r\n }\r\n if (column.type === 'values' || column.type === 'lazy-values') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListValues || [];\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListDate || [];\r\n }\r\n }\r\n }\r\n return option;\r\n };\r\n\r\n #loadFilterRegister = () => {\r\n // Init filter\r\n if (this.tableOption) {\r\n if (!this.filterRegister) {\r\n this.filterRegister = this.gridFilterService.register(this.tableOption?.filter, {\r\n id: this.#gridId,\r\n columns: this.tableOption?.columns,\r\n externalFilters: this.tableOption?.filter?.externalFilters,\r\n filterDefs: this.filterDefs,\r\n });\r\n this.#subscription.add(\r\n this.filterRegister.value.observer\r\n .pipe(\r\n debounceTime(500),\r\n map(filterValue => {\r\n const { columnOperator, columnFilter, notReload } = filterValue;\r\n this.columnOperator = columnOperator || {};\r\n this.columnFilter = columnFilter;\r\n if (!notReload) {\r\n if (this.#paginator) {\r\n this.#paginator.pageIndex = 0;\r\n }\r\n this.#reload.next({\r\n force: false,\r\n });\r\n }\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n };\r\n\r\n #filterLocal = (localItems: SdTableItem<T>[], filterInfo: SdTableFilterRequest) => {\r\n const { columns } = this.tableOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(tableItem => {\r\n const item = tableItem.data;\r\n for (const column of columns) {\r\n const { field, type } = column;\r\n const filterValue: string = (rawColumnFilter[field as string] || '').toString().trim().toLowerCase();\r\n const columnValue: string = (item[field] || '').toString().trim().toLowerCase();\r\n if (filterValue) {\r\n if (!columnValue && type !== 'datetime' && type !== 'date' && type !== 'time') {\r\n return false;\r\n }\r\n if (type === 'string') {\r\n if (columnValue.indexOf(filterValue) === -1) {\r\n return false;\r\n }\r\n } else if (type === 'values' || type === 'lazy-values') {\r\n if (columnValue !== filterValue) {\r\n return false;\r\n }\r\n } else if (type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (type === 'datetime' || type === 'date' || type === 'time') {\r\n const from = rawColumnFilter[field]?.from ?? rawColumnFilter[field];\r\n const to = rawColumnFilter[field]?.to ?? rawColumnFilter[field];\r\n const fromDate = Date.begin(from);\r\n const toDate = Date.end(to);\r\n if (fromDate || toDate) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n\r\n const columnTime = new Date(columnValue).getTime();\r\n const fromDateTime = fromDate?.getTime() || null;\r\n const toDateTime = toDate?.getTime() || null;\r\n\r\n if (fromDateTime && fromDateTime > columnTime) {\r\n return false;\r\n }\r\n if (toDateTime && columnTime > toDateTime) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (orderBy && orderDirection) {\r\n const column = columns.find(e => e.field === orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((tableItemCurrent, tableItemNext) => {\r\n const data = tableItemCurrent.data;\r\n const next = tableItemNext.data;\r\n if (type === 'number') {\r\n return (data[field as string] || 0) - (next[field as string] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(data[field as string] || '').getTime();\r\n const d2 = new Date(data[field as string] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (data[field] || '').toString();\r\n const s2 = (next[field] || '').toString();\r\n if (s1 > s2) {\r\n return 1;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (orderDirection === 'desc') {\r\n items.reverse();\r\n }\r\n }\r\n }\r\n return {\r\n items: items.filter((item, index) => {\r\n return index >= pageNumber * pageSize && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length,\r\n };\r\n };\r\n\r\n #getFilter = (): SdTableFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber: this.#paginator?.pageIndex || 0,\r\n pageSize: this.#paginator?.pageSize || this.tableOption?.paginate?.pageSize || 50,\r\n };\r\n };\r\n\r\n #load = async (filterReq: SdTableFilterRequest, force: boolean = true) => {\r\n this.isLoading = true;\r\n this.ref.detectChanges();\r\n if (this.tableOption.type === 'server') {\r\n const { items } = this.tableOption;\r\n const data = await items(filterReq).catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return {\r\n items: [] as T[],\r\n total: 0,\r\n };\r\n });\r\n return {\r\n items: await this.#format(data?.items, this.tableOption.columns).finally(() => {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }),\r\n total: data?.total || 0,\r\n };\r\n }\r\n if (force) {\r\n const { items } = this.tableOption;\r\n const results = items();\r\n let data: T[] = [];\r\n if (results instanceof Promise) {\r\n data = await results.catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return [];\r\n });\r\n } else {\r\n data = results;\r\n }\r\n if (!Array.isArray(data)) {\r\n this.notifyService.notify.warning('Dữ liệu không phải là một mảng');\r\n data = [];\r\n }\r\n this.#localItems = await this.#format(data, this.tableOption.columns);\r\n }\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n return this.#filterLocal(this.#localItems, filterReq);\r\n };\r\n\r\n #render = async (args: { items: SdTableItem<T>[]; total: number }) => {\r\n this.sdScroll?.scrollTop();\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n await this.tableOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n };\r\n\r\n reload = async (force: boolean = true) => {\r\n this.tableFilter?.updateFilter?.();\r\n const data = await this.#load(this.#getFilter(), force);\r\n this.#render(data);\r\n };\r\n\r\n #exportedItems = async (pageNumber: number = 0, pageSize: number = 10000) => {\r\n if (this.tableOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.tableOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n if (Array.isArray(result)) {\r\n return result;\r\n }\r\n if (isObservable<any[]>(result)) {\r\n result = result.toPromise();\r\n }\r\n if (isObservable<{ items: any[]; total: number }>(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n const filterInfo = this.#filterExportInfo(pageNumber, pageSize);\r\n if (this.tableOption.type === 'server') {\r\n let result = this.tableOption.items(filterInfo);\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof this.tableOption.items === 'function') {\r\n const results = this.tableOption.items();\r\n if (results instanceof Promise) {\r\n exportedItems = await results;\r\n } else {\r\n exportedItems = results;\r\n }\r\n } else {\r\n exportedItems = this.tableOption.items;\r\n }\r\n return this.#filterLocal(exportedItems, filterInfo);\r\n }\r\n }\r\n };\r\n\r\n #allColumns = (): SdTableColumn[] => {\r\n const columns: SdTableColumn[] = [];\r\n this.tableOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns;\r\n };\r\n\r\n #allExportedColumns = (): SdTableOptionExportColumn[] => {\r\n return this.tableOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n };\r\n\r\n #onExport = async (isCSV?: boolean) => {\r\n try {\r\n let columns = this.#getExportColumns();\r\n const pageSize = this.tableOption?.export?.maxItemsPerRequest || 1000;\r\n const batch = this.tableOption?.export?.batch || 1;\r\n let total = this.total;\r\n let pageNumber = 0;\r\n let exportItems = [];\r\n this.isExporting = true;\r\n const items: any[] = [];\r\n let promises: Promise<\r\n | any[]\r\n | {\r\n items: any[];\r\n total: number;\r\n }\r\n >[] = [];\r\n const handleData = async () => {\r\n const results = await Promise.all(promises);\r\n promises = [];\r\n exportItems = [];\r\n for (const result of results) {\r\n if ('items' in result) {\r\n exportItems = [...exportItems, ...result.items];\r\n total = result.total;\r\n } else {\r\n exportItems = [...exportItems, ...result];\r\n }\r\n }\r\n if (this.tableOption.export?.mapping) {\r\n const results = this.tableOption.export.mapping(exportItems);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n const totalPage = total / pageSize;\r\n const percent = Math.round(((pageNumber - 1) * 100.0) / totalPage);\r\n this.exportTitle = `Exporting...${percent}%`;\r\n const allColumns = this.#allColumns();\r\n const allExportedColumns = this.#allExportedColumns();\r\n for (const item of exportItems) {\r\n const obj: any = {};\r\n const handle = async (exportColumn: SdExportColumn) => {\r\n obj[exportColumn.field] = item[exportColumn.field];\r\n const column = allColumns.find(e => e.field === exportColumn.field);\r\n const exportedColumn = allExportedColumns.find(e => e.field === exportColumn.field);\r\n if (exportedColumn?.transform) {\r\n obj[exportedColumn.field] = exportedColumn.transform(item[exportedColumn.field], item);\r\n return;\r\n }\r\n if (!column) {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column?.children.forEach(childColumn => handle(childColumn));\r\n return;\r\n }\r\n if (!columns.some(e => e.field === column.field)) {\r\n return;\r\n }\r\n if (column.transform) {\r\n const transform = column.transform(item[column.field], item, {\r\n isExport: true,\r\n });\r\n if (transform instanceof Promise) {\r\n obj[column.field] = await transform;\r\n } else {\r\n obj[column.field] = transform;\r\n }\r\n obj[column.field] = obj[column.field] ?? '';\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.option?.displayOnTrue || 'True';\r\n } else if (obj[column.field] !== undefined && obj[column.field] !== null) {\r\n obj[column.field] = column.option?.displayOnFalse || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n let date = item[column.field];\r\n // Nếu là date thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy');\r\n } else if (column.type === 'datetime') {\r\n let date = item[column.field];\r\n // Nếu là datetime thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy HH:mm');\r\n } else if (column.type === 'time') {\r\n let date = item[column.field];\r\n // Nếu là time thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'HH:mm');\r\n } else if (column.type === 'values' || column.type === 'lazy-values') {\r\n // Nếu là values thì lấy giá trị của value được chọn\r\n obj[column.field] =\r\n this.#cacheObjValues[column.field]?.[item[column.field]]?.[column.option.displayField] || item[column.field];\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n for (const exportColumn of columns) {\r\n await handle(exportColumn);\r\n }\r\n items.push(obj);\r\n }\r\n };\r\n while (pageNumber * pageSize < total) {\r\n promises.push(this.#exportedItems(pageNumber, pageSize));\r\n pageNumber++;\r\n if (promises.length < batch) {\r\n continue;\r\n }\r\n await handleData();\r\n }\r\n if (promises.length > 0) {\r\n await handleData();\r\n }\r\n if (isCSV) {\r\n await this.exportService.exportCSV({\r\n columns,\r\n items,\r\n fileName: this.tableOption?.export?.fileName,\r\n });\r\n return;\r\n }\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.tableOption?.export?.sheets)) {\r\n for (const sheet of this.tableOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n await this.exportService.export({\r\n columns,\r\n items,\r\n fileName: this.tableOption?.export?.fileName,\r\n sheets,\r\n });\r\n return;\r\n } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n #getExportColumns = () => {\r\n let gridColumns: SdExportColumn[] = [];\r\n this.tableOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n gridColumns.push(childColumn);\r\n });\r\n return;\r\n }\r\n gridColumns.push(column);\r\n });\r\n if (this.configuration) {\r\n const columns = [...gridColumns];\r\n const { firstColumns, secondColumns } = this.configuration;\r\n const displayColumns: SdTableColumn[] = [...firstColumns, ...secondColumns].reduce((first, next) => {\r\n const column = this.tableOption.columns.find(e => e.field === next.field);\r\n if (!column) {\r\n return first;\r\n }\r\n if (column.type !== 'children') {\r\n return [...first, column];\r\n }\r\n const children = column.children;\r\n return [...first, ...children];\r\n }, []);\r\n gridColumns = displayColumns\r\n .map(e => ({\r\n ...e,\r\n data: columns.find(e1 => e1.field === e.field),\r\n }))\r\n .filter(e => !!e.data)\r\n .map(e => e.data);\r\n }\r\n return [...gridColumns, ...(this.tableOption.export?.columns?.filter(e => !e.export?.disabled) || [])];\r\n };\r\n\r\n exportExcel = () => {\r\n this.#onExport();\r\n };\r\n\r\n exportCSV = () => {\r\n this.#onExport(true);\r\n };\r\n\r\n onFilterChange = () => {\r\n this.tableFilter?.updateFilter?.();\r\n this.filterRegister.value.set({\r\n columnOperator: this.columnOperator || {},\r\n columnFilter: this.columnFilter,\r\n });\r\n };\r\n\r\n onExpand = async (rowData: SdTableItem<T>) => {\r\n if (this.tableOption.expand?.always) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanding) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanded) {\r\n rowData.meta.expand.isExpanded = false;\r\n return;\r\n }\r\n const data = this.tableOption?.expand?.onExpand?.(rowData.data);\r\n if (!this.tableOption.expand?.multiple) {\r\n this.items.forEach(item => (item.meta.expand.isExpanding = item.meta.expand.isExpanded = false));\r\n }\r\n if (data instanceof Promise) {\r\n rowData.meta.expand.isExpanding = true;\r\n data\r\n .then(res => {\r\n rowData.meta.expand.data = res;\r\n rowData.meta.expand.isExpanded = true;\r\n })\r\n .finally(() => (rowData.meta.expand.isExpanding = false));\r\n } else {\r\n rowData.meta.expand.data = data;\r\n rowData.meta.expand.isExpanded = true;\r\n }\r\n };\r\n\r\n onSelect = (rowData: SdTableItem<T>) => {\r\n if (rowData.meta.group?.items?.length) {\r\n rowData.meta.group.items.forEach(e => (e.meta.selector.isSelected = rowData.meta.selector.isSelected));\r\n this.tableOption.selector?.onSelect?.(\r\n rowData.data,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.data)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.tableOption.selector?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.tableOption.selector?.onSelect?.(\r\n rowData.data,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.data)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n };\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.meta.selector.selectable && (!this.tableOption?.selector?.actions?.length || e.meta.selector.actions?.length)) {\r\n e.meta.selector.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.tableOption.selector?.onSelectAll?.(this.items.filter(e => e.meta.selector.isSelected).map(e => e.data));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n onClearSelection = (items?: SdTableItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedTableItems = this.items.filter(item => item.meta.selector.isSelected);\r\n this.ref.detectChanges();\r\n };\r\n\r\n clearFilter = () => {\r\n this.filterRegister.value.remove();\r\n };\r\n\r\n setFilter = (args: { columnFilter?: Record<string, any>; externalFilter?: Record<string, any>; filterDef?: Record<string, any> }) => {\r\n const { columnFilter, externalFilter, filterDef } = args || {};\r\n if (columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n this.filterRegister.value.set({\r\n columnFilter,\r\n externalFilter,\r\n filterDef,\r\n });\r\n };\r\n\r\n get dataItems(): T[] {\r\n return this.items.map(item => item.data);\r\n }\r\n\r\n get selectedItems(): T[] {\r\n return this.selectedTableItems.map(item => item.data);\r\n }\r\n\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n #loadValues = async (columns: SdTableColumn[]) => {\r\n const promises: Promise<{\r\n key: string;\r\n valueField: string;\r\n displayField: string;\r\n data: any[];\r\n }>[] = [];\r\n for (const column of columns) {\r\n if (column.type === 'values' && !this.cacheValues[column.field]) {\r\n if (typeof column.option.items === 'function') {\r\n promises.push(\r\n column.option\r\n .items()\r\n .then(data => ({\r\n key: column.field,\r\n valueField: column.option.valueField,\r\n displayField: column.option.displayField,\r\n data: Array.isArray(data) ? data : [],\r\n }))\r\n .catch(err => {\r\n console.error(err);\r\n return {\r\n key: column.field,\r\n valueField: column.option.valueField,\r\n displayField: column.option.displayField,\r\n data: [],\r\n };\r\n })\r\n );\r\n } else {\r\n this.cacheValues[column.field] = column.option.items.map(e => ({\r\n [column.option.valueField]: e?.[column.option.valueField],\r\n [column.option.displayField]: e?.[column.option.displayField],\r\n }));\r\n this.#cacheObjValues[column.field] = Array.toObject(this.cacheValues[column.field], column.option.valueField);\r\n }\r\n }\r\n }\r\n if (promises.length) {\r\n const results = await Promise.all(promises);\r\n for (const result of results) {\r\n this.cacheValues[result.key] = result.data.map(e => ({\r\n [result.valueField]: e?.[result.valueField],\r\n [result.displayField]: e?.[result.displayField],\r\n }));\r\n this.#cacheObjValues[result.key] = Array.toObject(this.cacheValues[result.key], result.valueField);\r\n }\r\n }\r\n };\r\n\r\n #format = async <T = any>(rawItems: T[], columns: SdTableColumn[]) => {\r\n const items = rawItems.map(MapToSdTableItem);\r\n for (const column of columns) {\r\n // Clickable\r\n const { field, cellStyle, click, tooltip, htmlTemplate, transform } = column;\r\n if (!transform && !htmlTemplate && column.type === 'lazy-values' && typeof column.option.views === 'function') {\r\n const {\r\n option: { views, mapValue },\r\n } = column;\r\n this.#cacheObjValues[field] = this.#cacheObjValues[field] || {};\r\n const values = items\r\n .map(item => {\r\n if (typeof mapValue === 'function') {\r\n return mapValue(item.data?.[field], item.data);\r\n }\r\n return item.data?.[field];\r\n })\r\n .filter(val => (!!val || val === 0) && !Object.keys(this.#cacheObjValues[field]).includes(val))\r\n .union();\r\n\r\n if (values.length) {\r\n const lazyItems: any[] = (\r\n await views(values).catch(err => {\r\n console.error(err);\r\n return [];\r\n })\r\n )\r\n .filter(item => values.includes(item?.[column.option.valueField]))\r\n .map(e => ({\r\n [column.option.valueField]: e?.[column.option.valueField],\r\n [column.option.displayField]: e?.[column.option.displayField],\r\n }));\r\n Object.assign(this.#cacheObjValues[field], Array.toObject(lazyItems, column.option.valueField) || {});\r\n }\r\n }\r\n for (const item of items) {\r\n const rowData = item.data;\r\n const value = rowData?.[field];\r\n item.meta.display[field] = {\r\n badge: undefined,\r\n cellStyle: column.type === 'number' ? { 'text-align': 'right!important' } : undefined,\r\n data: value,\r\n isHtml: false,\r\n tooltip: typeof tooltip === 'function' ? tooltip(value, rowData) : undefined,\r\n click: typeof click === 'function' ? () => click(value, rowData) : undefined,\r\n };\r\n const display = item.meta.display[field];\r\n // Display\r\n if (typeof htmlTemplate === 'function') {\r\n display.isHtml = true;\r\n display.data = htmlTemplate(value, rowData);\r\n } else if (typeof transform === 'function') {\r\n const newValue = transform(value, rowData);\r\n if (newValue instanceof Promise) {\r\n display.data = await newValue;\r\n } else {\r\n display.data = newValue;\r\n }\r\n } else {\r\n if (column.type === 'date' || column.type === 'datetime' || column.type === 'time') {\r\n const date = Date.toFormat(value, 'dd/MM/yyyy');\r\n let time = Date.toFormat(value, 'HH:mm:ss');\r\n if (time?.endsWith('00')) {\r\n time = Date.toFormat(value, 'HH:mm');\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n if (column.type === 'datetime') {\r\n display.isHtml = true;\r\n display.data = `<span class=\"d-block T14R text-black400\">${time}</span><span class=\"d-block T14R\">${date}</span>`;\r\n } else {\r\n display.data = date;\r\n }\r\n }\r\n if (column.type === 'time') {\r\n display.data = time;\r\n }\r\n }\r\n if (column.type === 'values' || column.type === 'lazy-values') {\r\n if (column.type === 'lazy-values' && typeof column.option.mapValue === 'function') {\r\n display.data = this.#cacheObjValues[field]?.[column.option.mapValue(value, rowData)]?.[column.option.displayField] || value;\r\n } else {\r\n display.data = this.#cacheObjValues[field]?.[value]?.[column.option.displayField] || value;\r\n }\r\n }\r\n if (column.type === 'number' && Number.isNumber(value)) {\r\n display.data = Number.toVNCurrency(value);\r\n }\r\n if (column.type === 'bool') {\r\n const { option } = column;\r\n if (value !== undefined && value !== null && value !== '') {\r\n display.data = value === true ? option?.displayOnTrue || 'True' : option?.displayOnFalse || 'False';\r\n } else {\r\n display.data = null;\r\n }\r\n }\r\n // Badge\r\n if ((column.type === 'string' || column.type === 'number' || column.type === 'values') && column.badge) {\r\n display.badge = {\r\n type: !column?.badgeType ? 'icon' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column.badgeIcon?.(value, rowData),\r\n };\r\n } else if (column.type === 'bool') {\r\n display.badge = {\r\n type: 'circle',\r\n color: !!value ? 'success' : 'danger',\r\n icon: null,\r\n };\r\n }\r\n }\r\n }\r\n }\r\n return items;\r\n };\r\n\r\n trackBy = (index: number, item: SdTableItem) => {\r\n return item.meta.id;\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand, SdTableCommandNormal } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: SdTableItem, commands: SdTableCommand[]): Promise<SdTableCommand[]> {\r\n const results: SdTableCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n let flag = false;\r\n const { hidden } = command;\r\n if (hidden === undefined) {\r\n flag = true;\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n flag = true;\r\n }\r\n } else {\r\n const isHidden = hidden(item.data);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n flag = true;\r\n }\r\n } else {\r\n if (!isHidden) {\r\n flag = true;\r\n }\r\n }\r\n }\r\n if (flag) {\r\n if ('children' in command) {\r\n const children: SdTableCommandNormal[] = [];\r\n for (const childCommand of command.children) {\r\n const { hidden } = childCommand;\r\n if (hidden === undefined) {\r\n children.push(childCommand);\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n const isHidden = hidden(item.data);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n if (!isHidden) {\r\n children.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...command, children });\r\n }\r\n } else {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandDisable',\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: SdTableItem, command: SdTableCommand): boolean {\r\n if ('disabled' in command) {\r\n const { disabled } = command;\r\n if (typeof disabled === 'boolean') {\r\n return disabled;\r\n }\r\n return disabled(item.data);\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: SdTableItem): string {\r\n if (!command?.icon) {\r\n return undefined;\r\n }\r\n if (typeof (command.icon) === 'string') {\r\n return command.icon;\r\n }\r\n return command.icon(item.data);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: SdTableItem): string {\r\n if (!command?.title) {\r\n return undefined;\r\n }\r\n if (typeof (command.title) === 'string') {\r\n return command.title;\r\n }\r\n return command.title(item.data);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-view',\r\n templateUrl: './desktop-cell-view.component.html',\r\n styleUrls: ['./desktop-cell-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellView {\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableExternalFilter } from '../services/table-filter/table-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdTableExternalFilter[], field?: string): SdTableExternalFilter[] {\r\n const results: SdTableExternalFilter[] = [];\r\n if (!externalFilters) {\r\n return results;\r\n }\r\n for (const filter of externalFilters) {\r\n results.push(filter);\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdTableColumn[], field?: string): SdTableColumn[] {\r\n const results: SdTableColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\r\n if (column.type === 'children') {\r\n for (const columnChildren of column?.children) {\r\n if (!columnChildren.filter?.disabled) {\r\n results.push(columnChildren);\r\n }\r\n }\r\n continue;\r\n }\r\n if (!column.filter?.disabled) {\r\n results.push(column);\r\n }\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdTableCommand } from '../../models/table-command.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-command',\r\n templateUrl: './desktop-command.component.html',\r\n styleUrls: ['./desktop-command.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCommand {\r\n @Input() item: SdTableItem;\r\n @Input() commands: SdTableCommand[] = [];\r\n constructor() {\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'columnTooltip'\r\n})\r\nexport class SdColumnTooltipPipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdTableColumn): string {\r\n if (column?.tooltip) {\r\n return column.tooltip(value, rowData);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableItem } from '../models/table-item.model';\r\nimport { SdTableAction, SdTableActionNormal } from '../models/table-option-selector.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdTableAction): SdTableAction => {\r\n if ('children' in action) {\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n color: action.color,\r\n type: action.type,\r\n children: action.children.map(e => ({\r\n title: e.title,\r\n icon: e.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: e.fontSet,\r\n tooltip: e.tooltip,\r\n click: e.click\r\n }))\r\n };\r\n }\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n click: action.click\r\n };\r\n\r\n }\r\n transform = (selectedItems: SdTableItem[], actions: SdTableAction[]): SdTableAction[] => {\r\n const results: SdTableAction[] = [];\r\n if (!actions?.length || !selectedItems?.length) {\r\n return [];\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n const children: SdTableActionNormal[] = [];\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n children.push(childAction);\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...action, children });\r\n }\r\n } else {\r\n const key = hash(action);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n results.push(action);\r\n }\r\n }\r\n }\r\n return results.map(result => this.#convert(result));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: SdTableItem[], rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { disabled, actions } = selection;\r\n if (!actions?.length) {\r\n if (!disabled) {\r\n rowData.meta.selector.selectable = true;\r\n return false;\r\n }\r\n rowData.meta.selector.selectable = !disabled(rowData, selectedItems);\r\n return !rowData.meta.selector.selectable;\r\n }\r\n // Lọc các action theo selectedItems hiện tại\r\n const availableActions = actions.filter(action => {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n } else {\r\n const key = hash(action);\r\n return selectedItems.every(e => e.meta.selector.actions.includes(key));\r\n }\r\n });\r\n // Kiểm tra rowData có action nào thỏa hay ko, nếu ko thì disabled\r\n for (const action of availableActions) {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n if(rowData.meta.selector.actions.includes(hash(childAction))) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if(rowData.meta.selector.actions.includes(hash(action))) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionVisibleSelectAll'\r\n})\r\nexport class SdSelectionVisibleSelectAllPipe implements PipeTransform {\r\n transform = async (items: SdTableItem[], selection: SdTableOptionSelector): Promise<boolean> => {\r\n const { actions } = selection;\r\n if (!actions?.length) {\r\n return true;\r\n }\r\n if (!items.length) {\r\n return false;\r\n }\r\n if (actions.some(e => ('children' in e && e.children.some(e1 => e1.isGrouped)) || e.isGrouped)) {\r\n return false;\r\n }\r\n await new Promise(resolve => setTimeout(resolve, 500));\r\n const first = items.find(t => t.meta.selector.actions?.length);\r\n if (first) {\r\n for (const action of first.meta.selector.actions) {\r\n if (items.filter(t => t.meta.selector.actions?.length).every(e => e.meta.selector.actions.includes(action))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdTabelCellDefDirective } from '../../directives/sd-table-cell-def.directive';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() value: any;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() cellDef: {\r\n [column: string]: SdTabelCellDefDirective\r\n } = {};\r\n constructor(\r\n ) { }\r\n}\r\n","import { SdBadgeColor } from '@sd-angular/core/badge';\r\nimport { SdTabelCellDefDirective } from '../directives/sd-table-cell-def.directive';\r\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 cellDef?: SdTabelCellDefDirective;\r\n}\r\n\r\ninterface SdTableColumnText<T = any> extends SdTableColumnBase<T> {\r\n type: 'string';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n}\r\n\r\ninterface SdTableColumnNumber<T = any> extends SdTableColumnBase<T> {\r\n type: 'number';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n}\r\n\r\ninterface SdTableColumnBool<T = any> extends SdTableColumnBase<T> {\r\n type: 'bool';\r\n option?: {\r\n displayOnTrue?: string;\r\n displayOnFalse?: string;\r\n };\r\n}\r\n\r\ninterface SdTableColumnDate<T = any> extends SdTableColumnBase<T> {\r\n type: 'date' | 'datetime' | 'time';\r\n filter?: SdTableColumnBase['filter'] & { useFilterDate?: boolean }\r\n}\r\n\r\nexport interface SdTableColumnValues<T = any> extends SdTableColumnBase<T> {\r\n type: 'values';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'icon' | 'circle' | 'round';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: any[] | (() => Promise<any[]>);\r\n selection?: 'AUTOCOMPLETE' | 'MULTIPLE' | 'MULTIPLEAUTOCOMPLETE';\r\n };\r\n}\r\n\r\nexport interface SdTableColumnLazyValues<T = any> extends SdTableColumnBase<T> {\r\n type: 'lazy-values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: (searchText: string) => Promise<any[]>; // Filter\r\n // Nếu không có tranform hay htmlTemplate cần khai báo views\r\n views?: (values: string[]) => Promise<any[]>; // Hiển thị\r\n mapValue?: (value: any, rowData?: T) => string; // Một số trường hợp dữ liệu của field là object hoặc muốn value lấy dữ liệu khác thì sử dụng hàm này\r\n selection?: 'MULTIPLE';\r\n };\r\n}\r\n\r\ntype SdTableColumnNormal<T> = Exclude<SdTableColumn<T>, SdTableColumnChildren<T>>;\r\n\r\nexport interface SdTableColumnChildren<T = any> extends SdTableColumnBase<T> {\r\n type: 'children';\r\n children: SdTableColumnNormal<T>[];\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdFilterOperator, SdFilterOperators, SdTableColumn } from '../../models/table-column.model';\r\n\r\n@Component({\r\n selector: 'sd-column-inline-filter',\r\n templateUrl: './column-inline-filter.component.html',\r\n styleUrls: ['./column-inline-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdColumnInlineFilter implements OnInit {\r\n value: any;\r\n @Input('value') _value(value: any) {\r\n this.value = value;\r\n this.#valueChanges.next();\r\n }\r\n inlineSymbol: string = 'filter_alt';\r\n #inlineOperator: SdFilterOperator;\r\n @Input('inlineOperator') set _inlineOperator(inlineOperator: SdFilterOperator) {\r\n if (this.#inlineOperator !== inlineOperator) {\r\n this.#inlineOperator = inlineOperator;\r\n this.inlineSymbol = SdFilterOperators.find(e => e.value === inlineOperator)?.symbol ?? 'filter_alt';\r\n }\r\n }\r\n @Output() inlineOperatorChange = new EventEmitter();\r\n\r\n columnFilter: Record<string, any> = {};\r\n @Input('columnFilter') set _columnFilter(columnFilter: Record<string, any>) {\r\n this.columnFilter = columnFilter || {};\r\n this.#valueChanges.next();\r\n }\r\n operators: { value: SdFilterOperator; display: string }[] = [];\r\n column: SdTableColumn;\r\n items: any[] | ((searchText: string) => Promise<any[]>) = [];\r\n @Input() cacheValues: Record<string, any[]>;\r\n @Input('column') set _column(column: SdTableColumn) {\r\n this.column = column;\r\n if (!column?.filter?.disabled && column?.filter?.operator?.enable) {\r\n this.operators = SdFilterOperators.filter(e => column.filter.operator.list?.includes?.(e.value));\r\n } else {\r\n this.operators = [];\r\n }\r\n if (this.column.type === 'values') {\r\n if (Array.isArray(this.column.option.items)) {\r\n this.items = this.column.option.items;\r\n } else {\r\n this.items = this.cacheValues?.[column.field] || []\r\n }\r\n } else if (this.column.type === 'lazy-values') {\r\n this.items = this.column.option.items;\r\n }\r\n }\r\n @Output() filterChange = new EventEmitter();\r\n #valueChanges = new Subject();\r\n #subcription = new Subscription();\r\n constructor(private ref: ChangeDetectorRef) {}\r\n ngOnInit() {\r\n this.#subcription.add(\r\n this.#valueChanges.pipe(startWith(this.columnFilter)).subscribe(() => {\r\n if (this.column.type === 'date' || this.column.type === 'time' || this.column.type === 'datetime') {\r\n if (!this.column?.filter?.useFilterDate) {\r\n this.columnFilter[this.column.field] = this.columnFilter[this.column.field] || {\r\n from: null,\r\n to: null,\r\n };\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subcription.unsubscribe();\r\n }\r\n\r\n onFilterChange = () => {\r\n this.filterChange.emit();\r\n };\r\n\r\n onChangeOperator = (operator: { value: SdFilterOperator; symbol?: string; display: string }) => {\r\n if (operator) {\r\n this.#inlineOperator = operator.value;\r\n this.inlineSymbol = operator.symbol;\r\n } else {\r\n this.#inlineOperator = null;\r\n this.inlineSymbol = 'filter_alt';\r\n }\r\n this.inlineOperatorChange.emit(this.#inlineOperator);\r\n this.ref.markForCheck();\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.meta.selector.actions = rowData.meta.selector.actions || [];\r\n if (!actions?.length) {\r\n rowData.meta.selector.selectable = true;\r\n return rowData.meta.selector.selectable;\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n let flag = false;\r\n let hasGroup = false;\r\n for (const childAction of action.children) {\r\n const { hidden, isGrouped } = childAction;\r\n const key = hash(childAction);\r\n if (isGrouped) {\r\n hasGroup = true;\r\n }\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData.data)) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n if (flag) {\r\n rowData.meta.selector.actions.push(hash(action));\r\n if (hasGroup) {\r\n groupedActions.push(hash(action));\r\n }\r\n }\r\n } else {\r\n const { hidden, isGrouped } = action;\r\n const key = hash(action);\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData.data)) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.meta.selector.selectable = !!rowData.meta.selector.actions?.length;\r\n if (!rowData.meta.selector.selectable || !groupedActions.length || rowData?.meta.group?.items?.length) {\r\n return rowData.meta.selector.selectable;\r\n }\r\n // Đối với trường hợp grouped, tuy selectable là true nhưng vẫn ẩn đi checkbox\r\n // nếu các action đều thuộc groupedActions và rowData ko phải là dòng group\r\n return rowData.meta.selector.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\nimport { SdTableAction } from '../../models/table-option-selector.model';\r\n\r\n@Component({\r\n selector: 'sd-table-quick-action',\r\n templateUrl: './quick-action.component.html',\r\n styleUrls: ['./quick-action.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTableQuickAction {\r\n @Input() tableOption: SdTableOption;\r\n @Input() selectedTableItems: SdTableItem[];\r\n @Output() clear = new EventEmitter();\r\n constructor() {}\r\n onClear = () => {\r\n this.clear.emit();\r\n };\r\n\r\n onClickAction = (action: SdTableAction) => {\r\n if ('click' in action) {\r\n action?.click(this.selectedTableItems.map(e => e.data));\r\n }\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { MapToSdTableItem, SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'sdGroup',\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: SdTableItem[], gridOption: SdTableOption): SdTableItem[] {\r\n const { group } = gridOption;\r\n if (!group) {\r\n return items;\r\n }\r\n const { fields, htmlTemplate } = group;\r\n if (!fields?.length) {\r\n return items;\r\n }\r\n const groupItem: {\r\n [key: string]: SdTableItem[];\r\n } = {};\r\n for (const item of items) {\r\n let obj = {};\r\n for (const field of fields) {\r\n obj = {\r\n ...obj,\r\n ...(item[field] ?? { [field]: item[field] }),\r\n };\r\n }\r\n const key = hash(obj);\r\n if (!groupItem[key]) {\r\n groupItem[key] = [];\r\n }\r\n groupItem[key].push(item);\r\n }\r\n const results: SdTableItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n const result = MapToSdTableItem({});\r\n result.meta.group.items = groupItem[key];\r\n result.meta.group.htmlTemplate = htmlTemplate(groupItem[key]);\r\n results.push(result);\r\n for (const item of groupItem[key]) {\r\n results.push(item);\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Injectable, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SdTable } from './table.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { CdkTableModule, CdkColumnDef } from '@angular/cdk/table';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { SdCommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { SdCommandDisablePipe } from './pipes/command-disable.pipe';\r\nimport { SdCommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { SdCommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdDesktopCellView } from './components/desktop-cell-view/desktop-cell-view.component';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SdTabelCellDefDirective } from './directives/sd-table-cell-def.directive';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SdFilterExternalPipe } from './pipes/filter-external.pipe';\r\nimport { SdFilterColumnPipe } from './pipes/filter-column.pipe';\r\nimport { SdTableFilter } from './components/table-filter/table-filter.component';\r\nimport { SdPopupFilter } from './components/popup-filter/popup-filter.component';\r\n\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\nimport { SdDesktopCommand } from './components/desktop-command/desktop-command.component';\r\nimport { SdTableFilterDefDirective } from './directives/sd-table-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-table-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-table-expand-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdPopupConfiguration } from './components/popup-configuration/popup-configuration.component';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { SdColumnTooltipPipe } from './pipes/column-tooltip.pipe';\r\nimport { SdSelectionActionFilterPipe } from './pipes/selection-action-filter.pipe';\r\nimport { SdSelectionDisablePipe } from './pipes/selection-disable.pipe';\r\nimport { SdSelectionVisibleSelectAllPipe } from './pipes/selection-visible-select-all.pipe';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdColumnInlineFilter } from './components/column-inline-filter/column-inline-filter.component';\r\nimport { SdSelectionVisiblePipe } from './pipes/selection-visible.pipe';\r\nimport { SdTableQuickAction } from './components/quick-action/quick-action.component';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdGroupPipe } from './pipes/sd-group.pipe';\r\nimport { SdGroupModule } from '@sd-angular/core/group';\r\n\r\n@Injectable()\r\nexport class MatPaginatorIntlCro extends MatPaginatorIntl {\r\n firstPageLabel = 'Trang đầu';\r\n lastPageLabel = 'Trang cuối';\r\n itemsPerPageLabel = 'Kích thước trang';\r\n nextPageLabel = 'Trang sau';\r\n previousPageLabel = 'Trang trước';\r\n\r\n getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n if (length === 0 || pageSize === 0) {\r\n return '';\r\n }\r\n const from = page * pageSize + 1;\r\n const to = from + (length - page * pageSize > pageSize ? pageSize : length - page * pageSize) - 1;\r\n return `${from}-${to} trên ${length}`;\r\n };\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatSortModule,\r\n MatPaginatorModule,\r\n MatTableModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatSlideToggleModule,\r\n MatCheckboxModule,\r\n MatListModule,\r\n CdkTableModule,\r\n DragDropModule,\r\n SdFormModule,\r\n SdServiceModule,\r\n SdCommonModule,\r\n SdGroupModule,\r\n ],\r\n declarations: [\r\n SdTableQuickAction,\r\n SdDesktopCell,\r\n SdDesktopCellView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdTable,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdTabelCellDefDirective,\r\n SdTableFilterDefDirective,\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 SdTableFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n ],\r\n providers: [\r\n DatePipe,\r\n DecimalPipe,\r\n CdkColumnDef,\r\n SdTableFilterService,\r\n SdTableConfigurationService,\r\n {\r\n provide: MatPaginatorIntl,\r\n useClass: MatPaginatorIntlCro,\r\n },\r\n ],\r\n})\r\nexport class SdTableModule {}\r\n","import { Observable } from 'rxjs';\r\nimport { SdFilterOperator } from '../../models/table-column.model';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\n\r\nexport class SdTableQuickFilter {\r\n code: string;\r\n columnFilter: {\r\n [field: string]: any;\r\n };\r\n externalFilter: {\r\n [field: string]: any;\r\n };\r\n filterDef: {\r\n [field: string]: any;\r\n };\r\n}\r\n\r\nexport interface SdTableFilterConfiguration {\r\n // selectedQuickFilter: string;\r\n // quickFilters: SdGridMaterialQuickFilter[];\r\n\r\n inlineColumn: Record<string, boolean>; // Ẩn hiện filter column\r\n // columnFilter?: Record<string, any>; // Giá trị filter column\r\n\r\n inlineExternal: Record<string, boolean>; // Ẩn hiện filter external\r\n // externalFilter?: Record<string, any>; // Giá trị filter external\r\n\r\n inlineFilterDef: Record<string, boolean>; // Ẩn hiện filter def\r\n // filterDef?: Record<string, any>; // Giá trị filter def\r\n}\r\n\r\nexport interface SdTableFilterValue {\r\n columnOperator?: Record<string, SdFilterOperator>;\r\n\r\n columnFilter?: Record<string, any>; // Giá trị filter column\r\n\r\n externalFilter?: Record<string, any>; // Giá trị filter external\r\n\r\n filterDef?: Record<string, any>; // Giá trị filter def\r\n\r\n notReload?: boolean; // Để nhận biết là chỉ set giá trị, không trigger change\r\n}\r\n\r\nexport interface SdTableFilterRequest<T = any> {\r\n columnOperator: Record<string, SdFilterOperator>;\r\n rawColumnFilter: Record<keyof T, any>;\r\n rawExternalFilter: Record<string, any>;\r\n rawFilterDef: Record<string, any>;\r\n pageNumber: number;\r\n pageSize: number;\r\n orderBy: string;\r\n orderDirection: 'asc' | 'desc' | '';\r\n isExported?: boolean;\r\n}\r\n\r\nexport interface SdTableOptionFilter {\r\n key?: string;\r\n cacheFilter?: boolean;\r\n disabled?: boolean;\r\n hideInlineFilter?: boolean;\r\n externalFilters?: SdTableExternalFilter[];\r\n sorts?: string[];\r\n enableCollapse?: boolean;\r\n}\r\n\r\nexport declare type SdTableExternalFilter =\r\n | TextFilter\r\n | DateFilter\r\n | DateTimeFilter\r\n | DateRangeFilter\r\n | NumberFilter\r\n | ValuesFilter\r\n | LazyValuesFilter\r\n | BoolFilter\r\n | CustomFilter;\r\n\r\ninterface BaseFilter {\r\n field: string;\r\n title: string;\r\n defaultShowing?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\ninterface TextFilter extends BaseFilter {\r\n type: 'string';\r\n default?: string;\r\n}\r\n\r\ninterface DateFilter extends BaseFilter {\r\n type: 'date';\r\n default?: Date | string;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n}\r\n\r\ninterface DateTimeFilter extends BaseFilter {\r\n type: 'datetime';\r\n default?: Date | string;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n}\r\n\r\ninterface DateRangeFilter extends BaseFilter {\r\n type: 'daterange';\r\n enableTime?: boolean;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n default?: {\r\n from?: Date | string;\r\n to?: Date | string;\r\n };\r\n}\r\n\r\ninterface NumberFilter extends BaseFilter {\r\n type: 'number';\r\n default?: number;\r\n}\r\n\r\ninterface ValuesFilter extends BaseFilter {\r\n type: 'values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: any[] | (() => Promise<any[]>);\r\n selection?: 'AUTOCOMPLETE' | 'MULTIPLE' | 'MULTIPLEAUTOCOMPLETE';\r\n };\r\n default?: string | string[];\r\n}\r\n\r\ninterface LazyValuesFilter extends BaseFilter {\r\n type: 'lazy-values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: (searchText: string) => Promise<any[]>; // Filter\r\n selection?: 'MULTIPLE';\r\n };\r\n default?: string | string[];\r\n}\r\n\r\ninterface BoolFilter extends BaseFilter {\r\n type: 'bool';\r\n option?: {\r\n displayOnTrue?: string;\r\n displayOnFalse?: string;\r\n };\r\n default?: boolean;\r\n}\r\n\r\ninterface CustomFilter extends BaseFilter {\r\n type: 'custom';\r\n filterDef?: SdTableFilterDefDirective;\r\n default?: any;\r\n}\r\n\r\nexport interface SdTableFilterRegister {\r\n configuration: {\r\n get: () => SdTableFilterConfiguration;\r\n set: (configuration: Partial<SdTableFilterConfiguration>) => SdTableFilterConfiguration;\r\n remove: () => void;\r\n observer: Observable<SdTableFilterConfiguration>;\r\n };\r\n value: {\r\n get: () => SdTableFilterValue;\r\n set: (value: Partial<SdTableFilterValue>) => SdTableFilterValue;\r\n remove: () => void;\r\n observer: Observable<SdTableFilterValue>;\r\n };\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/table/src/lib/models/table-configuration.model.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-cell-def.directive.ts","../../../../projects/sd-core/table/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/table/src/lib/components/table-filter/table-filter.component.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-filter-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-expand-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-footer-def.directive.ts","../../../../projects/sd-core/table/src/lib/services/table-configuration.service.ts","../../../../projects/sd-core/table/src/lib/models/table-item.model.ts","../../../../projects/sd-core/table/src/lib/services/table-filter/table-filter.service.ts","../../../../projects/sd-core/table/src/lib/components/popup-configuration/popup-configuration.component.ts","../../../../projects/sd-core/table/src/lib/table.component.ts","../../../../projects/sd-core/table/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible-select-all.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/table/src/lib/models/table-column.model.ts","../../../../projects/sd-core/table/src/lib/components/column-inline-filter/column-inline-filter.component.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible.pipe.ts","../../../../projects/sd-core/table/src/lib/components/quick-action/quick-action.component.ts","../../../../projects/sd-core/table/src/lib/pipes/sd-group.pipe.ts","../../../../projects/sd-core/table/src/lib/table.module.ts","../../../../projects/sd-core/table/src/lib/services/table-filter/table-filter.model.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","SdTableFilterDefDirective","val","defaultShowing","settingService","gridMaterialConfiguration","_COLUMNS","SUBINFORMATION","COMMAND","SELECTION","GROUP","_prefix","_getSetting","gridOption","key","prefix","default","_default","loadConfiguration","loadConfigurationResult","column","fixedColumn","firstColumns","secondColumns","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","_c","commands","group","visible","_a","fields","_b","col","invisible","forEach","find","field","origin","title","width","fixed","assign","type","children","childColumn","expand","init","hidden","map","Injectable","SdSettingService","Inject","Optional","MapToSdTableItem","data","meta","id","hash","display","isExpanding","isExpanded","actions","isSelected","selectable","_filterConfiguration","_filterValue","_cache","register","cacheSession","tempKey","filterConfiguration_1","_defaultConfiguration","undefined","_initConfiguration","filterValue_1","cacheFilter","_defaultValue","_initValue","keys","current","columnOperator","updatedFilter","includes","_u","_v","_w","_x","_y","_z","sdTableFilterDef","_e","_d","_g","_f","from","to","_k","_j","_h","_l","_o","_m","_q","_p","SdPopupConfiguration","notifyService","tableConfigurationService","changes","EventEmitter","_setting","isCreatingColumn","selected","disabledDrag","tableOption","onSave","detectChanges","onReset","confirm","ngOnInit","mouseUp","event","dropTable","moveItemInArray","previousIndex","currentIndex","table","renderRows","handleMouseDown","handleMouseUp","SdNotifyService","SdTableConfigurationService","HostListener","SdTable","loadingService","tableConfiguration","exportService","gridFilterService","_gridId","uuid.v4","_optionChanges","Subject","_localItems","items","selectedTableItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_reload","isExporting","isSelectAll","exportTitle","_loadCompleted","cacheValues","_cacheObjValues","_initCellDef","_11","_12","sdTableCellDef","_initFilterDef","_initFooterDef","sdTableFooterDef","_filterExportInfo","pageNumber","_10","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","_13","_format","finally","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","displayField","e_9","columns_3","columns_3_1","exportItems_2","exportItems_2_1","_16","exportCSV","fileName","sheets","sheet","name","_14","gridColumns","columns_4","displayColumns","reduce","first","e1","exportExcel","onFilterChange","onExpand","rowData","always","multiple","res","onSelect","single","onSelectAll","onClearSelection","clearFilter","setFilter","_loadValues","promises","this_1","valueField","toObject","columns_5","columns_5_1","this_2","results_3","results_3_1","rawItems","cellStyle","click","tooltip","htmlTemplate","views","mapValue_1","mapValue","this_3","values_1","union","lazyItems","badge","text-align","isHtml","newValue","time","endsWith","_8","Number","isNumber","toVNCurrency","color","icon","badgeType","_9","badgeIcon","e_13","items_2","items_2_1","columns_6","columns_6_1","trackBy","_initConfiguration$1","setting_1","subject","getValue","configurationResult","start","stop","configurationResult_1","displayColumns_1","paginator","page","sortChange","switchMap","combineLatest","animations","trigger","style","height","minHeight","visibility","transition","animate","SdLoadingService","SdExportService","SdTableFilterService","SdScrollDirective","SdQuickAction","MatPaginator","MatSort","ContentChild","SdMaterialSubInformationDefDirective","ContentChildren","SdTabelCellDefDirective","SdMaterialFooterDefDirective","SdCommandFilterPipe","commands_1","commands_1_1","command","flag","isHidden","e_1","childCommand","hidden_1","Pipe","SdCommandDisablePipe","SdCommandIconPipe","SdCommandTitlePipe","SdFilterExternalPipe","externalFilters_1","externalFilters_1_1","SdFilterColumnPipe","e_2","columnChildren","SdColumnTooltipPipe","_convert","action","fontSet","selectedItems","childAction","key_1","actions_1","actions_1_1","selection","availableActions","availableActions_1","availableActions_1_1","isGrouped","setTimeout","SdFilterOperators","symbol","SdColumnInlineFilter","inlineSymbol","_inlineOperator_1","inlineOperatorChange","operators","filterChange","_valueChanges","_subcription","emit","onChangeOperator","_value","inlineOperator","useFilterDate","Output","groupedActions","hasGroup","clear","onClickAction","SdGroupPipe","groupItem","items_1_1","fields_1","fields_1_1","e_4","MatPaginatorIntlCro","_super","firstPageLabel","lastPageLabel","itemsPerPageLabel","nextPageLabel","previousPageLabel","getRangeLabel","String","__","constructor","__extends","MatPaginatorIntl","NgModule","imports","CommonModule","MatSortModule","MatPaginatorModule","MatTableModule","MatMenuModule","MatIconModule","MatButtonModule","MatTooltipModule","MatProgressSpinnerModule","MatSlideToggleModule","MatCheckboxModule","MatListModule","CdkTableModule","DragDropModule","SdFormModule","SdServiceModule","SdCommonModule","SdGroupModule","declarations","SdTableQuickAction","SdDesktopCell","SdDesktopCellView","SdDesktopCommand","SdSelectionActionFilterPipe","SdSelectionVisiblePipe","SdSelectionDisablePipe","SdSelectionVisibleSelectAllPipe","exports","providers","DatePipe","DecimalPipe","CdkColumnDef","provide","useClass"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { SdFilterOperator } from './table-column.model';\r\n\r\nexport interface ISdTableConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n operator?: {\r\n defaultListString?: SdFilterOperator[];\r\n defaultListNumber?: SdFilterOperator[];\r\n defaultListDate?: SdFilterOperator[];\r\n defaultListValues?: SdFilterOperator[];\r\n };\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[]\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_TABLE_CONFIG: ISdTableConfiguration = {\r\n paginate: {\r\n pageSize: 20,\r\n pages: [20, 50, 100, 200]\r\n }\r\n};\r\n\r\nexport const TABLE_CONFIG = new InjectionToken<ISdTableConfiguration>('sd-table.configuration');\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableCellDef]'\r\n})\r\nexport class SdTabelCellDefDirective {\r\n @Input() sdTableCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Component, ViewChild, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableExternalFilter, SdTableFilterRegister } from '../../services/table-filter/table-filter.model';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'sd-popup-filter',\r\n templateUrl: './popup-filter.component.html',\r\n styleUrls: ['./popup-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdPopupFilter {\r\n @ViewChild(SdModal) modal: SdModal;\r\n #filterRegister: SdTableFilterRegister;\r\n @Input() set filterRegister(value: SdTableFilterRegister) {\r\n this.#filterRegister = value;\r\n }\r\n @Input() externalFilters: SdTableExternalFilter[] = [];\r\n externalFilter: Record<string, any> = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n @Input() columns: SdTableColumn[] = [];\r\n columnFilter: Record<string, any> = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n\r\n @Input() filterDefs: SdTableFilterDefDirective[] = [];\r\n filterDef: Record<string, any> = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n ngOnDestroy() {}\r\n\r\n open = () => {\r\n const configuration = this.#filterRegister.configuration.get();\r\n this.inlineColumn = JSON.parse(JSON.stringify(configuration.inlineColumn));\r\n this.inlineExternal = JSON.parse(JSON.stringify(configuration.inlineExternal));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(configuration.inlineFilterDef));\r\n const filterValue = this.#filterRegister.value.get();\r\n this.columnFilter = JSON.parse(JSON.stringify(filterValue.columnFilter));\r\n this.externalFilter = JSON.parse(JSON.stringify(filterValue.externalFilter));\r\n this.filterDef = JSON.parse(JSON.stringify(filterValue.filterDef));\r\n this.modal.open();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n close = () => {\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onApply = () => {\r\n this.#filterRegister.configuration.set({\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef,\r\n });\r\n this.#filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onClear() {\r\n this.#filterRegister.value.remove();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {\r\n SdTableOptionFilter,\r\n SdTableExternalFilter,\r\n SdTableFilterRegister,\r\n} from '../../services/table-filter/table-filter.model';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { startWith } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'sd-table-filter',\r\n templateUrl: './table-filter.component.html',\r\n styleUrls: ['./table-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTableFilter implements AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupFilter) popupFilter: SdPopupFilter;\r\n filter: Readonly<SdTableOptionFilter>;\r\n @Input('filter') set _filter(filter: SdTableOptionFilter) {\r\n this.filter = filter;\r\n }\r\n @Input() columns: SdTableColumn[] = [];\r\n externalFilters: SdTableExternalFilter[] = [];\r\n @Input('externalFilters') set _externalFilters(value: SdTableExternalFilter[]) {\r\n this.externalFilters = value || [];\r\n }\r\n @Input() filterDefs: SdTableFilterDefDirective[] = [];\r\n filterRegister: SdTableFilterRegister;\r\n @Input('filterRegister') set _filterRegister(value: SdTableFilterRegister) {\r\n this.filterRegister = value;\r\n this.filterRegisterChange.next(this.filterRegister);\r\n }\r\n filterRegisterChange = new BehaviorSubject<SdTableFilterRegister>(null);\r\n\r\n filterDef: any = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n columnFilter: any = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n externalFilter: any = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n isMobileOrTablet: boolean;\r\n\r\n #subscription = new Subscription();\r\n\r\n constructor(private ref: ChangeDetectorRef, private deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n this.ref.markForCheck();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.filterRegisterChange.pipe(startWith(this.filterRegister)).subscribe(filterRegister => {\r\n if (this.filterRegister) {\r\n this.#subscription.add(\r\n this.filterRegister.configuration.observer.subscribe(configuration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n this.inlineColumn = inlineColumn;\r\n this.inlineExternal = inlineExternal;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.filterRegister.value.observer.subscribe(value => {\r\n const { columnFilter, externalFilter, filterDef } = value;\r\n this.columnFilter = columnFilter;\r\n this.externalFilter = externalFilter;\r\n this.filterDef = filterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFilter = (item?: SdTableColumn | SdTableExternalFilter) => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n };\r\n\r\n updateFilter = () => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n notReload: true\r\n });\r\n };\r\n\r\n open = () => {\r\n this.popupFilter.open();\r\n };\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableFilterDef]'\r\n})\r\nexport class SdTableFilterDefDirective {\r\n @Input() sdTableFilterDef: string;\r\n defaultShowing: boolean;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableExpandDef]'\r\n})\r\nexport class SdMaterialSubInformationDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableFooterDef]'\r\n})\r\nexport class SdMaterialFooterDefDirective {\r\n @Input() sdTableFooterDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSetting, SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport {\r\n SdColumnConfiguration,\r\n SdTableConfiguration,\r\n SdTableConfigurationResult,\r\n} from '../models/table-option-config.model';\r\nimport { TABLE_CONFIG, ISdTableConfiguration } from '../models/table-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdTableConfigurationService {\r\n #COLUMNS = {\r\n SUBINFORMATION: 'sdSubInformationAction',\r\n COMMAND: 'sdCommand',\r\n SELECTION: 'sdSelection',\r\n GROUP: 'sdGroup',\r\n };\r\n #prefix = 'c9e94836-6ace-4aeb-b148-4f0be63589ee';\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(TABLE_CONFIG) @Optional() public gridMaterialConfiguration: ISdTableConfiguration\r\n ) { }\r\n\r\n #getSetting = (gridOption: SdTableOption): SdSetting<SdTableConfiguration> => {\r\n if (!gridOption?.key) {\r\n return null;\r\n }\r\n return this.settingService.create<SdTableConfiguration>(\r\n { prefix: this.#prefix, key: gridOption.key },\r\n {\r\n default: this.#default(gridOption),\r\n }\r\n );\r\n };\r\n\r\n loadConfiguration = (gridOption: SdTableOption) => {\r\n if (!gridOption?.key) {\r\n return this.#default(gridOption);\r\n }\r\n const setting = this.#getSetting(gridOption);\r\n return setting.get();\r\n };\r\n\r\n loadConfigurationResult = (gridOption: SdTableOption, configuration: SdTableConfiguration) => {\r\n const result: SdTableConfigurationResult = {\r\n column: {},\r\n fixedColumn: {},\r\n firstColumns: [],\r\n secondColumns: [],\r\n firstHeaders: [],\r\n secondHeaders: [],\r\n displayedColumns: [],\r\n displayedFooters: [],\r\n multipleHeader: false,\r\n };\r\n const { selector, commands, group } = gridOption || {};\r\n if (selector?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (commands?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.COMMAND);\r\n result.displayedColumns.push(this.#COLUMNS.COMMAND);\r\n }\r\n if (group?.fields?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.GROUP);\r\n result.displayedColumns.push(this.#COLUMNS.GROUP);\r\n }\r\n configuration?.columns\r\n ?.filter(col => !col.invisible)\r\n .forEach(col => {\r\n const column = gridOption?.columns.find(e => e.field === col.origin.field);\r\n if (column) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n result.firstColumns.push({\r\n ...column,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n result.displayedColumns.push(col.origin.field);\r\n if (column.type === 'children') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n }\r\n }\r\n });\r\n if (gridOption.expand) {\r\n result.firstHeaders.push(this.#COLUMNS.SUBINFORMATION);\r\n result.displayedColumns.push(this.#COLUMNS.SUBINFORMATION);\r\n }\r\n result.multipleHeader = result.secondHeaders.length > 0;\r\n // Sub infomation không thể có footer\r\n result.displayedFooters = result.displayedColumns.filter(val => val !== this.#COLUMNS.SUBINFORMATION);\r\n return result;\r\n };\r\n\r\n init = (gridOption: SdTableOption) => {\r\n return this.#getSetting(gridOption);\r\n };\r\n\r\n #default = (gridOption: SdTableOption): SdTableConfiguration => {\r\n const columns: SdColumnConfiguration[] =\r\n gridOption?.columns\r\n ?.filter(e => !e.hidden)\r\n .map(e => ({\r\n origin: {\r\n field: e.field,\r\n title: e.title,\r\n width: e.width,\r\n invisible: e.invisible,\r\n },\r\n invisible: e.invisible,\r\n fixed: false,\r\n })) || [];\r\n return {\r\n columns,\r\n };\r\n };\r\n}\r\n","import * as hash from 'object-hash';\r\nimport { SdTableColumn } from './table-column.model';\r\nimport { SdBadgeColor } from '@sd-angular/core/badge';\r\nexport interface SdTableMetaSelector {\r\n selectable?: boolean;\r\n isSelected?: boolean;\r\n actions?: string[];\r\n}\r\n\r\nexport interface SdTableMetaExpand {\r\n isExpanded?: boolean;\r\n isExpanding?: boolean;\r\n data?: any;\r\n}\r\n\r\nexport interface SdTableDisplay {\r\n tooltip: string;\r\n badge: {\r\n type: 'round' | 'circle' | 'icon';\r\n color: SdBadgeColor;\r\n icon: string;\r\n };\r\n cellStyle: Record<string, string>;\r\n data: string;\r\n isHtml: boolean;\r\n click: () => void;\r\n}\r\n\r\nexport interface SdTableMeta<T> {\r\n id?: string;\r\n display: Record<string, SdTableDisplay>;\r\n selector?: SdTableMetaSelector;\r\n expand?: SdTableMetaExpand;\r\n group?: {\r\n htmlTemplate?: string;\r\n items?: SdTableItem<T>[];\r\n };\r\n}\r\n\r\nexport interface SdTableItem<T = any> {\r\n meta: SdTableMeta<T>;\r\n data: T;\r\n}\r\n\r\nexport const MapToSdTableItem = <T = any>(item: T): SdTableItem<T> => ({\r\n data: item,\r\n meta: {\r\n id: hash(item),\r\n display: {},\r\n expand: {\r\n isExpanding: false,\r\n isExpanded: false,\r\n },\r\n group: {},\r\n selector: { actions: [], isSelected: false, selectable: false },\r\n },\r\n});\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport {\r\n SdTableExternalFilter,\r\n SdTableFilterConfiguration,\r\n SdTableOptionFilter,\r\n SdTableFilterRegister,\r\n SdTableFilterValue,\r\n} from './table-filter.model';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { map, startWith } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class SdTableFilterService {\r\n #filterConfiguration = 'GRID-FILTER-CONFIGURATION';\r\n #filterValue = 'GRID-FILTER-VALUE';\r\n #cache: Record<string, SdTableFilterRegister> = {};\r\n constructor(private settingService: SdSettingService) {}\r\n register = (\r\n filter: SdTableOptionFilter,\r\n args: {\r\n id: string;\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n }\r\n ) => {\r\n let cacheSession = false;\r\n \r\n const { id, columns, externalFilters } = args;\r\n const tempKey = hash({\r\n id,\r\n columns: columns?.map(e => e.field).filter(field => !!field) || [],\r\n externalFilters: externalFilters?.map(e => e.field).filter(field => !!field) || [],\r\n });\r\n const key = filter?.key || tempKey;\r\n if (!filter?.key) {\r\n cacheSession = true; // Nếu không có key thì chỉ lưu theo session\r\n }\r\n if (!this.#cache[key]) {\r\n // Setting của filter configuration\r\n const filterConfiguration = this.settingService.create<SdTableFilterConfiguration>(\r\n {\r\n prefix: this.#filterConfiguration,\r\n key,\r\n },\r\n {\r\n default: this.#defaultConfiguration(args),\r\n type: cacheSession ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị configuration merge với giá trị defaultShowing của args nếu như args có thay đổi\r\n filterConfiguration.set(this.#initConfiguration(args, filterConfiguration.get()));\r\n // Setting của filter value\r\n const filterValue = this.settingService.create<SdTableFilterValue>(\r\n {\r\n prefix: this.#filterValue,\r\n key: !filter?.cacheFilter ? tempKey : key,\r\n },\r\n {\r\n default: this.#defaultValue(args),\r\n type: cacheSession || !filter?.cacheFilter ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị value merge với giá trị default của args nếu như args có thay đổi\r\n filterValue.set(this.#initValue(args, filterValue.get()));\r\n this.#cache[key] = {\r\n configuration: {\r\n get: (): SdTableFilterConfiguration => {\r\n return filterConfiguration.get();\r\n },\r\n set: (configuration: Partial<SdTableFilterConfiguration>): SdTableFilterConfiguration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n filterConfiguration.set({\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n });\r\n return {\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n };\r\n },\r\n remove: () => {\r\n filterConfiguration.set(this.#defaultConfiguration(args));\r\n },\r\n observer: filterConfiguration.observer.pipe(\r\n startWith(filterConfiguration.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(configuration => configuration || this.#defaultConfiguration(args))\r\n ),\r\n },\r\n value: {\r\n get: (): SdTableFilterValue => {\r\n return filterValue.get();\r\n },\r\n set: (value: Partial<SdTableFilterValue>): SdTableFilterValue => {\r\n const keys = Object.keys(value || {});\r\n const current = filterValue.get();\r\n const { columnOperator, columnFilter, externalFilter, filterDef, notReload } = current;\r\n const updatedFilter = {\r\n // Filter column\r\n columnOperator: keys.includes('columnOperator') ? value?.columnOperator || {} : columnOperator,\r\n columnFilter: keys.includes('columnFilter') ? value?.columnFilter || {} : columnFilter,\r\n // Filter external\r\n externalFilter: keys.includes('externalFilter') ? value?.externalFilter || {} : externalFilter,\r\n // Filter def\r\n filterDef: keys.includes('filterDef') ? value?.filterDef || {} : filterDef,\r\n // Force\r\n notReload: !!value?.notReload,\r\n };\r\n filterValue.set(updatedFilter);\r\n return updatedFilter;\r\n },\r\n remove: () => {\r\n filterValue.set(this.#defaultValue(args));\r\n },\r\n observer: filterValue.observer.pipe(\r\n startWith(filterValue.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(value => value || this.#defaultValue(args))\r\n ),\r\n },\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #defaultConfiguration = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n }): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdTableFilterDef] = item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #defaultValue = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n }): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n externalFilter[item.field] = item?.default;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdTableFilterDef] = undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n\r\n #initConfiguration = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n },\r\n configuration: SdTableFilterConfiguration\r\n ): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = configuration?.inlineColumn?.[item.field] ?? item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = configuration?.inlineExternal?.[item.field] ?? item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdTableFilterDef] = configuration?.inlineFilterDef?.[item.sdTableFilterDef] ?? item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #initValue = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n },\r\n value: SdTableFilterValue\r\n ): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = value?.columnFilter?.[item.field] ?? item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n if (item.type === 'daterange') {\r\n externalFilter[item.field] = {\r\n from: value?.externalFilter?.[item.field]?.from ?? item.default?.from,\r\n to: value?.externalFilter?.[item.field]?.to ?? item.default?.to,\r\n };\r\n } else {\r\n externalFilter[item.field] = value?.externalFilter?.[item.field] ?? item?.default;\r\n }\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdTableFilterDef] = value?.filterDef?.[item.sdTableFilterDef] ?? undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n}\r\n","import { Component, OnInit, ViewChild, EventEmitter, ChangeDetectorRef, Input, HostListener } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableConfigurationResult, SdTableConfiguration } from '../../models/table-option-config.model';\r\nimport { SdTableConfigurationService } from '../../services/table-configuration.service';\r\nimport { MatTable } from '@angular/material/table';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdSetting } from '@sd-angular/core/setting';\r\n\r\n@Component({\r\n selector: 'sd-popup-configuration',\r\n templateUrl: './popup-configuration.component.html',\r\n styleUrls: ['./popup-configuration.component.scss'],\r\n})\r\nexport class SdPopupConfiguration implements OnInit {\r\n @Input() tableOption: SdTableOption;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdTableColumn>;\r\n readonly changes = new EventEmitter<SdTableConfigurationResult>();\r\n #setting: SdSetting<SdTableConfiguration>;\r\n configuration: SdTableConfiguration;\r\n isCreatingColumn = false;\r\n selected: {\r\n [key: string]: boolean;\r\n } = {};\r\n disabledDrag = true;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private tableConfigurationService: SdTableConfigurationService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n @HostListener('window:mouseup', ['$event'])\r\n mouseUp(event) {\r\n this.disabledDrag = true;\r\n }\r\n open = async () => {\r\n this.#setting = this.tableConfigurationService.init(this.tableOption);\r\n this.configuration = this.#setting.get();\r\n this.modal.open();\r\n };\r\n\r\n onSave = () => {\r\n this.#setting.set(this.configuration);\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n };\r\n\r\n onReset = async () => {\r\n this.notifyService.confirm('Xác nhận đưa tất cả thiết lập về mặc định').then(() => {\r\n this.#setting.remove();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n });\r\n };\r\n\r\n dropTable(event: CdkDragDrop<SdTableColumn[]>) {\r\n moveItemInArray(this.configuration.columns, event.previousIndex, event.currentIndex);\r\n this.table.renderRows();\r\n }\r\n\r\n handleMouseDown() {\r\n this.disabledDrag = false;\r\n }\r\n\r\n handleMouseUp() {\r\n this.disabledDrag = true;\r\n }\r\n}\r\n","import {\r\n Component,\r\n 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 { SdTableFilterDefDirective } from './directives/sd-table-filter-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-table-expand-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-table-footer-def.directive';\r\nimport { SdExportColumn, SdExportService } from '@sd-angular/core/export';\r\nimport { SdTableConfigurationResult } from './models/table-option-config.model';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { SdTableOptionExportColumn } from './models/table-option-export.model';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { MapToSdTableItem, SdTableItem } from './models/table-item.model';\r\nimport { SdScrollDirective } from '@sd-angular/core/common';\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\nimport { SdPopupConfiguration } from './components/popup-configuration/popup-configuration.component';\r\nimport { SdLoadingService } from '@sd-angular/core/loading';\r\n\r\n@Component({\r\n selector: 'sd-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [\r\n trigger('detailExpand', [\r\n state('collapsed', style({ height: '0', minHeight: '0', visibility: 'hidden' })),\r\n state('expanded', style({ height: '*', visibility: 'visible' })),\r\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\r\n ]),\r\n ],\r\n})\r\nexport class SdTable<T = any> implements OnInit, AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupConfiguration) popupConfiguration: SdPopupConfiguration;\r\n #gridId = uuid.v4();\r\n @ViewChild(SdScrollDirective) sdScroll: SdScrollDirective;\r\n filterRegister: SdTableFilterRegister;\r\n key = uuid.v4();\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\r\n @ViewChild(SdTableFilter) tableFilter: SdTableFilter;\r\n tableOption: SdTableOption<T>;\r\n configuration: SdTableConfigurationResult;\r\n @Input() set option(option: SdTableOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.tableOption = option;\r\n this.#loadCompleted = false;\r\n const setting = this.tableConfigurationService.init(this.tableOption);\r\n if (setting) {\r\n this.#subscription.add(\r\n setting.observer.pipe(startWith(setting.subject.getValue())).subscribe(() => {\r\n const configurationResult = this.tableConfigurationService.loadConfigurationResult(this.tableOption, setting.get());\r\n const displayColumns = configurationResult.displayedColumns || [];\r\n this.loadingService.start();\r\n this.ref.detectChanges();\r\n this.#loadValues(this.tableOption.columns.filter(column => displayColumns.includes(column.field)))\r\n .then(() => {\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.tableOption);\r\n })\r\n .finally(() => {\r\n this.loadingService.stop();\r\n this.ref.detectChanges();\r\n });\r\n })\r\n );\r\n } else {\r\n const configuration = this.tableConfigurationService.loadConfiguration(this.tableOption);\r\n const configurationResult = this.tableConfigurationService.loadConfigurationResult(this.tableOption, configuration);\r\n const displayColumns = configurationResult.displayedColumns || [];\r\n this.loadingService.start();\r\n this.ref.detectChanges();\r\n this.#loadValues(this.tableOption.columns.filter(column => displayColumns.includes(column.field)))\r\n .then(() => {\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.tableOption);\r\n })\r\n .finally(() => {\r\n this.loadingService.stop();\r\n this.ref.detectChanges();\r\n });\r\n }\r\n }\r\n }\r\n #optionChanges = new Subject<SdTableOption>();\r\n\r\n #localItems: SdTableItem<T>[] = [];\r\n items: SdTableItem<T>[] = [];\r\n selectedTableItems: SdTableItem<T>[] = [];\r\n total: number;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n // Paginate\r\n isHiddenPaginator = false;\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(\r\n paginator.page\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sorting\r\n #sort: MatSort;\r\n @ViewChild(MatSort) set sort(sort: MatSort) {\r\n if (sort && this.#sort !== sort) {\r\n this.#sort = sort;\r\n this.#subscription.add(\r\n sort.sortChange\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective)\r\n sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Cell Def\r\n @ContentChildren(SdTabelCellDefDirective) sdCellDefs = new QueryList<SdTabelCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdTabelCellDefDirective;\r\n } = {};\r\n\r\n // Footer Def\r\n @ContentChildren(SdMaterialFooterDefDirective) sdFooterDefs = new QueryList<SdMaterialFooterDefDirective>();\r\n footerDef: {\r\n [column: string]: SdMaterialFooterDefDirective;\r\n } = {};\r\n hasFooter = false;\r\n\r\n // Filter Def\r\n @ContentChildren(SdTableFilterDefDirective) sdFilterDefs = new QueryList<SdTableFilterDefDirective>();\r\n filterDefs: SdTableFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnOperator: Record<string, SdFilterOperator> = {};\r\n columnFilter: Record<string, any> = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #reload = new Subject<{\r\n force: boolean;\r\n }>();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n #loadCompleted = false;\r\n cacheValues: Record<string, any[]> = {};\r\n #cacheObjValues: Record<string, Record<string, string>> = {};\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n @Inject(TABLE_CONFIG)\r\n @Optional()\r\n public tableConfiguration: ISdTableConfiguration,\r\n private tableConfigurationService: SdTableConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private gridFilterService: SdTableFilterService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.#reload\r\n .pipe(\r\n debounceTime(200),\r\n switchMap(async data => {\r\n const filterInfo = this.#getFilter();\r\n const result = await this.#load(filterInfo, !this.#loadCompleted || data.force);\r\n this.#loadCompleted = true;\r\n return result;\r\n })\r\n )\r\n .subscribe(this.#render)\r\n );\r\n this.#subscription.add(this.sdCellDefs.changes.pipe(startWith([])).subscribe(this.#initCellDef));\r\n this.#subscription.add(this.sdFooterDefs.changes.pipe(startWith([])).subscribe(this.#initFooterDef));\r\n this.#subscription.add(this.sdFilterDefs.changes.pipe(startWith([])).subscribe(this.#initFilterDef));\r\n this.#subscription.add(\r\n combineLatest([\r\n this.#optionChanges.pipe(startWith(this.tableOption)),\r\n this.sdFilterDefs.changes.pipe(startWith(this.filterDefs)),\r\n ]).subscribe(() => {\r\n this.#loadFilterRegister();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.#optionChanges.subscribe(() => {\r\n if (this.filterRegister) {\r\n this.#reload.next({\r\n force: true,\r\n });\r\n }\r\n })\r\n );\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #initCellDef = () => {\r\n this.cellDef = {};\r\n for (const cellDef of this.sdCellDefs || []) {\r\n if (cellDef.sdTableCellDef) {\r\n this.cellDef[cellDef.sdTableCellDef] = cellDef;\r\n }\r\n }\r\n };\r\n\r\n #initFilterDef = () => {\r\n this.filterDefs = [];\r\n for (const filterDef of this.sdFilterDefs) {\r\n this.filterDefs.push(filterDef);\r\n }\r\n };\r\n\r\n #initFooterDef = () => {\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdTableFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdTableFooterDef] = footerDef;\r\n }\r\n }\r\n };\r\n\r\n #filterExportInfo = (pageNumber: number, pageSize: number): SdTableFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber,\r\n pageSize,\r\n isExported: true,\r\n };\r\n };\r\n\r\n #initConfiguration = (option: SdTableOption) => {\r\n // Init pagination\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize: option?.paginate?.pageSize ?? this.tableConfiguration?.paginate?.pageSize ?? DEFAULT_TABLE_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.tableConfiguration?.paginate?.pages ?? DEFAULT_TABLE_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false,\r\n };\r\n for (const column of option.columns || []) {\r\n if (column.filter?.operator?.enable && !column.filter?.operator?.list?.length) {\r\n if (column.type === 'string') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListString || [];\r\n }\r\n if (column.type === 'number') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListNumber || [];\r\n }\r\n if (column.type === 'values' || column.type === 'lazy-values') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListValues || [];\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListDate || [];\r\n }\r\n }\r\n }\r\n return option;\r\n };\r\n\r\n #loadFilterRegister = () => {\r\n // Init filter\r\n if (this.tableOption) {\r\n if (!this.filterRegister) {\r\n this.filterRegister = this.gridFilterService.register(this.tableOption?.filter, {\r\n id: this.#gridId,\r\n columns: this.tableOption?.columns,\r\n externalFilters: this.tableOption?.filter?.externalFilters,\r\n filterDefs: this.filterDefs,\r\n });\r\n this.#subscription.add(\r\n this.filterRegister.value.observer\r\n .pipe(\r\n debounceTime(500),\r\n map(filterValue => {\r\n const { columnOperator, columnFilter, notReload } = filterValue;\r\n this.columnOperator = columnOperator || {};\r\n this.columnFilter = columnFilter;\r\n if (!notReload) {\r\n if (this.#paginator) {\r\n this.#paginator.pageIndex = 0;\r\n }\r\n this.#reload.next({\r\n force: false,\r\n });\r\n }\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n };\r\n\r\n #filterLocal = (localItems: SdTableItem<T>[], filterInfo: SdTableFilterRequest) => {\r\n const { columns } = this.tableOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(tableItem => {\r\n const item = tableItem.data;\r\n for (const column of columns) {\r\n const { field, type } = column;\r\n const filterValue: string = (rawColumnFilter[field as string] || '').toString().trim().toLowerCase();\r\n const columnValue: string = (item[field] || '').toString().trim().toLowerCase();\r\n if (filterValue) {\r\n if (!columnValue && type !== 'datetime' && type !== 'date' && type !== 'time') {\r\n return false;\r\n }\r\n if (type === 'string') {\r\n if (columnValue.indexOf(filterValue) === -1) {\r\n return false;\r\n }\r\n } else if (type === 'values' || type === 'lazy-values') {\r\n if (columnValue !== filterValue) {\r\n return false;\r\n }\r\n } else if (type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (type === 'datetime' || type === 'date' || type === 'time') {\r\n const from = rawColumnFilter[field]?.from ?? rawColumnFilter[field];\r\n const to = rawColumnFilter[field]?.to ?? rawColumnFilter[field];\r\n const fromDate = Date.begin(from);\r\n const toDate = Date.end(to);\r\n if (fromDate || toDate) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n\r\n const columnTime = new Date(columnValue).getTime();\r\n const fromDateTime = fromDate?.getTime() || null;\r\n const toDateTime = toDate?.getTime() || null;\r\n\r\n if (fromDateTime && fromDateTime > columnTime) {\r\n return false;\r\n }\r\n if (toDateTime && columnTime > toDateTime) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (orderBy && orderDirection) {\r\n const column = columns.find(e => e.field === orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((tableItemCurrent, tableItemNext) => {\r\n const data = tableItemCurrent.data;\r\n const next = tableItemNext.data;\r\n if (type === 'number') {\r\n return (data[field as string] || 0) - (next[field as string] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(data[field as string] || '').getTime();\r\n const d2 = new Date(data[field as string] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (data[field] || '').toString();\r\n const s2 = (next[field] || '').toString();\r\n if (s1 > s2) {\r\n return 1;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (orderDirection === 'desc') {\r\n items.reverse();\r\n }\r\n }\r\n }\r\n return {\r\n items: items.filter((item, index) => {\r\n return index >= pageNumber * pageSize && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length,\r\n };\r\n };\r\n\r\n #getFilter = (): SdTableFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber: this.#paginator?.pageIndex || 0,\r\n pageSize: this.#paginator?.pageSize || this.tableOption?.paginate?.pageSize || 50,\r\n };\r\n };\r\n\r\n #load = async (filterReq: SdTableFilterRequest, force: boolean = true) => {\r\n this.isLoading = true;\r\n this.ref.detectChanges();\r\n if (this.tableOption.type === 'server') {\r\n const { items } = this.tableOption;\r\n const data = await items(filterReq).catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return {\r\n items: [] as T[],\r\n total: 0,\r\n };\r\n });\r\n return {\r\n items: await this.#format(data?.items, this.tableOption.columns).finally(() => {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }),\r\n total: data?.total || 0,\r\n };\r\n }\r\n if (force) {\r\n const { items } = this.tableOption;\r\n const results = items();\r\n let data: T[] = [];\r\n if (results instanceof Promise) {\r\n data = await results.catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return [];\r\n });\r\n } else {\r\n data = results;\r\n }\r\n if (!Array.isArray(data)) {\r\n this.notifyService.notify.warning('Dữ liệu không phải là một mảng');\r\n data = [];\r\n }\r\n this.#localItems = await this.#format(data, this.tableOption.columns);\r\n }\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n return this.#filterLocal(this.#localItems, filterReq);\r\n };\r\n\r\n #render = async (args: { items: SdTableItem<T>[]; total: number }) => {\r\n this.sdScroll?.scrollTop();\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n await this.tableOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n };\r\n\r\n reload = async (force: boolean = true) => {\r\n this.tableFilter?.updateFilter?.();\r\n const data = await this.#load(this.#getFilter(), force);\r\n this.#render(data);\r\n };\r\n\r\n #exportedItems = async (pageNumber: number = 0, pageSize: number = 10000) => {\r\n if (this.tableOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.tableOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n if (Array.isArray(result)) {\r\n return result;\r\n }\r\n if (isObservable<any[]>(result)) {\r\n result = result.toPromise();\r\n }\r\n if (isObservable<{ items: any[]; total: number }>(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n const filterInfo = this.#filterExportInfo(pageNumber, pageSize);\r\n if (this.tableOption.type === 'server') {\r\n let result = this.tableOption.items(filterInfo);\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof this.tableOption.items === 'function') {\r\n const results = this.tableOption.items();\r\n if (results instanceof Promise) {\r\n exportedItems = await results;\r\n } else {\r\n exportedItems = results;\r\n }\r\n } else {\r\n exportedItems = this.tableOption.items;\r\n }\r\n return this.#filterLocal(exportedItems, filterInfo);\r\n }\r\n }\r\n };\r\n\r\n #allColumns = (): SdTableColumn[] => {\r\n const columns: SdTableColumn[] = [];\r\n this.tableOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns;\r\n };\r\n\r\n #allExportedColumns = (): SdTableOptionExportColumn[] => {\r\n return this.tableOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n };\r\n\r\n #onExport = async (isCSV?: boolean) => {\r\n try {\r\n let columns = this.#getExportColumns();\r\n const pageSize = this.tableOption?.export?.maxItemsPerRequest || 1000;\r\n const batch = this.tableOption?.export?.batch || 1;\r\n let total = this.total;\r\n let pageNumber = 0;\r\n let exportItems = [];\r\n this.isExporting = true;\r\n const items: any[] = [];\r\n let promises: Promise<\r\n | any[]\r\n | {\r\n items: any[];\r\n total: number;\r\n }\r\n >[] = [];\r\n const handleData = async () => {\r\n const results = await Promise.all(promises);\r\n promises = [];\r\n exportItems = [];\r\n for (const result of results) {\r\n if ('items' in result) {\r\n exportItems = [...exportItems, ...result.items];\r\n total = result.total;\r\n } else {\r\n exportItems = [...exportItems, ...result];\r\n }\r\n }\r\n if (this.tableOption.export?.mapping) {\r\n const results = this.tableOption.export.mapping(exportItems);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n const totalPage = total / pageSize;\r\n const percent = Math.round(((pageNumber - 1) * 100.0) / totalPage);\r\n this.exportTitle = `Exporting...${percent}%`;\r\n const allColumns = this.#allColumns();\r\n const allExportedColumns = this.#allExportedColumns();\r\n for (const item of exportItems) {\r\n const obj: any = {};\r\n const handle = async (exportColumn: SdExportColumn) => {\r\n obj[exportColumn.field] = item[exportColumn.field];\r\n const column = allColumns.find(e => e.field === exportColumn.field);\r\n const exportedColumn = allExportedColumns.find(e => e.field === exportColumn.field);\r\n if (exportedColumn?.transform) {\r\n obj[exportedColumn.field] = exportedColumn.transform(item[exportedColumn.field], item);\r\n return;\r\n }\r\n if (!column) {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column?.children.forEach(childColumn => handle(childColumn));\r\n return;\r\n }\r\n if (!columns.some(e => e.field === column.field)) {\r\n return;\r\n }\r\n if (column.transform) {\r\n const transform = column.transform(item[column.field], item, {\r\n isExport: true,\r\n });\r\n if (transform instanceof Promise) {\r\n obj[column.field] = await transform;\r\n } else {\r\n obj[column.field] = transform;\r\n }\r\n obj[column.field] = obj[column.field] ?? '';\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.option?.displayOnTrue || 'True';\r\n } else if (obj[column.field] !== undefined && obj[column.field] !== null) {\r\n obj[column.field] = column.option?.displayOnFalse || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n let date = item[column.field];\r\n // Nếu là date thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy');\r\n } else if (column.type === 'datetime') {\r\n let date = item[column.field];\r\n // Nếu là datetime thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy HH:mm');\r\n } else if (column.type === 'time') {\r\n let date = item[column.field];\r\n // Nếu là time thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'HH:mm');\r\n } else if (column.type === 'values' || column.type === 'lazy-values') {\r\n // Nếu là values thì lấy giá trị của value được chọn\r\n obj[column.field] =\r\n this.#cacheObjValues[column.field]?.[item[column.field]]?.[column.option.displayField] || item[column.field];\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n for (const exportColumn of columns) {\r\n await handle(exportColumn);\r\n }\r\n items.push(obj);\r\n }\r\n };\r\n while (pageNumber * pageSize < total) {\r\n promises.push(this.#exportedItems(pageNumber, pageSize));\r\n pageNumber++;\r\n if (promises.length < batch) {\r\n continue;\r\n }\r\n await handleData();\r\n }\r\n if (promises.length > 0) {\r\n await handleData();\r\n }\r\n if (isCSV) {\r\n await this.exportService.exportCSV({\r\n columns,\r\n items,\r\n fileName: this.tableOption?.export?.fileName,\r\n });\r\n return;\r\n }\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.tableOption?.export?.sheets)) {\r\n for (const sheet of this.tableOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n await this.exportService.export({\r\n columns,\r\n items,\r\n fileName: this.tableOption?.export?.fileName,\r\n sheets,\r\n });\r\n return;\r\n } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n #getExportColumns = () => {\r\n let gridColumns: SdExportColumn[] = [];\r\n this.tableOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n gridColumns.push(childColumn);\r\n });\r\n return;\r\n }\r\n gridColumns.push(column);\r\n });\r\n if (this.configuration) {\r\n const columns = [...gridColumns];\r\n const { firstColumns, secondColumns } = this.configuration;\r\n const displayColumns: SdTableColumn[] = [...firstColumns, ...secondColumns].reduce((first, next) => {\r\n const column = this.tableOption.columns.find(e => e.field === next.field);\r\n if (!column) {\r\n return first;\r\n }\r\n if (column.type !== 'children') {\r\n return [...first, column];\r\n }\r\n const children = column.children;\r\n return [...first, ...children];\r\n }, []);\r\n gridColumns = displayColumns\r\n .map(e => ({\r\n ...e,\r\n data: columns.find(e1 => e1.field === e.field),\r\n }))\r\n .filter(e => !!e.data)\r\n .map(e => e.data);\r\n }\r\n return [...gridColumns, ...(this.tableOption.export?.columns?.filter(e => !e.export?.disabled) || [])];\r\n };\r\n\r\n exportExcel = () => {\r\n this.#onExport();\r\n };\r\n\r\n exportCSV = () => {\r\n this.#onExport(true);\r\n };\r\n\r\n onFilterChange = () => {\r\n this.tableFilter?.updateFilter?.();\r\n this.filterRegister.value.set({\r\n columnOperator: this.columnOperator || {},\r\n columnFilter: this.columnFilter,\r\n });\r\n };\r\n\r\n onExpand = async (rowData: SdTableItem<T>) => {\r\n if (this.tableOption.expand?.always) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanding) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanded) {\r\n rowData.meta.expand.isExpanded = false;\r\n return;\r\n }\r\n const data = this.tableOption?.expand?.onExpand?.(rowData.data);\r\n if (!this.tableOption.expand?.multiple) {\r\n this.items.forEach(item => (item.meta.expand.isExpanding = item.meta.expand.isExpanded = false));\r\n }\r\n if (data instanceof Promise) {\r\n rowData.meta.expand.isExpanding = true;\r\n data\r\n .then(res => {\r\n rowData.meta.expand.data = res;\r\n rowData.meta.expand.isExpanded = true;\r\n })\r\n .finally(() => (rowData.meta.expand.isExpanding = false));\r\n } else {\r\n rowData.meta.expand.data = data;\r\n rowData.meta.expand.isExpanded = true;\r\n }\r\n };\r\n\r\n onSelect = (rowData: SdTableItem<T>) => {\r\n if (rowData.meta.group?.items?.length) {\r\n rowData.meta.group.items.forEach(e => (e.meta.selector.isSelected = rowData.meta.selector.isSelected));\r\n this.tableOption.selector?.onSelect?.(\r\n rowData.data,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.data)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.tableOption.selector?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.tableOption.selector?.onSelect?.(\r\n rowData.data,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.data)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n };\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.meta.selector.selectable && (!this.tableOption?.selector?.actions?.length || e.meta.selector.actions?.length)) {\r\n e.meta.selector.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.tableOption.selector?.onSelectAll?.(this.items.filter(e => e.meta.selector.isSelected).map(e => e.data));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n onClearSelection = (items?: SdTableItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedTableItems = this.items.filter(item => item.meta.selector.isSelected);\r\n this.ref.detectChanges();\r\n };\r\n\r\n clearFilter = () => {\r\n this.filterRegister.value.remove();\r\n };\r\n\r\n setFilter = (args: { columnFilter?: Record<string, any>; externalFilter?: Record<string, any>; filterDef?: Record<string, any> }) => {\r\n const { columnFilter, externalFilter, filterDef } = args || {};\r\n if (columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n this.filterRegister.value.set({\r\n columnFilter,\r\n externalFilter,\r\n filterDef,\r\n });\r\n };\r\n\r\n get dataItems(): T[] {\r\n return this.items.map(item => item.data);\r\n }\r\n\r\n get selectedItems(): T[] {\r\n return this.selectedTableItems.map(item => item.data);\r\n }\r\n\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n #loadValues = async (columns: SdTableColumn[]) => {\r\n const promises: Promise<{\r\n key: string;\r\n valueField: string;\r\n displayField: string;\r\n data: any[];\r\n }>[] = [];\r\n for (const column of columns) {\r\n if (column.type === 'values' && !this.cacheValues[column.field]) {\r\n if (typeof column.option.items === 'function') {\r\n promises.push(\r\n column.option\r\n .items()\r\n .then(data => ({\r\n key: column.field,\r\n valueField: column.option.valueField,\r\n displayField: column.option.displayField,\r\n data: Array.isArray(data) ? data : [],\r\n }))\r\n .catch(err => {\r\n console.error(err);\r\n return {\r\n key: column.field,\r\n valueField: column.option.valueField,\r\n displayField: column.option.displayField,\r\n data: [],\r\n };\r\n })\r\n );\r\n } else {\r\n this.cacheValues[column.field] = column.option.items.map(e => ({\r\n [column.option.valueField]: e?.[column.option.valueField],\r\n [column.option.displayField]: e?.[column.option.displayField],\r\n }));\r\n this.#cacheObjValues[column.field] = Array.toObject(this.cacheValues[column.field], column.option.valueField);\r\n }\r\n }\r\n }\r\n if (promises.length) {\r\n const results = await Promise.all(promises);\r\n for (const result of results) {\r\n this.cacheValues[result.key] = result.data.map(e => ({\r\n [result.valueField]: e?.[result.valueField],\r\n [result.displayField]: e?.[result.displayField],\r\n }));\r\n this.#cacheObjValues[result.key] = Array.toObject(this.cacheValues[result.key], result.valueField);\r\n }\r\n }\r\n };\r\n\r\n #format = async <T = any>(rawItems: T[], columns: SdTableColumn[]) => {\r\n const items = rawItems.map(MapToSdTableItem);\r\n for (const column of columns) {\r\n // Clickable\r\n const { field, cellStyle, click, tooltip, htmlTemplate, transform } = column;\r\n if (!transform && !htmlTemplate && column.type === 'lazy-values' && typeof column.option.views === 'function') {\r\n const {\r\n option: { views, mapValue },\r\n } = column;\r\n this.#cacheObjValues[field] = this.#cacheObjValues[field] || {};\r\n const values = items\r\n .map(item => {\r\n if (typeof mapValue === 'function') {\r\n return mapValue(item.data?.[field], item.data);\r\n }\r\n return item.data?.[field];\r\n })\r\n .filter(val => (!!val || val === 0) && !Object.keys(this.#cacheObjValues[field]).includes(val))\r\n .union();\r\n\r\n if (values.length) {\r\n const lazyItems: any[] = (\r\n await views(values).catch(err => {\r\n console.error(err);\r\n return [];\r\n })\r\n )\r\n .filter(item => values.includes(item?.[column.option.valueField]))\r\n .map(e => ({\r\n [column.option.valueField]: e?.[column.option.valueField],\r\n [column.option.displayField]: e?.[column.option.displayField],\r\n }));\r\n Object.assign(this.#cacheObjValues[field], Array.toObject(lazyItems, column.option.valueField) || {});\r\n }\r\n }\r\n for (const item of items) {\r\n const rowData = item.data;\r\n const value = rowData?.[field];\r\n item.meta.display[field] = {\r\n badge: undefined,\r\n cellStyle: column.type === 'number' ? { 'text-align': 'right!important' } : undefined,\r\n data: value,\r\n isHtml: false,\r\n tooltip: typeof tooltip === 'function' ? tooltip(value, rowData) : undefined,\r\n click: typeof click === 'function' ? () => click(value, rowData) : undefined,\r\n };\r\n const display = item.meta.display[field];\r\n // Display\r\n if (typeof htmlTemplate === 'function') {\r\n display.isHtml = true;\r\n display.data = htmlTemplate(value, rowData);\r\n } else if (typeof transform === 'function') {\r\n const newValue = transform(value, rowData);\r\n if (newValue instanceof Promise) {\r\n display.data = await newValue;\r\n } else {\r\n display.data = newValue;\r\n }\r\n } else {\r\n if (column.type === 'date' || column.type === 'datetime' || column.type === 'time') {\r\n const date = Date.toFormat(value, 'dd/MM/yyyy');\r\n let time = Date.toFormat(value, 'HH:mm:ss');\r\n if (time?.endsWith('00')) {\r\n time = Date.toFormat(value, 'HH:mm');\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n if (column.type === 'datetime') {\r\n display.isHtml = true;\r\n display.data = `<span class=\"d-block T14R text-black400\">${time}</span><span class=\"d-block T14R\">${date}</span>`;\r\n } else {\r\n display.data = date;\r\n }\r\n }\r\n if (column.type === 'time') {\r\n display.data = time;\r\n }\r\n }\r\n if (column.type === 'values' || column.type === 'lazy-values') {\r\n if (column.type === 'lazy-values' && typeof column.option.mapValue === 'function') {\r\n display.data = this.#cacheObjValues[field]?.[column.option.mapValue(value, rowData)]?.[column.option.displayField] || value;\r\n } else {\r\n display.data = this.#cacheObjValues[field]?.[value]?.[column.option.displayField] || value;\r\n }\r\n }\r\n if (column.type === 'number' && Number.isNumber(value)) {\r\n display.data = Number.toVNCurrency(value);\r\n }\r\n if (column.type === 'bool') {\r\n const { option } = column;\r\n if (value !== undefined && value !== null && value !== '') {\r\n display.data = value === true ? option?.displayOnTrue || 'True' : option?.displayOnFalse || 'False';\r\n } else {\r\n display.data = null;\r\n }\r\n }\r\n // Badge\r\n if ((column.type === 'string' || column.type === 'number' || column.type === 'values') && column.badge) {\r\n display.badge = {\r\n type: !column?.badgeType ? 'icon' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column.badgeIcon?.(value, rowData),\r\n };\r\n } else if (column.type === 'bool') {\r\n display.badge = {\r\n type: 'circle',\r\n color: !!value ? 'success' : 'danger',\r\n icon: null,\r\n };\r\n }\r\n }\r\n }\r\n }\r\n return items;\r\n };\r\n\r\n trackBy = (index: number, item: SdTableItem) => {\r\n return item.meta.id;\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand, SdTableCommandNormal } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: SdTableItem, commands: SdTableCommand[]): Promise<SdTableCommand[]> {\r\n const results: SdTableCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n let flag = false;\r\n const { hidden } = command;\r\n if (hidden === undefined) {\r\n flag = true;\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n flag = true;\r\n }\r\n } else {\r\n const isHidden = hidden(item.data);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n flag = true;\r\n }\r\n } else {\r\n if (!isHidden) {\r\n flag = true;\r\n }\r\n }\r\n }\r\n if (flag) {\r\n if ('children' in command) {\r\n const children: SdTableCommandNormal[] = [];\r\n for (const childCommand of command.children) {\r\n const { hidden } = childCommand;\r\n if (hidden === undefined) {\r\n children.push(childCommand);\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n const isHidden = hidden(item.data);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n if (!isHidden) {\r\n children.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...command, children });\r\n }\r\n } else {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandDisable',\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: SdTableItem, command: SdTableCommand): boolean {\r\n if ('disabled' in command) {\r\n const { disabled } = command;\r\n if (typeof disabled === 'boolean') {\r\n return disabled;\r\n }\r\n return disabled(item.data);\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: SdTableItem): string {\r\n if (!command?.icon) {\r\n return undefined;\r\n }\r\n if (typeof (command.icon) === 'string') {\r\n return command.icon;\r\n }\r\n return command.icon(item.data);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: SdTableItem): string {\r\n if (!command?.title) {\r\n return undefined;\r\n }\r\n if (typeof (command.title) === 'string') {\r\n return command.title;\r\n }\r\n return command.title(item.data);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-view',\r\n templateUrl: './desktop-cell-view.component.html',\r\n styleUrls: ['./desktop-cell-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellView {\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableExternalFilter } from '../services/table-filter/table-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdTableExternalFilter[], field?: string): SdTableExternalFilter[] {\r\n const results: SdTableExternalFilter[] = [];\r\n if (!externalFilters) {\r\n return results;\r\n }\r\n for (const filter of externalFilters) {\r\n results.push(filter);\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdTableColumn[], field?: string): SdTableColumn[] {\r\n const results: SdTableColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\r\n if (column.type === 'children') {\r\n for (const columnChildren of column?.children) {\r\n if (!columnChildren.filter?.disabled) {\r\n results.push(columnChildren);\r\n }\r\n }\r\n continue;\r\n }\r\n if (!column.filter?.disabled) {\r\n results.push(column);\r\n }\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdTableCommand } from '../../models/table-command.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-command',\r\n templateUrl: './desktop-command.component.html',\r\n styleUrls: ['./desktop-command.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCommand {\r\n @Input() item: SdTableItem;\r\n @Input() commands: SdTableCommand[] = [];\r\n constructor() {\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'columnTooltip'\r\n})\r\nexport class SdColumnTooltipPipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdTableColumn): string {\r\n if (column?.tooltip) {\r\n return column.tooltip(value, rowData);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableItem } from '../models/table-item.model';\r\nimport { SdTableAction, SdTableActionNormal } from '../models/table-option-selector.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdTableAction): SdTableAction => {\r\n if ('children' in action) {\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n color: action.color,\r\n type: action.type,\r\n children: action.children.map(e => ({\r\n title: e.title,\r\n icon: e.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: e.fontSet,\r\n tooltip: e.tooltip,\r\n click: e.click\r\n }))\r\n };\r\n }\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n click: action.click\r\n };\r\n\r\n }\r\n transform = (selectedItems: SdTableItem[], actions: SdTableAction[]): SdTableAction[] => {\r\n const results: SdTableAction[] = [];\r\n if (!actions?.length || !selectedItems?.length) {\r\n return [];\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n const children: SdTableActionNormal[] = [];\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n children.push(childAction);\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...action, children });\r\n }\r\n } else {\r\n const key = hash(action);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n results.push(action);\r\n }\r\n }\r\n }\r\n return results.map(result => this.#convert(result));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: SdTableItem[], rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { disabled, actions } = selection;\r\n if (!actions?.length) {\r\n if (!disabled) {\r\n rowData.meta.selector.selectable = true;\r\n return false;\r\n }\r\n rowData.meta.selector.selectable = !disabled(rowData, selectedItems);\r\n return !rowData.meta.selector.selectable;\r\n }\r\n // Lọc các action theo selectedItems hiện tại\r\n const availableActions = actions.filter(action => {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n } else {\r\n const key = hash(action);\r\n return selectedItems.every(e => e.meta.selector.actions.includes(key));\r\n }\r\n });\r\n // Kiểm tra rowData có action nào thỏa hay ko, nếu ko thì disabled\r\n for (const action of availableActions) {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n if(rowData.meta.selector.actions.includes(hash(childAction))) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if(rowData.meta.selector.actions.includes(hash(action))) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionVisibleSelectAll'\r\n})\r\nexport class SdSelectionVisibleSelectAllPipe implements PipeTransform {\r\n transform = async (items: SdTableItem[], selection: SdTableOptionSelector): Promise<boolean> => {\r\n const { actions } = selection;\r\n if (!actions?.length) {\r\n return true;\r\n }\r\n if (!items.length) {\r\n return false;\r\n }\r\n if (actions.some(e => ('children' in e && e.children.some(e1 => e1.isGrouped)) || e.isGrouped)) {\r\n return false;\r\n }\r\n await new Promise(resolve => setTimeout(resolve, 500));\r\n const first = items.find(t => t.meta.selector.actions?.length);\r\n if (first) {\r\n for (const action of first.meta.selector.actions) {\r\n if (items.filter(t => t.meta.selector.actions?.length).every(e => e.meta.selector.actions.includes(action))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdTabelCellDefDirective } from '../../directives/sd-table-cell-def.directive';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() value: any;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() cellDef: {\r\n [column: string]: SdTabelCellDefDirective\r\n } = {};\r\n constructor(\r\n ) { }\r\n}\r\n","import { SdBadgeColor } from '@sd-angular/core/badge';\r\nimport { SdTabelCellDefDirective } from '../directives/sd-table-cell-def.directive';\r\nimport { TemplateRef } from '@angular/core';\r\n\r\nexport type SdTableColumn<T = any> =\r\n | SdTableColumnText<T>\r\n | SdTableColumnNumber<T>\r\n | SdTableColumnBool<T>\r\n | SdTableColumnDate<T>\r\n | SdTableColumnValues<T>\r\n | SdTableColumnLazyValues<T>\r\n | SdTableColumnChildren<T>;\r\n\r\nexport type SdFilterOperator =\r\n | 'EQUAL'\r\n | 'NOT_EQUAL'\r\n | 'CONTAIN'\r\n | 'NOT_CONTAIN'\r\n | 'IN'\r\n | 'NOT_IN'\r\n | 'START_WITH'\r\n | 'END_WITH'\r\n | 'GREATER_THAN'\r\n | 'LESS_THAN'\r\n | 'GREATER_OR_EQUAL'\r\n | 'LESS_OR_EQUAL';\r\n\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 cellDef?: TemplateRef<SdTabelCellDefDirective>;\r\n}\r\n\r\ninterface SdTableColumnText<T = any> extends SdTableColumnBase<T> {\r\n type: 'string';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n}\r\n\r\ninterface SdTableColumnNumber<T = any> extends SdTableColumnBase<T> {\r\n type: 'number';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n}\r\n\r\ninterface SdTableColumnBool<T = any> extends SdTableColumnBase<T> {\r\n type: 'bool';\r\n option?: {\r\n displayOnTrue?: string;\r\n displayOnFalse?: string;\r\n };\r\n}\r\n\r\ninterface SdTableColumnDate<T = any> extends SdTableColumnBase<T> {\r\n type: 'date' | 'datetime' | 'time';\r\n filter?: SdTableColumnBase['filter'] & { useFilterDate?: boolean }\r\n}\r\n\r\nexport interface SdTableColumnValues<T = any> extends SdTableColumnBase<T> {\r\n type: 'values';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'icon' | 'circle' | 'round';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: any[] | (() => Promise<any[]>);\r\n selection?: 'AUTOCOMPLETE' | 'MULTIPLE' | 'MULTIPLEAUTOCOMPLETE';\r\n };\r\n}\r\n\r\nexport interface SdTableColumnLazyValues<T = any> extends SdTableColumnBase<T> {\r\n type: 'lazy-values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: (searchText: string) => Promise<any[]>; // Filter\r\n // Nếu không có tranform hay htmlTemplate cần khai báo views\r\n views?: (values: string[]) => Promise<any[]>; // Hiển thị\r\n mapValue?: (value: any, rowData?: T) => string; // Một số trường hợp dữ liệu của field là object hoặc muốn value lấy dữ liệu khác thì sử dụng hàm này\r\n selection?: 'MULTIPLE';\r\n };\r\n}\r\n\r\ntype SdTableColumnNormal<T> = Exclude<SdTableColumn<T>, SdTableColumnChildren<T>>;\r\n\r\nexport interface SdTableColumnChildren<T = any> extends SdTableColumnBase<T> {\r\n type: 'children';\r\n children: SdTableColumnNormal<T>[];\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdFilterOperator, SdFilterOperators, SdTableColumn } from '../../models/table-column.model';\r\n\r\n@Component({\r\n selector: 'sd-column-inline-filter',\r\n templateUrl: './column-inline-filter.component.html',\r\n styleUrls: ['./column-inline-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdColumnInlineFilter implements OnInit {\r\n value: any;\r\n @Input('value') _value(value: any) {\r\n this.value = value;\r\n this.#valueChanges.next();\r\n }\r\n inlineSymbol: string = 'filter_alt';\r\n #inlineOperator: SdFilterOperator;\r\n @Input('inlineOperator') set _inlineOperator(inlineOperator: SdFilterOperator) {\r\n if (this.#inlineOperator !== inlineOperator) {\r\n this.#inlineOperator = inlineOperator;\r\n this.inlineSymbol = SdFilterOperators.find(e => e.value === inlineOperator)?.symbol ?? 'filter_alt';\r\n }\r\n }\r\n @Output() inlineOperatorChange = new EventEmitter();\r\n\r\n columnFilter: Record<string, any> = {};\r\n @Input('columnFilter') set _columnFilter(columnFilter: Record<string, any>) {\r\n this.columnFilter = columnFilter || {};\r\n this.#valueChanges.next();\r\n }\r\n operators: { value: SdFilterOperator; display: string }[] = [];\r\n column: SdTableColumn;\r\n items: any[] | ((searchText: string) => Promise<any[]>) = [];\r\n @Input() cacheValues: Record<string, any[]>;\r\n @Input('column') set _column(column: SdTableColumn) {\r\n this.column = column;\r\n if (!column?.filter?.disabled && column?.filter?.operator?.enable) {\r\n this.operators = SdFilterOperators.filter(e => column.filter.operator.list?.includes?.(e.value));\r\n } else {\r\n this.operators = [];\r\n }\r\n if (this.column.type === 'values') {\r\n if (Array.isArray(this.column.option.items)) {\r\n this.items = this.column.option.items;\r\n } else {\r\n this.items = this.cacheValues?.[column.field] || []\r\n }\r\n } else if (this.column.type === 'lazy-values') {\r\n this.items = this.column.option.items;\r\n }\r\n }\r\n @Output() filterChange = new EventEmitter();\r\n #valueChanges = new Subject();\r\n #subcription = new Subscription();\r\n constructor(private ref: ChangeDetectorRef) {}\r\n ngOnInit() {\r\n this.#subcription.add(\r\n this.#valueChanges.pipe(startWith(this.columnFilter)).subscribe(() => {\r\n if (this.column.type === 'date' || this.column.type === 'time' || this.column.type === 'datetime') {\r\n if (!this.column?.filter?.useFilterDate) {\r\n this.columnFilter[this.column.field] = this.columnFilter[this.column.field] || {\r\n from: null,\r\n to: null,\r\n };\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subcription.unsubscribe();\r\n }\r\n\r\n onFilterChange = () => {\r\n this.filterChange.emit();\r\n };\r\n\r\n onChangeOperator = (operator: { value: SdFilterOperator; symbol?: string; display: string }) => {\r\n if (operator) {\r\n this.#inlineOperator = operator.value;\r\n this.inlineSymbol = operator.symbol;\r\n } else {\r\n this.#inlineOperator = null;\r\n this.inlineSymbol = 'filter_alt';\r\n }\r\n this.inlineOperatorChange.emit(this.#inlineOperator);\r\n this.ref.markForCheck();\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.meta.selector.actions = rowData.meta.selector.actions || [];\r\n if (!actions?.length) {\r\n rowData.meta.selector.selectable = true;\r\n return rowData.meta.selector.selectable;\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n let flag = false;\r\n let hasGroup = false;\r\n for (const childAction of action.children) {\r\n const { hidden, isGrouped } = childAction;\r\n const key = hash(childAction);\r\n if (isGrouped) {\r\n hasGroup = true;\r\n }\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData.data)) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n if (flag) {\r\n rowData.meta.selector.actions.push(hash(action));\r\n if (hasGroup) {\r\n groupedActions.push(hash(action));\r\n }\r\n }\r\n } else {\r\n const { hidden, isGrouped } = action;\r\n const key = hash(action);\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData.data)) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.meta.selector.selectable = !!rowData.meta.selector.actions?.length;\r\n if (!rowData.meta.selector.selectable || !groupedActions.length || rowData?.meta.group?.items?.length) {\r\n return rowData.meta.selector.selectable;\r\n }\r\n // Đối với trường hợp grouped, tuy selectable là true nhưng vẫn ẩn đi checkbox\r\n // nếu các action đều thuộc groupedActions và rowData ko phải là dòng group\r\n return rowData.meta.selector.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\nimport { SdTableAction } from '../../models/table-option-selector.model';\r\n\r\n@Component({\r\n selector: 'sd-table-quick-action',\r\n templateUrl: './quick-action.component.html',\r\n styleUrls: ['./quick-action.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTableQuickAction {\r\n @Input() tableOption: SdTableOption;\r\n @Input() selectedTableItems: SdTableItem[];\r\n @Output() clear = new EventEmitter();\r\n constructor() {}\r\n onClear = () => {\r\n this.clear.emit();\r\n };\r\n\r\n onClickAction = (action: SdTableAction) => {\r\n if ('click' in action) {\r\n action?.click(this.selectedTableItems.map(e => e.data));\r\n }\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { MapToSdTableItem, SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'sdGroup',\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: SdTableItem[], gridOption: SdTableOption): SdTableItem[] {\r\n const { group } = gridOption;\r\n if (!group) {\r\n return items;\r\n }\r\n const { fields, htmlTemplate } = group;\r\n if (!fields?.length) {\r\n return items;\r\n }\r\n const groupItem: {\r\n [key: string]: SdTableItem[];\r\n } = {};\r\n for (const item of items) {\r\n let obj = {};\r\n for (const field of fields) {\r\n obj = {\r\n ...obj,\r\n ...(item[field] ?? { [field]: item[field] }),\r\n };\r\n }\r\n const key = hash(obj);\r\n if (!groupItem[key]) {\r\n groupItem[key] = [];\r\n }\r\n groupItem[key].push(item);\r\n }\r\n const results: SdTableItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n const result = MapToSdTableItem({});\r\n result.meta.group.items = groupItem[key];\r\n result.meta.group.htmlTemplate = htmlTemplate(groupItem[key]);\r\n results.push(result);\r\n for (const item of groupItem[key]) {\r\n results.push(item);\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Injectable, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SdTable } from './table.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { CdkTableModule, CdkColumnDef } from '@angular/cdk/table';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { SdCommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { SdCommandDisablePipe } from './pipes/command-disable.pipe';\r\nimport { SdCommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { SdCommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdDesktopCellView } from './components/desktop-cell-view/desktop-cell-view.component';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SdTabelCellDefDirective } from './directives/sd-table-cell-def.directive';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SdFilterExternalPipe } from './pipes/filter-external.pipe';\r\nimport { SdFilterColumnPipe } from './pipes/filter-column.pipe';\r\nimport { SdTableFilter } from './components/table-filter/table-filter.component';\r\nimport { SdPopupFilter } from './components/popup-filter/popup-filter.component';\r\n\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\nimport { SdDesktopCommand } from './components/desktop-command/desktop-command.component';\r\nimport { SdTableFilterDefDirective } from './directives/sd-table-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-table-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-table-expand-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdPopupConfiguration } from './components/popup-configuration/popup-configuration.component';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { SdColumnTooltipPipe } from './pipes/column-tooltip.pipe';\r\nimport { SdSelectionActionFilterPipe } from './pipes/selection-action-filter.pipe';\r\nimport { SdSelectionDisablePipe } from './pipes/selection-disable.pipe';\r\nimport { SdSelectionVisibleSelectAllPipe } from './pipes/selection-visible-select-all.pipe';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdColumnInlineFilter } from './components/column-inline-filter/column-inline-filter.component';\r\nimport { SdSelectionVisiblePipe } from './pipes/selection-visible.pipe';\r\nimport { SdTableQuickAction } from './components/quick-action/quick-action.component';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdGroupPipe } from './pipes/sd-group.pipe';\r\nimport { SdGroupModule } from '@sd-angular/core/group';\r\n\r\n@Injectable()\r\nexport class MatPaginatorIntlCro extends MatPaginatorIntl {\r\n firstPageLabel = 'Trang đầu';\r\n lastPageLabel = 'Trang cuối';\r\n itemsPerPageLabel = 'Kích thước trang';\r\n nextPageLabel = 'Trang sau';\r\n previousPageLabel = 'Trang trước';\r\n\r\n getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n if (length === 0 || pageSize === 0) {\r\n return '';\r\n }\r\n const from = page * pageSize + 1;\r\n const to = from + (length - page * pageSize > pageSize ? pageSize : length - page * pageSize) - 1;\r\n return `${from}-${to} trên ${length}`;\r\n };\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatSortModule,\r\n MatPaginatorModule,\r\n MatTableModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatSlideToggleModule,\r\n MatCheckboxModule,\r\n MatListModule,\r\n CdkTableModule,\r\n DragDropModule,\r\n SdFormModule,\r\n SdServiceModule,\r\n SdCommonModule,\r\n SdGroupModule,\r\n ],\r\n declarations: [\r\n SdTableQuickAction,\r\n SdDesktopCell,\r\n SdDesktopCellView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdTable,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdTabelCellDefDirective,\r\n SdTableFilterDefDirective,\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 SdTableFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n ],\r\n providers: [\r\n DatePipe,\r\n DecimalPipe,\r\n CdkColumnDef,\r\n SdTableFilterService,\r\n SdTableConfigurationService,\r\n {\r\n provide: MatPaginatorIntl,\r\n useClass: MatPaginatorIntlCro,\r\n },\r\n ],\r\n})\r\nexport class SdTableModule {}\r\n","import { Observable } from 'rxjs';\r\nimport { SdFilterOperator } from '../../models/table-column.model';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { TemplateRef } from '@angular/core';\r\n\r\nexport class SdTableQuickFilter {\r\n code: string;\r\n columnFilter: {\r\n [field: string]: any;\r\n };\r\n externalFilter: {\r\n [field: string]: any;\r\n };\r\n filterDef: {\r\n [field: string]: any;\r\n };\r\n}\r\n\r\nexport interface SdTableFilterConfiguration {\r\n // selectedQuickFilter: string;\r\n // quickFilters: SdGridMaterialQuickFilter[];\r\n\r\n inlineColumn: Record<string, boolean>; // Ẩn hiện filter column\r\n // columnFilter?: Record<string, any>; // Giá trị filter column\r\n\r\n inlineExternal: Record<string, boolean>; // Ẩn hiện filter external\r\n // externalFilter?: Record<string, any>; // Giá trị filter external\r\n\r\n inlineFilterDef: Record<string, boolean>; // Ẩn hiện filter def\r\n // filterDef?: Record<string, any>; // Giá trị filter def\r\n}\r\n\r\nexport interface SdTableFilterValue {\r\n columnOperator?: Record<string, SdFilterOperator>;\r\n\r\n columnFilter?: Record<string, any>; // Giá trị filter column\r\n\r\n externalFilter?: Record<string, any>; // Giá trị filter external\r\n\r\n filterDef?: Record<string, any>; // Giá trị filter def\r\n\r\n notReload?: boolean; // Để nhận biết là chỉ set giá trị, không trigger change\r\n}\r\n\r\nexport interface SdTableFilterRequest<T = any> {\r\n columnOperator: Record<string, SdFilterOperator>;\r\n rawColumnFilter: Record<keyof T, any>;\r\n rawExternalFilter: Record<string, any>;\r\n rawFilterDef: Record<string, any>;\r\n pageNumber: number;\r\n pageSize: number;\r\n orderBy: string;\r\n orderDirection: 'asc' | 'desc' | '';\r\n isExported?: boolean;\r\n}\r\n\r\nexport interface SdTableOptionFilter {\r\n key?: string;\r\n cacheFilter?: boolean;\r\n disabled?: boolean;\r\n hideInlineFilter?: boolean;\r\n externalFilters?: SdTableExternalFilter[];\r\n sorts?: string[];\r\n enableCollapse?: boolean;\r\n}\r\n\r\nexport declare type SdTableExternalFilter =\r\n | TextFilter\r\n | DateFilter\r\n | DateTimeFilter\r\n | DateRangeFilter\r\n | NumberFilter\r\n | ValuesFilter\r\n | LazyValuesFilter\r\n | BoolFilter\r\n | CustomFilter;\r\n\r\ninterface BaseFilter {\r\n field: string;\r\n title: string;\r\n defaultShowing?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\ninterface TextFilter extends BaseFilter {\r\n type: 'string';\r\n default?: string;\r\n}\r\n\r\ninterface DateFilter extends BaseFilter {\r\n type: 'date';\r\n default?: Date | string;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n}\r\n\r\ninterface DateTimeFilter extends BaseFilter {\r\n type: 'datetime';\r\n default?: Date | string;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n}\r\n\r\ninterface DateRangeFilter extends BaseFilter {\r\n type: 'daterange';\r\n enableTime?: boolean;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n default?: {\r\n from?: Date | string;\r\n to?: Date | string;\r\n };\r\n}\r\n\r\ninterface NumberFilter extends BaseFilter {\r\n type: 'number';\r\n default?: number;\r\n}\r\n\r\ninterface ValuesFilter extends BaseFilter {\r\n type: 'values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: any[] | (() => Promise<any[]>);\r\n selection?: 'AUTOCOMPLETE' | 'MULTIPLE' | 'MULTIPLEAUTOCOMPLETE';\r\n };\r\n default?: string | string[];\r\n}\r\n\r\ninterface LazyValuesFilter extends BaseFilter {\r\n type: 'lazy-values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: (searchText: string) => Promise<any[]>; // Filter\r\n selection?: 'MULTIPLE';\r\n };\r\n default?: string | string[];\r\n}\r\n\r\ninterface BoolFilter extends BaseFilter {\r\n type: 'bool';\r\n option?: {\r\n displayOnTrue?: string;\r\n displayOnFalse?: string;\r\n };\r\n default?: boolean;\r\n}\r\n\r\ninterface CustomFilter extends BaseFilter {\r\n type: 'custom';\r\n filterDef?: TemplateRef<SdTableFilterDefDirective>;\r\n default?: any;\r\n}\r\n\r\nexport interface SdTableFilterRegister {\r\n configuration: {\r\n get: () => SdTableFilterConfiguration;\r\n set: (configuration: Partial<SdTableFilterConfiguration>) => SdTableFilterConfiguration;\r\n remove: () => void;\r\n observer: Observable<SdTableFilterConfiguration>;\r\n };\r\n value: {\r\n get: () => SdTableFilterValue;\r\n set: (value: Partial<SdTableFilterValue>) => SdTableFilterValue;\r\n remove: () => void;\r\n observer: Observable<SdTableFilterValue>;\r\n };\r\n}\r\n"]}
|