@sd-angular/core 1.3.148 → 1.3.149

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/table/src/lib/models/table-configuration.model.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-cell-def.directive.ts","../../../../projects/sd-core/table/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/table/src/lib/components/grid-filter/grid-filter.component.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-filter-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-sub-information-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-footer-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-empty-data-def.directive.ts","../../../../projects/sd-core/table/src/lib/services/table-configuration.service.ts","../../../../projects/sd-core/table/src/lib/models/table-item.model.ts","../../../../projects/sd-core/table/src/lib/pipes/column-values.pipe.ts","../../../../projects/sd-core/table/src/lib/services/table-filter/table-filter.service.ts","../../../../projects/sd-core/table/src/lib/table.component.ts","../../../../projects/sd-core/table/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/column-html-template.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-transform.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/column-children-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-badge.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/grid-configuration-result.pipe.ts","../../../../projects/sd-core/table/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible-select-all.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/table/src/lib/models/table-column.model.ts","../../../../projects/sd-core/table/src/lib/components/column-inline-filter/column-inline-filter.component.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible.pipe.ts","../../../../projects/sd-core/table/src/lib/components/quick-action/quick-action.component.ts","../../../../projects/sd-core/table/src/lib/pipes/cell-view.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/sd-group.pipe.ts","../../../../projects/sd-core/table/src/lib/table.module.ts"],"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","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","SdGridFilter","ref","deviceService","filterRegisterChange","BehaviorSubject","_subscription","Subscription","onFilter","item","filterRegister","updateFilter","notReload","popupFilter","isMobileOrTablet","isDesktop","filter","add","pipe","startWith","subscribe","observer","unsubscribe","DeviceDetectorService","SdMaterialFilterDefDirective","val","defaultShowing","settingService","gridMaterialConfiguration","_COLUMNS","EDITORVALIDATION","EDITOR","SUBINFORMATION","COMMAND","SELECTION","GROUP","_cache","init","key","gridOption","subject_1","Subject","load","_load","_get","_set","assign","_remove","_default","_getKey","_a","config","hash","prefix","_b","hidden","map","origin","field","title","width","invisible","fixed","subject","_e","storage","createServer","catch","_g","console","_f","type","column","some","forEach","col","find","_c","_d","generateConfigurationResult","sdSubInformation","fixedColumn","firstColumns","secondColumns","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","commands","group","visible","fields","children","childColumn","Injectable","SdSettingService","Inject","Optional","MapToSdTableItem","current","meta","id","expand","isExpanding","isExpanded","actions","isSelected","selectable","_prefix","transform","option","items","valueField","displayField","_l","selection","remain","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__rest","isMultible","includes","_cache$1","values","_m","isArray","join","_j","_h","_k","Pipe","name","_filterConfiguration","_filterValue","register","cacheSession","tempKey","_cache$2","filterConfiguration_1","default","_defaultConfiguration","undefined","_initConfiguration","filterValue_1","cacheFilter","_defaultValue","_initValue","keys","columnOperator","updatedFilter","_u","_v","_w","_x","_y","_z","sdMaterialFilterDef","from","to","_o","_q","_p","SdTable","gridConfigurationService","exportService","notifyService","columnValuesPipe","gridFilterService","_gridId","uuid.v4","_optionChanges","_localItems","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_reload","isExporting","isSelectAll","exportTitle","_loadCompleted","_initCellDef","_9","_10","sdMaterialCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","_8","rawColumnFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","paginate","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","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","filterReq","err","notify","warning","data","results","_render","sdScroll","scrollTop","reload","onReload","every","_updateSelectedItems","gridFilter","_load$1","_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","isExport","_12","displayOnTrue","displayOnFalse","date","transformDate","toFormat","_11","e_9","columns_3","columns_3_1","exportItems_2","exportItems_2_1","_14","exportCSV","fileName","sheets","sheet","detectChanges","exportExcel","onFilterChange","onExpand","rowData","always","multiple","res","finally","onSelect","single","onSelectAll","onClearSelection","clearFilter","setFilter","_initConfiguration$1","gridConfigurationObserver","paginator","page","sortChange","ngOnInit","switchMap","changes","combineLatest","animations","trigger","style","height","minHeight","visibility","transition","animate","SdTableConfigurationService","SdExportService","SdNotifyService","SdColumnValuesPipe","SdTableFilterService","SdScrollDirective","SdQuickAction","MatPaginator","MatSort","ContentChild","SdMaterialSubInformationDefDirective","SdMaterialEmptyDataDefDirective","ContentChildren","SdMaterialCellDefDirective","SdMaterialFooterDefDirective","SdCommandFilterPipe","commands_1","commands_1_1","command","flag","isHidden","e_1","childCommand","hidden_1","SdCommandDisablePipe","SdCommandIconPipe","icon","SdCommandTitlePipe","SdColumnHtmlTemplatePipe","htmlTemplate","SdColumnTransformPipe","Number","isNumber","toVNCurrency","SdFilterExternalPipe","externalFilters_1","externalFilters_1_1","SdFilterColumnPipe","e_2","columnChildren","SdColumnChildrenFilterPipe","_isMobileOrTablet","transformValue","templateValue","SdColumnBadgePipe","badge","badgeType","color","badgeIcon","SdGridConfigurationResultPipe","a","log","SdPopupGridConfiguration","translateService","EventEmitter","isCreatingColumn","selected","disabledDrag","_cache$3","onSave","onReset","translate","confirm","createColumn","generatedColumn","mouseUp","event","dropTable","moveItemInArray","previousIndex","currentIndex","table","renderRows","handleMouseDown","handleMouseUp","SdTranslateService","HostListener","SdColumnTooltipPipe","tooltip","_convert","action","fontSet","click","childAction","key_1","actions_1","actions_1_1","availableActions","availableActions_1","availableActions_1_1","e1","isGrouped","setTimeout","first","SdFilterOperators","symbol","display","SdColumnInlineFilter","inlineSymbol","_inlineOperator_1","inlineOperatorChange","operators","filterChange","_valueChanges","_subcription","emit","onChangeOperator","_value","inlineOperator","useFilterDate","Output","groupedActions","hasGroup","clear","SdCellViewPipe","utilityService","_maxSecond","_maxMinute","_maxHour","_maxDay","_maxMonth","_isMobileOrTablet$1","displayOnEmpty","align","hasHtml","html","seconds","timeDifferent","timeDifference","time","dateTime","emptyValues","SdUtilityService","SdGroupPipe","groupItem","items_1_1","fields_1","fields_1_1","e_4","MatPaginatorIntlCro","_super","firstPageLabel","lastPageLabel","itemsPerPageLabel","nextPageLabel","previousPageLabel","getRangeLabel","String","__","constructor","__extends","MatPaginatorIntl","NgModule","imports","CommonModule","FormsModule","ReactiveFormsModule","MatInputModule","MatFormFieldModule","MatSortModule","MatPaginatorModule","MatTableModule","MatMenuModule","MatIconModule","MatButtonModule","MatTooltipModule","MatProgressSpinnerModule","MatChipsModule","MatRadioModule","MatSlideToggleModule","MatCheckboxModule","MatListModule","MatDividerModule","CdkTableModule","DragDropModule","SdFormModule","SdServiceModule","MatSliderModule","ScrollingModule","SdCommonModule","SdGroupModule","declarations","SdGridQuickAction","SdDesktopCell","SdDesktopCellView","SdDesktopCommand","SdSelectionActionFilterPipe","SdSelectionVisiblePipe","SdSelectionDisablePipe","SdSelectionVisibleSelectAllPipe","exports","providers","DatePipe","DecimalPipe","CdkColumnDef","provide","useClass"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { SdFilterOperator } from './table-column.model';\r\n\r\nexport interface ISdTableConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n operator?: {\r\n defaultListString?: SdFilterOperator[];\r\n defaultListNumber?: SdFilterOperator[];\r\n defaultListDate?: SdFilterOperator[];\r\n defaultListValues?: SdFilterOperator[];\r\n };\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[]\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_TABLE_CONFIG: ISdTableConfiguration = {\r\n paginate: {\r\n pageSize: 50,\r\n pages: [50, 100, 200]\r\n }\r\n};\r\n\r\nexport const TABLE_CONFIG = new InjectionToken<ISdTableConfiguration>('sd-table.configuration');\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialCellDef]'\r\n})\r\nexport class SdMaterialCellDefDirective {\r\n @Input() sdMaterialCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Component, ViewChild, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableExternalFilter, SdGridMaterialFilterRegister } from '../../services/table-filter/table-filter.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'sd-popup-filter',\r\n templateUrl: './popup-filter.component.html',\r\n styleUrls: ['./popup-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdPopupFilter {\r\n @ViewChild(SdModal) modal: SdModal;\r\n #filterRegister: SdGridMaterialFilterRegister;\r\n @Input() set filterRegister(value: SdGridMaterialFilterRegister) {\r\n this.#filterRegister = value;\r\n }\r\n @Input() externalFilters: SdTableExternalFilter[] = [];\r\n externalFilter: Record<string, any> = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n @Input() columns: SdTableColumn[] = [];\r\n columnFilter: Record<string, any> = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: Record<string, any> = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n ngOnDestroy() {}\r\n\r\n open = () => {\r\n const configuration = this.#filterRegister.configuration.get();\r\n this.inlineColumn = JSON.parse(JSON.stringify(configuration.inlineColumn));\r\n this.inlineExternal = JSON.parse(JSON.stringify(configuration.inlineExternal));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(configuration.inlineFilterDef));\r\n const filterValue = this.#filterRegister.value.get();\r\n this.columnFilter = JSON.parse(JSON.stringify(filterValue.columnFilter));\r\n this.externalFilter = JSON.parse(JSON.stringify(filterValue.externalFilter));\r\n this.filterDef = JSON.parse(JSON.stringify(filterValue.filterDef));\r\n this.modal.open();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n close = () => {\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onApply = () => {\r\n this.#filterRegister.configuration.set({\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef,\r\n });\r\n this.#filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onClear() {\r\n this.#filterRegister.value.remove();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {\r\n SdTableOptionFilter,\r\n SdTableExternalFilter,\r\n SdGridMaterialFilterRegister,\r\n} from '../../services/table-filter/table-filter.model';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { startWith } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'sd-grid-filter',\r\n templateUrl: './grid-filter.component.html',\r\n styleUrls: ['./grid-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdGridFilter implements AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupFilter) popupFilter: SdPopupFilter;\r\n filter: Readonly<SdTableOptionFilter>;\r\n @Input('filter') set _filter(filter: SdTableOptionFilter) {\r\n this.filter = filter;\r\n }\r\n @Input() columns: SdTableColumn[] = [];\r\n externalFilters: SdTableExternalFilter[] = [];\r\n @Input('externalFilters') set _externalFilters(value: SdTableExternalFilter[]) {\r\n this.externalFilters = value || [];\r\n }\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterRegister: SdGridMaterialFilterRegister;\r\n @Input('filterRegister') set _filterRegister(value: SdGridMaterialFilterRegister) {\r\n this.filterRegister = value;\r\n this.filterRegisterChange.next(this.filterRegister);\r\n }\r\n filterRegisterChange = new BehaviorSubject<SdGridMaterialFilterRegister>(null);\r\n\r\n filterDef: any = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n columnFilter: any = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n externalFilter: any = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n isMobileOrTablet: boolean;\r\n\r\n #subscription = new Subscription();\r\n\r\n constructor(private ref: ChangeDetectorRef, private deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n this.ref.markForCheck();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.filterRegisterChange.pipe(startWith(this.filterRegister)).subscribe(filterRegister => {\r\n if (this.filterRegister) {\r\n this.#subscription.add(\r\n this.filterRegister.configuration.observer.subscribe(configuration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n this.inlineColumn = inlineColumn;\r\n this.inlineExternal = inlineExternal;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.filterRegister.value.observer.subscribe(value => {\r\n const { columnFilter, externalFilter, filterDef } = value;\r\n this.columnFilter = columnFilter;\r\n this.externalFilter = externalFilter;\r\n this.filterDef = filterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFilter = (item?: SdTableColumn | SdTableExternalFilter) => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n };\r\n\r\n updateFilter = () => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n notReload: true\r\n });\r\n };\r\n\r\n open = () => {\r\n this.popupFilter.open();\r\n };\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFilterDef]'\r\n})\r\nexport class SdMaterialFilterDefDirective {\r\n @Input() sdMaterialFilterDef: string;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n defaultShowing: boolean;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialSubInformationDef]'\r\n})\r\nexport class SdMaterialSubInformationDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFooterDef]'\r\n})\r\nexport class SdMaterialFooterDefDirective {\r\n @Input() sdMaterialFooterDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialEmptyDataDef]'\r\n})\r\nexport class SdMaterialEmptyDataDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport {\r\n SdColumnConfiguration,\r\n SdGridConfiguration,\r\n SdGridConfigurationCache,\r\n SdGridConfigurationResult,\r\n} from '../models/table-option-config.model';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\nimport { TABLE_CONFIG, ISdTableConfiguration } from '../models/table-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdTableConfigurationService {\r\n #COLUMNS = {\r\n EDITORVALIDATION: 'sdEditorValidation',\r\n EDITOR: 'sdEditor',\r\n SUBINFORMATION: 'sdSubInformationAction',\r\n COMMAND: 'sdCommand',\r\n SELECTION: 'sdSelection',\r\n GROUP: 'sdGroup',\r\n };\r\n #cache: {\r\n [key: string]: SdGridConfigurationCache;\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(TABLE_CONFIG) @Optional() public gridMaterialConfiguration: ISdTableConfiguration\r\n ) {}\r\n\r\n init = (key: string, gridOption: SdTableOption) => {\r\n if (!this.#cache[key]) {\r\n const subject = new Subject<SdGridConfiguration>();\r\n this.#cache[key] = {\r\n load: this.#load(gridOption, subject),\r\n get: this.#get(gridOption),\r\n set: (configuration: SdGridConfiguration) => {\r\n configuration = this.#set(gridOption, configuration);\r\n subject.next({ ...configuration });\r\n return configuration;\r\n },\r\n remove: () => {\r\n this.#remove(gridOption)();\r\n subject.next(this.#default(gridOption));\r\n },\r\n observer: subject,\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #getKey = (gridOption: SdTableOption) => {\r\n const prefix = 'c9e94836-6ace-4aeb-b148-4f0be63589ee';\r\n if (!gridOption?.config?.key && !gridOption?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: gridOption?.config?.key || !gridOption?.key,\r\n });\r\n };\r\n\r\n #default = (gridOption: SdTableOption): SdGridConfiguration => {\r\n const columns: SdColumnConfiguration[] =\r\n gridOption?.columns\r\n ?.filter(e => !e.hidden)\r\n .map(e => ({\r\n origin: {\r\n field: e.field,\r\n title: e.title,\r\n width: e.width,\r\n invisible: e.invisible,\r\n },\r\n invisible: e.invisible,\r\n fixed: false,\r\n })) || [];\r\n return {\r\n columns,\r\n };\r\n };\r\n\r\n #load = (gridOption: SdTableOption, subject: Subject<SdGridConfiguration>) => {\r\n return async () => {\r\n const get = this.#get(gridOption);\r\n const configuration = await get();\r\n subject.next({ ...configuration });\r\n };\r\n };\r\n\r\n #get = (gridOption: SdTableOption) => {\r\n return async () => {\r\n const key = this.#getKey(gridOption);\r\n if (!key) {\r\n return this.#default(gridOption);\r\n }\r\n const { columns, config } = gridOption;\r\n let configuration: SdGridConfiguration;\r\n if (config?.storage === 'server') {\r\n const { get, remove } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: config?.args,\r\n });\r\n configuration = await get().catch(() => undefined);\r\n if (!configuration?.columns) {\r\n remove().catch(console.error);\r\n return this.#default(gridOption);\r\n }\r\n } else {\r\n const { get, remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: config?.storage,\r\n args: config?.args,\r\n });\r\n configuration = get();\r\n if (!configuration?.columns) {\r\n remove();\r\n return this.#default(gridOption);\r\n }\r\n }\r\n\r\n configuration.columns = configuration.columns.filter(column => columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // Thêm những column mới vào storage nếu có\r\n columns.forEach(column => {\r\n const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n if (!col) {\r\n configuration.columns.push({\r\n origin: {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible,\r\n },\r\n invisible: column.invisible,\r\n fixed: false,\r\n });\r\n } else {\r\n col.origin = {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible,\r\n };\r\n }\r\n });\r\n return configuration;\r\n };\r\n };\r\n\r\n #set = (gridOption: SdTableOption, configuration: SdGridConfiguration) => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n if (gridOption?.config?.storage === 'server') {\r\n const { set } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: gridOption?.config?.args,\r\n });\r\n set(configuration);\r\n } else {\r\n const { set } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args,\r\n });\r\n set(configuration);\r\n }\r\n }\r\n return JSON.parse(JSON.stringify(configuration));\r\n };\r\n\r\n #remove = (gridOption: SdTableOption) => {\r\n return () => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n if (gridOption?.config?.storage === 'server') {\r\n const { remove } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: gridOption?.config?.args,\r\n });\r\n remove();\r\n } else {\r\n const { remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args,\r\n });\r\n remove();\r\n }\r\n }\r\n };\r\n };\r\n\r\n // get = async (gridOption: SdGridMaterialOption): Promise<SdGridConfiguration> => {\r\n // if (!gridOption?.key) {\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // const { key, columns } = gridOption;\r\n // const configuration: SdGridConfiguration = await this.settingService.get(this.#getKey(key)).catch(() => undefined);\r\n // if (!configuration?.columns) {\r\n // this.settingService.remove(this.#getKey(key)).catch(console.error);\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // configuration.columns = configuration.columns\r\n // .filter(column => columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // // Thêm những column mới vào storage nếu có\r\n // columns.forEach(column => {\r\n // const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n // if (!col) {\r\n // configuration.columns.push({\r\n // origin: {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible,\r\n // },\r\n // invisible: column.invisible,\r\n // fixed: false\r\n // });\r\n // } else {\r\n // col.origin = {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible\r\n // };\r\n // }\r\n // });\r\n // return configuration;\r\n // }\r\n\r\n // set = async (key: string, configuration: SdGridConfiguration): Promise<SdGridConfiguration> => {\r\n // if (key) {\r\n // this.settingService.set(this.#getKey(key), configuration);\r\n // }\r\n // return configuration;\r\n // }\r\n\r\n // remove = (key: string) => {\r\n // if (key) {\r\n // this.settingService.remove(this.#getKey(key));\r\n // }\r\n // }\r\n\r\n generateConfigurationResult = (\r\n configuration: SdGridConfiguration,\r\n gridOption: SdTableOption,\r\n sdSubInformation: SdMaterialSubInformationDefDirective\r\n ) => {\r\n const result: SdGridConfigurationResult = {\r\n column: {},\r\n fixedColumn: {},\r\n firstColumns: [],\r\n secondColumns: [],\r\n firstHeaders: [],\r\n secondHeaders: [],\r\n displayedColumns: [],\r\n displayedFooters: [],\r\n multipleHeader: false,\r\n };\r\n const { selector, commands, group } = gridOption || {};\r\n if (selector?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (commands?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.COMMAND);\r\n result.displayedColumns.push(this.#COLUMNS.COMMAND);\r\n }\r\n if (group?.fields?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.GROUP);\r\n result.displayedColumns.push(this.#COLUMNS.GROUP);\r\n }\r\n configuration?.columns\r\n ?.filter(col => !col.invisible)\r\n .forEach(col => {\r\n const column = gridOption?.columns.find(e => e.field === col.origin.field);\r\n if (column) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n result.firstColumns.push({\r\n ...column,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n result.displayedColumns.push(col.origin.field);\r\n if (column.type === 'children') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n }\r\n }\r\n });\r\n if (sdSubInformation?.templateRef) {\r\n result.firstHeaders.push(this.#COLUMNS.SUBINFORMATION);\r\n result.displayedColumns.push(this.#COLUMNS.SUBINFORMATION);\r\n }\r\n result.multipleHeader = result.secondHeaders.length > 0;\r\n // Sub infomation không thể có footer\r\n result.displayedFooters = result.displayedColumns.filter(val => val !== this.#COLUMNS.SUBINFORMATION);\r\n return result;\r\n };\r\n}\r\n","import * as hash from 'object-hash';\r\nexport interface SdTableMetaSelector {\r\n selectable?: boolean;\r\n isSelected?: boolean;\r\n actions?: string[];\r\n}\r\n\r\nexport interface SdTableMetaExpand {\r\n isExpanded?: boolean;\r\n isExpanding?: boolean;\r\n data?: any;\r\n}\r\n\r\nexport interface SdTableMeta<T> {\r\n id?: string;\r\n selector?: SdTableMetaSelector;\r\n expand?: SdTableMetaExpand;\r\n group?: {\r\n htmlTemplate?: string;\r\n items?: SdTableItem<T>[];\r\n };\r\n}\r\n\r\nexport interface SdTableItem<T = any> {\r\n meta: SdTableMeta<T>;\r\n origin: T;\r\n current: T;\r\n}\r\n\r\nexport const MapToSdTableItem = <T = any>(item: T): SdTableItem<T> => ({\r\n current: JSON.parse(JSON.stringify(item)),\r\n origin: item,\r\n meta: {\r\n id: hash(item),\r\n expand: {\r\n isExpanding: false,\r\n isExpanded: false,\r\n },\r\n group: {},\r\n selector: { actions: [], isSelected: false, selectable: false },\r\n },\r\n});\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'columnValues'\r\n})\r\nexport class SdColumnValuesPipe implements PipeTransform {\r\n #prefix = 'a1e67660-8aa2-4c11-b02d-71a32188719f';\r\n #cache: {\r\n [key: string]: {\r\n result: any\r\n }\r\n } = {};\r\n transform = async (value: any, column: SdTableColumn): Promise<string> => {\r\n if (column.type !== 'values' || !column.option?.items || !column.option?.valueField || !column.option?.displayField) {\r\n return value;\r\n }\r\n const { items, valueField, displayField, selection, ...remain } = column.option;\r\n const key = hash({\r\n prefix: this.#prefix,\r\n valueField,\r\n displayField,\r\n selection,\r\n remain,\r\n value\r\n });\r\n const isMultible = ['MULTIPLE', 'MULTIPLEAUTOCOMPLETE', 'MULTIPLE_EDITOR', 'MULTIPLEAUTOCOMPLETE_EDITOR'].includes(selection);\r\n if (typeof (items) === 'function') {\r\n if (!this.#cache[key]) {\r\n const values = await items(value, true);\r\n let result = '';\r\n if (isMultible && Array.isArray(value)) {\r\n result = values?.filter(e => value?.includes(e?.[valueField]))?.map(e => e?.[displayField])?.join(', ') || value?.join(', ');\r\n }\r\n else {\r\n result = values?.find(e => e?.[valueField] === value)?.[displayField] || value;\r\n }\r\n this.#cache[key] = {\r\n result\r\n };\r\n }\r\n } else {\r\n if (!this.#cache[key]) {\r\n let result = '';\r\n if (isMultible && Array.isArray(value)) {\r\n result = items?.filter(e => value?.includes(e?.[valueField]))?.map(e => e?.[displayField])?.join(', ') ?? value?.join(', ');\r\n }\r\n else {\r\n result = items?.find(e => e?.[valueField] === value)?.[displayField] || value\r\n }\r\n this.#cache[key] = {\r\n result\r\n };\r\n }\r\n }\r\n return this.#cache[key].result;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport {\r\n SdTableExternalFilter,\r\n SdTableFilterConfiguration,\r\n SdTableOptionFilter,\r\n SdGridMaterialFilterRegister,\r\n SdTableFilterValue,\r\n} from './table-filter.model';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { map, startWith } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class SdTableFilterService {\r\n #filterConfiguration = 'GRID-FILTER-CONFIGURATION';\r\n #filterValue = 'GRID-FILTER-VALUE';\r\n #cache: Record<string, SdGridMaterialFilterRegister> = {};\r\n constructor(private settingService: SdSettingService) {}\r\n register = (\r\n filter: SdTableOptionFilter,\r\n args: {\r\n id: string;\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }\r\n ) => {\r\n let cacheSession = false;\r\n \r\n const { id, columns, externalFilters } = args;\r\n const tempKey = hash({\r\n id,\r\n columns: columns?.map(e => e.field).filter(field => !!field) || [],\r\n externalFilters: externalFilters?.map(e => e.field).filter(field => !!field) || [],\r\n });\r\n const key = filter?.key || tempKey;\r\n if (!filter?.key) {\r\n cacheSession = true; // Nếu không có key thì chỉ lưu theo session\r\n }\r\n if (!this.#cache[key]) {\r\n // Setting của filter configuration\r\n const filterConfiguration = this.settingService.create<SdTableFilterConfiguration>(\r\n {\r\n prefix: this.#filterConfiguration,\r\n key,\r\n },\r\n {\r\n default: this.#defaultConfiguration(args),\r\n type: cacheSession ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị configuration merge với giá trị defaultShowing của args nếu như args có thay đổi\r\n filterConfiguration.set(this.#initConfiguration(args, filterConfiguration.get()));\r\n // Setting của filter value\r\n const filterValue = this.settingService.create<SdTableFilterValue>(\r\n {\r\n prefix: this.#filterValue,\r\n key: !filter?.cacheFilter ? tempKey : key,\r\n },\r\n {\r\n default: this.#defaultValue(args),\r\n type: cacheSession || !filter?.cacheFilter ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị value merge với giá trị default của args nếu như args có thay đổi\r\n filterValue.set(this.#initValue(args, filterValue.get()));\r\n this.#cache[key] = {\r\n configuration: {\r\n get: (): SdTableFilterConfiguration => {\r\n return filterConfiguration.get();\r\n },\r\n set: (configuration: Partial<SdTableFilterConfiguration>): SdTableFilterConfiguration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n filterConfiguration.set({\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n });\r\n return {\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n };\r\n },\r\n remove: () => {\r\n filterConfiguration.set(this.#defaultConfiguration(args));\r\n },\r\n observer: filterConfiguration.observer.pipe(\r\n startWith(filterConfiguration.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(configuration => configuration || this.#defaultConfiguration(args))\r\n ),\r\n },\r\n value: {\r\n get: (): SdTableFilterValue => {\r\n return filterValue.get();\r\n },\r\n set: (value: Partial<SdTableFilterValue>): SdTableFilterValue => {\r\n const keys = Object.keys(value || {});\r\n const current = filterValue.get();\r\n const { columnOperator, columnFilter, externalFilter, filterDef, notReload } = current;\r\n const updatedFilter = {\r\n // Filter column\r\n columnOperator: keys.includes('columnOperator') ? value?.columnOperator || {} : columnOperator,\r\n columnFilter: keys.includes('columnFilter') ? value?.columnFilter || {} : columnFilter,\r\n // Filter external\r\n externalFilter: keys.includes('externalFilter') ? value?.externalFilter || {} : externalFilter,\r\n // Filter def\r\n filterDef: keys.includes('filterDef') ? value?.filterDef || {} : filterDef,\r\n // Force\r\n notReload: !!notReload,\r\n };\r\n filterValue.set(updatedFilter);\r\n return updatedFilter;\r\n },\r\n remove: () => {\r\n filterValue.set(this.#defaultValue(args));\r\n },\r\n observer: filterValue.observer.pipe(\r\n startWith(filterValue.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(value => value || this.#defaultValue(args))\r\n ),\r\n },\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #defaultConfiguration = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #defaultValue = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n externalFilter[item.field] = item?.default;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n\r\n #initConfiguration = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n configuration: SdTableFilterConfiguration\r\n ): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = configuration?.inlineColumn?.[item.field] ?? item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = configuration?.inlineExternal?.[item.field] ?? item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = configuration?.inlineFilterDef?.[item.sdMaterialFilterDef] ?? item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #initValue = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n value: SdTableFilterValue\r\n ): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = value?.columnFilter?.[item.field] ?? item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n if (item.type === 'daterange') {\r\n externalFilter[item.field] = {\r\n from: value?.externalFilter?.[item.field]?.from ?? item.default?.from,\r\n to: value?.externalFilter?.[item.field]?.to ?? item.default?.to,\r\n };\r\n } else {\r\n externalFilter[item.field] = value?.externalFilter?.[item.field] ?? item?.default;\r\n }\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = value?.filterDef?.[item.sdMaterialFilterDef] ?? undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n Optional,\r\n Inject,\r\n ChangeDetectorRef,\r\n ContentChildren,\r\n QueryList,\r\n OnInit,\r\n OnDestroy,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport * as uuid from 'uuid';\r\nimport { SdGridMaterialFilterRegister, SdTableFilterRequest } from './services/table-filter/table-filter.model';\r\nimport { SdTableOption } from './models/table-option.model';\r\nimport { TABLE_CONFIG, DEFAULT_TABLE_CONFIG, ISdTableConfiguration } from './models/table-configuration.model';\r\nimport { Subscription, isObservable, Observable, Subject, combineLatest } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdFilterOperator, SdTableColumn } from './models/table-column.model';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { debounceTime, filter, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';\r\nimport { SdGridConfiguration } from './models/table-option-config.model';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { SdTableOptionExportColumn } from './models/table-option-export.model';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { MapToSdTableItem, SdTableItem } from './models/table-item.model';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdScrollDirective } from '@sd-angular/core/common';\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\n\r\n@Component({\r\n selector: 'sd-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [\r\n trigger('detailExpand', [\r\n state('collapsed', style({ height: '0', minHeight: '0', visibility: 'hidden' })),\r\n state('expanded', style({ height: '*', visibility: 'visible' })),\r\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\r\n ]),\r\n ],\r\n})\r\nexport class SdTable<T = any> implements OnInit, AfterViewInit, OnDestroy {\r\n #gridId = uuid.v4();\r\n @ViewChild(SdScrollDirective) sdScroll: SdScrollDirective;\r\n filterRegister: SdGridMaterialFilterRegister;\r\n key = uuid.v4();\r\n gridConfigurationObserver: Observable<SdGridConfiguration>;\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\r\n\r\n gridFilter: SdGridFilter;\r\n @ViewChild(SdGridFilter) set _gridFilter(gridFilter: SdGridFilter) {\r\n if (gridFilter && this.gridFilter !== gridFilter) {\r\n this.gridFilter = gridFilter;\r\n // this.#subscription.add(gridFilter.filterChange.pipe(\r\n // filter(reload => reload),\r\n // debounceTime(500),\r\n // map(() => {\r\n // this.#paginator.pageIndex = 0;\r\n // this.#reload.next({\r\n // force: false,\r\n // source: 'FILTER'\r\n // });\r\n // }),\r\n // ).subscribe());\r\n }\r\n }\r\n\r\n @Input() set option(option: SdTableOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.gridOption = option;\r\n this.#loadCompleted = false;\r\n const configuration = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.gridConfigurationObserver = configuration.observer;\r\n configuration.load();\r\n this.#optionChanges.next(this.gridOption);\r\n }\r\n }\r\n #optionChanges = new Subject<SdTableOption>();\r\n\r\n gridOption: SdTableOption<T>;\r\n #localItems: SdTableItem<T>[] = [];\r\n items: SdTableItem<T>[] = [];\r\n selectedItems: T[] = [];\r\n total: number;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n // Paginate\r\n isHiddenPaginator = false;\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(\r\n paginator.page\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sorting\r\n #sort: MatSort;\r\n @ViewChild(MatSort) set sort(sort: MatSort) {\r\n if (sort && this.#sort !== sort) {\r\n this.#sort = sort;\r\n this.#subscription.add(\r\n sort.sortChange\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective)\r\n sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective)\r\n sdEmptyData: SdMaterialEmptyDataDefDirective;\r\n\r\n // Cell Def\r\n @ContentChildren(SdMaterialCellDefDirective) sdCellDefs = new QueryList<SdMaterialCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdMaterialCellDefDirective;\r\n } = {};\r\n\r\n // Footer Def\r\n @ContentChildren(SdMaterialFooterDefDirective) sdFooterDefs = new QueryList<SdMaterialFooterDefDirective>();\r\n footerDef: {\r\n [column: string]: SdMaterialFooterDefDirective;\r\n } = {};\r\n hasFooter = false;\r\n\r\n // Filter Def\r\n @ContentChildren(SdMaterialFilterDefDirective) sdFilterDefs = new QueryList<SdMaterialFilterDefDirective>();\r\n filterDefs: SdMaterialFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnOperator: Record<string, SdFilterOperator> = {};\r\n columnFilter: Record<string, any> = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #reload = new Subject<{\r\n force: boolean;\r\n }>();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n #loadCompleted = false;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(TABLE_CONFIG)\r\n @Optional()\r\n public configuration: ISdTableConfiguration,\r\n private gridConfigurationService: SdTableConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private columnValuesPipe: SdColumnValuesPipe,\r\n private gridFilterService: SdTableFilterService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.#reload\r\n .pipe(\r\n debounceTime(200),\r\n switchMap(async data => {\r\n const filterInfo = this.#getFilter();\r\n const result = await this.#load(filterInfo, !this.#loadCompleted || data.force);\r\n this.#loadCompleted = true;\r\n return result;\r\n })\r\n )\r\n .subscribe(this.#render)\r\n );\r\n this.#subscription.add(this.sdCellDefs.changes.pipe(startWith([])).subscribe(this.#initCellDef));\r\n this.#subscription.add(this.sdFooterDefs.changes.pipe(startWith([])).subscribe(this.#initFooterDef));\r\n this.#subscription.add(this.sdFilterDefs.changes.pipe(startWith([])).subscribe(this.#initFilterDef));\r\n this.#subscription.add(\r\n combineLatest([\r\n this.#optionChanges.pipe(startWith(this.gridOption)),\r\n this.sdFilterDefs.changes.pipe(startWith(this.filterDefs)),\r\n ]).subscribe(() => {\r\n this.#loadFilterRegister();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.#optionChanges.subscribe(() => {\r\n if (this.filterRegister) {\r\n this.#reload.next({\r\n force: true,\r\n });\r\n }\r\n })\r\n );\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #initCellDef = () => {\r\n this.cellDef = {};\r\n for (const cellDef of this.sdCellDefs) {\r\n if (cellDef.sdMaterialCellDef) {\r\n this.cellDef[cellDef.sdMaterialCellDef] = cellDef;\r\n }\r\n }\r\n };\r\n\r\n #initFilterDef = () => {\r\n this.filterDefs = [];\r\n for (const filterDef of this.sdFilterDefs) {\r\n this.filterDefs.push(filterDef);\r\n }\r\n };\r\n\r\n #initFooterDef = () => {\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdMaterialFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdMaterialFooterDef] = footerDef;\r\n }\r\n }\r\n };\r\n\r\n #filterExportInfo = (pageNumber: number, pageSize: number): SdTableFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber,\r\n pageSize,\r\n isExported: true,\r\n };\r\n };\r\n\r\n #initConfiguration = (option: SdTableOption) => {\r\n // Init pagination\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize: option?.paginate?.pageSize ?? this.configuration?.paginate?.pageSize ?? DEFAULT_TABLE_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.configuration?.paginate?.pages ?? DEFAULT_TABLE_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false,\r\n };\r\n for (const column of option.columns || []) {\r\n if (column.filter?.operator?.enable && !column.filter?.operator?.list?.length) {\r\n if (column.type === 'string') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListString || [];\r\n }\r\n if (column.type === 'number') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListNumber || [];\r\n }\r\n if (column.type === 'values') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListValues || [];\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListDate || [];\r\n }\r\n }\r\n }\r\n return option;\r\n };\r\n\r\n #loadFilterRegister = () => {\r\n // Init filter\r\n if (this.gridOption) {\r\n if (!this.filterRegister) {\r\n this.filterRegister = this.gridFilterService.register(this.gridOption?.filter, {\r\n id: this.#gridId,\r\n columns: this.gridOption?.columns,\r\n externalFilters: this.gridOption?.filter?.externalFilters,\r\n filterDefs: this.filterDefs,\r\n });\r\n this.#subscription.add(\r\n this.filterRegister.value.observer\r\n .pipe(\r\n debounceTime(500),\r\n map(filterValue => {\r\n const { columnOperator, columnFilter, notReload } = filterValue;\r\n this.columnOperator = columnOperator;\r\n this.columnFilter = columnFilter;\r\n if (!notReload) {\r\n this.#paginator.pageIndex = 0;\r\n this.#reload.next({\r\n force: false,\r\n });\r\n }\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n };\r\n\r\n #filterLocal = (localItems: SdTableItem<T>[], filterInfo: SdTableFilterRequest) => {\r\n const { columns } = this.gridOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(tableItem => {\r\n const item = tableItem.current;\r\n for (const column of columns) {\r\n const { field, type } = column;\r\n const filterValue: string = (rawColumnFilter[field] || '').toString().trim().toLowerCase();\r\n const columnValue: string = (item[field] || '').toString().trim().toLowerCase();\r\n if (filterValue) {\r\n if (!columnValue && type !== 'datetime' && type !== 'date' && type !== 'time') {\r\n return false;\r\n }\r\n if (type === 'string') {\r\n if (columnValue.indexOf(filterValue) === -1) {\r\n return false;\r\n }\r\n } else if (type === 'values') {\r\n if (columnValue !== filterValue) {\r\n return false;\r\n }\r\n } else if (type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (type === 'datetime' || type === 'date' || type === 'time') {\r\n const from = rawColumnFilter[field]?.from ?? rawColumnFilter[field];\r\n const to = rawColumnFilter[field]?.to ?? rawColumnFilter[field];\r\n const fromDate = Date.begin(from);\r\n const toDate = Date.end(to);\r\n if (fromDate || toDate) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n\r\n const columnTime = new Date(columnValue).getTime();\r\n const fromDateTime = fromDate?.getTime() || null;\r\n const toDateTime = toDate?.getTime() || null;\r\n\r\n if (fromDateTime && fromDateTime > columnTime) {\r\n return false;\r\n }\r\n if (toDateTime && columnTime > toDateTime) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (orderBy && orderDirection) {\r\n const column = columns.find(e => e.field === orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((tableItemCurrent, tableItemNext) => {\r\n const current = tableItemCurrent.current;\r\n const next = tableItemNext.current;\r\n if (type === 'number') {\r\n return (current[field] || 0) - (next[field] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(current[field] || '').getTime();\r\n const d2 = new Date(current[field] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (current[field] || '').toString();\r\n const s2 = (next[field] || '').toString();\r\n if (s1 > s2) {\r\n return 1;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (orderDirection === 'desc') {\r\n items.reverse();\r\n }\r\n }\r\n }\r\n return {\r\n items: items.filter((item, index) => {\r\n return index >= pageNumber * pageSize && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length,\r\n };\r\n };\r\n\r\n #getFilter = (): SdTableFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber: this.#paginator?.pageIndex || 0,\r\n pageSize: this.#paginator?.pageSize || this.gridOption?.paginate?.pageSize || 50,\r\n };\r\n };\r\n\r\n #load = async (filterReq: SdTableFilterRequest, force: boolean = true) => {\r\n this.isLoading = true;\r\n if (this.gridOption.type === 'server') {\r\n const { items } = this.gridOption;\r\n const data = await items(filterReq).catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return {\r\n items: [] as T[],\r\n total: 0,\r\n };\r\n });\r\n this.isLoading = false;\r\n return {\r\n items: data?.items.map(MapToSdTableItem) || [],\r\n total: data?.total || 0,\r\n };\r\n }\r\n if (force) {\r\n const { items } = this.gridOption;\r\n const results = items();\r\n let data: T[] = [];\r\n if (results instanceof Promise) {\r\n data = await results.catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return [];\r\n });\r\n } else {\r\n data = results;\r\n }\r\n if (!Array.isArray(data)) {\r\n this.notifyService.notify.warning('Dữ liệu không phải là một mảng');\r\n data = [];\r\n }\r\n this.#localItems = data.map(MapToSdTableItem);\r\n this.isLoading = false;\r\n }\r\n return this.#filterLocal(this.#localItems, filterReq);\r\n };\r\n\r\n #render = async (args: { items: SdTableItem<T>[]; total: number }) => {\r\n this.sdScroll?.scrollTop();\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n await this.gridOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n };\r\n\r\n reload = async (force: boolean = true) => {\r\n this.gridFilter?.updateFilter?.();\r\n const data = await this.#load(this.#getFilter(), force);\r\n this.#render(data);\r\n };\r\n\r\n #exportedItems = async (pageNumber: number = 0, pageSize: number = 10000) => {\r\n if (this.gridOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n if (Array.isArray(result)) {\r\n return result;\r\n }\r\n if (isObservable<any[]>(result)) {\r\n result = result.toPromise();\r\n }\r\n if (isObservable<{ items: any[]; total: number }>(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n const filterInfo = this.#filterExportInfo(pageNumber, pageSize);\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterInfo);\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof this.gridOption.items === 'function') {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n exportedItems = await results;\r\n } else {\r\n exportedItems = results;\r\n }\r\n } else {\r\n exportedItems = this.gridOption.items;\r\n }\r\n return this.#filterLocal(exportedItems, filterInfo);\r\n }\r\n }\r\n };\r\n\r\n #allColumns = (): SdTableColumn[] => {\r\n const columns: SdTableColumn[] = [];\r\n this.gridOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns;\r\n };\r\n\r\n #allExportedColumns = (): SdTableOptionExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n };\r\n\r\n #onExport = async (isCSV?: boolean ) => {\r\n try {\r\n let columns = this.#getExportColumns();\r\n const pageSize = this.gridOption?.export?.maxItemsPerRequest || 1000;\r\n const batch = this.gridOption?.export?.batch || 1;\r\n let total = this.total;\r\n let pageNumber = 0;\r\n let exportItems = [];\r\n this.isExporting = true;\r\n const items: any[] = [];\r\n let promises: Promise<\r\n | any[]\r\n | {\r\n items: any[];\r\n total: number;\r\n }\r\n >[] = [];\r\n const handleData = async () => {\r\n const results = await Promise.all(promises);\r\n promises = [];\r\n exportItems = [];\r\n for (const result of results) {\r\n if ('items' in result) {\r\n exportItems = [...exportItems, ...result.items];\r\n total = result.total;\r\n } else {\r\n exportItems = [...exportItems, ...result];\r\n }\r\n }\r\n if (this.gridOption.export?.mapping) {\r\n const results = this.gridOption.export.mapping(exportItems);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n const totalPage = total / pageSize;\r\n const percent = Math.round(((pageNumber - 1) * 100.0) / totalPage);\r\n this.exportTitle = `Exporting...${percent}%`;\r\n const allColumns = this.#allColumns();\r\n const allExportedColumns = this.#allExportedColumns();\r\n for (const item of exportItems) {\r\n const obj: any = {};\r\n const handle = async (exportColumn: SdExportColumn) => {\r\n obj[exportColumn.field] = item[exportColumn.field];\r\n const column = allColumns.find(e => e.field === exportColumn.field);\r\n const exportedColumn = allExportedColumns.find(e => e.field === exportColumn.field);\r\n if (exportedColumn?.transform) {\r\n obj[exportedColumn.field] = exportedColumn.transform(item[exportedColumn.field], item);\r\n return;\r\n }\r\n if (!column) {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column?.children.forEach(childColumn => handle(childColumn));\r\n return;\r\n }\r\n if (!columns.some(e => e.field === column.field)) {\r\n return;\r\n }\r\n if (column.transform) {\r\n const transform = column.transform(item[column.field], item, {\r\n isExport: true,\r\n });\r\n if (transform instanceof Promise) {\r\n obj[column.field] = await transform;\r\n } else {\r\n obj[column.field] = transform;\r\n }\r\n obj[column.field] = obj[column.field] ?? '';\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.option?.displayOnTrue || 'True';\r\n } else if (obj[column.field] !== undefined && obj[column.field] !== null) {\r\n obj[column.field] = column.option?.displayOnFalse || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là date thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy');\r\n } else if (column.type === 'datetime') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là datetime thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy HH:mm');\r\n } else if (column.type === 'time') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là time thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'HH:mm');\r\n } else if (column.type === 'values') {\r\n // Nếu là values thì lấy giá trị của value được chọn\r\n obj[column.field] = await this.columnValuesPipe.transform(item[column.field], column);\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n for (const exportColumn of columns) {\r\n await handle(exportColumn);\r\n }\r\n items.push(obj);\r\n }\r\n };\r\n while (pageNumber * pageSize < total) {\r\n promises.push(this.#exportedItems(pageNumber, pageSize));\r\n pageNumber++;\r\n if (promises.length < batch) {\r\n continue;\r\n }\r\n await handleData();\r\n }\r\n if (promises.length > 0) {\r\n await handleData();\r\n }\r\n if (isCSV) {\r\n await this.exportService.exportCSV({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName,\r\n });\r\n return;\r\n }\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n await this.exportService.export({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName,\r\n sheets,\r\n });\r\n return;\r\n } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n #getExportColumns = () => {\r\n const columns = [\r\n ...this.gridOption.columns.filter(e => !e.export?.disabled),\r\n ...(this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || []),\r\n ];\r\n return columns;\r\n };\r\n\r\n exportExcel = () => {\r\n this.#onExport();\r\n };\r\n\r\n exportCSV = () => {\r\n this.#onExport(true);\r\n };\r\n\r\n onFilterChange = () => {\r\n this.gridFilter?.updateFilter?.();\r\n if (this.gridOption?.filter?.inlineColumn) {\r\n this.filterRegister.value.set({\r\n columnOperator: this.columnOperator,\r\n columnFilter: this.columnFilter,\r\n });\r\n } else {\r\n this.filterRegister.value.set({});\r\n }\r\n };\r\n\r\n onExpand = async (rowData: SdTableItem<T>) => {\r\n if (this.gridOption.expand?.always) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanding) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanded) {\r\n rowData.meta.expand.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.expand?.onExpand?.(rowData.current);\r\n if (!this.gridOption.expand?.multiple) {\r\n this.items.forEach(item => (item.meta.expand.isExpanding = item.meta.expand.isExpanded = false));\r\n }\r\n if (data instanceof Promise) {\r\n rowData.meta.expand.isExpanding = true;\r\n data\r\n .then(res => {\r\n rowData.meta.expand.data = res;\r\n rowData.meta.expand.isExpanded = true;\r\n })\r\n .finally(() => (rowData.meta.expand.isExpanding = false));\r\n } else {\r\n rowData.meta.expand.data = data;\r\n rowData.meta.expand.isExpanded = true;\r\n }\r\n };\r\n\r\n onSelect = (rowData: SdTableItem<T>) => {\r\n if (rowData.meta.group?.items?.length) {\r\n rowData.meta.group.items.forEach(e => (e.meta.selector.isSelected = rowData.meta.selector.isSelected));\r\n this.gridOption.selector?.onSelect?.(\r\n rowData.current,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.current)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.gridOption.selector?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selector?.onSelect?.(\r\n rowData.current,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.current)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n };\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.meta.selector.selectable && (!this.gridOption?.selector?.actions?.length || e.meta.selector.actions?.length)) {\r\n e.meta.selector.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.gridOption.selector?.onSelectAll?.(this.items.filter(e => e.meta.selector.isSelected).map(e => e.current));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n onClearSelection = (items?: SdTableItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedItems = this.items.filter(item => item.meta.selector.isSelected).map(item => item.current);\r\n this.ref.detectChanges();\r\n };\r\n\r\n clearFilter = () => {\r\n this.filterRegister.value.remove();\r\n };\r\n\r\n setFilter = (args: { columnFilter?: Record<string, any>; externalFilter?: Record<string, any>; filterDef?: Record<string, any> }) => {\r\n const { columnFilter, externalFilter, filterDef } = args || {};\r\n if (this.gridOption?.filter?.inlineColumn && columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n this.filterRegister.value.set({\r\n columnFilter,\r\n externalFilter,\r\n filterDef,\r\n });\r\n };\r\n\r\n get gridItems(): T[] {\r\n return this.items.map(item => item.current);\r\n }\r\n\r\n detectChanges = () => this.ref.detectChanges();\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand, SdTableCommandNormal } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: SdTableItem, commands: SdTableCommand[]): Promise<SdTableCommand[]> {\r\n const results: SdTableCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n let flag = false;\r\n const { hidden } = command;\r\n if (hidden === undefined) {\r\n flag = true;\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n flag = true;\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n flag = true;\r\n }\r\n } else {\r\n if (!isHidden) {\r\n flag = true;\r\n }\r\n }\r\n }\r\n if (flag) {\r\n if ('children' in command) {\r\n const children: SdTableCommandNormal[] = [];\r\n for (const childCommand of command.children) {\r\n const { hidden } = childCommand;\r\n if (hidden === undefined) {\r\n children.push(childCommand);\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n if (!isHidden) {\r\n children.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...command, children });\r\n }\r\n } else {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\n@Pipe({\r\n name: 'commandDisable'\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: any, command: SdTableCommand): boolean {\r\n if (!command?.disabled) {\r\n return false;\r\n }\r\n if (typeof (command.disabled) === 'boolean') {\r\n return command.disabled;\r\n }\r\n return command.disabled(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: any): string {\r\n if (!command?.icon) {\r\n return '';\r\n }\r\n if (typeof (command.icon) === 'string') {\r\n return command.icon;\r\n }\r\n return command.icon(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: any): string {\r\n if (!command?.title) {\r\n return '';\r\n }\r\n if (typeof (command.title) === 'string') {\r\n return command.title;\r\n }\r\n return command.title(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'columnHtmlTemplate'\r\n})\r\nexport class SdColumnHtmlTemplatePipe implements PipeTransform {\r\n private isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(value: any, rowData: any, column: SdTableColumn): string {\r\n if (typeof (column?.htmlTemplate) !== 'function') {\r\n return value;\r\n }\r\n return column?.htmlTemplate(value, rowData, this.isMobileOrTablet);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-view',\r\n templateUrl: './desktop-cell-view.component.html',\r\n styleUrls: ['./desktop-cell-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellView {\r\n @Input() sdId: string;\r\n @Input() key: string;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() gridOption: SdTableOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\r\n@Pipe({\r\n name: 'columnTransform'\r\n})\r\nexport class SdColumnTransformPipe implements PipeTransform {\r\n constructor(private columnValuesPipe: SdColumnValuesPipe) { }\r\n async transform(value: any, rowData: any, column: SdTableColumn, key?: string): Promise<string> {\r\n if (column?.transform) {\r\n return column.transform(value, rowData);\r\n }\r\n if (column.type === 'values') {\r\n return await this.columnValuesPipe.transform(value, column);\r\n }\r\n if (column.type === 'number' && Number.isNumber(value)) {\r\n return Number.toVNCurrency(value); // this.decimalPipe.transform(value, '1.0-2');\r\n }\r\n if (column.type === 'bool') {\r\n return value === true ? (column.option?.displayOnTrue || 'True') : (column.option?.displayOnFalse || 'False');\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableExternalFilter } from '../services/table-filter/table-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdTableExternalFilter[], field?: string): SdTableExternalFilter[] {\r\n const results: SdTableExternalFilter[] = [];\r\n if (!externalFilters) {\r\n return results;\r\n }\r\n for (const filter of externalFilters) {\r\n results.push(filter);\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdTableColumn[], field?: string): SdTableColumn[] {\r\n const results: SdTableColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\r\n if (column.type === 'children') {\r\n for (const columnChildren of column?.children) {\r\n if (!columnChildren.filter?.disabled) {\r\n results.push(columnChildren);\r\n }\r\n }\r\n continue;\r\n }\r\n if (!column.filter?.disabled) {\r\n results.push(column);\r\n }\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n\r\n@Pipe({\r\n name: 'columnChildrenFilter'\r\n})\r\nexport class SdColumnChildrenFilterPipe implements PipeTransform {\r\n #isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.#isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(columns: SdTableColumn[], item: any): SdTableColumn[] {\r\n return columns.filter(column => {\r\n const value = item?.[column.field];\r\n const transformValue = column.transform?.(item[column.field], item);\r\n const templateValue = column.htmlTemplate?.(item[column.field], item, this.#isMobileOrTablet);\r\n return (value !== undefined && value !== null && value !== '')\r\n || (transformValue !== undefined && transformValue !== null && transformValue !== '')\r\n || (templateValue !== undefined && templateValue !== null && templateValue !== '');\r\n });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdTableCommand } from '../../models/table-command.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-command',\r\n templateUrl: './desktop-command.component.html',\r\n styleUrls: ['./desktop-command.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCommand {\r\n @Input() item: SdTableItem;\r\n @Input() commands: SdTableCommand[] = [];\r\n constructor() {\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdBadgeColor } from '@sd-angular/core/badge';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'columnBadge'\r\n})\r\nexport class SdColumnBadgePipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdTableColumn): {\r\n type: 'round' | 'circle' | 'icon',\r\n color: SdBadgeColor,\r\n icon: string\r\n } {\r\n if (column.type === 'string' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n if (column.type === 'number' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n if (column.type === 'bool') {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: !!value ? 'success' : 'danger',\r\n icon: null\r\n };\r\n }\r\n if (column.type === 'values' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { SdGridConfiguration, SdGridConfigurationResult } from '../models/table-option-config.model';\r\nimport { SdTableConfigurationService } from '../services/table-configuration.service';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\n\r\n@Pipe({\r\n name: 'sdGridConfigurationResult'\r\n})\r\nexport class SdGridConfigurationResultPipe implements PipeTransform {\r\n constructor(private gridConfigurationService: SdTableConfigurationService) { }\r\n transform(configuration: SdGridConfiguration, gridOption: SdTableOption, sdSubInformation: SdMaterialSubInformationDefDirective): SdGridConfigurationResult {\r\n const a = this.gridConfigurationService.generateConfigurationResult(configuration, gridOption, sdSubInformation);\r\n console.log(a);\r\n return a;\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, EventEmitter, ChangeDetectorRef, Input, HostListener } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport {\r\n SdGridConfigurationResult,\r\n SdGridConfiguration,\r\n SdGridConfigurationCache,\r\n SdColumnConfiguration,\r\n} from '../../models/table-option-config.model';\r\nimport { SdTableConfigurationService } from '../../services/table-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { MatTable } from '@angular/material/table';\r\n// import { SdGridMaterialColumn } from '@sd-angular/core/grid-material';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\n\r\n@Component({\r\n selector: 'sd-popup-grid-configuration',\r\n templateUrl: './popup-grid-configuration.component.html',\r\n styleUrls: ['./popup-grid-configuration.component.scss'],\r\n})\r\nexport class SdPopupGridConfiguration implements OnInit {\r\n @Input() gridOption: SdTableOption;\r\n @Input() key: string;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdTableColumn>;\r\n readonly changes = new EventEmitter<SdGridConfigurationResult>();\r\n #cache: SdGridConfigurationCache;\r\n configuration: SdGridConfiguration;\r\n isCreatingColumn = false;\r\n selected: {\r\n [key: string]: boolean;\r\n } = {};\r\n disabledDrag = true;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdTableConfigurationService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n @HostListener('window:mouseup', ['$event'])\r\n mouseUp(event) {\r\n this.disabledDrag = true;\r\n }\r\n open = async () => {\r\n this.#cache = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.configuration = await this.#cache.get();\r\n this.modal.open();\r\n };\r\n\r\n onSave = () => {\r\n this.#cache.set(this.configuration);\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n };\r\n\r\n onReset = async () => {\r\n const { translate } = this.translateService;\r\n this.notifyService.confirm(translate('Reset grid configuration to default')).then(() => {\r\n this.#cache.remove();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n });\r\n };\r\n\r\n createColumn = async () => {\r\n this.selected = {};\r\n this.isCreatingColumn = true;\r\n };\r\n\r\n confirm = async () => {\r\n const generatedColumn: SdColumnConfiguration = {\r\n origin: {\r\n field: uuid.v4(),\r\n title: 'Generated',\r\n width: '300px',\r\n },\r\n fixed: false,\r\n invisible: false,\r\n title: 'Generated',\r\n width: '300px',\r\n };\r\n this.configuration.columns.push(generatedColumn);\r\n this.configuration = this.#cache.set(this.configuration);\r\n this.isCreatingColumn = false;\r\n };\r\n\r\n dropTable(event: CdkDragDrop<SdTableColumn[]>) {\r\n moveItemInArray(this.configuration.columns, event.previousIndex, event.currentIndex);\r\n this.table.renderRows();\r\n }\r\n\r\n handleMouseDown() {\r\n this.disabledDrag = false;\r\n }\r\n\r\n handleMouseUp() {\r\n this.disabledDrag = true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'columnTooltip'\r\n})\r\nexport class SdColumnTooltipPipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdTableColumn): string {\r\n if (column?.tooltip) {\r\n return column.tooltip(value, rowData);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableItem } from '../models/table-item.model';\r\nimport { SdTableAction, SdTableActionNormal } from '../models/table-option-selector.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdTableAction): SdTableAction => {\r\n if ('children' in action) {\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n color: action.color,\r\n type: action.type,\r\n children: action.children.map(e => ({\r\n title: e.title,\r\n icon: e.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: e.fontSet,\r\n tooltip: e.tooltip,\r\n click: e.click\r\n }))\r\n };\r\n }\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n click: action.click\r\n };\r\n\r\n }\r\n transform = (selectedItems: SdTableItem[], actions: SdTableAction[]): SdTableAction[] => {\r\n const results: SdTableAction[] = [];\r\n if (!actions?.length || !selectedItems?.length) {\r\n return [];\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n const children: SdTableActionNormal[] = [];\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n children.push(childAction);\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...action, children });\r\n }\r\n } else {\r\n const key = hash(action);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n results.push(action);\r\n }\r\n }\r\n }\r\n return results.map(result => this.#convert(result));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: SdTableItem[], rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { disabled, actions } = selection;\r\n if (!actions?.length) {\r\n if (!disabled) {\r\n rowData.meta.selector.selectable = true;\r\n return false;\r\n }\r\n rowData.meta.selector.selectable = !disabled(rowData, selectedItems);\r\n return !rowData.meta.selector.selectable;\r\n }\r\n // Lọc các action theo selectedItems hiện tại\r\n const availableActions = actions.filter(action => {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n } else {\r\n const key = hash(action);\r\n return selectedItems.every(e => e.meta.selector.actions.includes(key));\r\n }\r\n });\r\n // Kiểm tra rowData có action nào thỏa hay ko, nếu ko thì disabled\r\n for (const action of availableActions) {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n if(rowData.meta.selector.actions.includes(hash(childAction))) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if(rowData.meta.selector.actions.includes(hash(action))) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionVisibleSelectAll'\r\n})\r\nexport class SdSelectionVisibleSelectAllPipe implements PipeTransform {\r\n transform = async (items: SdTableItem[], selection: SdTableOptionSelector): Promise<boolean> => {\r\n const { actions } = selection;\r\n if (!actions?.length) {\r\n return true;\r\n }\r\n if (!items.length) {\r\n return false;\r\n }\r\n if (actions.some(e => ('children' in e && e.children.some(e1 => e1.isGrouped)) || e.isGrouped)) {\r\n return false;\r\n }\r\n await new Promise(resolve => setTimeout(resolve, 500));\r\n const first = items.find(t => t.meta.selector.actions?.length);\r\n if (first) {\r\n for (const action of first.meta.selector.actions) {\r\n if (items.filter(t => t.meta.selector.actions?.length).every(e => e.meta.selector.actions.includes(action))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdMaterialCellDefDirective } from '../../directives/sd-material-cell-def.directive';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() sdId: string;\r\n @Input() value: any;\r\n @Input() key: string;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() gridOption: SdTableOption;\r\n @Input() cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n @Input() idx: number;\r\n constructor(\r\n ) { }\r\n}\r\n","import { SdBadgeColor } from '@sd-angular/core/badge';\r\n\r\nexport type SdTableColumn<T = any> =\r\n | SdTableColumnText<T>\r\n | SdTableColumnNumber<T>\r\n | SdTableColumnBool<T>\r\n | SdTableColumnDate<T>\r\n | SdTableColumnValues<T>\r\n | SdTableColumnChildren<T>;\r\n\r\nexport type SdFilterOperator =\r\n| 'EQUAL'\r\n| 'NOT_EQUAL'\r\n| 'CONTAIN'\r\n| 'NOT_CONTAIN'\r\n| 'IN'\r\n| 'NOT_IN'\r\n| 'START_WITH'\r\n| 'END_WITH'\r\n| 'GREATER_THAN'\r\n| 'LESS_THAN'\r\n| 'GREATER_OR_EQUAL'\r\n| 'LESS_OR_EQUAL';\r\n\r\nexport const SdFilterOperators: { value: SdFilterOperator, symbol?: string, display: string }[] = [\r\n {\r\n value: 'EQUAL',\r\n symbol: '=',\r\n display: 'Bằng',\r\n },\r\n {\r\n value: 'NOT_EQUAL',\r\n symbol: '≠',\r\n display: 'Không bằng',\r\n },\r\n {\r\n value: 'GREATER_THAN',\r\n symbol: '>',\r\n display: 'Lớn hơn',\r\n },\r\n {\r\n value: 'LESS_THAN',\r\n symbol: '<',\r\n display: 'Nhỏ hơn',\r\n },\r\n {\r\n value: 'GREATER_OR_EQUAL',\r\n symbol: '≥',\r\n display: 'Lớn hơn, hoặc bằng'\r\n },\r\n {\r\n value: 'LESS_OR_EQUAL',\r\n symbol: '≤',\r\n display: 'Nhỏ hơn, hoặc bằng'\r\n },\r\n {\r\n value: 'CONTAIN',\r\n symbol: 'join_inner',\r\n display: 'Chứa',\r\n },\r\n {\r\n value: 'NOT_CONTAIN',\r\n symbol: 'join',\r\n display: 'Không chứa',\r\n },\r\n {\r\n value: 'START_WITH',\r\n symbol: 'line_start_circle',\r\n display: 'Bắt đầu bởi'\r\n },\r\n {\r\n value: 'END_WITH',\r\n symbol: 'line_end_circle',\r\n display: 'Kết thúc bởi'\r\n },\r\n {\r\n value: 'IN',\r\n symbol: 'checklist_rtl',\r\n display: 'Nằm trong'\r\n },\r\n {\r\n value: 'NOT_IN',\r\n symbol: 'event_list',\r\n display: 'Không nằm trong'\r\n },\r\n];\r\n\r\nexport type SdTableColumnTransformFunc<T = any> = (\r\n value: any,\r\n rowData: T,\r\n args?: {\r\n isExport?: boolean;\r\n }\r\n) => string | Promise<string>;\r\n\r\ninterface SdTableColumnBase<T = any> {\r\n field: string;\r\n title: string;\r\n titleHtml?: string;\r\n description?: string;\r\n width?: string;\r\n hidden?: boolean;\r\n invisible?: boolean;\r\n fixed?: boolean;\r\n align?: 'center' | 'left' | 'right';\r\n htmlTemplate?: (value: any, rowData: T, isMobileOrTablet: boolean) => string;\r\n transform?: SdTableColumnTransformFunc<T>;\r\n tooltip?: (value: any, rowData: T) => string;\r\n click?: (value: any, rowData: T) => void;\r\n sortable?: boolean;\r\n filter?: {\r\n disabled?: boolean;\r\n defaultShowing?: boolean;\r\n default?: any;\r\n // Chỉ dành cho filter inline column\r\n operator?: {\r\n enable?: boolean;\r\n list?: SdFilterOperator[];\r\n };\r\n };\r\n export?: {\r\n disabled?: boolean;\r\n };\r\n}\r\n\r\ninterface SdTableColumnText<T = any> extends SdTableColumnBase<T> {\r\n type: 'string';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n minLength?: number;\r\n maxLength?: number;\r\n validator?: (rowData: T) => string;\r\n };\r\n}\r\n\r\ninterface SdTableColumnNumber<T = any> extends SdTableColumnBase<T> {\r\n type: 'number';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n minValue?: number;\r\n maxValue?: number;\r\n precision?: number;\r\n validator?: (rowData: T) => string;\r\n };\r\n}\r\n\r\ninterface SdTableColumnBool<T = any> extends SdTableColumnBase<T> {\r\n type: 'bool';\r\n option?: {\r\n displayOnTrue?: string;\r\n displayOnFalse?: string;\r\n };\r\n badgeType?: 'circle';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\ninterface SdTableColumnDate<T = any> extends SdTableColumnBase<T> {\r\n type: 'date' | 'datetime' | 'time';\r\n option?: {\r\n useFilterDate?: boolean;\r\n timeDifferent?: 'second' | 'minute' | 'hour' | 'day' | 'month';\r\n };\r\n transformDate?: (value: any, rowData: T) => string | Date;\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\nexport interface SdTableColumnValues<T = any> extends SdTableColumnBase<T> {\r\n type: 'values';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n option: {\r\n items:\r\n | any[]\r\n | ((searchText?: string, isFormValue?: boolean) => Promise<any[]>)\r\n | ((searchText?: string[], isFormValue?: boolean) => Promise<any[]>);\r\n valueField: string;\r\n displayField: string;\r\n selection?:\r\n | 'AUTOCOMPLETE'\r\n | 'MULTIPLE'\r\n | 'MULTIPLEAUTOCOMPLETE'\r\n | 'AUTOCOMPLETE_EDITOR'\r\n | 'MULTIPLE_EDITOR'\r\n | 'MULTIPLEAUTOCOMPLETE_EDITOR';\r\n };\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n add?: (rowData: T) => void;\r\n edit?: (option: any, rowData: T) => void;\r\n delete?: (option: any, rowData: T) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\ntype SdTableColumnNormal<T> = Exclude<SdTableColumn<T>, SdTableColumnChildren<T>>;\r\n\r\nexport interface SdTableColumnChildren<T = any> extends SdTableColumnBase<T> {\r\n type: 'children';\r\n children: SdTableColumnNormal<T>[];\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdFilterOperator, SdFilterOperators, SdTableColumn } from '../../models/table-column.model';\r\n\r\n@Component({\r\n selector: 'sd-column-inline-filter',\r\n templateUrl: './column-inline-filter.component.html',\r\n styleUrls: ['./column-inline-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdColumnInlineFilter implements OnInit {\r\n value: any;\r\n @Input('value') _value(value: any) {\r\n this.value = value;\r\n this.#valueChanges.next();\r\n }\r\n inlineSymbol: string = 'filter_alt';\r\n #inlineOperator: SdFilterOperator;\r\n @Input('inlineOperator') set _inlineOperator(inlineOperator: SdFilterOperator) {\r\n if(this.#inlineOperator !== inlineOperator) {\r\n this.#inlineOperator = inlineOperator;\r\n this.inlineSymbol = SdFilterOperators.find(e => e.value === inlineOperator)?.symbol ?? 'filter_alt';\r\n }\r\n }\r\n @Output() inlineOperatorChange = new EventEmitter();\r\n\r\n columnFilter: Record<string, any> = {};\r\n @Input('columnFilter') set _columnFilter(columnFilter: Record<string, any>) {\r\n this.columnFilter = columnFilter || {};\r\n this.#valueChanges.next();\r\n }\r\n operators: { value: SdFilterOperator; display: string }[] = [];\r\n column: SdTableColumn;\r\n @Input('column') set _column(column: SdTableColumn) {\r\n this.column = column;\r\n if (!column?.filter?.disabled && column?.filter?.operator?.enable) {\r\n this.operators = SdFilterOperators.filter(e => column.filter.operator.list?.includes?.(e.value));\r\n } else {\r\n this.operators = [];\r\n }\r\n }\r\n @Output() filterChange = new EventEmitter();\r\n #valueChanges = new Subject();\r\n #subcription = new Subscription();\r\n constructor(private ref: ChangeDetectorRef) {}\r\n\r\n ngOnInit() {\r\n this.#subcription.add(\r\n this.#valueChanges.pipe(startWith(this.columnFilter)).subscribe(() => {\r\n if (this.column.type === 'date' || this.column.type === 'time' || this.column.type === 'datetime') {\r\n if (!this.column?.option?.useFilterDate) {\r\n this.columnFilter[this.column.field] = this.columnFilter[this.column.field] || {\r\n from: null,\r\n to: null,\r\n };\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subcription.unsubscribe();\r\n }\r\n\r\n onFilterChange = () => {\r\n this.filterChange.emit();\r\n };\r\n\r\n onChangeOperator = (operator: { value: SdFilterOperator, symbol?: string, display: string }) => {\r\n if (operator) {\r\n this.#inlineOperator = operator.value;\r\n this.inlineSymbol = operator.symbol;\r\n } else {\r\n this.#inlineOperator = null;\r\n this.inlineSymbol = 'filter_alt';\r\n }\r\n this.inlineOperatorChange.emit(this.#inlineOperator);\r\n this.ref.markForCheck();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.meta.selector.actions = rowData.meta.selector.actions || [];\r\n if (!actions?.length) {\r\n rowData.meta.selector.selectable = true;\r\n return rowData.meta.selector.selectable;\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n let flag = false;\r\n let hasGroup = false;\r\n for (const childAction of action.children) {\r\n const { hidden, isGrouped } = childAction;\r\n const key = hash(childAction);\r\n if (isGrouped) {\r\n hasGroup = true;\r\n }\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n if (flag) {\r\n rowData.meta.selector.actions.push(hash(action));\r\n if (hasGroup) {\r\n groupedActions.push(hash(action));\r\n }\r\n }\r\n } else {\r\n const { hidden, isGrouped } = action;\r\n const key = hash(action);\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.meta.selector.selectable = !!rowData.meta.selector.actions?.length;\r\n if (!rowData.meta.selector.selectable || !groupedActions.length || rowData?.meta.group?.items?.length) {\r\n return rowData.meta.selector.selectable;\r\n }\r\n // Đối với trường hợp grouped, tuy selectable là true nhưng vẫn ẩn đi checkbox\r\n // nếu các action đều thuộc groupedActions và rowData ko phải là dòng group\r\n return rowData.meta.selector.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-quick-action',\r\n templateUrl: './quick-action.component.html',\r\n styleUrls: ['./quick-action.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdGridQuickAction {\r\n @Input() gridOption: SdTableOption;\r\n @Input() selectedItems: any[];\r\n @Output() clear = new EventEmitter();\r\n constructor(\r\n ) { }\r\n onClear = () => {\r\n this.clear.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdCellView } from '../models/grid-cell.model';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'cellView'\r\n})\r\nexport class SdCellViewPipe implements PipeTransform {\r\n #maxSecond = 60;\r\n #maxMinute = this.#maxSecond * 60;\r\n #maxHour = this.#maxMinute * 24;\r\n #maxDay = this.#maxHour * 30;\r\n #maxMonth = this.#maxHour * 365;\r\n #isMobileOrTablet = false;\r\n constructor(\r\n deviceService: DeviceDetectorService,\r\n private utilityService: SdUtilityService,\r\n private columnValuesPipe: SdColumnValuesPipe) {\r\n this.#isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n async transform(\r\n value: any,\r\n tableItem: SdTableItem,\r\n column: SdTableColumn,\r\n gridOption: SdTableOption): Promise<SdCellView> {\r\n const { displayOnEmpty } = gridOption;\r\n const rowData = tableItem.current;\r\n const { align, click, tooltip, htmlTemplate, transform } = column;\r\n const result: SdCellView = {\r\n badge: null,\r\n tooltip: null,\r\n display: {\r\n align: align || (column.type === 'number' ? 'right' : 'left'),\r\n value\r\n },\r\n click: null\r\n };\r\n // Display\r\n if (typeof (htmlTemplate) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = htmlTemplate(value, rowData, this.#isMobileOrTablet);\r\n } else {\r\n if (column.type === 'datetime' || column.type === 'date' || column.type === 'time') {\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n value = transformDate(value, rowData);\r\n }\r\n }\r\n if (typeof (transform) === 'function') {\r\n const val = transform(value, rowData);\r\n if (val instanceof Promise) {\r\n result.display.value = await val;\r\n } else {\r\n result.display.value = val;\r\n }\r\n } else {\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n const { option } = column;\r\n const seconds = Math.round((new Date().getTime() - new Date(value).getTime()) / 1000);\r\n if (option?.timeDifferent === 'month' && seconds < this.#maxMonth) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'day' && seconds < this.#maxDay) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'hour' && seconds < this.#maxHour) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'minute' && seconds < this.#maxMinute) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'second' && seconds < this.#maxSecond) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else {\r\n const date = Date.toFormat(value, 'dd/MM/yyyy');\r\n const time = Date.toFormat(value, 'HH:mm');\r\n const dateTime = Date.toFormat(value, 'HH:mm');\r\n if (column.type === 'datetime' && time && time !== '00:00') {\r\n result.display.value = dateTime;\r\n result.display.hasHtml = true;\r\n result.display.html = `<span class=\"d-block T14R text-black400\">${Date.toFormat(value, 'HH:mm')}</span><span class=\"d-block T14R\">${Date.toFormat(value, 'dd/MM/yyyy')}</span>`;\r\n } else {\r\n result.display.value = date;\r\n }\r\n }\r\n }\r\n if (column.type === 'time') {\r\n result.display.value = Date.toFormat(value, 'HH:mm');\r\n }\r\n if (column.type === 'values') {\r\n result.display.value = await this.columnValuesPipe.transform(value, column);\r\n } else if (column.type === 'number' && Number.isNumber(value)) {\r\n result.display.value = Number.toVNCurrency(value);\r\n }\r\n if (column.type === 'bool') {\r\n const { option } = column;\r\n if (value !== undefined && value !== null && value !== '') {\r\n result.display.value = value === true ? (option?.displayOnTrue || 'True') : (option?.displayOnFalse || 'False');\r\n } else {\r\n result.display.value = null;\r\n }\r\n }\r\n }\r\n if (displayOnEmpty) {\r\n let values = [null, undefined, ''];\r\n if (typeof (displayOnEmpty) === 'object') {\r\n const { display, emptyValues } = displayOnEmpty;\r\n values = [null, undefined, '', ...emptyValues];\r\n if (values.includes(result.display.value)) {\r\n if (typeof (display) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = display(rowData, column);\r\n } else {\r\n result.display.hasHtml = true;\r\n result.display.html = `<div class=\"T16R text-black400\">--</div>`;\r\n }\r\n }\r\n } else {\r\n if (values.includes(result.display.value)) {\r\n if (typeof (displayOnEmpty) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = displayOnEmpty(rowData, column);\r\n } else {\r\n result.display.hasHtml = true;\r\n result.display.html = `<div class=\"T16R text-black400\">--</div>`;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // Badge\r\n if ((column.type === 'string' || column.type === 'number' || column.type === 'values') && column.badge) {\r\n result.badge = {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n } else if (column.type === 'bool') {\r\n result.badge = {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: !!value ? 'success' : 'danger',\r\n icon: null\r\n };\r\n }\r\n // Tooltip\r\n if (typeof (tooltip) === 'function') {\r\n result.tooltip = tooltip(value, rowData);\r\n }\r\n // Clickable\r\n if (typeof (click) === 'function') {\r\n result.click = () => click(value, rowData);\r\n }\r\n return result;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { MapToSdTableItem, SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'sdGroup',\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: SdTableItem[], gridOption: SdTableOption): SdTableItem[] {\r\n const { group } = gridOption;\r\n if (!group) {\r\n return items;\r\n }\r\n const { fields, htmlTemplate } = group;\r\n if (!fields?.length) {\r\n return items;\r\n }\r\n const groupItem: {\r\n [key: string]: SdTableItem[];\r\n } = {};\r\n for (const item of items) {\r\n let obj = {};\r\n for (const field of fields) {\r\n obj = {\r\n ...obj,\r\n ...(item[field] ?? { [field]: item[field] }),\r\n };\r\n }\r\n const key = hash(obj);\r\n if (!groupItem[key]) {\r\n groupItem[key] = [];\r\n }\r\n groupItem[key].push(item);\r\n }\r\n const results: SdTableItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n const result = MapToSdTableItem({});\r\n result.meta.group.items = groupItem[key];\r\n result.meta.group.htmlTemplate = htmlTemplate(groupItem[key]);\r\n results.push(result);\r\n for (const item of groupItem[key]) {\r\n results.push(item);\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Injectable, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdTable } from './table.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { CdkTableModule, CdkColumnDef } from '@angular/cdk/table';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { SdCommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { SdCommandDisablePipe } from './pipes/command-disable.pipe';\r\nimport { SdCommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { SdCommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdColumnHtmlTemplatePipe } from './pipes/column-html-template.pipe';\r\nimport { SdDesktopCellView } from './components/desktop-cell-view/desktop-cell-view.component';\r\nimport { SdColumnTransformPipe } from './pipes/column-transform.pipe';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SdFilterExternalPipe } from './pipes/filter-external.pipe';\r\nimport { SdFilterColumnPipe } from './pipes/filter-column.pipe';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdPopupFilter } from './components/popup-filter/popup-filter.component';\r\n\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\nimport { SdColumnChildrenFilterPipe } from './pipes/column-children-filter.pipe';\r\nimport { SdDesktopCommand } from './components/desktop-command/desktop-command.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdColumnBadgePipe } from './pipes/column-badge.pipe';\r\nimport { SdGridConfigurationResultPipe } from './pipes/grid-configuration-result.pipe';\r\nimport { SdPopupGridConfiguration } from './components/popup-grid-configuration/popup-grid-configuration.component';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { SdColumnTooltipPipe } from './pipes/column-tooltip.pipe';\r\nimport { SdSelectionActionFilterPipe } from './pipes/selection-action-filter.pipe';\r\nimport { SdSelectionDisablePipe } from './pipes/selection-disable.pipe';\r\nimport { SdSelectionVisibleSelectAllPipe } from './pipes/selection-visible-select-all.pipe';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdColumnInlineFilter } from './components/column-inline-filter/column-inline-filter.component';\r\nimport { SdSelectionVisiblePipe } from './pipes/selection-visible.pipe';\r\nimport { SdGridQuickAction } from './components/quick-action/quick-action.component';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdCellViewPipe } from './pipes/cell-view.pipe';\r\nimport { SdGroupPipe } from './pipes/sd-group.pipe';\r\nimport { SdGroupModule } from '@sd-angular/core/group';\r\n\r\n@Injectable()\r\nexport class MatPaginatorIntlCro extends MatPaginatorIntl {\r\n firstPageLabel = 'Trang đầu';\r\n lastPageLabel = 'Trang cuối';\r\n itemsPerPageLabel = 'Kích thước trang';\r\n nextPageLabel = 'Trang sau';\r\n previousPageLabel = 'Trang trước';\r\n\r\n getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n if (length === 0 || pageSize === 0) {\r\n return '';\r\n }\r\n const from = page * pageSize + 1;\r\n const to = from + (length - page * pageSize > pageSize ? pageSize : length - page * pageSize) - 1;\r\n return `${from}-${to} trên ${length}`;\r\n };\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSortModule,\r\n MatPaginatorModule,\r\n MatTableModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatChipsModule,\r\n MatRadioModule,\r\n MatSlideToggleModule,\r\n MatCheckboxModule,\r\n MatListModule,\r\n MatDividerModule,\r\n CdkTableModule,\r\n DragDropModule,\r\n SdFormModule,\r\n SdServiceModule,\r\n MatSliderModule,\r\n ScrollingModule,\r\n SdCommonModule,\r\n SdGroupModule,\r\n ],\r\n declarations: [\r\n SdGridQuickAction,\r\n SdDesktopCell,\r\n SdDesktopCellView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdTable,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdPopupGridConfiguration,\r\n SdGridFilter,\r\n SdPopupFilter,\r\n\r\n // Pipes\r\n SdGridConfigurationResultPipe,\r\n SdColumnChildrenFilterPipe,\r\n SdCommandFilterPipe,\r\n SdCommandDisablePipe,\r\n SdCommandIconPipe,\r\n SdCommandTitlePipe,\r\n SdColumnValuesPipe,\r\n SdColumnHtmlTemplatePipe,\r\n SdColumnTransformPipe,\r\n SdColumnTooltipPipe,\r\n SdColumnBadgePipe,\r\n SdFilterColumnPipe,\r\n SdFilterExternalPipe,\r\n SdSelectionActionFilterPipe,\r\n SdSelectionVisiblePipe,\r\n SdSelectionDisablePipe,\r\n SdSelectionVisibleSelectAllPipe,\r\n SdCellViewPipe,\r\n SdGroupPipe,\r\n ],\r\n exports: [\r\n SdTable,\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n ],\r\n providers: [\r\n DatePipe,\r\n DecimalPipe,\r\n CdkColumnDef,\r\n SdTableFilterService,\r\n SdTableConfigurationService,\r\n SdColumnValuesPipe,\r\n {\r\n provide: MatPaginatorIntl,\r\n useClass: MatPaginatorIntlCro,\r\n },\r\n ],\r\n})\r\nexport class SdTableModule {}\r\n"]}
1
+ {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/table/src/lib/models/table-configuration.model.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-cell-def.directive.ts","../../../../projects/sd-core/table/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/table/src/lib/components/grid-filter/grid-filter.component.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-filter-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-sub-information-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-footer-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-empty-data-def.directive.ts","../../../../projects/sd-core/table/src/lib/services/table-configuration.service.ts","../../../../projects/sd-core/table/src/lib/models/table-item.model.ts","../../../../projects/sd-core/table/src/lib/pipes/column-values.pipe.ts","../../../../projects/sd-core/table/src/lib/services/table-filter/table-filter.service.ts","../../../../projects/sd-core/table/src/lib/table.component.ts","../../../../projects/sd-core/table/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/column-html-template.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-transform.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/column-children-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-badge.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/grid-configuration-result.pipe.ts","../../../../projects/sd-core/table/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible-select-all.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/table/src/lib/models/table-column.model.ts","../../../../projects/sd-core/table/src/lib/components/column-inline-filter/column-inline-filter.component.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible.pipe.ts","../../../../projects/sd-core/table/src/lib/components/quick-action/quick-action.component.ts","../../../../projects/sd-core/table/src/lib/pipes/cell-view.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/sd-group.pipe.ts","../../../../projects/sd-core/table/src/lib/table.module.ts"],"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","SdGridFilter","ref","deviceService","filterRegisterChange","BehaviorSubject","_subscription","Subscription","onFilter","item","filterRegister","updateFilter","notReload","popupFilter","isMobileOrTablet","isDesktop","filter","add","pipe","startWith","subscribe","observer","unsubscribe","DeviceDetectorService","SdMaterialFilterDefDirective","val","defaultShowing","settingService","gridMaterialConfiguration","_COLUMNS","EDITORVALIDATION","EDITOR","SUBINFORMATION","COMMAND","SELECTION","GROUP","_cache","init","key","gridOption","subject_1","Subject","load","_load","_get","_set","assign","_remove","_default","_getKey","_a","config","hash","prefix","_b","hidden","map","origin","field","title","width","invisible","fixed","subject","_e","storage","createServer","catch","_g","console","_f","type","column","some","forEach","col","find","_c","_d","generateConfigurationResult","sdSubInformation","fixedColumn","firstColumns","secondColumns","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","commands","group","visible","fields","children","childColumn","Injectable","SdSettingService","Inject","Optional","MapToSdTableItem","current","meta","id","expand","isExpanding","isExpanded","actions","isSelected","selectable","_prefix","transform","option","items","valueField","displayField","_l","selection","remain","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__rest","isMultible","includes","_cache$1","values","_m","isArray","join","_j","_h","_k","Pipe","name","_filterConfiguration","_filterValue","register","cacheSession","tempKey","_cache$2","filterConfiguration_1","default","_defaultConfiguration","undefined","_initConfiguration","filterValue_1","cacheFilter","_defaultValue","_initValue","keys","columnOperator","updatedFilter","_u","_v","_w","_x","_y","_z","sdMaterialFilterDef","from","to","_o","_q","_p","SdTable","gridConfigurationService","exportService","notifyService","columnValuesPipe","gridFilterService","_gridId","uuid.v4","_optionChanges","_localItems","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_reload","isExporting","isSelectAll","exportTitle","_loadCompleted","_initCellDef","_9","_10","sdMaterialCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","_8","rawColumnFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","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","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","filterReq","err","notify","warning","data","results","_render","sdScroll","scrollTop","reload","onReload","every","_updateSelectedItems","gridFilter","_load$1","_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","isExport","_12","displayOnTrue","displayOnFalse","date","transformDate","toFormat","_11","e_9","columns_3","columns_3_1","exportItems_2","exportItems_2_1","_14","exportCSV","fileName","sheets","sheet","detectChanges","exportExcel","onFilterChange","onExpand","rowData","always","multiple","res","finally","onSelect","single","onSelectAll","onClearSelection","clearFilter","setFilter","_initConfiguration$1","gridConfigurationObserver","paginator","page","sortChange","ngOnInit","switchMap","changes","combineLatest","animations","trigger","style","height","minHeight","visibility","transition","animate","SdTableConfigurationService","SdExportService","SdNotifyService","SdColumnValuesPipe","SdTableFilterService","SdScrollDirective","SdQuickAction","MatPaginator","MatSort","ContentChild","SdMaterialSubInformationDefDirective","SdMaterialEmptyDataDefDirective","ContentChildren","SdMaterialCellDefDirective","SdMaterialFooterDefDirective","SdCommandFilterPipe","commands_1","commands_1_1","command","flag","isHidden","e_1","childCommand","hidden_1","SdCommandDisablePipe","SdCommandIconPipe","icon","SdCommandTitlePipe","SdColumnHtmlTemplatePipe","htmlTemplate","SdColumnTransformPipe","Number","isNumber","toVNCurrency","SdFilterExternalPipe","externalFilters_1","externalFilters_1_1","SdFilterColumnPipe","e_2","columnChildren","SdColumnChildrenFilterPipe","_isMobileOrTablet","transformValue","templateValue","SdColumnBadgePipe","badge","badgeType","color","badgeIcon","SdGridConfigurationResultPipe","a","log","SdPopupGridConfiguration","translateService","EventEmitter","isCreatingColumn","selected","disabledDrag","_cache$3","onSave","onReset","translate","confirm","createColumn","generatedColumn","mouseUp","event","dropTable","moveItemInArray","previousIndex","currentIndex","table","renderRows","handleMouseDown","handleMouseUp","SdTranslateService","HostListener","SdColumnTooltipPipe","tooltip","_convert","action","fontSet","click","childAction","key_1","actions_1","actions_1_1","availableActions","availableActions_1","availableActions_1_1","e1","isGrouped","setTimeout","first","SdFilterOperators","symbol","display","SdColumnInlineFilter","inlineSymbol","_inlineOperator_1","inlineOperatorChange","operators","filterChange","_valueChanges","_subcription","emit","onChangeOperator","_value","inlineOperator","useFilterDate","Output","groupedActions","hasGroup","clear","SdCellViewPipe","utilityService","_maxSecond","_maxMinute","_maxHour","_maxDay","_maxMonth","_isMobileOrTablet$1","displayOnEmpty","align","hasHtml","html","seconds","timeDifferent","timeDifference","time","dateTime","emptyValues","SdUtilityService","SdGroupPipe","groupItem","items_1_1","fields_1","fields_1_1","e_4","MatPaginatorIntlCro","_super","firstPageLabel","lastPageLabel","itemsPerPageLabel","nextPageLabel","previousPageLabel","getRangeLabel","String","__","constructor","__extends","MatPaginatorIntl","NgModule","imports","CommonModule","FormsModule","ReactiveFormsModule","MatInputModule","MatFormFieldModule","MatSortModule","MatPaginatorModule","MatTableModule","MatMenuModule","MatIconModule","MatButtonModule","MatTooltipModule","MatProgressSpinnerModule","MatChipsModule","MatRadioModule","MatSlideToggleModule","MatCheckboxModule","MatListModule","MatDividerModule","CdkTableModule","DragDropModule","SdFormModule","SdServiceModule","MatSliderModule","ScrollingModule","SdCommonModule","SdGroupModule","declarations","SdGridQuickAction","SdDesktopCell","SdDesktopCellView","SdDesktopCommand","SdSelectionActionFilterPipe","SdSelectionVisiblePipe","SdSelectionDisablePipe","SdSelectionVisibleSelectAllPipe","exports","providers","DatePipe","DecimalPipe","CdkColumnDef","provide","useClass"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { SdFilterOperator } from './table-column.model';\r\n\r\nexport interface ISdTableConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n operator?: {\r\n defaultListString?: SdFilterOperator[];\r\n defaultListNumber?: SdFilterOperator[];\r\n defaultListDate?: SdFilterOperator[];\r\n defaultListValues?: SdFilterOperator[];\r\n };\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[]\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_TABLE_CONFIG: ISdTableConfiguration = {\r\n paginate: {\r\n pageSize: 50,\r\n pages: [50, 100, 200]\r\n }\r\n};\r\n\r\nexport const TABLE_CONFIG = new InjectionToken<ISdTableConfiguration>('sd-table.configuration');\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialCellDef]'\r\n})\r\nexport class SdMaterialCellDefDirective {\r\n @Input() sdMaterialCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Component, ViewChild, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableExternalFilter, SdGridMaterialFilterRegister } from '../../services/table-filter/table-filter.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'sd-popup-filter',\r\n templateUrl: './popup-filter.component.html',\r\n styleUrls: ['./popup-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdPopupFilter {\r\n @ViewChild(SdModal) modal: SdModal;\r\n #filterRegister: SdGridMaterialFilterRegister;\r\n @Input() set filterRegister(value: SdGridMaterialFilterRegister) {\r\n this.#filterRegister = value;\r\n }\r\n @Input() externalFilters: SdTableExternalFilter[] = [];\r\n externalFilter: Record<string, any> = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n @Input() columns: SdTableColumn[] = [];\r\n columnFilter: Record<string, any> = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: Record<string, any> = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n ngOnDestroy() {}\r\n\r\n open = () => {\r\n const configuration = this.#filterRegister.configuration.get();\r\n this.inlineColumn = JSON.parse(JSON.stringify(configuration.inlineColumn));\r\n this.inlineExternal = JSON.parse(JSON.stringify(configuration.inlineExternal));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(configuration.inlineFilterDef));\r\n const filterValue = this.#filterRegister.value.get();\r\n this.columnFilter = JSON.parse(JSON.stringify(filterValue.columnFilter));\r\n this.externalFilter = JSON.parse(JSON.stringify(filterValue.externalFilter));\r\n this.filterDef = JSON.parse(JSON.stringify(filterValue.filterDef));\r\n this.modal.open();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n close = () => {\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onApply = () => {\r\n this.#filterRegister.configuration.set({\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef,\r\n });\r\n this.#filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onClear() {\r\n this.#filterRegister.value.remove();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {\r\n SdTableOptionFilter,\r\n SdTableExternalFilter,\r\n SdGridMaterialFilterRegister,\r\n} from '../../services/table-filter/table-filter.model';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { startWith } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'sd-grid-filter',\r\n templateUrl: './grid-filter.component.html',\r\n styleUrls: ['./grid-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdGridFilter implements AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupFilter) popupFilter: SdPopupFilter;\r\n filter: Readonly<SdTableOptionFilter>;\r\n @Input('filter') set _filter(filter: SdTableOptionFilter) {\r\n this.filter = filter;\r\n }\r\n @Input() columns: SdTableColumn[] = [];\r\n externalFilters: SdTableExternalFilter[] = [];\r\n @Input('externalFilters') set _externalFilters(value: SdTableExternalFilter[]) {\r\n this.externalFilters = value || [];\r\n }\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterRegister: SdGridMaterialFilterRegister;\r\n @Input('filterRegister') set _filterRegister(value: SdGridMaterialFilterRegister) {\r\n this.filterRegister = value;\r\n this.filterRegisterChange.next(this.filterRegister);\r\n }\r\n filterRegisterChange = new BehaviorSubject<SdGridMaterialFilterRegister>(null);\r\n\r\n filterDef: any = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n columnFilter: any = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n externalFilter: any = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n isMobileOrTablet: boolean;\r\n\r\n #subscription = new Subscription();\r\n\r\n constructor(private ref: ChangeDetectorRef, private deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n this.ref.markForCheck();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.filterRegisterChange.pipe(startWith(this.filterRegister)).subscribe(filterRegister => {\r\n if (this.filterRegister) {\r\n this.#subscription.add(\r\n this.filterRegister.configuration.observer.subscribe(configuration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n this.inlineColumn = inlineColumn;\r\n this.inlineExternal = inlineExternal;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.filterRegister.value.observer.subscribe(value => {\r\n const { columnFilter, externalFilter, filterDef } = value;\r\n this.columnFilter = columnFilter;\r\n this.externalFilter = externalFilter;\r\n this.filterDef = filterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFilter = (item?: SdTableColumn | SdTableExternalFilter) => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n };\r\n\r\n updateFilter = () => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n notReload: true\r\n });\r\n };\r\n\r\n open = () => {\r\n this.popupFilter.open();\r\n };\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFilterDef]'\r\n})\r\nexport class SdMaterialFilterDefDirective {\r\n @Input() sdMaterialFilterDef: string;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n defaultShowing: boolean;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialSubInformationDef]'\r\n})\r\nexport class SdMaterialSubInformationDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFooterDef]'\r\n})\r\nexport class SdMaterialFooterDefDirective {\r\n @Input() sdMaterialFooterDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialEmptyDataDef]'\r\n})\r\nexport class SdMaterialEmptyDataDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport {\r\n SdColumnConfiguration,\r\n SdGridConfiguration,\r\n SdGridConfigurationCache,\r\n SdGridConfigurationResult,\r\n} from '../models/table-option-config.model';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\nimport { TABLE_CONFIG, ISdTableConfiguration } from '../models/table-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdTableConfigurationService {\r\n #COLUMNS = {\r\n EDITORVALIDATION: 'sdEditorValidation',\r\n EDITOR: 'sdEditor',\r\n SUBINFORMATION: 'sdSubInformationAction',\r\n COMMAND: 'sdCommand',\r\n SELECTION: 'sdSelection',\r\n GROUP: 'sdGroup',\r\n };\r\n #cache: {\r\n [key: string]: SdGridConfigurationCache;\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(TABLE_CONFIG) @Optional() public gridMaterialConfiguration: ISdTableConfiguration\r\n ) {}\r\n\r\n init = (key: string, gridOption: SdTableOption) => {\r\n if (!this.#cache[key]) {\r\n const subject = new Subject<SdGridConfiguration>();\r\n this.#cache[key] = {\r\n load: this.#load(gridOption, subject),\r\n get: this.#get(gridOption),\r\n set: (configuration: SdGridConfiguration) => {\r\n configuration = this.#set(gridOption, configuration);\r\n subject.next({ ...configuration });\r\n return configuration;\r\n },\r\n remove: () => {\r\n this.#remove(gridOption)();\r\n subject.next(this.#default(gridOption));\r\n },\r\n observer: subject,\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #getKey = (gridOption: SdTableOption) => {\r\n const prefix = 'c9e94836-6ace-4aeb-b148-4f0be63589ee';\r\n if (!gridOption?.config?.key && !gridOption?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: gridOption?.config?.key || !gridOption?.key,\r\n });\r\n };\r\n\r\n #default = (gridOption: SdTableOption): SdGridConfiguration => {\r\n const columns: SdColumnConfiguration[] =\r\n gridOption?.columns\r\n ?.filter(e => !e.hidden)\r\n .map(e => ({\r\n origin: {\r\n field: e.field,\r\n title: e.title,\r\n width: e.width,\r\n invisible: e.invisible,\r\n },\r\n invisible: e.invisible,\r\n fixed: false,\r\n })) || [];\r\n return {\r\n columns,\r\n };\r\n };\r\n\r\n #load = (gridOption: SdTableOption, subject: Subject<SdGridConfiguration>) => {\r\n return async () => {\r\n const get = this.#get(gridOption);\r\n const configuration = await get();\r\n subject.next({ ...configuration });\r\n };\r\n };\r\n\r\n #get = (gridOption: SdTableOption) => {\r\n return async () => {\r\n const key = this.#getKey(gridOption);\r\n if (!key) {\r\n return this.#default(gridOption);\r\n }\r\n const { columns, config } = gridOption;\r\n let configuration: SdGridConfiguration;\r\n if (config?.storage === 'server') {\r\n const { get, remove } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: config?.args,\r\n });\r\n configuration = await get().catch(() => undefined);\r\n if (!configuration?.columns) {\r\n remove().catch(console.error);\r\n return this.#default(gridOption);\r\n }\r\n } else {\r\n const { get, remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: config?.storage,\r\n args: config?.args,\r\n });\r\n configuration = get();\r\n if (!configuration?.columns) {\r\n remove();\r\n return this.#default(gridOption);\r\n }\r\n }\r\n\r\n configuration.columns = configuration.columns.filter(column => columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // Thêm những column mới vào storage nếu có\r\n columns.forEach(column => {\r\n const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n if (!col) {\r\n configuration.columns.push({\r\n origin: {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible,\r\n },\r\n invisible: column.invisible,\r\n fixed: false,\r\n });\r\n } else {\r\n col.origin = {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible,\r\n };\r\n }\r\n });\r\n return configuration;\r\n };\r\n };\r\n\r\n #set = (gridOption: SdTableOption, configuration: SdGridConfiguration) => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n if (gridOption?.config?.storage === 'server') {\r\n const { set } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: gridOption?.config?.args,\r\n });\r\n set(configuration);\r\n } else {\r\n const { set } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args,\r\n });\r\n set(configuration);\r\n }\r\n }\r\n return JSON.parse(JSON.stringify(configuration));\r\n };\r\n\r\n #remove = (gridOption: SdTableOption) => {\r\n return () => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n if (gridOption?.config?.storage === 'server') {\r\n const { remove } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: gridOption?.config?.args,\r\n });\r\n remove();\r\n } else {\r\n const { remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args,\r\n });\r\n remove();\r\n }\r\n }\r\n };\r\n };\r\n\r\n // get = async (gridOption: SdGridMaterialOption): Promise<SdGridConfiguration> => {\r\n // if (!gridOption?.key) {\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // const { key, columns } = gridOption;\r\n // const configuration: SdGridConfiguration = await this.settingService.get(this.#getKey(key)).catch(() => undefined);\r\n // if (!configuration?.columns) {\r\n // this.settingService.remove(this.#getKey(key)).catch(console.error);\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // configuration.columns = configuration.columns\r\n // .filter(column => columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // // Thêm những column mới vào storage nếu có\r\n // columns.forEach(column => {\r\n // const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n // if (!col) {\r\n // configuration.columns.push({\r\n // origin: {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible,\r\n // },\r\n // invisible: column.invisible,\r\n // fixed: false\r\n // });\r\n // } else {\r\n // col.origin = {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible\r\n // };\r\n // }\r\n // });\r\n // return configuration;\r\n // }\r\n\r\n // set = async (key: string, configuration: SdGridConfiguration): Promise<SdGridConfiguration> => {\r\n // if (key) {\r\n // this.settingService.set(this.#getKey(key), configuration);\r\n // }\r\n // return configuration;\r\n // }\r\n\r\n // remove = (key: string) => {\r\n // if (key) {\r\n // this.settingService.remove(this.#getKey(key));\r\n // }\r\n // }\r\n\r\n generateConfigurationResult = (\r\n configuration: SdGridConfiguration,\r\n gridOption: SdTableOption,\r\n sdSubInformation: SdMaterialSubInformationDefDirective\r\n ) => {\r\n const result: SdGridConfigurationResult = {\r\n column: {},\r\n fixedColumn: {},\r\n firstColumns: [],\r\n secondColumns: [],\r\n firstHeaders: [],\r\n secondHeaders: [],\r\n displayedColumns: [],\r\n displayedFooters: [],\r\n multipleHeader: false,\r\n };\r\n const { selector, commands, group } = gridOption || {};\r\n if (selector?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (commands?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.COMMAND);\r\n result.displayedColumns.push(this.#COLUMNS.COMMAND);\r\n }\r\n if (group?.fields?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.GROUP);\r\n result.displayedColumns.push(this.#COLUMNS.GROUP);\r\n }\r\n configuration?.columns\r\n ?.filter(col => !col.invisible)\r\n .forEach(col => {\r\n const column = gridOption?.columns.find(e => e.field === col.origin.field);\r\n if (column) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n result.firstColumns.push({\r\n ...column,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n result.displayedColumns.push(col.origin.field);\r\n if (column.type === 'children') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n }\r\n }\r\n });\r\n if (sdSubInformation?.templateRef) {\r\n result.firstHeaders.push(this.#COLUMNS.SUBINFORMATION);\r\n result.displayedColumns.push(this.#COLUMNS.SUBINFORMATION);\r\n }\r\n result.multipleHeader = result.secondHeaders.length > 0;\r\n // Sub infomation không thể có footer\r\n result.displayedFooters = result.displayedColumns.filter(val => val !== this.#COLUMNS.SUBINFORMATION);\r\n return result;\r\n };\r\n}\r\n","import * as hash from 'object-hash';\r\nexport interface SdTableMetaSelector {\r\n selectable?: boolean;\r\n isSelected?: boolean;\r\n actions?: string[];\r\n}\r\n\r\nexport interface SdTableMetaExpand {\r\n isExpanded?: boolean;\r\n isExpanding?: boolean;\r\n data?: any;\r\n}\r\n\r\nexport interface SdTableMeta<T> {\r\n id?: string;\r\n selector?: SdTableMetaSelector;\r\n expand?: SdTableMetaExpand;\r\n group?: {\r\n htmlTemplate?: string;\r\n items?: SdTableItem<T>[];\r\n };\r\n}\r\n\r\nexport interface SdTableItem<T = any> {\r\n meta: SdTableMeta<T>;\r\n origin: T;\r\n current: T;\r\n}\r\n\r\nexport const MapToSdTableItem = <T = any>(item: T): SdTableItem<T> => ({\r\n current: JSON.parse(JSON.stringify(item)),\r\n origin: item,\r\n meta: {\r\n id: hash(item),\r\n expand: {\r\n isExpanding: false,\r\n isExpanded: false,\r\n },\r\n group: {},\r\n selector: { actions: [], isSelected: false, selectable: false },\r\n },\r\n});\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'columnValues'\r\n})\r\nexport class SdColumnValuesPipe implements PipeTransform {\r\n #prefix = 'a1e67660-8aa2-4c11-b02d-71a32188719f';\r\n #cache: {\r\n [key: string]: {\r\n result: any\r\n }\r\n } = {};\r\n transform = async (value: any, column: SdTableColumn): Promise<string> => {\r\n if (column.type !== 'values' || !column.option?.items || !column.option?.valueField || !column.option?.displayField) {\r\n return value;\r\n }\r\n const { items, valueField, displayField, selection, ...remain } = column.option;\r\n const key = hash({\r\n prefix: this.#prefix,\r\n valueField,\r\n displayField,\r\n selection,\r\n remain,\r\n value\r\n });\r\n const isMultible = ['MULTIPLE', 'MULTIPLEAUTOCOMPLETE', 'MULTIPLE_EDITOR', 'MULTIPLEAUTOCOMPLETE_EDITOR'].includes(selection);\r\n if (typeof (items) === 'function') {\r\n if (!this.#cache[key]) {\r\n const values = await items(value, true);\r\n let result = '';\r\n if (isMultible && Array.isArray(value)) {\r\n result = values?.filter(e => value?.includes(e?.[valueField]))?.map(e => e?.[displayField])?.join(', ') || value?.join(', ');\r\n }\r\n else {\r\n result = values?.find(e => e?.[valueField] === value)?.[displayField] || value;\r\n }\r\n this.#cache[key] = {\r\n result\r\n };\r\n }\r\n } else {\r\n if (!this.#cache[key]) {\r\n let result = '';\r\n if (isMultible && Array.isArray(value)) {\r\n result = items?.filter(e => value?.includes(e?.[valueField]))?.map(e => e?.[displayField])?.join(', ') ?? value?.join(', ');\r\n }\r\n else {\r\n result = items?.find(e => e?.[valueField] === value)?.[displayField] || value\r\n }\r\n this.#cache[key] = {\r\n result\r\n };\r\n }\r\n }\r\n return this.#cache[key].result;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport {\r\n SdTableExternalFilter,\r\n SdTableFilterConfiguration,\r\n SdTableOptionFilter,\r\n SdGridMaterialFilterRegister,\r\n SdTableFilterValue,\r\n} from './table-filter.model';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { map, startWith } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class SdTableFilterService {\r\n #filterConfiguration = 'GRID-FILTER-CONFIGURATION';\r\n #filterValue = 'GRID-FILTER-VALUE';\r\n #cache: Record<string, SdGridMaterialFilterRegister> = {};\r\n constructor(private settingService: SdSettingService) {}\r\n register = (\r\n filter: SdTableOptionFilter,\r\n args: {\r\n id: string;\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }\r\n ) => {\r\n let cacheSession = false;\r\n \r\n const { id, columns, externalFilters } = args;\r\n const tempKey = hash({\r\n id,\r\n columns: columns?.map(e => e.field).filter(field => !!field) || [],\r\n externalFilters: externalFilters?.map(e => e.field).filter(field => !!field) || [],\r\n });\r\n const key = filter?.key || tempKey;\r\n if (!filter?.key) {\r\n cacheSession = true; // Nếu không có key thì chỉ lưu theo session\r\n }\r\n if (!this.#cache[key]) {\r\n // Setting của filter configuration\r\n const filterConfiguration = this.settingService.create<SdTableFilterConfiguration>(\r\n {\r\n prefix: this.#filterConfiguration,\r\n key,\r\n },\r\n {\r\n default: this.#defaultConfiguration(args),\r\n type: cacheSession ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị configuration merge với giá trị defaultShowing của args nếu như args có thay đổi\r\n filterConfiguration.set(this.#initConfiguration(args, filterConfiguration.get()));\r\n // Setting của filter value\r\n const filterValue = this.settingService.create<SdTableFilterValue>(\r\n {\r\n prefix: this.#filterValue,\r\n key: !filter?.cacheFilter ? tempKey : key,\r\n },\r\n {\r\n default: this.#defaultValue(args),\r\n type: cacheSession || !filter?.cacheFilter ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị value merge với giá trị default của args nếu như args có thay đổi\r\n filterValue.set(this.#initValue(args, filterValue.get()));\r\n this.#cache[key] = {\r\n configuration: {\r\n get: (): SdTableFilterConfiguration => {\r\n return filterConfiguration.get();\r\n },\r\n set: (configuration: Partial<SdTableFilterConfiguration>): SdTableFilterConfiguration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n filterConfiguration.set({\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n });\r\n return {\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n };\r\n },\r\n remove: () => {\r\n filterConfiguration.set(this.#defaultConfiguration(args));\r\n },\r\n observer: filterConfiguration.observer.pipe(\r\n startWith(filterConfiguration.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(configuration => configuration || this.#defaultConfiguration(args))\r\n ),\r\n },\r\n value: {\r\n get: (): SdTableFilterValue => {\r\n return filterValue.get();\r\n },\r\n set: (value: Partial<SdTableFilterValue>): SdTableFilterValue => {\r\n const keys = Object.keys(value || {});\r\n const current = filterValue.get();\r\n const { columnOperator, columnFilter, externalFilter, filterDef, notReload } = current;\r\n const updatedFilter = {\r\n // Filter column\r\n columnOperator: keys.includes('columnOperator') ? value?.columnOperator || {} : columnOperator,\r\n columnFilter: keys.includes('columnFilter') ? value?.columnFilter || {} : columnFilter,\r\n // Filter external\r\n externalFilter: keys.includes('externalFilter') ? value?.externalFilter || {} : externalFilter,\r\n // Filter def\r\n filterDef: keys.includes('filterDef') ? value?.filterDef || {} : filterDef,\r\n // Force\r\n notReload: !!notReload,\r\n };\r\n filterValue.set(updatedFilter);\r\n return updatedFilter;\r\n },\r\n remove: () => {\r\n filterValue.set(this.#defaultValue(args));\r\n },\r\n observer: filterValue.observer.pipe(\r\n startWith(filterValue.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(value => value || this.#defaultValue(args))\r\n ),\r\n },\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #defaultConfiguration = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #defaultValue = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n externalFilter[item.field] = item?.default;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n\r\n #initConfiguration = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n configuration: SdTableFilterConfiguration\r\n ): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = configuration?.inlineColumn?.[item.field] ?? item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = configuration?.inlineExternal?.[item.field] ?? item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = configuration?.inlineFilterDef?.[item.sdMaterialFilterDef] ?? item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #initValue = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n value: SdTableFilterValue\r\n ): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = value?.columnFilter?.[item.field] ?? item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n if (item.type === 'daterange') {\r\n externalFilter[item.field] = {\r\n from: value?.externalFilter?.[item.field]?.from ?? item.default?.from,\r\n to: value?.externalFilter?.[item.field]?.to ?? item.default?.to,\r\n };\r\n } else {\r\n externalFilter[item.field] = value?.externalFilter?.[item.field] ?? item?.default;\r\n }\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = value?.filterDef?.[item.sdMaterialFilterDef] ?? undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n Optional,\r\n Inject,\r\n ChangeDetectorRef,\r\n ContentChildren,\r\n QueryList,\r\n OnInit,\r\n OnDestroy,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport * as uuid from 'uuid';\r\nimport { SdGridMaterialFilterRegister, SdTableFilterRequest } from './services/table-filter/table-filter.model';\r\nimport { SdTableOption } from './models/table-option.model';\r\nimport { TABLE_CONFIG, DEFAULT_TABLE_CONFIG, ISdTableConfiguration } from './models/table-configuration.model';\r\nimport { Subscription, isObservable, Observable, Subject, combineLatest } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdFilterOperator, SdTableColumn } from './models/table-column.model';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { debounceTime, filter, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';\r\nimport { SdGridConfiguration } from './models/table-option-config.model';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { SdTableOptionExportColumn } from './models/table-option-export.model';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { MapToSdTableItem, SdTableItem } from './models/table-item.model';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdScrollDirective } from '@sd-angular/core/common';\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\n\r\n@Component({\r\n selector: 'sd-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [\r\n trigger('detailExpand', [\r\n state('collapsed', style({ height: '0', minHeight: '0', visibility: 'hidden' })),\r\n state('expanded', style({ height: '*', visibility: 'visible' })),\r\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\r\n ]),\r\n ],\r\n})\r\nexport class SdTable<T = any> implements OnInit, AfterViewInit, OnDestroy {\r\n #gridId = uuid.v4();\r\n @ViewChild(SdScrollDirective) sdScroll: SdScrollDirective;\r\n filterRegister: SdGridMaterialFilterRegister;\r\n key = uuid.v4();\r\n gridConfigurationObserver: Observable<SdGridConfiguration>;\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\r\n\r\n gridFilter: SdGridFilter;\r\n @ViewChild(SdGridFilter) set _gridFilter(gridFilter: SdGridFilter) {\r\n if (gridFilter && this.gridFilter !== gridFilter) {\r\n this.gridFilter = gridFilter;\r\n // this.#subscription.add(gridFilter.filterChange.pipe(\r\n // filter(reload => reload),\r\n // debounceTime(500),\r\n // map(() => {\r\n // this.#paginator.pageIndex = 0;\r\n // this.#reload.next({\r\n // force: false,\r\n // source: 'FILTER'\r\n // });\r\n // }),\r\n // ).subscribe());\r\n }\r\n }\r\n\r\n @Input() set option(option: SdTableOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.gridOption = option;\r\n this.#loadCompleted = false;\r\n const configuration = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.gridConfigurationObserver = configuration.observer;\r\n configuration.load();\r\n this.#optionChanges.next(this.gridOption);\r\n }\r\n }\r\n #optionChanges = new Subject<SdTableOption>();\r\n\r\n gridOption: SdTableOption<T>;\r\n #localItems: SdTableItem<T>[] = [];\r\n items: SdTableItem<T>[] = [];\r\n selectedItems: T[] = [];\r\n total: number;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n // Paginate\r\n isHiddenPaginator = false;\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(\r\n paginator.page\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sorting\r\n #sort: MatSort;\r\n @ViewChild(MatSort) set sort(sort: MatSort) {\r\n if (sort && this.#sort !== sort) {\r\n this.#sort = sort;\r\n this.#subscription.add(\r\n sort.sortChange\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective)\r\n sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective)\r\n sdEmptyData: SdMaterialEmptyDataDefDirective;\r\n\r\n // Cell Def\r\n @ContentChildren(SdMaterialCellDefDirective) sdCellDefs = new QueryList<SdMaterialCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdMaterialCellDefDirective;\r\n } = {};\r\n\r\n // Footer Def\r\n @ContentChildren(SdMaterialFooterDefDirective) sdFooterDefs = new QueryList<SdMaterialFooterDefDirective>();\r\n footerDef: {\r\n [column: string]: SdMaterialFooterDefDirective;\r\n } = {};\r\n hasFooter = false;\r\n\r\n // Filter Def\r\n @ContentChildren(SdMaterialFilterDefDirective) sdFilterDefs = new QueryList<SdMaterialFilterDefDirective>();\r\n filterDefs: SdMaterialFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnOperator: Record<string, SdFilterOperator> = {};\r\n columnFilter: Record<string, any> = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #reload = new Subject<{\r\n force: boolean;\r\n }>();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n #loadCompleted = false;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(TABLE_CONFIG)\r\n @Optional()\r\n public configuration: ISdTableConfiguration,\r\n private gridConfigurationService: SdTableConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private columnValuesPipe: SdColumnValuesPipe,\r\n private gridFilterService: SdTableFilterService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.#reload\r\n .pipe(\r\n debounceTime(200),\r\n switchMap(async data => {\r\n const filterInfo = this.#getFilter();\r\n const result = await this.#load(filterInfo, !this.#loadCompleted || data.force);\r\n this.#loadCompleted = true;\r\n return result;\r\n })\r\n )\r\n .subscribe(this.#render)\r\n );\r\n this.#subscription.add(this.sdCellDefs.changes.pipe(startWith([])).subscribe(this.#initCellDef));\r\n this.#subscription.add(this.sdFooterDefs.changes.pipe(startWith([])).subscribe(this.#initFooterDef));\r\n this.#subscription.add(this.sdFilterDefs.changes.pipe(startWith([])).subscribe(this.#initFilterDef));\r\n this.#subscription.add(\r\n combineLatest([\r\n this.#optionChanges.pipe(startWith(this.gridOption)),\r\n this.sdFilterDefs.changes.pipe(startWith(this.filterDefs)),\r\n ]).subscribe(() => {\r\n this.#loadFilterRegister();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.#optionChanges.subscribe(() => {\r\n if (this.filterRegister) {\r\n this.#reload.next({\r\n force: true,\r\n });\r\n }\r\n })\r\n );\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #initCellDef = () => {\r\n this.cellDef = {};\r\n for (const cellDef of this.sdCellDefs) {\r\n if (cellDef.sdMaterialCellDef) {\r\n this.cellDef[cellDef.sdMaterialCellDef] = cellDef;\r\n }\r\n }\r\n };\r\n\r\n #initFilterDef = () => {\r\n this.filterDefs = [];\r\n for (const filterDef of this.sdFilterDefs) {\r\n this.filterDefs.push(filterDef);\r\n }\r\n };\r\n\r\n #initFooterDef = () => {\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdMaterialFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdMaterialFooterDef] = footerDef;\r\n }\r\n }\r\n };\r\n\r\n #filterExportInfo = (pageNumber: number, pageSize: number): SdTableFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber,\r\n pageSize,\r\n isExported: true,\r\n };\r\n };\r\n\r\n #initConfiguration = (option: SdTableOption) => {\r\n // Init pagination\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize: option?.paginate?.pageSize ?? this.configuration?.paginate?.pageSize ?? DEFAULT_TABLE_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.configuration?.paginate?.pages ?? DEFAULT_TABLE_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false,\r\n };\r\n for (const column of option.columns || []) {\r\n if (column.filter?.operator?.enable && !column.filter?.operator?.list?.length) {\r\n if (column.type === 'string') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListString || [];\r\n }\r\n if (column.type === 'number') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListNumber || [];\r\n }\r\n if (column.type === 'values') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListValues || [];\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListDate || [];\r\n }\r\n }\r\n }\r\n return option;\r\n };\r\n\r\n #loadFilterRegister = () => {\r\n // Init filter\r\n if (this.gridOption) {\r\n if (!this.filterRegister) {\r\n this.filterRegister = this.gridFilterService.register(this.gridOption?.filter, {\r\n id: this.#gridId,\r\n columns: this.gridOption?.columns,\r\n externalFilters: this.gridOption?.filter?.externalFilters,\r\n filterDefs: this.filterDefs,\r\n });\r\n this.#subscription.add(\r\n this.filterRegister.value.observer\r\n .pipe(\r\n debounceTime(500),\r\n map(filterValue => {\r\n const { columnOperator, columnFilter, notReload } = filterValue;\r\n this.columnOperator = columnOperator;\r\n this.columnFilter = columnFilter;\r\n if (!notReload) {\r\n this.#paginator.pageIndex = 0;\r\n this.#reload.next({\r\n force: false,\r\n });\r\n }\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n };\r\n\r\n #filterLocal = (localItems: SdTableItem<T>[], filterInfo: SdTableFilterRequest) => {\r\n const { columns } = this.gridOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(tableItem => {\r\n const item = tableItem.current;\r\n for (const column of columns) {\r\n const { field, type } = column;\r\n const filterValue: string = (rawColumnFilter[field] || '').toString().trim().toLowerCase();\r\n const columnValue: string = (item[field] || '').toString().trim().toLowerCase();\r\n if (filterValue) {\r\n if (!columnValue && type !== 'datetime' && type !== 'date' && type !== 'time') {\r\n return false;\r\n }\r\n if (type === 'string') {\r\n if (columnValue.indexOf(filterValue) === -1) {\r\n return false;\r\n }\r\n } else if (type === 'values') {\r\n if (columnValue !== filterValue) {\r\n return false;\r\n }\r\n } else if (type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (type === 'datetime' || type === 'date' || type === 'time') {\r\n const from = rawColumnFilter[field]?.from ?? rawColumnFilter[field];\r\n const to = rawColumnFilter[field]?.to ?? rawColumnFilter[field];\r\n const fromDate = Date.begin(from);\r\n const toDate = Date.end(to);\r\n if (fromDate || toDate) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n\r\n const columnTime = new Date(columnValue).getTime();\r\n const fromDateTime = fromDate?.getTime() || null;\r\n const toDateTime = toDate?.getTime() || null;\r\n\r\n if (fromDateTime && fromDateTime > columnTime) {\r\n return false;\r\n }\r\n if (toDateTime && columnTime > toDateTime) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (orderBy && orderDirection) {\r\n const column = columns.find(e => e.field === orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((tableItemCurrent, tableItemNext) => {\r\n const current = tableItemCurrent.current;\r\n const next = tableItemNext.current;\r\n if (type === 'number') {\r\n return (current[field] || 0) - (next[field] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(current[field] || '').getTime();\r\n const d2 = new Date(current[field] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (current[field] || '').toString();\r\n const s2 = (next[field] || '').toString();\r\n if (s1 > s2) {\r\n return 1;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (orderDirection === 'desc') {\r\n items.reverse();\r\n }\r\n }\r\n }\r\n return {\r\n items: items.filter((item, index) => {\r\n return index >= pageNumber * pageSize && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length,\r\n };\r\n };\r\n\r\n #getFilter = (): SdTableFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber: this.#paginator?.pageIndex || 0,\r\n pageSize: this.#paginator?.pageSize || this.gridOption?.paginate?.pageSize || 50,\r\n };\r\n };\r\n\r\n #load = async (filterReq: SdTableFilterRequest, force: boolean = true) => {\r\n this.isLoading = true;\r\n if (this.gridOption.type === 'server') {\r\n const { items } = this.gridOption;\r\n const data = await items(filterReq).catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return {\r\n items: [] as T[],\r\n total: 0,\r\n };\r\n });\r\n this.isLoading = false;\r\n return {\r\n items: data?.items.map(MapToSdTableItem) || [],\r\n total: data?.total || 0,\r\n };\r\n }\r\n if (force) {\r\n const { items } = this.gridOption;\r\n const results = items();\r\n let data: T[] = [];\r\n if (results instanceof Promise) {\r\n data = await results.catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return [];\r\n });\r\n } else {\r\n data = results;\r\n }\r\n if (!Array.isArray(data)) {\r\n this.notifyService.notify.warning('Dữ liệu không phải là một mảng');\r\n data = [];\r\n }\r\n this.#localItems = data.map(MapToSdTableItem);\r\n this.isLoading = false;\r\n }\r\n return this.#filterLocal(this.#localItems, filterReq);\r\n };\r\n\r\n #render = async (args: { items: SdTableItem<T>[]; total: number }) => {\r\n this.sdScroll?.scrollTop();\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n await this.gridOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n };\r\n\r\n reload = async (force: boolean = true) => {\r\n this.gridFilter?.updateFilter?.();\r\n const data = await this.#load(this.#getFilter(), force);\r\n this.#render(data);\r\n };\r\n\r\n #exportedItems = async (pageNumber: number = 0, pageSize: number = 10000) => {\r\n if (this.gridOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n if (Array.isArray(result)) {\r\n return result;\r\n }\r\n if (isObservable<any[]>(result)) {\r\n result = result.toPromise();\r\n }\r\n if (isObservable<{ items: any[]; total: number }>(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n const filterInfo = this.#filterExportInfo(pageNumber, pageSize);\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterInfo);\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof this.gridOption.items === 'function') {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n exportedItems = await results;\r\n } else {\r\n exportedItems = results;\r\n }\r\n } else {\r\n exportedItems = this.gridOption.items;\r\n }\r\n return this.#filterLocal(exportedItems, filterInfo);\r\n }\r\n }\r\n };\r\n\r\n #allColumns = (): SdTableColumn[] => {\r\n const columns: SdTableColumn[] = [];\r\n this.gridOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns;\r\n };\r\n\r\n #allExportedColumns = (): SdTableOptionExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n };\r\n\r\n #onExport = async (isCSV?: boolean ) => {\r\n try {\r\n let columns = this.#getExportColumns();\r\n const pageSize = this.gridOption?.export?.maxItemsPerRequest || 1000;\r\n const batch = this.gridOption?.export?.batch || 1;\r\n let total = this.total;\r\n let pageNumber = 0;\r\n let exportItems = [];\r\n this.isExporting = true;\r\n const items: any[] = [];\r\n let promises: Promise<\r\n | any[]\r\n | {\r\n items: any[];\r\n total: number;\r\n }\r\n >[] = [];\r\n const handleData = async () => {\r\n const results = await Promise.all(promises);\r\n promises = [];\r\n exportItems = [];\r\n for (const result of results) {\r\n if ('items' in result) {\r\n exportItems = [...exportItems, ...result.items];\r\n total = result.total;\r\n } else {\r\n exportItems = [...exportItems, ...result];\r\n }\r\n }\r\n if (this.gridOption.export?.mapping) {\r\n const results = this.gridOption.export.mapping(exportItems);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n const totalPage = total / pageSize;\r\n const percent = Math.round(((pageNumber - 1) * 100.0) / totalPage);\r\n this.exportTitle = `Exporting...${percent}%`;\r\n const allColumns = this.#allColumns();\r\n const allExportedColumns = this.#allExportedColumns();\r\n for (const item of exportItems) {\r\n const obj: any = {};\r\n const handle = async (exportColumn: SdExportColumn) => {\r\n obj[exportColumn.field] = item[exportColumn.field];\r\n const column = allColumns.find(e => e.field === exportColumn.field);\r\n const exportedColumn = allExportedColumns.find(e => e.field === exportColumn.field);\r\n if (exportedColumn?.transform) {\r\n obj[exportedColumn.field] = exportedColumn.transform(item[exportedColumn.field], item);\r\n return;\r\n }\r\n if (!column) {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column?.children.forEach(childColumn => handle(childColumn));\r\n return;\r\n }\r\n if (!columns.some(e => e.field === column.field)) {\r\n return;\r\n }\r\n if (column.transform) {\r\n const transform = column.transform(item[column.field], item, {\r\n isExport: true,\r\n });\r\n if (transform instanceof Promise) {\r\n obj[column.field] = await transform;\r\n } else {\r\n obj[column.field] = transform;\r\n }\r\n obj[column.field] = obj[column.field] ?? '';\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.option?.displayOnTrue || 'True';\r\n } else if (obj[column.field] !== undefined && obj[column.field] !== null) {\r\n obj[column.field] = column.option?.displayOnFalse || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là date thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy');\r\n } else if (column.type === 'datetime') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là datetime thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy HH:mm');\r\n } else if (column.type === 'time') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là time thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'HH:mm');\r\n } else if (column.type === 'values') {\r\n // Nếu là values thì lấy giá trị của value được chọn\r\n obj[column.field] = await this.columnValuesPipe.transform(item[column.field], column);\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n for (const exportColumn of columns) {\r\n await handle(exportColumn);\r\n }\r\n items.push(obj);\r\n }\r\n };\r\n while (pageNumber * pageSize < total) {\r\n promises.push(this.#exportedItems(pageNumber, pageSize));\r\n pageNumber++;\r\n if (promises.length < batch) {\r\n continue;\r\n }\r\n await handleData();\r\n }\r\n if (promises.length > 0) {\r\n await handleData();\r\n }\r\n if (isCSV) {\r\n await this.exportService.exportCSV({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName,\r\n });\r\n return;\r\n }\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n await this.exportService.export({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName,\r\n sheets,\r\n });\r\n return;\r\n } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n #getExportColumns = () => {\r\n const columns = [\r\n ...this.gridOption.columns.filter(e => !e.export?.disabled),\r\n ...(this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || []),\r\n ];\r\n return columns;\r\n };\r\n\r\n exportExcel = () => {\r\n this.#onExport();\r\n };\r\n\r\n exportCSV = () => {\r\n this.#onExport(true);\r\n };\r\n\r\n onFilterChange = () => {\r\n this.gridFilter?.updateFilter?.();\r\n if (this.gridOption?.filter?.inlineColumn) {\r\n this.filterRegister.value.set({\r\n columnOperator: this.columnOperator,\r\n columnFilter: this.columnFilter,\r\n });\r\n } else {\r\n this.filterRegister.value.set({});\r\n }\r\n };\r\n\r\n onExpand = async (rowData: SdTableItem<T>) => {\r\n if (this.gridOption.expand?.always) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanding) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanded) {\r\n rowData.meta.expand.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.expand?.onExpand?.(rowData.current);\r\n if (!this.gridOption.expand?.multiple) {\r\n this.items.forEach(item => (item.meta.expand.isExpanding = item.meta.expand.isExpanded = false));\r\n }\r\n if (data instanceof Promise) {\r\n rowData.meta.expand.isExpanding = true;\r\n data\r\n .then(res => {\r\n rowData.meta.expand.data = res;\r\n rowData.meta.expand.isExpanded = true;\r\n })\r\n .finally(() => (rowData.meta.expand.isExpanding = false));\r\n } else {\r\n rowData.meta.expand.data = data;\r\n rowData.meta.expand.isExpanded = true;\r\n }\r\n };\r\n\r\n onSelect = (rowData: SdTableItem<T>) => {\r\n if (rowData.meta.group?.items?.length) {\r\n rowData.meta.group.items.forEach(e => (e.meta.selector.isSelected = rowData.meta.selector.isSelected));\r\n this.gridOption.selector?.onSelect?.(\r\n rowData.current,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.current)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.gridOption.selector?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selector?.onSelect?.(\r\n rowData.current,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.current)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n };\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.meta.selector.selectable && (!this.gridOption?.selector?.actions?.length || e.meta.selector.actions?.length)) {\r\n e.meta.selector.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.gridOption.selector?.onSelectAll?.(this.items.filter(e => e.meta.selector.isSelected).map(e => e.current));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n onClearSelection = (items?: SdTableItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedItems = this.items.filter(item => item.meta.selector.isSelected).map(item => item.current);\r\n this.ref.detectChanges();\r\n };\r\n\r\n clearFilter = () => {\r\n this.filterRegister.value.remove();\r\n };\r\n\r\n setFilter = (args: { columnFilter?: Record<string, any>; externalFilter?: Record<string, any>; filterDef?: Record<string, any> }) => {\r\n const { columnFilter, externalFilter, filterDef } = args || {};\r\n if (this.gridOption?.filter?.inlineColumn && columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n this.filterRegister.value.set({\r\n columnFilter,\r\n externalFilter,\r\n filterDef,\r\n });\r\n };\r\n\r\n get gridItems(): T[] {\r\n return this.items.map(item => item.current);\r\n }\r\n\r\n detectChanges = () => this.ref.detectChanges();\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand, SdTableCommandNormal } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: SdTableItem, commands: SdTableCommand[]): Promise<SdTableCommand[]> {\r\n const results: SdTableCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n let flag = false;\r\n const { hidden } = command;\r\n if (hidden === undefined) {\r\n flag = true;\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n flag = true;\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n flag = true;\r\n }\r\n } else {\r\n if (!isHidden) {\r\n flag = true;\r\n }\r\n }\r\n }\r\n if (flag) {\r\n if ('children' in command) {\r\n const children: SdTableCommandNormal[] = [];\r\n for (const childCommand of command.children) {\r\n const { hidden } = childCommand;\r\n if (hidden === undefined) {\r\n children.push(childCommand);\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n if (!isHidden) {\r\n children.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...command, children });\r\n }\r\n } else {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\n@Pipe({\r\n name: 'commandDisable'\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: any, command: SdTableCommand): boolean {\r\n if (!command?.disabled) {\r\n return false;\r\n }\r\n if (typeof (command.disabled) === 'boolean') {\r\n return command.disabled;\r\n }\r\n return command.disabled(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: any): string {\r\n if (!command?.icon) {\r\n return '';\r\n }\r\n if (typeof (command.icon) === 'string') {\r\n return command.icon;\r\n }\r\n return command.icon(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: any): string {\r\n if (!command?.title) {\r\n return '';\r\n }\r\n if (typeof (command.title) === 'string') {\r\n return command.title;\r\n }\r\n return command.title(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'columnHtmlTemplate'\r\n})\r\nexport class SdColumnHtmlTemplatePipe implements PipeTransform {\r\n private isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(value: any, rowData: any, column: SdTableColumn): string {\r\n if (typeof (column?.htmlTemplate) !== 'function') {\r\n return value;\r\n }\r\n return column?.htmlTemplate(value, rowData, this.isMobileOrTablet);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-view',\r\n templateUrl: './desktop-cell-view.component.html',\r\n styleUrls: ['./desktop-cell-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellView {\r\n @Input() sdId: string;\r\n @Input() key: string;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() gridOption: SdTableOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\r\n@Pipe({\r\n name: 'columnTransform'\r\n})\r\nexport class SdColumnTransformPipe implements PipeTransform {\r\n constructor(private columnValuesPipe: SdColumnValuesPipe) { }\r\n async transform(value: any, rowData: any, column: SdTableColumn, key?: string): Promise<string> {\r\n if (column?.transform) {\r\n return column.transform(value, rowData);\r\n }\r\n if (column.type === 'values') {\r\n return await this.columnValuesPipe.transform(value, column);\r\n }\r\n if (column.type === 'number' && Number.isNumber(value)) {\r\n return Number.toVNCurrency(value); // this.decimalPipe.transform(value, '1.0-2');\r\n }\r\n if (column.type === 'bool') {\r\n return value === true ? (column.option?.displayOnTrue || 'True') : (column.option?.displayOnFalse || 'False');\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableExternalFilter } from '../services/table-filter/table-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdTableExternalFilter[], field?: string): SdTableExternalFilter[] {\r\n const results: SdTableExternalFilter[] = [];\r\n if (!externalFilters) {\r\n return results;\r\n }\r\n for (const filter of externalFilters) {\r\n results.push(filter);\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdTableColumn[], field?: string): SdTableColumn[] {\r\n const results: SdTableColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\r\n if (column.type === 'children') {\r\n for (const columnChildren of column?.children) {\r\n if (!columnChildren.filter?.disabled) {\r\n results.push(columnChildren);\r\n }\r\n }\r\n continue;\r\n }\r\n if (!column.filter?.disabled) {\r\n results.push(column);\r\n }\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n\r\n@Pipe({\r\n name: 'columnChildrenFilter'\r\n})\r\nexport class SdColumnChildrenFilterPipe implements PipeTransform {\r\n #isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.#isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(columns: SdTableColumn[], item: any): SdTableColumn[] {\r\n return columns.filter(column => {\r\n const value = item?.[column.field];\r\n const transformValue = column.transform?.(item[column.field], item);\r\n const templateValue = column.htmlTemplate?.(item[column.field], item, this.#isMobileOrTablet);\r\n return (value !== undefined && value !== null && value !== '')\r\n || (transformValue !== undefined && transformValue !== null && transformValue !== '')\r\n || (templateValue !== undefined && templateValue !== null && templateValue !== '');\r\n });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdTableCommand } from '../../models/table-command.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-command',\r\n templateUrl: './desktop-command.component.html',\r\n styleUrls: ['./desktop-command.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCommand {\r\n @Input() item: SdTableItem;\r\n @Input() commands: SdTableCommand[] = [];\r\n constructor() {\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdBadgeColor } from '@sd-angular/core/badge';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'columnBadge'\r\n})\r\nexport class SdColumnBadgePipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdTableColumn): {\r\n type: 'round' | 'circle' | 'icon',\r\n color: SdBadgeColor,\r\n icon: string\r\n } {\r\n if (column.type === 'string' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n if (column.type === 'number' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n if (column.type === 'bool') {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: !!value ? 'success' : 'danger',\r\n icon: null\r\n };\r\n }\r\n if (column.type === 'values' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { SdGridConfiguration, SdGridConfigurationResult } from '../models/table-option-config.model';\r\nimport { SdTableConfigurationService } from '../services/table-configuration.service';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\n\r\n@Pipe({\r\n name: 'sdGridConfigurationResult'\r\n})\r\nexport class SdGridConfigurationResultPipe implements PipeTransform {\r\n constructor(private gridConfigurationService: SdTableConfigurationService) { }\r\n transform(configuration: SdGridConfiguration, gridOption: SdTableOption, sdSubInformation: SdMaterialSubInformationDefDirective): SdGridConfigurationResult {\r\n const a = this.gridConfigurationService.generateConfigurationResult(configuration, gridOption, sdSubInformation);\r\n console.log(a);\r\n return a;\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, EventEmitter, ChangeDetectorRef, Input, HostListener } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport {\r\n SdGridConfigurationResult,\r\n SdGridConfiguration,\r\n SdGridConfigurationCache,\r\n SdColumnConfiguration,\r\n} from '../../models/table-option-config.model';\r\nimport { SdTableConfigurationService } from '../../services/table-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { MatTable } from '@angular/material/table';\r\n// import { SdGridMaterialColumn } from '@sd-angular/core/grid-material';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\n\r\n@Component({\r\n selector: 'sd-popup-grid-configuration',\r\n templateUrl: './popup-grid-configuration.component.html',\r\n styleUrls: ['./popup-grid-configuration.component.scss'],\r\n})\r\nexport class SdPopupGridConfiguration implements OnInit {\r\n @Input() gridOption: SdTableOption;\r\n @Input() key: string;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdTableColumn>;\r\n readonly changes = new EventEmitter<SdGridConfigurationResult>();\r\n #cache: SdGridConfigurationCache;\r\n configuration: SdGridConfiguration;\r\n isCreatingColumn = false;\r\n selected: {\r\n [key: string]: boolean;\r\n } = {};\r\n disabledDrag = true;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdTableConfigurationService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n @HostListener('window:mouseup', ['$event'])\r\n mouseUp(event) {\r\n this.disabledDrag = true;\r\n }\r\n open = async () => {\r\n this.#cache = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.configuration = await this.#cache.get();\r\n this.modal.open();\r\n };\r\n\r\n onSave = () => {\r\n this.#cache.set(this.configuration);\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n };\r\n\r\n onReset = async () => {\r\n const { translate } = this.translateService;\r\n this.notifyService.confirm(translate('Reset grid configuration to default')).then(() => {\r\n this.#cache.remove();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n });\r\n };\r\n\r\n createColumn = async () => {\r\n this.selected = {};\r\n this.isCreatingColumn = true;\r\n };\r\n\r\n confirm = async () => {\r\n const generatedColumn: SdColumnConfiguration = {\r\n origin: {\r\n field: uuid.v4(),\r\n title: 'Generated',\r\n width: '300px',\r\n },\r\n fixed: false,\r\n invisible: false,\r\n title: 'Generated',\r\n width: '300px',\r\n };\r\n this.configuration.columns.push(generatedColumn);\r\n this.configuration = this.#cache.set(this.configuration);\r\n this.isCreatingColumn = false;\r\n };\r\n\r\n dropTable(event: CdkDragDrop<SdTableColumn[]>) {\r\n moveItemInArray(this.configuration.columns, event.previousIndex, event.currentIndex);\r\n this.table.renderRows();\r\n }\r\n\r\n handleMouseDown() {\r\n this.disabledDrag = false;\r\n }\r\n\r\n handleMouseUp() {\r\n this.disabledDrag = true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'columnTooltip'\r\n})\r\nexport class SdColumnTooltipPipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdTableColumn): string {\r\n if (column?.tooltip) {\r\n return column.tooltip(value, rowData);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableItem } from '../models/table-item.model';\r\nimport { SdTableAction, SdTableActionNormal } from '../models/table-option-selector.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdTableAction): SdTableAction => {\r\n if ('children' in action) {\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n color: action.color,\r\n type: action.type,\r\n children: action.children.map(e => ({\r\n title: e.title,\r\n icon: e.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: e.fontSet,\r\n tooltip: e.tooltip,\r\n click: e.click\r\n }))\r\n };\r\n }\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n click: action.click\r\n };\r\n\r\n }\r\n transform = (selectedItems: SdTableItem[], actions: SdTableAction[]): SdTableAction[] => {\r\n const results: SdTableAction[] = [];\r\n if (!actions?.length || !selectedItems?.length) {\r\n return [];\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n const children: SdTableActionNormal[] = [];\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n children.push(childAction);\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...action, children });\r\n }\r\n } else {\r\n const key = hash(action);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n results.push(action);\r\n }\r\n }\r\n }\r\n return results.map(result => this.#convert(result));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: SdTableItem[], rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { disabled, actions } = selection;\r\n if (!actions?.length) {\r\n if (!disabled) {\r\n rowData.meta.selector.selectable = true;\r\n return false;\r\n }\r\n rowData.meta.selector.selectable = !disabled(rowData, selectedItems);\r\n return !rowData.meta.selector.selectable;\r\n }\r\n // Lọc các action theo selectedItems hiện tại\r\n const availableActions = actions.filter(action => {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n } else {\r\n const key = hash(action);\r\n return selectedItems.every(e => e.meta.selector.actions.includes(key));\r\n }\r\n });\r\n // Kiểm tra rowData có action nào thỏa hay ko, nếu ko thì disabled\r\n for (const action of availableActions) {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n if(rowData.meta.selector.actions.includes(hash(childAction))) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if(rowData.meta.selector.actions.includes(hash(action))) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionVisibleSelectAll'\r\n})\r\nexport class SdSelectionVisibleSelectAllPipe implements PipeTransform {\r\n transform = async (items: SdTableItem[], selection: SdTableOptionSelector): Promise<boolean> => {\r\n const { actions } = selection;\r\n if (!actions?.length) {\r\n return true;\r\n }\r\n if (!items.length) {\r\n return false;\r\n }\r\n if (actions.some(e => ('children' in e && e.children.some(e1 => e1.isGrouped)) || e.isGrouped)) {\r\n return false;\r\n }\r\n await new Promise(resolve => setTimeout(resolve, 500));\r\n const first = items.find(t => t.meta.selector.actions?.length);\r\n if (first) {\r\n for (const action of first.meta.selector.actions) {\r\n if (items.filter(t => t.meta.selector.actions?.length).every(e => e.meta.selector.actions.includes(action))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdMaterialCellDefDirective } from '../../directives/sd-material-cell-def.directive';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() sdId: string;\r\n @Input() value: any;\r\n @Input() key: string;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() gridOption: SdTableOption;\r\n @Input() cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n @Input() idx: number;\r\n constructor(\r\n ) { }\r\n}\r\n","import { SdBadgeColor } from '@sd-angular/core/badge';\r\n\r\nexport type SdTableColumn<T = any> =\r\n | SdTableColumnText<T>\r\n | SdTableColumnNumber<T>\r\n | SdTableColumnBool<T>\r\n | SdTableColumnDate<T>\r\n | SdTableColumnValues<T>\r\n | SdTableColumnChildren<T>;\r\n\r\nexport type SdFilterOperator =\r\n| 'EQUAL'\r\n| 'NOT_EQUAL'\r\n| 'CONTAIN'\r\n| 'NOT_CONTAIN'\r\n| 'IN'\r\n| 'NOT_IN'\r\n| 'START_WITH'\r\n| 'END_WITH'\r\n| 'GREATER_THAN'\r\n| 'LESS_THAN'\r\n| 'GREATER_OR_EQUAL'\r\n| 'LESS_OR_EQUAL';\r\n\r\nexport const SdFilterOperators: { value: SdFilterOperator, symbol?: string, display: string }[] = [\r\n {\r\n value: 'EQUAL',\r\n symbol: '=',\r\n display: 'Bằng',\r\n },\r\n {\r\n value: 'NOT_EQUAL',\r\n symbol: '≠',\r\n display: 'Không bằng',\r\n },\r\n {\r\n value: 'GREATER_THAN',\r\n symbol: '>',\r\n display: 'Lớn hơn',\r\n },\r\n {\r\n value: 'LESS_THAN',\r\n symbol: '<',\r\n display: 'Nhỏ hơn',\r\n },\r\n {\r\n value: 'GREATER_OR_EQUAL',\r\n symbol: '≥',\r\n display: 'Lớn hơn, hoặc bằng'\r\n },\r\n {\r\n value: 'LESS_OR_EQUAL',\r\n symbol: '≤',\r\n display: 'Nhỏ hơn, hoặc bằng'\r\n },\r\n {\r\n value: 'CONTAIN',\r\n symbol: 'join_inner',\r\n display: 'Chứa',\r\n },\r\n {\r\n value: 'NOT_CONTAIN',\r\n symbol: 'join',\r\n display: 'Không chứa',\r\n },\r\n {\r\n value: 'START_WITH',\r\n symbol: 'line_start_circle',\r\n display: 'Bắt đầu bởi'\r\n },\r\n {\r\n value: 'END_WITH',\r\n symbol: 'line_end_circle',\r\n display: 'Kết thúc bởi'\r\n },\r\n {\r\n value: 'IN',\r\n symbol: 'checklist_rtl',\r\n display: 'Nằm trong'\r\n },\r\n {\r\n value: 'NOT_IN',\r\n symbol: 'event_list',\r\n display: 'Không nằm trong'\r\n },\r\n];\r\n\r\nexport type SdTableColumnTransformFunc<T = any> = (\r\n value: any,\r\n rowData: T,\r\n args?: {\r\n isExport?: boolean;\r\n }\r\n) => string | Promise<string>;\r\n\r\ninterface SdTableColumnBase<T = any> {\r\n field: string;\r\n title: string;\r\n titleHtml?: string;\r\n description?: string;\r\n width?: string;\r\n hidden?: boolean;\r\n invisible?: boolean;\r\n fixed?: boolean;\r\n align?: 'center' | 'left' | 'right';\r\n htmlTemplate?: (value: any, rowData: T, isMobileOrTablet: boolean) => string;\r\n transform?: SdTableColumnTransformFunc<T>;\r\n tooltip?: (value: any, rowData: T) => string;\r\n click?: (value: any, rowData: T) => void;\r\n sortable?: boolean;\r\n filter?: {\r\n disabled?: boolean;\r\n defaultShowing?: boolean;\r\n default?: any;\r\n // Chỉ dành cho filter inline column\r\n operator?: {\r\n enable?: boolean;\r\n list?: SdFilterOperator[];\r\n };\r\n };\r\n export?: {\r\n disabled?: boolean;\r\n };\r\n}\r\n\r\ninterface SdTableColumnText<T = any> extends SdTableColumnBase<T> {\r\n type: 'string';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n minLength?: number;\r\n maxLength?: number;\r\n validator?: (rowData: T) => string;\r\n };\r\n}\r\n\r\ninterface SdTableColumnNumber<T = any> extends SdTableColumnBase<T> {\r\n type: 'number';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n minValue?: number;\r\n maxValue?: number;\r\n precision?: number;\r\n validator?: (rowData: T) => string;\r\n };\r\n}\r\n\r\ninterface SdTableColumnBool<T = any> extends SdTableColumnBase<T> {\r\n type: 'bool';\r\n option?: {\r\n displayOnTrue?: string;\r\n displayOnFalse?: string;\r\n };\r\n badgeType?: 'circle';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\ninterface SdTableColumnDate<T = any> extends SdTableColumnBase<T> {\r\n type: 'date' | 'datetime' | 'time';\r\n option?: {\r\n useFilterDate?: boolean;\r\n timeDifferent?: 'second' | 'minute' | 'hour' | 'day' | 'month';\r\n };\r\n transformDate?: (value: any, rowData: T) => string | Date;\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\nexport interface SdTableColumnValues<T = any> extends SdTableColumnBase<T> {\r\n type: 'values';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n option: {\r\n items:\r\n | any[]\r\n | ((searchText?: string, isFormValue?: boolean) => Promise<any[]>)\r\n | ((searchText?: string[], isFormValue?: boolean) => Promise<any[]>);\r\n valueField: string;\r\n displayField: string;\r\n selection?:\r\n | 'AUTOCOMPLETE'\r\n | 'MULTIPLE'\r\n | 'MULTIPLEAUTOCOMPLETE'\r\n | 'AUTOCOMPLETE_EDITOR'\r\n | 'MULTIPLE_EDITOR'\r\n | 'MULTIPLEAUTOCOMPLETE_EDITOR';\r\n };\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n add?: (rowData: T) => void;\r\n edit?: (option: any, rowData: T) => void;\r\n delete?: (option: any, rowData: T) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\ntype SdTableColumnNormal<T> = Exclude<SdTableColumn<T>, SdTableColumnChildren<T>>;\r\n\r\nexport interface SdTableColumnChildren<T = any> extends SdTableColumnBase<T> {\r\n type: 'children';\r\n children: SdTableColumnNormal<T>[];\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdFilterOperator, SdFilterOperators, SdTableColumn } from '../../models/table-column.model';\r\n\r\n@Component({\r\n selector: 'sd-column-inline-filter',\r\n templateUrl: './column-inline-filter.component.html',\r\n styleUrls: ['./column-inline-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdColumnInlineFilter implements OnInit {\r\n value: any;\r\n @Input('value') _value(value: any) {\r\n this.value = value;\r\n this.#valueChanges.next();\r\n }\r\n inlineSymbol: string = 'filter_alt';\r\n #inlineOperator: SdFilterOperator;\r\n @Input('inlineOperator') set _inlineOperator(inlineOperator: SdFilterOperator) {\r\n if(this.#inlineOperator !== inlineOperator) {\r\n this.#inlineOperator = inlineOperator;\r\n this.inlineSymbol = SdFilterOperators.find(e => e.value === inlineOperator)?.symbol ?? 'filter_alt';\r\n }\r\n }\r\n @Output() inlineOperatorChange = new EventEmitter();\r\n\r\n columnFilter: Record<string, any> = {};\r\n @Input('columnFilter') set _columnFilter(columnFilter: Record<string, any>) {\r\n this.columnFilter = columnFilter || {};\r\n this.#valueChanges.next();\r\n }\r\n operators: { value: SdFilterOperator; display: string }[] = [];\r\n column: SdTableColumn;\r\n @Input('column') set _column(column: SdTableColumn) {\r\n this.column = column;\r\n if (!column?.filter?.disabled && column?.filter?.operator?.enable) {\r\n this.operators = SdFilterOperators.filter(e => column.filter.operator.list?.includes?.(e.value));\r\n } else {\r\n this.operators = [];\r\n }\r\n }\r\n @Output() filterChange = new EventEmitter();\r\n #valueChanges = new Subject();\r\n #subcription = new Subscription();\r\n constructor(private ref: ChangeDetectorRef) {}\r\n\r\n ngOnInit() {\r\n this.#subcription.add(\r\n this.#valueChanges.pipe(startWith(this.columnFilter)).subscribe(() => {\r\n if (this.column.type === 'date' || this.column.type === 'time' || this.column.type === 'datetime') {\r\n if (!this.column?.option?.useFilterDate) {\r\n this.columnFilter[this.column.field] = this.columnFilter[this.column.field] || {\r\n from: null,\r\n to: null,\r\n };\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subcription.unsubscribe();\r\n }\r\n\r\n onFilterChange = () => {\r\n this.filterChange.emit();\r\n };\r\n\r\n onChangeOperator = (operator: { value: SdFilterOperator, symbol?: string, display: string }) => {\r\n if (operator) {\r\n this.#inlineOperator = operator.value;\r\n this.inlineSymbol = operator.symbol;\r\n } else {\r\n this.#inlineOperator = null;\r\n this.inlineSymbol = 'filter_alt';\r\n }\r\n this.inlineOperatorChange.emit(this.#inlineOperator);\r\n this.ref.markForCheck();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.meta.selector.actions = rowData.meta.selector.actions || [];\r\n if (!actions?.length) {\r\n rowData.meta.selector.selectable = true;\r\n return rowData.meta.selector.selectable;\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n let flag = false;\r\n let hasGroup = false;\r\n for (const childAction of action.children) {\r\n const { hidden, isGrouped } = childAction;\r\n const key = hash(childAction);\r\n if (isGrouped) {\r\n hasGroup = true;\r\n }\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n if (flag) {\r\n rowData.meta.selector.actions.push(hash(action));\r\n if (hasGroup) {\r\n groupedActions.push(hash(action));\r\n }\r\n }\r\n } else {\r\n const { hidden, isGrouped } = action;\r\n const key = hash(action);\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.meta.selector.selectable = !!rowData.meta.selector.actions?.length;\r\n if (!rowData.meta.selector.selectable || !groupedActions.length || rowData?.meta.group?.items?.length) {\r\n return rowData.meta.selector.selectable;\r\n }\r\n // Đối với trường hợp grouped, tuy selectable là true nhưng vẫn ẩn đi checkbox\r\n // nếu các action đều thuộc groupedActions và rowData ko phải là dòng group\r\n return rowData.meta.selector.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-quick-action',\r\n templateUrl: './quick-action.component.html',\r\n styleUrls: ['./quick-action.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdGridQuickAction {\r\n @Input() gridOption: SdTableOption;\r\n @Input() selectedItems: any[];\r\n @Output() clear = new EventEmitter();\r\n constructor(\r\n ) { }\r\n onClear = () => {\r\n this.clear.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdCellView } from '../models/grid-cell.model';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'cellView'\r\n})\r\nexport class SdCellViewPipe implements PipeTransform {\r\n #maxSecond = 60;\r\n #maxMinute = this.#maxSecond * 60;\r\n #maxHour = this.#maxMinute * 24;\r\n #maxDay = this.#maxHour * 30;\r\n #maxMonth = this.#maxHour * 365;\r\n #isMobileOrTablet = false;\r\n constructor(\r\n deviceService: DeviceDetectorService,\r\n private utilityService: SdUtilityService,\r\n private columnValuesPipe: SdColumnValuesPipe) {\r\n this.#isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n async transform(\r\n value: any,\r\n tableItem: SdTableItem,\r\n column: SdTableColumn,\r\n gridOption: SdTableOption): Promise<SdCellView> {\r\n const { displayOnEmpty } = gridOption;\r\n const rowData = tableItem.current;\r\n const { align, click, tooltip, htmlTemplate, transform } = column;\r\n const result: SdCellView = {\r\n badge: null,\r\n tooltip: null,\r\n display: {\r\n align: align || (column.type === 'number' ? 'right' : 'left'),\r\n value\r\n },\r\n click: null\r\n };\r\n // Display\r\n if (typeof (htmlTemplate) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = htmlTemplate(value, rowData, this.#isMobileOrTablet);\r\n } else {\r\n if (column.type === 'datetime' || column.type === 'date' || column.type === 'time') {\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n value = transformDate(value, rowData);\r\n }\r\n }\r\n if (typeof (transform) === 'function') {\r\n const val = transform(value, rowData);\r\n if (val instanceof Promise) {\r\n result.display.value = await val;\r\n } else {\r\n result.display.value = val;\r\n }\r\n } else {\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n const { option } = column;\r\n const seconds = Math.round((new Date().getTime() - new Date(value).getTime()) / 1000);\r\n if (option?.timeDifferent === 'month' && seconds < this.#maxMonth) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'day' && seconds < this.#maxDay) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'hour' && seconds < this.#maxHour) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'minute' && seconds < this.#maxMinute) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'second' && seconds < this.#maxSecond) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else {\r\n const date = Date.toFormat(value, 'dd/MM/yyyy');\r\n const time = Date.toFormat(value, 'HH:mm');\r\n const dateTime = Date.toFormat(value, 'HH:mm');\r\n if (column.type === 'datetime' && time && time !== '00:00') {\r\n result.display.value = dateTime;\r\n result.display.hasHtml = true;\r\n result.display.html = `<span class=\"d-block T14R text-black400\">${Date.toFormat(value, 'HH:mm')}</span><span class=\"d-block T14R\">${Date.toFormat(value, 'dd/MM/yyyy')}</span>`;\r\n } else {\r\n result.display.value = date;\r\n }\r\n }\r\n }\r\n if (column.type === 'time') {\r\n result.display.value = Date.toFormat(value, 'HH:mm');\r\n }\r\n if (column.type === 'values') {\r\n result.display.value = await this.columnValuesPipe.transform(value, column);\r\n } else if (column.type === 'number' && Number.isNumber(value)) {\r\n result.display.value = Number.toVNCurrency(value);\r\n }\r\n if (column.type === 'bool') {\r\n const { option } = column;\r\n if (value !== undefined && value !== null && value !== '') {\r\n result.display.value = value === true ? (option?.displayOnTrue || 'True') : (option?.displayOnFalse || 'False');\r\n } else {\r\n result.display.value = null;\r\n }\r\n }\r\n }\r\n if (displayOnEmpty) {\r\n let values = [null, undefined, ''];\r\n if (typeof (displayOnEmpty) === 'object') {\r\n const { display, emptyValues } = displayOnEmpty;\r\n values = [null, undefined, '', ...emptyValues];\r\n if (values.includes(result.display.value)) {\r\n if (typeof (display) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = display(rowData, column);\r\n } else {\r\n result.display.hasHtml = true;\r\n result.display.html = `<div class=\"T16R text-black400\">--</div>`;\r\n }\r\n }\r\n } else {\r\n if (values.includes(result.display.value)) {\r\n if (typeof (displayOnEmpty) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = displayOnEmpty(rowData, column);\r\n } else {\r\n result.display.hasHtml = true;\r\n result.display.html = `<div class=\"T16R text-black400\">--</div>`;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // Badge\r\n if ((column.type === 'string' || column.type === 'number' || column.type === 'values') && column.badge) {\r\n result.badge = {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n } else if (column.type === 'bool') {\r\n result.badge = {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: !!value ? 'success' : 'danger',\r\n icon: null\r\n };\r\n }\r\n // Tooltip\r\n if (typeof (tooltip) === 'function') {\r\n result.tooltip = tooltip(value, rowData);\r\n }\r\n // Clickable\r\n if (typeof (click) === 'function') {\r\n result.click = () => click(value, rowData);\r\n }\r\n return result;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { MapToSdTableItem, SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'sdGroup',\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: SdTableItem[], gridOption: SdTableOption): SdTableItem[] {\r\n const { group } = gridOption;\r\n if (!group) {\r\n return items;\r\n }\r\n const { fields, htmlTemplate } = group;\r\n if (!fields?.length) {\r\n return items;\r\n }\r\n const groupItem: {\r\n [key: string]: SdTableItem[];\r\n } = {};\r\n for (const item of items) {\r\n let obj = {};\r\n for (const field of fields) {\r\n obj = {\r\n ...obj,\r\n ...(item[field] ?? { [field]: item[field] }),\r\n };\r\n }\r\n const key = hash(obj);\r\n if (!groupItem[key]) {\r\n groupItem[key] = [];\r\n }\r\n groupItem[key].push(item);\r\n }\r\n const results: SdTableItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n const result = MapToSdTableItem({});\r\n result.meta.group.items = groupItem[key];\r\n result.meta.group.htmlTemplate = htmlTemplate(groupItem[key]);\r\n results.push(result);\r\n for (const item of groupItem[key]) {\r\n results.push(item);\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Injectable, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdTable } from './table.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { CdkTableModule, CdkColumnDef } from '@angular/cdk/table';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { SdCommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { SdCommandDisablePipe } from './pipes/command-disable.pipe';\r\nimport { SdCommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { SdCommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdColumnHtmlTemplatePipe } from './pipes/column-html-template.pipe';\r\nimport { SdDesktopCellView } from './components/desktop-cell-view/desktop-cell-view.component';\r\nimport { SdColumnTransformPipe } from './pipes/column-transform.pipe';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SdFilterExternalPipe } from './pipes/filter-external.pipe';\r\nimport { SdFilterColumnPipe } from './pipes/filter-column.pipe';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdPopupFilter } from './components/popup-filter/popup-filter.component';\r\n\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\nimport { SdColumnChildrenFilterPipe } from './pipes/column-children-filter.pipe';\r\nimport { SdDesktopCommand } from './components/desktop-command/desktop-command.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdColumnBadgePipe } from './pipes/column-badge.pipe';\r\nimport { SdGridConfigurationResultPipe } from './pipes/grid-configuration-result.pipe';\r\nimport { SdPopupGridConfiguration } from './components/popup-grid-configuration/popup-grid-configuration.component';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { SdColumnTooltipPipe } from './pipes/column-tooltip.pipe';\r\nimport { SdSelectionActionFilterPipe } from './pipes/selection-action-filter.pipe';\r\nimport { SdSelectionDisablePipe } from './pipes/selection-disable.pipe';\r\nimport { SdSelectionVisibleSelectAllPipe } from './pipes/selection-visible-select-all.pipe';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdColumnInlineFilter } from './components/column-inline-filter/column-inline-filter.component';\r\nimport { SdSelectionVisiblePipe } from './pipes/selection-visible.pipe';\r\nimport { SdGridQuickAction } from './components/quick-action/quick-action.component';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdCellViewPipe } from './pipes/cell-view.pipe';\r\nimport { SdGroupPipe } from './pipes/sd-group.pipe';\r\nimport { SdGroupModule } from '@sd-angular/core/group';\r\n\r\n@Injectable()\r\nexport class MatPaginatorIntlCro extends MatPaginatorIntl {\r\n firstPageLabel = 'Trang đầu';\r\n lastPageLabel = 'Trang cuối';\r\n itemsPerPageLabel = 'Kích thước trang';\r\n nextPageLabel = 'Trang sau';\r\n previousPageLabel = 'Trang trước';\r\n\r\n getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n if (length === 0 || pageSize === 0) {\r\n return '';\r\n }\r\n const from = page * pageSize + 1;\r\n const to = from + (length - page * pageSize > pageSize ? pageSize : length - page * pageSize) - 1;\r\n return `${from}-${to} trên ${length}`;\r\n };\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSortModule,\r\n MatPaginatorModule,\r\n MatTableModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatChipsModule,\r\n MatRadioModule,\r\n MatSlideToggleModule,\r\n MatCheckboxModule,\r\n MatListModule,\r\n MatDividerModule,\r\n CdkTableModule,\r\n DragDropModule,\r\n SdFormModule,\r\n SdServiceModule,\r\n MatSliderModule,\r\n ScrollingModule,\r\n SdCommonModule,\r\n SdGroupModule,\r\n ],\r\n declarations: [\r\n SdGridQuickAction,\r\n SdDesktopCell,\r\n SdDesktopCellView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdTable,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdPopupGridConfiguration,\r\n SdGridFilter,\r\n SdPopupFilter,\r\n\r\n // Pipes\r\n SdGridConfigurationResultPipe,\r\n SdColumnChildrenFilterPipe,\r\n SdCommandFilterPipe,\r\n SdCommandDisablePipe,\r\n SdCommandIconPipe,\r\n SdCommandTitlePipe,\r\n SdColumnValuesPipe,\r\n SdColumnHtmlTemplatePipe,\r\n SdColumnTransformPipe,\r\n SdColumnTooltipPipe,\r\n SdColumnBadgePipe,\r\n SdFilterColumnPipe,\r\n SdFilterExternalPipe,\r\n SdSelectionActionFilterPipe,\r\n SdSelectionVisiblePipe,\r\n SdSelectionDisablePipe,\r\n SdSelectionVisibleSelectAllPipe,\r\n SdCellViewPipe,\r\n SdGroupPipe,\r\n ],\r\n exports: [\r\n SdTable,\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n ],\r\n providers: [\r\n DatePipe,\r\n DecimalPipe,\r\n CdkColumnDef,\r\n SdTableFilterService,\r\n SdTableConfigurationService,\r\n SdColumnValuesPipe,\r\n {\r\n provide: MatPaginatorIntl,\r\n useClass: MatPaginatorIntlCro,\r\n },\r\n ],\r\n})\r\nexport class SdTableModule {}\r\n"]}