@sd-angular/core 1.3.104 → 1.3.105

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":["../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-cell-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-filter-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-footer-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-empty-data-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-sub-information-def.directive.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/grid-material/src/lib/models/grid-configuration.model.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/grid-filter/grid-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-export/popup-export.component.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-configuration.service.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-values.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/functions/calculate-sd-id.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-filter/grid-filter.service.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-html-template.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-transform.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-children-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-badge.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/grid-configuration-result.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-visible-select-all.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/services/generated-column/generated-column.service.ts","../../../../projects/sd-core/grid-material/src/lib/components/dynamic-column/dynamic-column.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-row.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-validate.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/style-row-css.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-editor-validation/desktop-editor-validation.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-visible.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/quick-action/quick-action.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/cell-view.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/sd-group.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.module.ts"],"names":["templateRef","this","Directive","args","selector","TemplateRef","Input","SdMaterialFilterDefDirective","Object","defineProperty","prototype","val","defaultShowing","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","call","__rest","s","e","t","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","apply","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","pop","push","create","__values","o","m","__read","r","ar","error","__spread","arguments","concat","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","DEFAULT_GRID_MATERIAL_CONFIG","pageSize","pages","GRID_MATERIAL_CONFIG","InjectionToken","SdPopupFilter","cdRef","_this","_filterRegister","externalFilters","externalFilter","inlineExternal","columns","columnFilter","inlineColumn","filterDefs","filterDef","inlineFilterDef","_subscription","Subscription","open","modal","markForCheck","close","onApply","configuration","ngAfterViewInit","add","observer","subscribe","JSON","parse","stringify","filterValue","ngOnDestroy","unsubscribe","onClear","remove","Component","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","ViewChild","SdGridFilter","ref","deviceService","filterRegisterChange","BehaviorSubject","onFilter","item","filterRegister","popupFilter","isMobileOrTablet","isDesktop","filter","_subscription$1","DeviceDetectorService","SdPopupExport","loadingService","exportService","notifyService","translateService","groups","enableCreating","selected","files","export","EventEmitter","form","FormGroup","_getExportableColumns","gridColumns","additionalColumns","_getExportableGroups","_c","_b","_a","gridOption","permission","key","hideMyTemplates","loadFiles","code","detectChanges","exportDefault","_getExportColumns","columns_1","_x","displayColumns","firstColumns","secondColumns","reduce","first","column","find","field","type","children","e1","map","assign","data","emit","file","isCSV","exportCSV","group","selectedGroup","filesInFolder","_y","_initTemplate","fileName","sheets","isArray","_d","sheet","name","items","fields","_0","_z","_1","_3","generateTemplate","_f","_e","start","finally","stop","generateAndUploadTemplate","_h","_g","_j","_k","generateUploadTemplate","_m","_l","_o","onExport","uploadTemplate","_p","validator","_r","_q","validators","removeFile","confirm","translate","idx","splice","createTemplate","invalid","markAllAsTouched","some","notify","warning","templateName","_u","_t","_s","_w","_v","filePath","onChangeGroup","listGroups","selectedOptions","validatorTemplateName","test","option","hash","prefix","disabled","forEach","childColumn","title","description","width","ngOnInit","SdLoadingService","SdExportService","SdNotifyService","SdTranslateService","Output","settingService","gridMaterialConfiguration","_COLUMNS","EDITORVALIDATION","EDITOR","SUBINFORMATION","COMMAND","SELECTION","GROUP","_cache","init","subject_1","Subject","load","_load","_get","_set","_remove","_default","_getKey","config","hidden","origin","invisible","fixed","subject","storage","createServer","catch","console","isGeneratedColumn","col","generateConfigurationResult","sdSubInformation","fixedColumn","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","selection","commands","editor","addable","removable","visible","generatedColumn","generatedColumns","includes","subColumn","e_2","colSpan","Injectable","SdSettingService","Inject","Optional","_prefix","transform","valueField","displayField","remain","isMultible","_cache$1","values","join","Pipe","CalculateSdId","sdId","editorHandlerColumn","expandDetail","isExpanded","isExpanding","isSelected","sdGroup","selectable","actions","groupedActions","originItem","editorErrorMessage","editorHandlerRow","SdEditorHandlerColumnPipe","zone","_visible","columns_1_1","childCol","run","NgZone","_filterConfiguration","_filterValue","register","cacheSession","_cache$2","t1","undefined","defaultConfiguration","_loadDefaultConfiguration","t2","defaultValue","_loadDefaultValue","filterConfiguration_1","default","filterValue_1","configurationGet_1","sdMaterialFilterDef","valueGet_1","from","to","keys","current","updatedConfiguration","pipe","SdGridMaterial","gridConfigurationService","columnValuesPipe","gridFilterService","editorHandlerColumnPipe","uuid.v4","_optionChanges","_localItems","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_reload","isExporting","isSelectAll","exportTitle","_loadCompleted","_initCellDef","_4","_5","sdMaterialCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","rawColumnFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","_initConfiguration","paginate","showFirstLastButtons","_loadFilterRegister","hasRegister","force","_subscription$2","debounceTime","pageIndex","_filterLocal","localItems","filterInfo","toString","trim","toLowerCase","columnValue","fValue","replace","cValue","fromDate","Date","begin","toDate","end","columnTime","getTime","fromDateTime","toDateTime","type_1","field_1","sort","s1","s2","reverse","index","total","_getFilter","filterReq","isObservable","toPromise","error_1","results","error_2","_render","sdScroll","scrollTop","reload","onReload","every","_updateSelectedItems","_load$1","_exportedItems","exportedItems","_allColumns","_allExportedColumns","_onExport","columns_2","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","_7","displayOnTrue","displayOnFalse","date","transformDate","toFormat","_6","e_8","columns_3","columns_3_1","exportItems_2","exportItems_2_1","_9","exportByTemplate","onFilterChange","onExpand","rowData","subInformation","always","multiple","res","onSelect","single","onSelectAll","onClearSelection","editorStatus","sdVersion","clearFilter","setFilter","onCreate","onAdd","addToLast","temporary","onUpdate","onSave","saving","validate","message","err_1","onCancel","idx2","idx1","onRemove","beforeRemove","_2","update","refreshItem","gridFilter","gridConfigurationObserver","paginator","page","sortChange","switchMap","changes","startWith","combineLatest","a","drop","event","moveItemInArray","previousIndex","currentIndex","animations","trigger","style","height","minHeight","visibility","transition","animate","SdGridConfigurationService","SdColumnValuesPipe","SdGridFilterService","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","columnChildren","SdColumnChildrenFilterPipe","_isMobileOrTablet","transformValue","templateValue","SdColumnTitlePipe","dynamicTitle","SdColumnBadgePipe","badge","badgeType","color","badgeIcon","SdGridConfigurationResultPipe","SdPopupGridConfiguration","isCreatingColumn","disabledDrag","_cache$3","onReset","createColumn","mouseUp","dropTable","table","renderRows","handleMouseDown","handleMouseUp","HostListener","SdColumnTooltipPipe","tooltip","_convert","action","fontSet","click","childAction","key_1","actions_1","actions_1_1","availableActions","availableActions_1","availableActions_1_1","isGrouped","setTimeout","_cache$4","loadSystem","systemColumn","SdDynamicColumn","generatedColumnService","columnTypes","isDetail","originColumns","onDetail","detail","isSystem","useTemplate","markAsUntouched","markAsPristine","systemSetting","setting","id","systemColumns","_subscription$3","SdGeneratedColumnService","SdSideDrawer","onChange","change","editorOnAdd","editorOnEdit","edit","editorOnDelete","delete","SdEditorHandlerRowPipe","status","isDisabled","editable","savable","cancelable","_visible$1","SdEditorValidatePipe","_previous","_delay","now","SdStyleRowCss","rowCss","SdColumnInlineFilter","filterChange","_valueChanges","_subcription","_value","useFilterDate","hasGroup","clear","SdCellViewPipe","utilityService","_maxSecond","_maxMinute","_maxHour","_maxDay","_maxMonth","_isMobileOrTablet$1","displayOnEmpty","align","display","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","SdDesktopCellEditor","SdDesktopEditorValidation","SdDesktopCellView","SdDesktopCellChildrenView","SdDesktopCommand","SdSelectionActionFilterPipe","SdSelectionVisiblePipe","SdSelectionDisablePipe","SdSelectionVisibleSelectAllPipe","exports","providers","DatePipe","DecimalPipe","CdkColumnDef","provide","useClass"],"mappings":"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CApGCka,EAAAA,SAAQpuB,KAAA,CAAC,CACRquB,QAAS,CACPC,EAAAA,aACAC,EAAAA,YACAC,EAAAA,oBACAC,EAAAA,eACAC,EAAAA,mBACAC,EAAAA,cACAC,EAAAA,mBACAC,EAAAA,eACAC,EAAAA,cACAC,EAAAA,cACAC,EAAAA,gBACAC,EAAAA,iBACAC,EAAAA,yBACAC,EAAAA,eACAC,EAAAA,eACAC,EAAAA,qBACAC,EAAAA,kBACAC,EAAAA,cACAC,EAAAA,iBACAC,EAAAA,eACAC,EAAAA,eACAC,EAAAA,aACAC,EAAAA,gBACAC,EAAAA,gBACAC,EAAAA,gBACAC,EAAAA,eACAC,EAAAA,eAEFC,aAAc,CACZC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAnF,GACAxT,GAEA8M,EACAD,EACAtkB,EACAmkB,EACAC,EACAxb,GACAge,GACA9e,GACAxC,GACAqjB,GAGAhC,GACAX,GACAI,GACA5B,GACAS,GACAC,GACAE,GACAxB,GACAyB,GACAE,GACAkC,GACAnB,GACAR,GACAH,GACA0K,GACAC,GACAC,GACAC,GACApG,GACA1U,GACAiV,GACAI,GACAU,GACAoB,IAEF4D,QAAS,CACPhZ,GACA8M,EACAD,EACAtkB,EACAokB,EACAD,GAEFuM,UAAW,CACTC,EAAAA,SACAC,EAAAA,YACAC,EAAAA,aACAhN,GACAF,GACAgG,GACA/F,GACAlO,GACA,CACEob,QAAS/C,EAAAA,iBAAkBgD,SAAU5D","sourcesContent":["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 { 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, 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 { 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","/*! *****************************************************************************\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\n\r\nexport interface ISdGridMaterialConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\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_GRID_MATERIAL_CONFIG: ISdGridMaterialConfiguration = {\r\n paginate: {\r\n pageSize: 50,\r\n pages: [50, 100, 200]\r\n }\r\n};\r\n\r\nexport const GRID_MATERIAL_CONFIG = new InjectionToken<ISdGridMaterialConfiguration>('sd-grid-material.configuration');\r\n","import { Component, ViewChild, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialExternalFilter, SdGridMaterialFilterRegister } from '../../services/grid-filter/grid-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('modal') modal: SdModal;\r\n #filterRegister: SdGridMaterialFilterRegister;\r\n @Input() set filterRegister(value: SdGridMaterialFilterRegister) {\r\n this.#filterRegister = value;\r\n };\r\n @Input() externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: {\r\n [key: string]: boolean\r\n } = {};\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n columnFilter: any = {};\r\n inlineColumn: {\r\n [key: string]: boolean\r\n } = {};\r\n\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: any = {};\r\n inlineFilterDef: {\r\n [key: string]: boolean;\r\n } = {};\r\n #subscription = new Subscription();\r\n constructor(\r\n private cdRef: ChangeDetectorRef\r\n ) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.#filterRegister.configuration.observer.subscribe(configuration => {\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 this.cdRef.markForCheck();\r\n }));\r\n this.#subscription.add(this.#filterRegister.value.observer.subscribe(filterValue => {\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.cdRef.markForCheck();\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n open = () => {\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 { Component, Input, Output, EventEmitter, ViewChild, AfterViewInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdGridMaterialFilterOption, SdGridMaterialExternalFilter, SdGridMaterialFilterRegister } from '../../services/grid-filter/grid-filter.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-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\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<SdGridMaterialFilterOption>;\r\n @Input('filter') set _filter(filter: SdGridMaterialFilterOption) {\r\n this.filter = filter;\r\n }\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n externalFilters: SdGridMaterialExternalFilter[] = [];\r\n @Input('externalFilters') set _externalFilters(value: SdGridMaterialExternalFilter[]) {\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(\r\n private ref: ChangeDetectorRef,\r\n 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(this.filterRegister.configuration.observer.subscribe(configuration => {\r\n this.inlineColumn = configuration.inlineColumn;\r\n this.inlineExternal = configuration.inlineExternal;\r\n this.inlineFilterDef = configuration.inlineFilterDef;\r\n this.ref.markForCheck();\r\n }));\r\n this.#subscription.add(this.filterRegister.value.observer.subscribe(value => {\r\n this.columnFilter = value.columnFilter;\r\n this.externalFilter = value.externalFilter;\r\n this.filterDef = value.filterDef;\r\n this.ref.markForCheck();\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFilter = (item?: SdGridMaterialColumn | SdGridMaterialExternalFilter) => {\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 open = () => {\r\n this.popupFilter.open();\r\n }\r\n}\r\n","import { Component, OnInit, AfterViewInit, ViewChild, Output, EventEmitter, Input, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport * as uuid from 'uuid';\r\n\r\nimport {\r\n SdNotifyService\r\n} from '@sd-angular/core/notify';\r\n\r\nimport {\r\n SdLoadingService\r\n} from '@sd-angular/core/loading';\r\n\r\nimport {\r\n SdTranslateService\r\n} from '@sd-angular/core/translate';\r\nimport hash from 'object-hash';\r\nimport { MatSelectionList } from '@angular/material/list';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdExportFile, SdExportService, SdExportColumn } from '@sd-angular/core/export';\r\nimport { SdGroupExport } from '../../models/grid-export.model';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdGridConfigurationResult } from '../../models/grid-config.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-popup-export',\r\n templateUrl: './popup-export.component.html',\r\n styleUrls: ['./popup-export.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdPopupExport implements OnInit, AfterViewInit {\r\n gridOption: SdGridMaterialOption;\r\n columns: SdExportColumn[] = [];\r\n groups: SdGroupExport[] = [];\r\n templateName: string;\r\n enableCreating = false;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('listGroups') listGroups: MatSelectionList;\r\n\r\n selected: {\r\n [key: string]: boolean\r\n } = {};\r\n files: SdExportFile[] = [];\r\n selectedGroup: SdGroupExport;\r\n\r\n @Output() export = new EventEmitter<{ file: SdExportFile, columns: SdExportColumn[], isCSV?: boolean }>();\r\n form = new FormGroup({});\r\n\r\n @Input('gridOption') set _gridOption(option: SdGridMaterialOption) {\r\n this.gridOption = option;\r\n this.columns = this.#getExportableColumns();\r\n this.groups = this.#getExportableGroups();\r\n }\r\n @Input() configuration: SdGridConfigurationResult;\r\n private get key(): string {\r\n const prefix = '93889e78-f971-4a1d-8c73-fe2321af9233';\r\n if (!this.gridOption?.export?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: this.gridOption?.export?.key\r\n });\r\n }\r\n\r\n private get gridColumns() {\r\n const columns: SdExportColumn[] = [];\r\n this.gridOption.columns.filter(e => !e.export?.disabled).forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns.map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width\r\n }));\r\n }\r\n private get additionalColumns() {\r\n return (this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || []).map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width\r\n }));\r\n }\r\n\r\n #getExportableColumns = (): SdExportColumn[] => {\r\n return [...this.gridColumns, ...this.additionalColumns];\r\n }\r\n\r\n #getExportableGroups = () => {\r\n return this.gridOption?.export?.groups?.filter(e => {\r\n const permission = e.permission;\r\n if (typeof (permission) === 'function') {\r\n return permission();\r\n }\r\n return permission;\r\n }) || [];\r\n }\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n open = async () => {\r\n if (!this.key) {\r\n this.exportDefault();\r\n return;\r\n }\r\n if (this.groups.length === 1 && this.gridOption?.export?.hideMyTemplates) {\r\n this.loadFiles(this.groups[0].code);\r\n } else {\r\n this.loadFiles(null);\r\n }\r\n this.selected = {};\r\n this.modal.open();\r\n this.ref.detectChanges();\r\n }\r\n\r\n #getExportColumns = () => {\r\n if (this.configuration) {\r\n const columns = [...this.gridColumns];\r\n const { firstColumns, secondColumns } = this.configuration;\r\n const displayColumns: SdGridMaterialColumn<any>[] = [...firstColumns, ...secondColumns].reduce((first, next) => {\r\n const column = this.gridOption.columns.find(e => e.field === next.field);\r\n if (!column) {\r\n return first;\r\n }\r\n if (column.type !== 'children' && column.type !== 'children-col') {\r\n return [...first, column];\r\n }\r\n const children = column.children.filter(e1 => e1.type !== 'image');\r\n return [...first, ...children];\r\n }, []);\r\n const results = displayColumns.map(e => ({\r\n ...e,\r\n data: columns.find(e1 => e1.field === e.field)\r\n })).filter(e => !!e.data)\r\n .map(e => e.data);\r\n return [...results, ...this.additionalColumns];\r\n } else {\r\n return this.columns;\r\n }\r\n }\r\n\r\n exportDefault = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: false\r\n });\r\n }\r\n\r\n exportCSV = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: true\r\n });\r\n }\r\n\r\n loadFiles = async (group: string = null) => {\r\n this.selectedGroup = this.groups.find(e => e.code === group);\r\n this.files = await this.exportService.filesInFolder({\r\n key: this.key,\r\n group\r\n });\r\n this.ref.markForCheck();\r\n }\r\n\r\n #initTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.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 return await this.exportService.generateTemplate({\r\n fileName: fileName || this.gridOption?.export?.fileName,\r\n columns: this.columns,\r\n sheets\r\n });\r\n }\r\n\r\n generateTemplate = async () => {\r\n this.loadingService.start();\r\n await this.#initTemplate().finally(this.loadingService.stop);\r\n }\r\n\r\n generateAndUploadTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.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 return await this.exportService.generateUploadTemplate({\r\n key: this.key,\r\n template: {\r\n fileName: fileName || this.gridOption?.export?.fileName,\r\n columns: this.columns.filter(e => this.selected[e.field]),\r\n sheets\r\n },\r\n group: this.selectedGroup?.code\r\n });\r\n }\r\n\r\n onExport = (file: SdExportFile) => {\r\n this.export.emit({\r\n file,\r\n columns: this.columns\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n uploadTemplate = async () => {\r\n const file = await this.exportService.uploadTemplate({\r\n key: this.key,\r\n group: this.selectedGroup?.code,\r\n validator: this.gridOption?.export?.validators\r\n });\r\n if (file) {\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n removeFile = (file: SdExportFile) => {\r\n this.notifyService.confirm(this.translateService.translate('Remove template')).then(() => {\r\n this.exportService.removeFile({\r\n key: this.key,\r\n fileName: file.fileName,\r\n group: this.selectedGroup?.code || null\r\n });\r\n const idx = this.files.indexOf(file);\r\n this.files.splice(idx, 1);\r\n this.files = [...this.files];\r\n this.ref.detectChanges();\r\n });\r\n }\r\n\r\n createTemplate = async () => {\r\n const { translate } = this.translateService;\r\n if (this.form.invalid) {\r\n this.form.markAllAsTouched();\r\n return;\r\n }\r\n if (!this.columns.some(e => this.selected[e.field])) {\r\n this.notifyService.notify.warning(translate('Please select columns'));\r\n return;\r\n }\r\n this.loadingService.start();\r\n const fileName = this.templateName + '.xlsx';\r\n try {\r\n if (this.gridOption?.export?.validators?.(fileName)) {\r\n this.notifyService.notify.warning(this.gridOption?.export?.validators(fileName));\r\n return;\r\n }\r\n const result = await this.generateAndUploadTemplate(fileName);\r\n if (result?.filePath) {\r\n const file: SdExportFile = {\r\n filePath: result.filePath,\r\n fileName: result.fileName\r\n };\r\n this.onExport(file);\r\n this.templateName = null;\r\n this.enableCreating = false;\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n }\r\n\r\n onChangeGroup = () => {\r\n this.loadFiles(this.listGroups?.selectedOptions?.selected[0]?.value);\r\n }\r\n\r\n validatorTemplateName = (val: string) => {\r\n const { translate } = this.translateService;\r\n const regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;\r\n if (!val) {\r\n return translate('Please enter your template name');\r\n }\r\n if (val.length > 50) {\r\n return translate('Template name is too long');\r\n }\r\n if (!regex.test(val)) {\r\n return translate('Template name only contains letters, numbers and spaces');\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnConfiguration, SdGridConfiguration, SdGridConfigurationCache, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { GRID_MATERIAL_CONFIG, ISdGridMaterialConfiguration } from '../models/grid-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdGridConfigurationService {\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(GRID_MATERIAL_CONFIG) @Optional() public gridMaterialConfiguration: ISdGridMaterialConfiguration) {\r\n }\r\n\r\n init = (key: string, gridOption: SdGridMaterialOption) => {\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: SdGridMaterialOption) => {\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: SdGridMaterialOption): SdGridConfiguration => {\r\n const columns: SdColumnConfiguration[] = gridOption?.columns?.filter(e => !e.hidden).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: SdGridMaterialOption, 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: SdGridMaterialOption) => {\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\r\n .filter(column => column.isGeneratedColumn || 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: SdGridMaterialOption, 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: SdGridMaterialOption) => {\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: SdGridMaterialOption,\r\n sdSubInformation: SdMaterialSubInformationDefDirective) => {\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 { selection, commands, editor, group } = gridOption || {};\r\n if (editor?.addable || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITORVALIDATION);\r\n result.displayedColumns.push(this.#COLUMNS.EDITORVALIDATION);\r\n }\r\n if (selection?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (!editor?.hidden) {\r\n if (editor?.addable\r\n || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'popup' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITOR);\r\n result.displayedColumns.push(this.#COLUMNS.EDITOR);\r\n }\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?.filter(col => !col.invisible).forEach(col => {\r\n if (col.isGeneratedColumn) {\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 const generatedColumn: SdGridMaterialColumn = {\r\n type: 'children',\r\n field: col.origin.field,\r\n title: col.origin.title,\r\n children: []\r\n };\r\n for (const subColumn of gridOption?.columns.filter(e1 => col.generatedColumns.includes(e1.field))) {\r\n if (subColumn.type === 'children' || subColumn.type === 'children-col') {\r\n for (const childColumn of subColumn.children) {\r\n generatedColumn.children.push({\r\n ...childColumn,\r\n colSpan: 2\r\n });\r\n }\r\n } else {\r\n generatedColumn.children.push({\r\n ...subColumn,\r\n colSpan: 2\r\n });\r\n }\r\n\r\n }\r\n result.firstColumns.push({\r\n ...generatedColumn,\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 return;\r\n }\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 if (column.type === 'children-col') {\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 } else {\r\n result.displayedColumns.push(col.origin.field);\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 { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn): 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 hash from 'object-hash';\r\nimport { SdItem } from \"../models/grid.model\";\r\n\r\nexport const CalculateSdId = (item: SdItem) => {\r\n const {\r\n sdId,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n sdGroup,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n originItem,\r\n editorErrorMessage,\r\n editorHandlerRow,\r\n ...remain } = item;\r\n return hash(remain);\r\n}","import { Injectable, NgZone, Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { CalculateSdId } from '../functions/calculate-sd-id';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorHandlerColumn'\r\n})\r\n@Injectable()\r\nexport class SdEditorHandlerColumnPipe implements PipeTransform {\r\n constructor(private zone: NgZone) { }\r\n #visible = (col: SdGridMaterialColumn, item: SdItem) => {\r\n if (col.type === 'children' || col.type === 'children-col') {\r\n return false;\r\n }\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (col.editor) {\r\n const isDisabled = typeof (col.editor.disabled) === 'function' ? col.editor.disabled(item) : col.editor.disabled;\r\n if (isDisabled) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n transform(value: any, item: SdItem, gridOption: SdGridMaterialOption) {\r\n const key = CalculateSdId(item);\r\n if (item.sdId === key && item.editorHandlerColumn) {\r\n return true;\r\n }\r\n item.editorHandlerColumn = item.editorHandlerColumn || {};\r\n const { columns } = gridOption;\r\n for (const col of columns) {\r\n if (col.type === 'children-col') {\r\n for (const childCol of col.children) {\r\n item.editorHandlerColumn[childCol.field] = {\r\n ...item.editorHandlerColumn[childCol.field],\r\n visible: this.#visible(childCol, item)\r\n }\r\n }\r\n } else {\r\n item.editorHandlerColumn[col.field] = {\r\n ...item.editorHandlerColumn[col.field],\r\n visible: this.#visible(col, item)\r\n }\r\n }\r\n }\r\n this.zone.run(() => {\r\n item.sdId = CalculateSdId(item);\r\n });\r\n item.sdId = key;\r\n return true;\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 SdGridMaterialExternalFilter,\r\n SdGridMaterialFilterConfiguration,\r\n SdGridMaterialFilterRegister,\r\n SdGridMaterialFilterValue,\r\n} from \"./grid-filter.model\";\r\nimport { SdGridMaterialColumn } from \"../../models/grid-column.model\";\r\nimport { SdMaterialFilterDefDirective } from \"../../directives/sd-material-filter-def.directive\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\n@Injectable()\r\nexport class SdGridFilterService {\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 key: string,\r\n args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }\r\n ) => {\r\n let cacheSession = false;\r\n if (!key) {\r\n const { columns, externalFilters } = args;\r\n key = hash({\r\n columns,\r\n externalFilters,\r\n });\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 const t1 = this.settingService.create<SdGridMaterialFilterConfiguration>(\r\n {\r\n prefix: this.#filterConfiguration,\r\n key,\r\n },\r\n {\r\n type: cacheSession ? \"session\" : undefined,\r\n }\r\n );\r\n const defaultConfiguration = this.#loadDefaultConfiguration(\r\n args,\r\n t1.get()\r\n );\r\n const t2 = this.settingService.create<SdGridMaterialFilterValue>(\r\n {\r\n prefix: this.#filterValue,\r\n key,\r\n },\r\n {\r\n type: cacheSession ? \"session\" : undefined,\r\n }\r\n );\r\n const defaultValue = this.#loadDefaultValue(args, t2.get());\r\n const filterConfiguration =\r\n this.settingService.create<SdGridMaterialFilterConfiguration>(\r\n {\r\n prefix: this.#filterConfiguration,\r\n key,\r\n },\r\n {\r\n default: defaultConfiguration,\r\n type: cacheSession ? \"session\" : undefined,\r\n }\r\n );\r\n const filterValue = this.settingService.create<SdGridMaterialFilterValue>(\r\n {\r\n prefix: this.#filterValue,\r\n key,\r\n },\r\n {\r\n default: defaultValue,\r\n type: cacheSession ? \"session\" : undefined,\r\n }\r\n );\r\n const configurationGet = (\r\n configuration: SdGridMaterialFilterConfiguration\r\n ) => {\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];\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] =\r\n configuration?.inlineExternal?.[item.field];\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] =\r\n configuration?.inlineFilterDef?.[item.sdMaterialFilterDef];\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 const valueGet = (value: SdGridMaterialFilterValue) => {\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];\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,\r\n to: value?.externalFilter?.[item.field]?.to,\r\n };\r\n } else {\r\n externalFilter[item.field] = value?.externalFilter?.[item.field];\r\n }\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] =\r\n value?.filterDef?.[item.sdMaterialFilterDef];\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 this.#cache[key] = {\r\n configuration: {\r\n get: (): SdGridMaterialFilterConfiguration => {\r\n const configuration = filterConfiguration.get();\r\n return configurationGet(configuration);\r\n },\r\n set: (\r\n configuration: Partial<SdGridMaterialFilterConfiguration>\r\n ): SdGridMaterialFilterConfiguration => {\r\n const keys = Object.keys(configuration || {});\r\n const current = filterConfiguration.get();\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = current;\r\n const updatedConfiguration = {\r\n // Filter column\r\n inlineColumn: keys.includes(\"inlineColumn\")\r\n ? configuration?.inlineColumn || {}\r\n : inlineColumn,\r\n // Filter external\r\n inlineExternal: keys.includes(\"inlineExternal\")\r\n ? configuration?.inlineExternal || {}\r\n : inlineExternal,\r\n // Filter def\r\n inlineFilterDef: keys.includes(\"inlineFilterDef\")\r\n ? configuration?.inlineFilterDef || {}\r\n : inlineFilterDef,\r\n };\r\n filterConfiguration.set(updatedConfiguration);\r\n return updatedConfiguration;\r\n },\r\n remove: () => {\r\n filterConfiguration.remove();\r\n },\r\n observer: filterConfiguration.observer.pipe(map(configurationGet)),\r\n },\r\n value: {\r\n get: (): SdGridMaterialFilterValue => {\r\n const configuration = filterValue.get();\r\n return valueGet(configuration);\r\n },\r\n set: (\r\n configuration: Partial<SdGridMaterialFilterValue>\r\n ): SdGridMaterialFilterValue => {\r\n const keys = Object.keys(configuration || {});\r\n const current = filterValue.get();\r\n const { columnFilter, externalFilter, filterDef } = current;\r\n const updatedConfiguration = {\r\n // Filter column\r\n columnFilter: keys.includes(\"columnFilter\")\r\n ? configuration?.columnFilter || {}\r\n : columnFilter,\r\n // Filter external\r\n externalFilter: keys.includes(\"externalFilter\")\r\n ? configuration?.externalFilter || {}\r\n : externalFilter,\r\n // Filter def\r\n filterDef: keys.includes(\"filterDef\")\r\n ? configuration?.filterDef || {}\r\n : filterDef,\r\n };\r\n filterValue.set(updatedConfiguration);\r\n return updatedConfiguration;\r\n },\r\n remove: () => {\r\n filterValue.remove();\r\n },\r\n observer: filterValue.observer.pipe(map(valueGet)),\r\n },\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #loadDefaultConfiguration = (\r\n args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n configuration: SdGridMaterialFilterConfiguration\r\n ): SdGridMaterialFilterConfiguration => {\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] =\r\n configuration?.inlineColumn?.[item.field] ??\r\n item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] =\r\n configuration?.inlineExternal?.[item.field] ?? item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] =\r\n configuration?.inlineFilterDef?.[item.sdMaterialFilterDef] ??\r\n 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 #loadDefaultValue = (\r\n args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n value: SdGridMaterialFilterValue\r\n ): SdGridMaterialFilterValue => {\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] =\r\n 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] =\r\n 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] =\r\n 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} from \"@angular/core\";\r\nimport { MatPaginator } from \"@angular/material/paginator\";\r\nimport { MatSort } from \"@angular/material/sort\";\r\nimport {\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger,\r\n} from \"@angular/animations\";\r\nimport * as uuid from \"uuid\";\r\nimport {\r\n SdGridMaterialFilterRegister,\r\n SdGridMaterialFilterRequest,\r\n} from \"./services/grid-filter/grid-filter.model\";\r\nimport { SdGridMaterialOption } from \"./models/grid-option.model\";\r\nimport {\r\n GRID_MATERIAL_CONFIG,\r\n DEFAULT_GRID_MATERIAL_CONFIG,\r\n ISdGridMaterialConfiguration,\r\n} from \"./models/grid-configuration.model\";\r\nimport {\r\n Subscription,\r\n isObservable,\r\n Observable,\r\n BehaviorSubject,\r\n Subject,\r\n combineLatest,\r\n} from \"rxjs\";\r\nimport { SdNotifyService } from \"@sd-angular/core/notify\";\r\nimport { CdkDragDrop, moveItemInArray } from \"@angular/cdk/drag-drop\";\r\nimport { SdGridMaterialColumn } from \"./models/grid-column.model\";\r\nimport { SdMaterialCellDefDirective } from \"./directives/sd-material-cell-def.directive\";\r\nimport {\r\n debounceTime,\r\n filter,\r\n map,\r\n startWith,\r\n switchMap,\r\n} 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 { SdPopupExport } from \"./components/popup-export/popup-export.component\";\r\nimport {\r\n SdExportColumn,\r\n SdExportFile,\r\n SdExportService,\r\n} from \"@sd-angular/core/export\";\r\nimport { SdGridConfiguration } from \"./models/grid-config.model\";\r\nimport { SdGridConfigurationService } from \"./services/grid-configuration.service\";\r\nimport { SdGridMaterialExportColumn } from \"./models/grid-export.model\";\r\nimport { SdQuickAction } from \"@sd-angular/core/quick-action\";\r\nimport { SdGridMaterialItem, SdItem } from \"./models/grid.model\";\r\nimport { SdColumnValuesPipe } from \"./pipes/column-values.pipe\";\r\nimport { SdEditorHandlerColumnPipe } from \"./pipes/editor-handler-column.pipe\";\r\nimport { SdScrollDirective } from \"@sd-angular/core/common\";\r\nimport { SdGridFilterService } from \"./services/grid-filter/grid-filter.service\";\r\n\r\n@Component({\r\n selector: \"sd-grid-material\",\r\n templateUrl: \"./grid-material.component.html\",\r\n styleUrls: [\"./grid-material.component.scss\"],\r\n animations: [\r\n trigger(\"detailExpand\", [\r\n state(\r\n \"collapsed\",\r\n style({ height: \"0\", minHeight: \"0\", visibility: \"hidden\" })\r\n ),\r\n state(\"expanded\", style({ height: \"*\", visibility: \"visible\" })),\r\n transition(\r\n \"expanded <=> collapsed\",\r\n animate(\"225ms cubic-bezier(0.4, 0.0, 0.2, 1)\")\r\n ),\r\n ]),\r\n ],\r\n})\r\nexport class SdGridMaterial<T = any>\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\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: SdGridMaterialOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.gridOption = option;\r\n // this.#loadFilterRegister();\r\n this.#loadCompleted = false;\r\n // this.#reload.next({\r\n // force: true,\r\n // });\r\n const configuration = this.gridConfigurationService.init(\r\n this.key,\r\n this.gridOption\r\n );\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<SdGridMaterialOption>();\r\n\r\n gridOption: SdGridMaterialOption;\r\n #localItems: any[] = [];\r\n items: SdGridMaterialItem<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 // Export\r\n @ViewChild(SdPopupExport) sdPopupExport: SdPopupExport;\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 =\r\n new QueryList<SdMaterialCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdMaterialCellDefDirective;\r\n } = {};\r\n\r\n // Footer Def\r\n @ContentChildren(SdMaterialFooterDefDirective) sdFooterDefs =\r\n 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 =\r\n new QueryList<SdMaterialFilterDefDirective>();\r\n filterDefs: SdMaterialFilterDefDirective[] = [];\r\n\r\n // Filter\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(GRID_MATERIAL_CONFIG)\r\n @Optional()\r\n public configuration: ISdGridMaterialConfiguration,\r\n private gridConfigurationService: SdGridConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private columnValuesPipe: SdColumnValuesPipe,\r\n private gridFilterService: SdGridFilterService,\r\n private editorHandlerColumnPipe: SdEditorHandlerColumnPipe\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(\r\n filterInfo,\r\n !this.#loadCompleted || data.force\r\n );\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(\r\n this.sdCellDefs.changes.pipe(startWith([])).subscribe(this.#initCellDef)\r\n );\r\n this.#subscription.add(\r\n this.sdFooterDefs.changes\r\n .pipe(startWith([]))\r\n .subscribe(this.#initFooterDef)\r\n );\r\n this.#subscription.add(\r\n this.sdFilterDefs.changes\r\n .pipe(startWith([]))\r\n .subscribe(this.#initFilterDef)\r\n );\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((a) => {\r\n this.#loadFilterRegister();\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 // if (this.filterDefs?.length) {\r\n // this.#loadFilterRegister();\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 = (\r\n pageNumber: number,\r\n pageSize: number\r\n ): SdGridMaterialFilterRequest => {\r\n const { columnFilter, externalFilter, filterDef } =\r\n this.filterRegister.value.get();\r\n return {\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: SdGridMaterialOption) => {\r\n // Init pagination\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize:\r\n option?.paginate?.pageSize ??\r\n this.configuration?.paginate?.pageSize ??\r\n DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pageSize,\r\n pages:\r\n option?.paginate?.pages ??\r\n this.configuration?.paginate?.pages ??\r\n DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false,\r\n };\r\n return option;\r\n };\r\n\r\n #loadFilterRegister = () => {\r\n // Init filter\r\n if (this.gridOption) {\r\n const hasRegister = !!this.filterRegister;\r\n this.filterRegister = this.gridFilterService.register(\r\n this.gridOption?.filter?.key,\r\n {\r\n columns: this.gridOption?.columns,\r\n externalFilters: this.gridOption?.filter?.externalFilters,\r\n filterDefs: this.filterDefs,\r\n }\r\n );\r\n if (!hasRegister) {\r\n this.#subscription.add(\r\n this.filterRegister.value.observer\r\n .pipe(\r\n debounceTime(500),\r\n map((filterValue) => {\r\n this.columnFilter = filterValue.columnFilter;\r\n this.#paginator.pageIndex = 0;\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n } else {\r\n this.#reload.next({\r\n force: true,\r\n });\r\n }\r\n }\r\n };\r\n\r\n #filterLocal = (\r\n localItems: any[],\r\n filterInfo: SdGridMaterialFilterRequest\r\n ) => {\r\n const { columns } = this.gridOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } =\r\n filterInfo;\r\n const items = localItems.filter((item) => {\r\n for (const column of columns) {\r\n const { field, type } = column;\r\n const filterValue: string = (rawColumnFilter[field] || \"\")\r\n .toString()\r\n .trim()\r\n .toLowerCase();\r\n const columnValue: string = (item[field] || \"\")\r\n .toString()\r\n .trim()\r\n .toLowerCase();\r\n if (filterValue) {\r\n if (\r\n !columnValue &&\r\n type !== \"datetime\" &&\r\n type !== \"date\" &&\r\n type !== \"time\"\r\n ) {\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\r\n .replace(\">=\", \"\")\r\n .replace(\"<=\", \"\")\r\n .replace(\">\", \"\")\r\n .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 (\r\n filterValue === \"1\" &&\r\n columnValue !== \"1\" &&\r\n columnValue !== \"true\"\r\n ) {\r\n return false;\r\n } else if (\r\n filterValue === \"0\" &&\r\n columnValue !== \"0\" &&\r\n columnValue !== \"false\"\r\n ) {\r\n return false;\r\n }\r\n } else if (\r\n type === \"datetime\" ||\r\n type === \"date\" ||\r\n type === \"time\"\r\n ) {\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((current, next) => {\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 (\r\n index >= pageNumber * pageSize && index < (pageNumber + 1) * pageSize\r\n );\r\n }),\r\n total: items.length,\r\n };\r\n };\r\n\r\n #getFilter = (): SdGridMaterialFilterRequest => {\r\n const { columnFilter, externalFilter, filterDef } =\r\n this.filterRegister.value.get();\r\n return {\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:\r\n this.#paginator?.pageSize || this.gridOption?.paginate?.pageSize || 50,\r\n };\r\n };\r\n\r\n #load = async (\r\n filterReq: SdGridMaterialFilterRequest,\r\n force: boolean = true\r\n ) => {\r\n this.isLoading = true;\r\n if (this.gridOption.type === \"server\") {\r\n try {\r\n let result = this.gridOption.items(filterReq);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n const data = await result;\r\n return {\r\n items: data?.items || [],\r\n total: data?.total || 0,\r\n };\r\n } catch (error) {\r\n console.error(error);\r\n this.notifyService.notify.warning(\"Có lỗi xảy ra\");\r\n return {\r\n items: [],\r\n total: 0,\r\n };\r\n } finally {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n } else {\r\n if (force) {\r\n try {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n this.#localItems = (await results) || [];\r\n } else {\r\n this.#localItems = results || [];\r\n }\r\n if (!Array.isArray(this.#localItems)) {\r\n this.notifyService.notify.warning(\"Dữ liệu không phải là một mảng\");\r\n this.#localItems = [];\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n this.notifyService.notify.warning(\"Có lỗi xảy ra\");\r\n this.#localItems = [];\r\n } finally {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n return this.#filterLocal(this.#localItems, filterReq);\r\n }\r\n };\r\n\r\n #render = async (args: { items: any[]; total: number }) => {\r\n this.sdScroll?.scrollTop();\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n // this.isHiddenPaginator = this.filterInfo.pageNumber === 0 && this.total <= this.filterInfo.pageSize;\r\n this.items.forEach((item: SdItem) => {\r\n item.originItem = { ...item };\r\n });\r\n await this.gridOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every((e) => e.isSelected);\r\n this.#updateSelectedItems();\r\n };\r\n\r\n reload = async (force: boolean = true) => {\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(\r\n this.#filterExportInfo(pageNumber, pageSize)\r\n );\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 if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\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 drop(event: CdkDragDrop<string[]>, columns: string[]) {\r\n moveItemInArray(columns, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n #allColumns = (): SdGridMaterialColumn[] => {\r\n const columns: SdGridMaterialColumn[] = [];\r\n this.gridOption.columns\r\n .filter((e) => !e.export?.disabled)\r\n .forEach((column) => {\r\n if (column.type === \"image\") {\r\n return;\r\n }\r\n if (column.type === \"children\") {\r\n column.children\r\n ?.filter((e) => !e.export?.disabled)\r\n .forEach((childColumn) => {\r\n if (childColumn.type === \"image\") {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === \"children-col\") {\r\n column.children\r\n ?.filter((e) => !e.export?.disabled)\r\n .forEach((childColumn) => {\r\n if (childColumn.type === \"image\") {\r\n return;\r\n }\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 = (): SdGridMaterialExportColumn[] => {\r\n return (\r\n this.gridOption.export?.columns?.filter((e) => !e.export?.disabled) || []\r\n );\r\n };\r\n\r\n #onExport = async (args: {\r\n file: SdExportFile;\r\n columns: SdExportColumn[];\r\n isCSV: boolean;\r\n }) => {\r\n try {\r\n const { file, isCSV } = args;\r\n let { columns } = args;\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(\r\n (e) => e.field === exportColumn.field\r\n );\r\n const exportedColumn = allExportedColumns.find(\r\n (e) => e.field === exportColumn.field\r\n );\r\n if (exportedColumn?.transform) {\r\n obj[exportedColumn.field] = exportedColumn.transform(\r\n item[exportedColumn.field],\r\n item\r\n );\r\n return;\r\n }\r\n if (!column) {\r\n return;\r\n }\r\n if (column.type === \"children\" || column.type === \"children-col\") {\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 (\r\n item[column.field] === undefined ||\r\n item[column.field] === null ||\r\n item[column.field] === \"\"\r\n ) {\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 (\r\n obj[column.field] !== undefined &&\r\n obj[column.field] !== null\r\n ) {\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(\r\n item[column.field],\r\n column\r\n );\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n for (const exportColumn of columns) {\r\n await handle(exportColumn);\r\n }\r\n items.push(obj);\r\n }\r\n };\r\n while (pageNumber * pageSize < total) {\r\n promises.push(this.#exportedItems(pageNumber, pageSize));\r\n pageNumber++;\r\n if (promises.length < batch) {\r\n continue;\r\n }\r\n await handleData();\r\n }\r\n if (promises.length > 0) {\r\n await handleData();\r\n }\r\n if (!file?.filePath) {\r\n 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 }\r\n await this.exportService.exportByTemplate({\r\n filePath: file.filePath,\r\n fileName: file.fileName,\r\n columns,\r\n items,\r\n });\r\n } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n onExport = async (args: {\r\n file: SdExportFile;\r\n columns: SdExportColumn[];\r\n isCSV: boolean;\r\n }) => {\r\n this.#onExport(args);\r\n };\r\n\r\n onFilterChange = () => {\r\n this.#paginator.pageIndex = 0;\r\n this.reload(false);\r\n };\r\n\r\n onExpand = async (rowData: SdGridMaterialItem<T>) => {\r\n if (this.gridOption.subInformation?.always) {\r\n return;\r\n }\r\n if (rowData.isExpanding) {\r\n return;\r\n }\r\n if (rowData.isExpanded) {\r\n rowData.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.subInformation?.onExpand?.(rowData);\r\n if (!this.gridOption.subInformation?.multiple) {\r\n this.items.forEach(\r\n (item) => (item.isExpanding = item.isExpanded = false)\r\n );\r\n }\r\n if (data instanceof Promise) {\r\n rowData.isExpanding = true;\r\n data\r\n .then((res) => {\r\n rowData.expandDetail = res;\r\n rowData.isExpanded = true;\r\n })\r\n .finally(() => (rowData.isExpanding = false));\r\n } else {\r\n rowData.expandDetail = data;\r\n rowData.isExpanded = true;\r\n }\r\n };\r\n\r\n onSelect = (rowData: SdGridMaterialItem<T>) => {\r\n if (rowData?.sdGroup?.items?.length) {\r\n rowData?.sdGroup?.items.forEach(\r\n (e) => (e.isSelected = rowData.isSelected)\r\n );\r\n this.gridOption.selection?.onSelect?.(\r\n rowData,\r\n this.items.filter((e) => e.isSelected)\r\n );\r\n this.isSelectAll = this.items.every((e) => e.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.gridOption.selection?.single) {\r\n this.items\r\n .filter((e) => e !== rowData)\r\n .forEach((e) => (e.isSelected = false));\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selection?.onSelect?.(\r\n rowData,\r\n this.items.filter((e) => e.isSelected)\r\n );\r\n this.isSelectAll = this.items.every((e) => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n };\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach((e) => {\r\n if (\r\n e.selectable &&\r\n (!this.gridOption?.selection?.actions?.length || e.actions?.length)\r\n ) {\r\n e.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.gridOption.selection?.onSelectAll?.(\r\n this.items.filter((e) => e.isSelected)\r\n );\r\n this.#updateSelectedItems();\r\n };\r\n\r\n onClearSelection = (items?: SdGridMaterialItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach((e) => (e.isSelected = false));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedItems = this.items\r\n .filter((item) => item.isSelected)\r\n .map((item) => {\r\n const {\r\n isSelected,\r\n isExpanded,\r\n isExpanding,\r\n expandDetail,\r\n editorErrorMessage,\r\n editorHandlerColumn,\r\n editorHandlerRow,\r\n editorStatus,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n // Giữ lại các trường thông tin cho selectable (action, groupedAction, sdGroup, selectable)\r\n ...result\r\n } = item;\r\n return result;\r\n }) as T[];\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: {\r\n columnFilter: any;\r\n externalFilter: any;\r\n filterDef: any;\r\n }) => {\r\n const { columnFilter, externalFilter, filterDef } = args || {};\r\n this.filterRegister.value.set({\r\n columnFilter,\r\n externalFilter,\r\n filterDef,\r\n });\r\n // if (this.gridOption?.filter?.inlineColumn && args?.columnFilter) {\r\n // this.columnFilter = args.columnFilter;\r\n // }\r\n // this.gridFilter?.setFilter(args);\r\n };\r\n\r\n onCreate = () => {\r\n const { type, editor, columns } = this.gridOption;\r\n if (!editor?.addable) {\r\n return;\r\n }\r\n const item: SdGridMaterialItem = {};\r\n // Gán giá trị mặc định\r\n columns.forEach((column) => {\r\n if (column.type === \"values\") {\r\n item[column.field] = \"\";\r\n } else if (column.type === \"bool\") {\r\n item[column.field] = true;\r\n } else if (column.type === \"number\") {\r\n item[column.field] = null;\r\n }\r\n });\r\n if (type === \"local\") {\r\n editor.onAdd?.(item, this.#localItems);\r\n } else {\r\n editor.onAdd?.(item, this.items);\r\n }\r\n // Đưa item lên dòng đầu tiên nếu type khác popup\r\n if (editor.type !== \"popup\") {\r\n if (editor.addToLast) {\r\n if (type === \"local\") {\r\n this.#localItems = [...this.#localItems, item];\r\n }\r\n this.items = [...this.items, item];\r\n } else {\r\n if (type === \"local\") {\r\n this.#localItems = [item, ...this.#localItems];\r\n }\r\n this.items = [item, ...this.items];\r\n }\r\n }\r\n item.editorStatus = \"create\";\r\n item.editorHandlerRow = {\r\n temporary: { ...item },\r\n };\r\n };\r\n onUpdate = (item: SdItem) => {\r\n const { editor } = this.gridOption;\r\n item.editorStatus = \"update\";\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n temporary: { ...item },\r\n };\r\n // this.generateEditorHanlder(item);\r\n if (editor.type === \"popup\") {\r\n // Xử lý case popup\r\n // this.sdGridPopupEditor.open(item, columns, isModified);\r\n }\r\n this.ref.detectChanges();\r\n };\r\n onSave = async (item: SdGridMaterialItem<T>) => {\r\n if (item.editorHandlerRow.saving) {\r\n return;\r\n }\r\n const { editor } = this.gridOption;\r\n try {\r\n item.editorHandlerRow.saving = true;\r\n if (editor.validate) {\r\n const result = editor.validate(item, this.items.indexOf(item));\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n throw message;\r\n }\r\n } else {\r\n if (result) {\r\n throw result;\r\n }\r\n }\r\n }\r\n if (editor.onSave) {\r\n const result = editor.onSave(item);\r\n if (result instanceof Promise) {\r\n await result;\r\n }\r\n }\r\n\r\n if (item.editorStatus === \"create\" && editor.type === \"popup\") {\r\n if (this.gridOption.type === \"local\") {\r\n this.items.splice(0, 0, item);\r\n }\r\n // this.viewItems.splice(0, 0, item);\r\n }\r\n\r\n item.editorStatus = undefined;\r\n // this.generateEditorHanlder(item);\r\n } catch (err) {\r\n this.notifyService.notify.warning(err);\r\n } finally {\r\n item.editorHandlerRow.saving = false;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n onCancel = (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor.type === \"inline\") {\r\n if (this.gridOption.type === \"local\") {\r\n const idx2 = this.#localItems.indexOf(item);\r\n this.#localItems.splice(idx2, 1);\r\n this.#localItems = [...this.#localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n if (this.gridOption.type === \"local\") {\r\n editor?.onCancel?.(item, this.#localItems);\r\n } else {\r\n editor?.onCancel?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n if (editor.type === \"focus\") {\r\n if (item.editorStatus === \"create\") {\r\n if (this.gridOption.type === \"local\") {\r\n const idx2 = this.#localItems.indexOf(item);\r\n this.#localItems.splice(idx2, 1);\r\n this.#localItems = [...this.#localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n } else {\r\n Object.assign(item, item.editorHandlerRow.temporary);\r\n }\r\n }\r\n item.editorStatus = undefined;\r\n this.ref.detectChanges();\r\n };\r\n onRemove = async (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor?.beforeRemove) {\r\n const beforeRemove = editor?.beforeRemove(item);\r\n if (beforeRemove instanceof Promise) {\r\n const result = await beforeRemove;\r\n if (!result) {\r\n return;\r\n }\r\n } else {\r\n if (!beforeRemove) {\r\n return;\r\n }\r\n }\r\n }\r\n if (editor.type === \"inline\") {\r\n if (this.gridOption.type === \"local\") {\r\n const idx2 = this.#localItems.indexOf(item);\r\n this.#localItems.splice(idx2, 1);\r\n this.#localItems = [...this.#localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n if (this.gridOption.type === \"local\") {\r\n editor?.onRemove?.(item, this.#localItems);\r\n } else {\r\n editor?.onRemove?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n };\r\n\r\n add = (idx: number, item: T) => {\r\n if (this.items.length > idx) {\r\n this.items.splice(idx, 0, item);\r\n this.items = [...this.items];\r\n } else {\r\n this.items = [...this.items, item];\r\n }\r\n };\r\n\r\n update = (idx: number, item: T) => {\r\n if (this.items[idx]) {\r\n Object.assign(this.items[idx], item);\r\n this.items = [...this.items];\r\n }\r\n };\r\n\r\n remove = (idx: number) => {\r\n if (this.items[idx]) {\r\n this.items.splice(idx, 1);\r\n this.items = [...this.items];\r\n }\r\n };\r\n\r\n refreshItem = (idx: number) => {\r\n const item = this.items[idx];\r\n this.editorHandlerColumnPipe.transform(\r\n item.sdVersion,\r\n item,\r\n this.gridOption\r\n );\r\n };\r\n\r\n get editedItems(): (T & { editorErrorMessage: string })[] {\r\n return this.items\r\n .filter((item) => {\r\n if (!item.originItem) {\r\n return true;\r\n }\r\n if (\r\n Object.keys(item.originItem).some(\r\n (key) => item.originItem[key] !== item[key]\r\n )\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n })\r\n .map((item) => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n editorErrorMessage,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result\r\n } = item;\r\n return {\r\n ...result,\r\n editorErrorMessage,\r\n } as any;\r\n });\r\n }\r\n\r\n get gridItems(): T[] {\r\n return this.items.map((item) => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result\r\n } = item;\r\n return result as T;\r\n });\r\n }\r\n\r\n get localItems(): T[] {\r\n return this.#localItems;\r\n }\r\n\r\n get localGridItems(): T[] {\r\n return this.#localItems.map((item) => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result\r\n } = item;\r\n return result as T;\r\n });\r\n }\r\n\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n get isEditing() {\r\n return this.items.some((e) => e.editorStatus !== undefined);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand, SdGridMaterialCommandNormal } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: any, commands: SdGridMaterialCommand[]): Promise<SdGridMaterialCommand[]> {\r\n const results: SdGridMaterialCommand[] = [];\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: SdGridMaterialCommandNormal[] = [];\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 { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandDisable'\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: any, command: SdGridMaterialCommand): 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 { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, 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 { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, 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 { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn): 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 { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.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: SdGridMaterialColumn;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn, 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 { SdGridMaterialExternalFilter } from '../services/grid-filter/grid-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdGridMaterialExternalFilter[], field?: string): SdGridMaterialExternalFilter[] {\r\n const results: SdGridMaterialExternalFilter[] = [];\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 { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdGridMaterialColumn[], field?: string): SdGridMaterialColumn[] {\r\n const results: SdGridMaterialColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\r\n if (column.type === 'image') {\r\n continue;\r\n }\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 { Component, Input } from '@angular/core';\r\nimport { SdGridMaterialColumnChildren } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-children-view',\r\n templateUrl: './desktop-cell-children-view.component.html',\r\n styleUrls: ['./desktop-cell-children-view.component.scss']\r\n})\r\nexport class SdDesktopCellChildrenView {\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumnChildren;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn[], item: any): SdGridMaterialColumn[] {\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 { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialChildColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnTitle'\r\n})\r\nexport class SdColumnTitlePipe implements PipeTransform {\r\n async transform(item: any, column: SdGridMaterialChildColumn): Promise<string> {\r\n if (!column?.title) {\r\n return '';\r\n }\r\n const result = column?.dynamicTitle?.(item);\r\n if (result instanceof Promise) {\r\n return (await result) || column?.title;\r\n }\r\n return result || column?.title;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../../models/grid-command.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: any;\r\n @Input() commands: SdGridMaterialCommand[] = [];\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 { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn): {\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 { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridConfiguration, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../services/grid-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: SdGridConfigurationService) { }\r\n transform(configuration: SdGridConfiguration, gridOption: SdGridMaterialOption, sdSubInformation: SdMaterialSubInformationDefDirective): SdGridConfigurationResult {\r\n return this.gridConfigurationService.generateConfigurationResult(configuration, gridOption, sdSubInformation);\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 { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationResult, SdGridConfiguration, SdGridConfigurationCache, SdColumnConfiguration } from '../../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-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 { SdGridMaterialColumn } from '../../models/grid-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: SdGridMaterialOption;\r\n @Input() key: string;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdGridMaterialColumn>;\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: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n }\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 isGeneratedColumn: true,\r\n generatedColumns: this.configuration.columns.filter(e => this.selected[e.origin?.field]).map(e => e.origin?.field)\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<SdGridMaterialColumn[]>) {\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 { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn): 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 { SdGridMaterialAction, SdGridMaterialActionNormal, SdGridMaterialActionSimple } from '../models/grid-action.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdGridMaterialAction): SdGridMaterialActionSimple => {\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: SdItem[], actions: SdGridMaterialAction[]): SdGridMaterialActionSimple[] => {\r\n const results: SdGridMaterialAction[] = [];\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: SdGridMaterialActionNormal[] = [];\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.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.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 { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: SdItem[], rowData: SdItem, selection: SdGridMaterialSelection): boolean => {\r\n const { disabled, actions } = selection;\r\n if (!actions?.length) {\r\n if (!disabled) {\r\n rowData.selectable = true;\r\n return false;\r\n }\r\n rowData.selectable = !disabled(rowData, selectedItems);\r\n return !rowData.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.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.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.actions.includes(hash(childAction))) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if(rowData.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 { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionVisibleSelectAll'\r\n})\r\nexport class SdSelectionVisibleSelectAllPipe implements PipeTransform {\r\n transform = async (items: SdItem[], selection: SdGridMaterialSelection): 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.actions?.length);\r\n if (first) {\r\n for (const action of first.actions) {\r\n if (items.filter(t => t.actions?.length).every(e => e.actions.includes(action))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSetting, SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialConfigOption } from '../../models/grid-config.model';\r\nimport { SdGeneratedColumn } from './generated-column.model';\r\nimport { SdSettingServer } from '@sd-angular/core/setting';\r\n\r\n@Injectable()\r\nexport class SdGeneratedColumnService {\r\n #cache: {\r\n [key: string]: SdSetting<SdGeneratedColumn[]> | SdSettingServer<SdGeneratedColumn[]>\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService) {\r\n }\r\n\r\n load = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '260f5e94-5865-4425-8ced-b9c083c390dd',\r\n key: configuration.key\r\n });\r\n if(!this.#cache[key]) {\r\n if(configuration?.storage === 'server') {\r\n this.#cache[key] = this.settingService.createServer<SdGeneratedColumn[]>(key, {\r\n args: configuration?.args,\r\n default: []\r\n });\r\n } else {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: configuration?.storage,\r\n args: configuration?.args,\r\n default: []\r\n });\r\n }\r\n }\r\n return this.#cache[key];\r\n }\r\n\r\n loadSystem = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n if (!configuration?.systemColumn) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '8b8050ca-1f44-4860-bad3-20e646c0d68f',\r\n key: configuration.key\r\n });\r\n if(!this.#cache[key]) {\r\n if(configuration?.storage === 'server') {\r\n this.#cache[key] = this.settingService.createServer<SdGeneratedColumn[]>(key, {\r\n args: configuration?.systemColumn?.args,\r\n default: []\r\n });\r\n } else {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: configuration?.storage,\r\n args: configuration?.systemColumn?.args,\r\n default: []\r\n });\r\n }\r\n }\r\n return this.#cache[key];\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ChangeDetectorRef, Input, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { SdGeneratedColumnService } from '../../services/generated-column/generated-column.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdGeneratedColumn } from '../../services/generated-column/generated-column.model';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdSideDrawer } from '@sd-angular/core/side-drawer';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-dynamic-column',\r\n templateUrl: './dynamic-column.component.html',\r\n styleUrls: ['./dynamic-column.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDynamicColumn implements OnInit, OnDestroy {\r\n @ViewChild(SdSideDrawer) sideDrawer: SdSideDrawer;\r\n @Input() gridOption: SdGridMaterialOption;\r\n systemColumns: SdGeneratedColumn[];\r\n columns: SdGeneratedColumn[];\r\n #subscription = new Subscription();\r\n columnTypes = ['string', 'number', 'bool', 'date', 'datetime', 'time', 'values', 'children', 'children-col'];\r\n form = new FormGroup({});\r\n isDetail = false;\r\n detail: SdGeneratedColumn;\r\n originColumns: SdGridMaterialColumn[] = [];\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private generatedColumnService: SdGeneratedColumnService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (systemSetting) {\r\n this.#subscription?.add(systemSetting.observer.subscribe(columns => {\r\n this.systemColumns = columns;\r\n }));\r\n }\r\n if (setting) {\r\n this.#subscription?.add(setting.observer.subscribe(columns => {\r\n this.columns = columns;\r\n }));\r\n }\r\n this.originColumns = this.gridOption.columns.filter(e => e.type !== 'children' && e.type !== 'children-col');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onDetail = (column?: SdGeneratedColumn) => {\r\n this.detail = column || {\r\n field: uuid.v4(),\r\n title: '',\r\n type: 'string',\r\n isSystem: false,\r\n useTemplate: false\r\n };\r\n this.form.markAsUntouched();\r\n this.form.markAsPristine();\r\n this.isDetail = true;\r\n }\r\n\r\n onSave = () => {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (this.detail.isSystem) {\r\n if (!this.detail.id) {\r\n systemSetting.set([...this.systemColumns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n systemSetting.set([...this.systemColumns]);\r\n }\r\n } else {\r\n if (!this.detail.id) {\r\n setting.set([...this.columns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n setting.set([...this.columns]);\r\n }\r\n }\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 { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.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: SdGridMaterialColumn;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\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 { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn, SdGridMaterialColumnValues } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-editor',\r\n templateUrl: './desktop-cell-editor.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellEditor {\r\n @Input() sdId: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n\r\n onChange = (selected: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n this.column?.editor?.change?.(this.item, selected);\r\n }\r\n\r\n editorOnAdd = () => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.add?.(this.item);\r\n }\r\n }\r\n\r\n editorOnEdit = (option: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.edit?.(option, this.item);\r\n }\r\n }\r\n\r\n editorOnDelete = (option: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.delete?.(option, this.item);\r\n }\r\n }\r\n}\r\n","import { NgZone, Pipe, PipeTransform } from '@angular/core';\r\nimport { CalculateSdId } from '../functions/calculate-sd-id';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { EditorHandlerRow, SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorHandlerRow'\r\n})\r\nexport class SdEditorHandlerRowPipe implements PipeTransform {\r\n constructor(private zone: NgZone) { }\r\n #visible = (col: SdGridMaterialColumn, item: SdItem) => {\r\n if (col.type === 'children' || col.type === 'children-col') {\r\n return false;\r\n }\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (col.editor) {\r\n const isDisabled = typeof (col.editor.disabled) === 'function' ? col.editor.disabled(item) : col.editor.disabled;\r\n if (isDisabled) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n transform(status: 'create' | 'update', item: SdItem, gridOption: SdGridMaterialOption): EditorHandlerRow {\r\n const { editor } = gridOption;\r\n if (!editor) {\r\n return null;\r\n }\r\n let isDisabled = false;\r\n if (typeof (editor?.disabled) === 'function') {\r\n isDisabled = editor.disabled(item);\r\n } else {\r\n isDisabled = editor?.disabled;\r\n }\r\n if (editor.type === 'inline') {\r\n const removable = editor.removable;\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: !isDisabled,\r\n editable: false,\r\n removable: status !== 'create' && (typeof (removable) === 'function' ? removable(item) : removable),\r\n savable: false,\r\n cancelable: !isDisabled && status === 'create'\r\n }\r\n } else if (editor.type === 'focus') {\r\n if (isDisabled) {\r\n return null;\r\n }\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: !!status,\r\n editable: !status,\r\n removable: false,\r\n savable: !!status,\r\n cancelable: !!status\r\n }\r\n } else if (editor.type === 'popup') {\r\n if (isDisabled) {\r\n return null;\r\n }\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: false,\r\n editable: !status,\r\n removable: false,\r\n savable: false,\r\n cancelable: false\r\n }\r\n }\r\n item.editorHandlerColumn = item.editorHandlerColumn || {};\r\n const { columns } = gridOption;\r\n for (const col of columns) {\r\n if (col.type === 'children-col') {\r\n for (const childCol of col.children) {\r\n item.editorHandlerColumn[childCol.field] = {\r\n ...item.editorHandlerColumn[childCol.field],\r\n visible: this.#visible(childCol, item)\r\n }\r\n }\r\n } else {\r\n item.editorHandlerColumn[col.field] = {\r\n ...item.editorHandlerColumn[col.field],\r\n visible: this.#visible(col, item)\r\n }\r\n }\r\n }\r\n this.zone.run(() => {\r\n item.sdId = CalculateSdId(item);\r\n });\r\n return item.editorHandlerRow;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorValidate'\r\n})\r\nexport class SdEditorValidatePipe implements PipeTransform {\r\n #previous: Date;\r\n #delay = 200; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện validate\r\n async transform(sdId: string, item: SdItem, items: SdItem[], gridOption: SdGridMaterialOption): Promise<string> {\r\n const { editor } = gridOption;\r\n if (!editor.validate) {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n if(editor.type === 'popup') {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n if (editor.type === 'focus' && !item.editorStatus) {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n this.#previous = new Date();\r\n await new Promise(resolve => setTimeout(resolve, this.#delay));\r\n const now = new Date();\r\n const dif = now.getTime() - this.#previous.getTime();\r\n if (dif < this.#delay) {\r\n return;\r\n }\r\n const result = editor.validate(item, items?.indexOf(item));\r\n if (result instanceof Promise) {\r\n item.editorErrorMessage = await result;\r\n return;\r\n } else {\r\n item.editorErrorMessage = result;\r\n return;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\n@Pipe({\r\n name: 'sdStyleRowCss'\r\n})\r\nexport class SdStyleRowCss implements PipeTransform {\r\n transform(item: any, gridOption: SdGridMaterialOption) {\r\n return gridOption?.style?.rowCss?.(item) || {};\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-editor-validation',\r\n templateUrl: './desktop-editor-validation.component.html',\r\n styleUrls: ['./desktop-editor-validation.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopEditorValidation {\r\n @Input() sdId: string;\r\n @Input() item: any;\r\n @Input() items: any[];\r\n @Input() gridOption: SdGridMaterialOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdGridMaterialColumn } from '../../models/grid-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 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 @Input() column: SdGridMaterialColumn;\r\n @Output() filterChange = new EventEmitter();\r\n #valueChanges = new Subject();\r\n #subcription = new Subscription();\r\n constructor(\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.#subcription.add(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 ngOnDestroy() {\r\n this.#subcription.unsubscribe();\r\n }\r\n\r\n onFilterChange = () => {\r\n this.filterChange.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdItem, selection: SdGridMaterialSelection): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.actions = rowData.actions || [];\r\n if (!actions?.length) {\r\n rowData.selectable = true;\r\n return rowData.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.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.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.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.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.selectable = !!rowData.actions.length;\r\n if (!rowData.selectable || !groupedActions.length || rowData?.sdGroup?.items?.length) {\r\n return rowData.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.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../../models/grid-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: SdGridMaterialOption;\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 { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\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 rowData: any,\r\n column: SdGridMaterialColumn,\r\n gridOption: SdGridMaterialOption): Promise<SdCellView> {\r\n const { displayOnEmpty } = gridOption;\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 { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridMaterialItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdGroup'\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: any[], gridOption: SdGridMaterialOption): SdGridMaterialItem[] {\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]: SdGridMaterialItem[]\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: SdGridMaterialItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n results.push({\r\n sdGroup: {\r\n items: groupItem[key],\r\n htmlTemplate: htmlTemplate(groupItem[key])\r\n }\r\n });\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 { SdGridMaterial } from './grid-material.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 { SdGridFilterService } from './services/grid-filter/grid-filter.service';\r\nimport { SdDesktopCellChildrenView } from './components/desktop-cell-children-view/desktop-cell-children-view.component';\r\nimport { SdColumnChildrenFilterPipe } from './pipes/column-children-filter.pipe';\r\nimport { SdColumnTitlePipe } from './pipes/column-title.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 { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdPopupGridConfiguration } from './components/popup-grid-configuration/popup-grid-configuration.component';\r\nimport { SdGridConfigurationService } from './services/grid-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 { SdDynamicColumn } from './components/dynamic-column/dynamic-column.component';\r\nimport { SdGeneratedColumnService } from './services/generated-column/generated-column.service';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdDesktopCellEditor } from './components/desktop-cell-editor/desktop-cell-editor.component';\r\nimport { SdEditorHandlerRowPipe } from './pipes/editor-handler-row.pipe';\r\nimport { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';\r\nimport { SdEditorValidatePipe } from './pipes/editor-validate.pipe';\r\nimport { SdStyleRowCss } from './pipes/style-row-css.pipe';\r\nimport { SdDesktopEditorValidation } from './components/desktop-editor-validation/desktop-editor-validation.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 SdDesktopCellEditor,\r\n SdDesktopEditorValidation,\r\n SdDesktopCellView,\r\n SdDesktopCellChildrenView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdGridMaterial,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdPopupExport,\r\n SdPopupGridConfiguration,\r\n SdGridFilter,\r\n SdPopupFilter,\r\n SdDynamicColumn,\r\n\r\n // Pipes\r\n SdGridConfigurationResultPipe,\r\n SdColumnChildrenFilterPipe,\r\n SdColumnTitlePipe,\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 SdEditorHandlerRowPipe,\r\n SdEditorHandlerColumnPipe,\r\n SdEditorValidatePipe,\r\n SdStyleRowCss,\r\n SdCellViewPipe,\r\n SdGroupPipe\r\n ],\r\n exports: [\r\n SdGridMaterial,\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 SdGridFilterService,\r\n SdGridConfigurationService,\r\n SdGeneratedColumnService,\r\n SdColumnValuesPipe,\r\n SdEditorHandlerColumnPipe,\r\n {\r\n provide: MatPaginatorIntl, useClass: MatPaginatorIntlCro\r\n }\r\n ]\r\n})\r\nexport class SdGridMaterialModule {\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-cell-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-filter-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-footer-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-empty-data-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-sub-information-def.directive.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/grid-material/src/lib/models/grid-configuration.model.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/grid-filter/grid-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-export/popup-export.component.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-configuration.service.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-values.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/functions/calculate-sd-id.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-filter/grid-filter.service.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-html-template.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-transform.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-children-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-badge.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/grid-configuration-result.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-visible-select-all.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/services/generated-column/generated-column.service.ts","../../../../projects/sd-core/grid-material/src/lib/components/dynamic-column/dynamic-column.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-row.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-validate.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/style-row-css.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-editor-validation/desktop-editor-validation.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-visible.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/quick-action/quick-action.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/cell-view.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/sd-group.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.module.ts"],"names":["templateRef","this","Directive","args","selector","TemplateRef","Input","SdMaterialFilterDefDirective","Object","defineProperty","prototype","val","defaultShowing","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","call","__rest","s","e","t","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","apply","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","pop","push","create","__values","o","m","__read","r","ar","error","__spread","arguments","concat","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","DEFAULT_GRID_MATERIAL_CONFIG","pageSize","pages","GRID_MATERIAL_CONFIG","InjectionToken","SdPopupFilter","cdRef","_this","_filterRegister","externalFilters","externalFilter","inlineExternal","columns","columnFilter","inlineColumn","filterDefs","filterDef","inlineFilterDef","_subscription","Subscription","open","modal","markForCheck","close","onApply","configuration","ngAfterViewInit","add","observer","subscribe","JSON","parse","stringify","filterValue","ngOnDestroy","unsubscribe","onClear","remove","Component","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","ViewChild","SdGridFilter","ref","deviceService","filterRegisterChange","BehaviorSubject","onFilter","item","filterRegister","popupFilter","isMobileOrTablet","isDesktop","filter","_subscription$1","DeviceDetectorService","SdPopupExport","loadingService","exportService","notifyService","translateService","groups","enableCreating","selected","files","export","EventEmitter","form","FormGroup","_getExportableColumns","gridColumns","additionalColumns","_getExportableGroups","_c","_b","_a","gridOption","permission","key","hideMyTemplates","loadFiles","code","detectChanges","exportDefault","_getExportColumns","columns_1","_x","displayColumns","firstColumns","secondColumns","reduce","first","column","find","field","type","children","e1","map","assign","data","emit","file","isCSV","exportCSV","group","selectedGroup","filesInFolder","_y","_initTemplate","fileName","sheets","isArray","_d","sheet","name","items","fields","_0","_z","_1","_3","generateTemplate","_f","_e","start","finally","stop","generateAndUploadTemplate","_h","_g","_j","_k","generateUploadTemplate","_m","_l","_o","onExport","uploadTemplate","_p","validator","_r","_q","validators","removeFile","confirm","translate","idx","splice","createTemplate","invalid","markAllAsTouched","some","notify","warning","templateName","_u","_t","_s","_w","_v","filePath","onChangeGroup","listGroups","selectedOptions","validatorTemplateName","test","option","hash","prefix","disabled","forEach","childColumn","title","description","width","ngOnInit","SdLoadingService","SdExportService","SdNotifyService","SdTranslateService","Output","settingService","gridMaterialConfiguration","_COLUMNS","EDITORVALIDATION","EDITOR","SUBINFORMATION","COMMAND","SELECTION","GROUP","_cache","init","subject_1","Subject","load","_load","_get","_set","_remove","_default","_getKey","config","hidden","origin","invisible","fixed","subject","storage","createServer","catch","console","isGeneratedColumn","col","generateConfigurationResult","sdSubInformation","fixedColumn","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","selection","commands","editor","addable","removable","visible","generatedColumn","generatedColumns","includes","subColumn","e_2","colSpan","Injectable","SdSettingService","Inject","Optional","_prefix","transform","valueField","displayField","remain","isMultible","_cache$1","values","join","Pipe","CalculateSdId","sdId","editorHandlerColumn","expandDetail","isExpanded","isExpanding","isSelected","sdGroup","selectable","actions","groupedActions","originItem","editorErrorMessage","editorHandlerRow","SdEditorHandlerColumnPipe","zone","_visible","columns_1_1","childCol","run","NgZone","_filterConfiguration","_filterValue","register","cacheSession","_cache$2","filterConfiguration_1","default","_defaultConfiguration","undefined","_initConfiguration","filterValue_1","_defaultValue","_initValue","pipe","startWith","keys","current","updatedConfiguration","sdMaterialFilterDef","from","to","SdGridMaterial","gridConfigurationService","columnValuesPipe","gridFilterService","editorHandlerColumnPipe","uuid.v4","_optionChanges","_localItems","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_reload","isExporting","isSelectAll","exportTitle","_loadCompleted","_initCellDef","_4","_5","sdMaterialCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","rawColumnFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","paginate","showFirstLastButtons","_loadFilterRegister","hasRegister","force","_subscription$2","debounceTime","pageIndex","_filterLocal","localItems","filterInfo","toString","trim","toLowerCase","columnValue","fValue","replace","cValue","fromDate","Date","begin","toDate","end","columnTime","getTime","fromDateTime","toDateTime","type_1","field_1","sort","s1","s2","reverse","index","total","_getFilter","filterReq","isObservable","toPromise","error_1","results","error_2","_render","sdScroll","scrollTop","reload","onReload","every","_updateSelectedItems","_load$1","_exportedItems","exportedItems","_allColumns","_allExportedColumns","_onExport","columns_2","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","_7","displayOnTrue","displayOnFalse","date","transformDate","toFormat","_6","e_8","columns_3","columns_3_1","exportItems_2","exportItems_2_1","_9","exportByTemplate","onFilterChange","onExpand","rowData","subInformation","always","multiple","res","onSelect","single","onSelectAll","onClearSelection","editorStatus","sdVersion","clearFilter","setFilter","onCreate","onAdd","addToLast","temporary","onUpdate","onSave","saving","validate","message","err_1","onCancel","idx2","idx1","onRemove","beforeRemove","_2","update","refreshItem","gridFilter","_initConfiguration$1","gridConfigurationObserver","paginator","page","sortChange","switchMap","changes","combineLatest","drop","event","moveItemInArray","previousIndex","currentIndex","animations","trigger","style","height","minHeight","visibility","transition","animate","SdGridConfigurationService","SdColumnValuesPipe","SdGridFilterService","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","columnChildren","SdColumnChildrenFilterPipe","_isMobileOrTablet","transformValue","templateValue","SdColumnTitlePipe","dynamicTitle","SdColumnBadgePipe","badge","badgeType","color","badgeIcon","SdGridConfigurationResultPipe","SdPopupGridConfiguration","isCreatingColumn","disabledDrag","_cache$3","onReset","createColumn","mouseUp","dropTable","table","renderRows","handleMouseDown","handleMouseUp","HostListener","SdColumnTooltipPipe","tooltip","_convert","action","fontSet","click","childAction","key_1","actions_1","actions_1_1","availableActions","availableActions_1","availableActions_1_1","isGrouped","setTimeout","_cache$4","loadSystem","systemColumn","SdDynamicColumn","generatedColumnService","columnTypes","isDetail","originColumns","onDetail","detail","isSystem","useTemplate","markAsUntouched","markAsPristine","systemSetting","setting","id","systemColumns","_subscription$3","SdGeneratedColumnService","SdSideDrawer","onChange","change","editorOnAdd","editorOnEdit","edit","editorOnDelete","delete","SdEditorHandlerRowPipe","status","isDisabled","editable","savable","cancelable","_visible$1","SdEditorValidatePipe","_previous","_delay","now","SdStyleRowCss","rowCss","SdColumnInlineFilter","filterChange","_valueChanges","_subcription","_value","useFilterDate","hasGroup","clear","SdCellViewPipe","utilityService","_maxSecond","_maxMinute","_maxHour","_maxDay","_maxMonth","_isMobileOrTablet$1","displayOnEmpty","align","display","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","SdDesktopCellEditor","SdDesktopEditorValidation","SdDesktopCellView","SdDesktopCellChildrenView","SdDesktopCommand","SdSelectionActionFilterPipe","SdSelectionVisiblePipe","SdSelectionDisablePipe","SdSelectionVisibleSelectAllPipe","exports","providers","DatePipe","DecimalPipe","CdkColumnDef","provide","useClass"],"mappings":"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","sourcesContent":["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 { 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, 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 { 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","/*! *****************************************************************************\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\n\r\nexport interface ISdGridMaterialConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\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_GRID_MATERIAL_CONFIG: ISdGridMaterialConfiguration = {\r\n paginate: {\r\n pageSize: 50,\r\n pages: [50, 100, 200]\r\n }\r\n};\r\n\r\nexport const GRID_MATERIAL_CONFIG = new InjectionToken<ISdGridMaterialConfiguration>('sd-grid-material.configuration');\r\n","import { Component, ViewChild, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialExternalFilter, SdGridMaterialFilterRegister } from '../../services/grid-filter/grid-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('modal') modal: SdModal;\r\n #filterRegister: SdGridMaterialFilterRegister;\r\n @Input() set filterRegister(value: SdGridMaterialFilterRegister) {\r\n this.#filterRegister = value;\r\n };\r\n @Input() externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: {\r\n [key: string]: boolean\r\n } = {};\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n columnFilter: any = {};\r\n inlineColumn: {\r\n [key: string]: boolean\r\n } = {};\r\n\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: any = {};\r\n inlineFilterDef: {\r\n [key: string]: boolean;\r\n } = {};\r\n #subscription = new Subscription();\r\n constructor(\r\n private cdRef: ChangeDetectorRef\r\n ) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.#filterRegister.configuration.observer.subscribe(configuration => {\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 this.cdRef.markForCheck();\r\n }));\r\n this.#subscription.add(this.#filterRegister.value.observer.subscribe(filterValue => {\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.cdRef.markForCheck();\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n open = () => {\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 SdGridMaterialFilterOption,\r\n SdGridMaterialExternalFilter,\r\n SdGridMaterialFilterRegister,\r\n} from \"../../services/grid-filter/grid-filter.model\";\r\nimport { SdGridMaterialColumn } from \"../../models/grid-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\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<SdGridMaterialFilterOption>;\r\n @Input(\"filter\") set _filter(filter: SdGridMaterialFilterOption) {\r\n this.filter = filter;\r\n }\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n externalFilters: SdGridMaterialExternalFilter[] = [];\r\n @Input(\"externalFilters\") set _externalFilters(\r\n value: SdGridMaterialExternalFilter[]\r\n ) {\r\n this.externalFilters = value || [];\r\n }\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterRegister: SdGridMaterialFilterRegister;\r\n @Input(\"filterRegister\") set _filterRegister(\r\n value: SdGridMaterialFilterRegister\r\n ) {\r\n this.filterRegister = value;\r\n this.filterRegisterChange.next(this.filterRegister);\r\n }\r\n filterRegisterChange = new BehaviorSubject<SdGridMaterialFilterRegister>(\r\n null\r\n );\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(\r\n private ref: ChangeDetectorRef,\r\n private deviceService: DeviceDetectorService\r\n ) {\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.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 ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFilter = (item?: SdGridMaterialColumn | SdGridMaterialExternalFilter) => {\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 open = () => {\r\n this.popupFilter.open();\r\n };\r\n}\r\n","import { Component, OnInit, AfterViewInit, ViewChild, Output, EventEmitter, Input, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport * as uuid from 'uuid';\r\n\r\nimport {\r\n SdNotifyService\r\n} from '@sd-angular/core/notify';\r\n\r\nimport {\r\n SdLoadingService\r\n} from '@sd-angular/core/loading';\r\n\r\nimport {\r\n SdTranslateService\r\n} from '@sd-angular/core/translate';\r\nimport hash from 'object-hash';\r\nimport { MatSelectionList } from '@angular/material/list';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdExportFile, SdExportService, SdExportColumn } from '@sd-angular/core/export';\r\nimport { SdGroupExport } from '../../models/grid-export.model';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdGridConfigurationResult } from '../../models/grid-config.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-popup-export',\r\n templateUrl: './popup-export.component.html',\r\n styleUrls: ['./popup-export.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdPopupExport implements OnInit, AfterViewInit {\r\n gridOption: SdGridMaterialOption;\r\n columns: SdExportColumn[] = [];\r\n groups: SdGroupExport[] = [];\r\n templateName: string;\r\n enableCreating = false;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('listGroups') listGroups: MatSelectionList;\r\n\r\n selected: {\r\n [key: string]: boolean\r\n } = {};\r\n files: SdExportFile[] = [];\r\n selectedGroup: SdGroupExport;\r\n\r\n @Output() export = new EventEmitter<{ file: SdExportFile, columns: SdExportColumn[], isCSV?: boolean }>();\r\n form = new FormGroup({});\r\n\r\n @Input('gridOption') set _gridOption(option: SdGridMaterialOption) {\r\n this.gridOption = option;\r\n this.columns = this.#getExportableColumns();\r\n this.groups = this.#getExportableGroups();\r\n }\r\n @Input() configuration: SdGridConfigurationResult;\r\n private get key(): string {\r\n const prefix = '93889e78-f971-4a1d-8c73-fe2321af9233';\r\n if (!this.gridOption?.export?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: this.gridOption?.export?.key\r\n });\r\n }\r\n\r\n private get gridColumns() {\r\n const columns: SdExportColumn[] = [];\r\n this.gridOption.columns.filter(e => !e.export?.disabled).forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns.map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width\r\n }));\r\n }\r\n private get additionalColumns() {\r\n return (this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || []).map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width\r\n }));\r\n }\r\n\r\n #getExportableColumns = (): SdExportColumn[] => {\r\n return [...this.gridColumns, ...this.additionalColumns];\r\n }\r\n\r\n #getExportableGroups = () => {\r\n return this.gridOption?.export?.groups?.filter(e => {\r\n const permission = e.permission;\r\n if (typeof (permission) === 'function') {\r\n return permission();\r\n }\r\n return permission;\r\n }) || [];\r\n }\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n open = async () => {\r\n if (!this.key) {\r\n this.exportDefault();\r\n return;\r\n }\r\n if (this.groups.length === 1 && this.gridOption?.export?.hideMyTemplates) {\r\n this.loadFiles(this.groups[0].code);\r\n } else {\r\n this.loadFiles(null);\r\n }\r\n this.selected = {};\r\n this.modal.open();\r\n this.ref.detectChanges();\r\n }\r\n\r\n #getExportColumns = () => {\r\n if (this.configuration) {\r\n const columns = [...this.gridColumns];\r\n const { firstColumns, secondColumns } = this.configuration;\r\n const displayColumns: SdGridMaterialColumn<any>[] = [...firstColumns, ...secondColumns].reduce((first, next) => {\r\n const column = this.gridOption.columns.find(e => e.field === next.field);\r\n if (!column) {\r\n return first;\r\n }\r\n if (column.type !== 'children' && column.type !== 'children-col') {\r\n return [...first, column];\r\n }\r\n const children = column.children.filter(e1 => e1.type !== 'image');\r\n return [...first, ...children];\r\n }, []);\r\n const results = displayColumns.map(e => ({\r\n ...e,\r\n data: columns.find(e1 => e1.field === e.field)\r\n })).filter(e => !!e.data)\r\n .map(e => e.data);\r\n return [...results, ...this.additionalColumns];\r\n } else {\r\n return this.columns;\r\n }\r\n }\r\n\r\n exportDefault = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: false\r\n });\r\n }\r\n\r\n exportCSV = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: true\r\n });\r\n }\r\n\r\n loadFiles = async (group: string = null) => {\r\n this.selectedGroup = this.groups.find(e => e.code === group);\r\n this.files = await this.exportService.filesInFolder({\r\n key: this.key,\r\n group\r\n });\r\n this.ref.markForCheck();\r\n }\r\n\r\n #initTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.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 return await this.exportService.generateTemplate({\r\n fileName: fileName || this.gridOption?.export?.fileName,\r\n columns: this.columns,\r\n sheets\r\n });\r\n }\r\n\r\n generateTemplate = async () => {\r\n this.loadingService.start();\r\n await this.#initTemplate().finally(this.loadingService.stop);\r\n }\r\n\r\n generateAndUploadTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.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 return await this.exportService.generateUploadTemplate({\r\n key: this.key,\r\n template: {\r\n fileName: fileName || this.gridOption?.export?.fileName,\r\n columns: this.columns.filter(e => this.selected[e.field]),\r\n sheets\r\n },\r\n group: this.selectedGroup?.code\r\n });\r\n }\r\n\r\n onExport = (file: SdExportFile) => {\r\n this.export.emit({\r\n file,\r\n columns: this.columns\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n uploadTemplate = async () => {\r\n const file = await this.exportService.uploadTemplate({\r\n key: this.key,\r\n group: this.selectedGroup?.code,\r\n validator: this.gridOption?.export?.validators\r\n });\r\n if (file) {\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n removeFile = (file: SdExportFile) => {\r\n this.notifyService.confirm(this.translateService.translate('Remove template')).then(() => {\r\n this.exportService.removeFile({\r\n key: this.key,\r\n fileName: file.fileName,\r\n group: this.selectedGroup?.code || null\r\n });\r\n const idx = this.files.indexOf(file);\r\n this.files.splice(idx, 1);\r\n this.files = [...this.files];\r\n this.ref.detectChanges();\r\n });\r\n }\r\n\r\n createTemplate = async () => {\r\n const { translate } = this.translateService;\r\n if (this.form.invalid) {\r\n this.form.markAllAsTouched();\r\n return;\r\n }\r\n if (!this.columns.some(e => this.selected[e.field])) {\r\n this.notifyService.notify.warning(translate('Please select columns'));\r\n return;\r\n }\r\n this.loadingService.start();\r\n const fileName = this.templateName + '.xlsx';\r\n try {\r\n if (this.gridOption?.export?.validators?.(fileName)) {\r\n this.notifyService.notify.warning(this.gridOption?.export?.validators(fileName));\r\n return;\r\n }\r\n const result = await this.generateAndUploadTemplate(fileName);\r\n if (result?.filePath) {\r\n const file: SdExportFile = {\r\n filePath: result.filePath,\r\n fileName: result.fileName\r\n };\r\n this.onExport(file);\r\n this.templateName = null;\r\n this.enableCreating = false;\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n }\r\n\r\n onChangeGroup = () => {\r\n this.loadFiles(this.listGroups?.selectedOptions?.selected[0]?.value);\r\n }\r\n\r\n validatorTemplateName = (val: string) => {\r\n const { translate } = this.translateService;\r\n const regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;\r\n if (!val) {\r\n return translate('Please enter your template name');\r\n }\r\n if (val.length > 50) {\r\n return translate('Template name is too long');\r\n }\r\n if (!regex.test(val)) {\r\n return translate('Template name only contains letters, numbers and spaces');\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnConfiguration, SdGridConfiguration, SdGridConfigurationCache, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { GRID_MATERIAL_CONFIG, ISdGridMaterialConfiguration } from '../models/grid-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdGridConfigurationService {\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(GRID_MATERIAL_CONFIG) @Optional() public gridMaterialConfiguration: ISdGridMaterialConfiguration) {\r\n }\r\n\r\n init = (key: string, gridOption: SdGridMaterialOption) => {\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: SdGridMaterialOption) => {\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: SdGridMaterialOption): SdGridConfiguration => {\r\n const columns: SdColumnConfiguration[] = gridOption?.columns?.filter(e => !e.hidden).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: SdGridMaterialOption, 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: SdGridMaterialOption) => {\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\r\n .filter(column => column.isGeneratedColumn || 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: SdGridMaterialOption, 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: SdGridMaterialOption) => {\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: SdGridMaterialOption,\r\n sdSubInformation: SdMaterialSubInformationDefDirective) => {\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 { selection, commands, editor, group } = gridOption || {};\r\n if (editor?.addable || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITORVALIDATION);\r\n result.displayedColumns.push(this.#COLUMNS.EDITORVALIDATION);\r\n }\r\n if (selection?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (!editor?.hidden) {\r\n if (editor?.addable\r\n || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'popup' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITOR);\r\n result.displayedColumns.push(this.#COLUMNS.EDITOR);\r\n }\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?.filter(col => !col.invisible).forEach(col => {\r\n if (col.isGeneratedColumn) {\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 const generatedColumn: SdGridMaterialColumn = {\r\n type: 'children',\r\n field: col.origin.field,\r\n title: col.origin.title,\r\n children: []\r\n };\r\n for (const subColumn of gridOption?.columns.filter(e1 => col.generatedColumns.includes(e1.field))) {\r\n if (subColumn.type === 'children' || subColumn.type === 'children-col') {\r\n for (const childColumn of subColumn.children) {\r\n generatedColumn.children.push({\r\n ...childColumn,\r\n colSpan: 2\r\n });\r\n }\r\n } else {\r\n generatedColumn.children.push({\r\n ...subColumn,\r\n colSpan: 2\r\n });\r\n }\r\n\r\n }\r\n result.firstColumns.push({\r\n ...generatedColumn,\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 return;\r\n }\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 if (column.type === 'children-col') {\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 } else {\r\n result.displayedColumns.push(col.origin.field);\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 { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn): 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 hash from 'object-hash';\r\nimport { SdItem } from \"../models/grid.model\";\r\n\r\nexport const CalculateSdId = (item: SdItem) => {\r\n const {\r\n sdId,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n sdGroup,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n originItem,\r\n editorErrorMessage,\r\n editorHandlerRow,\r\n ...remain } = item;\r\n return hash(remain);\r\n}","import { Injectable, NgZone, Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { CalculateSdId } from '../functions/calculate-sd-id';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorHandlerColumn'\r\n})\r\n@Injectable()\r\nexport class SdEditorHandlerColumnPipe implements PipeTransform {\r\n constructor(private zone: NgZone) { }\r\n #visible = (col: SdGridMaterialColumn, item: SdItem) => {\r\n if (col.type === 'children' || col.type === 'children-col') {\r\n return false;\r\n }\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (col.editor) {\r\n const isDisabled = typeof (col.editor.disabled) === 'function' ? col.editor.disabled(item) : col.editor.disabled;\r\n if (isDisabled) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n transform(value: any, item: SdItem, gridOption: SdGridMaterialOption) {\r\n const key = CalculateSdId(item);\r\n if (item.sdId === key && item.editorHandlerColumn) {\r\n return true;\r\n }\r\n item.editorHandlerColumn = item.editorHandlerColumn || {};\r\n const { columns } = gridOption;\r\n for (const col of columns) {\r\n if (col.type === 'children-col') {\r\n for (const childCol of col.children) {\r\n item.editorHandlerColumn[childCol.field] = {\r\n ...item.editorHandlerColumn[childCol.field],\r\n visible: this.#visible(childCol, item)\r\n }\r\n }\r\n } else {\r\n item.editorHandlerColumn[col.field] = {\r\n ...item.editorHandlerColumn[col.field],\r\n visible: this.#visible(col, item)\r\n }\r\n }\r\n }\r\n this.zone.run(() => {\r\n item.sdId = CalculateSdId(item);\r\n });\r\n item.sdId = key;\r\n return true;\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 SdGridMaterialExternalFilter,\r\n SdGridMaterialFilterConfiguration,\r\n SdGridMaterialFilterRegister,\r\n SdGridMaterialFilterValue,\r\n} from \"./grid-filter.model\";\r\nimport { SdGridMaterialColumn } from \"../../models/grid-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 SdGridFilterService {\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 key: string,\r\n args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }\r\n ) => {\r\n let cacheSession = false;\r\n if (!key) {\r\n const { columns, externalFilters } = args;\r\n key = hash({\r\n columns,\r\n externalFilters,\r\n });\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 =\r\n this.settingService.create<SdGridMaterialFilterConfiguration>(\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<SdGridMaterialFilterValue>(\r\n {\r\n prefix: this.#filterValue,\r\n key,\r\n },\r\n {\r\n default: this.#defaultValue(args),\r\n type: cacheSession ? \"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: (): SdGridMaterialFilterConfiguration => {\r\n return filterConfiguration.get();\r\n },\r\n set: (\r\n configuration: Partial<SdGridMaterialFilterConfiguration>\r\n ): SdGridMaterialFilterConfiguration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } =\r\n 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.remove();\r\n },\r\n observer: filterConfiguration.observer.pipe(startWith(filterConfiguration.get())),\r\n },\r\n value: {\r\n get: (): SdGridMaterialFilterValue => {\r\n return filterValue.get();\r\n },\r\n set: (\r\n configuration: Partial<SdGridMaterialFilterValue>\r\n ): SdGridMaterialFilterValue => {\r\n const keys = Object.keys(configuration || {});\r\n const current = filterValue.get();\r\n const { columnFilter, externalFilter, filterDef } = current;\r\n const updatedConfiguration = {\r\n // Filter column\r\n columnFilter: keys.includes(\"columnFilter\")\r\n ? configuration?.columnFilter || {}\r\n : columnFilter,\r\n // Filter external\r\n externalFilter: keys.includes(\"externalFilter\")\r\n ? configuration?.externalFilter || {}\r\n : externalFilter,\r\n // Filter def\r\n filterDef: keys.includes(\"filterDef\")\r\n ? configuration?.filterDef || {}\r\n : filterDef,\r\n };\r\n filterValue.set(updatedConfiguration);\r\n return updatedConfiguration;\r\n },\r\n remove: () => {\r\n filterValue.remove();\r\n },\r\n observer: filterValue.observer.pipe(startWith(filterValue.get())),\r\n },\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #defaultConfiguration = (args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdGridMaterialFilterConfiguration => {\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: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdGridMaterialFilterValue => {\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: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n configuration: SdGridMaterialFilterConfiguration\r\n ): SdGridMaterialFilterConfiguration => {\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] =\r\n configuration?.inlineColumn?.[item.field] ??\r\n item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] =\r\n configuration?.inlineExternal?.[item.field] ?? item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] =\r\n configuration?.inlineFilterDef?.[item.sdMaterialFilterDef] ??\r\n 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: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n value: SdGridMaterialFilterValue\r\n ): SdGridMaterialFilterValue => {\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] =\r\n 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] =\r\n 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] =\r\n 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} 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, SdGridMaterialFilterRequest } from './services/grid-filter/grid-filter.model';\r\nimport { SdGridMaterialOption } from './models/grid-option.model';\r\nimport { GRID_MATERIAL_CONFIG, DEFAULT_GRID_MATERIAL_CONFIG, ISdGridMaterialConfiguration } from './models/grid-configuration.model';\r\nimport { Subscription, isObservable, Observable, BehaviorSubject, Subject, combineLatest } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdGridMaterialColumn } from './models/grid-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 { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';\r\nimport { SdGridConfiguration } from './models/grid-config.model';\r\nimport { SdGridConfigurationService } from './services/grid-configuration.service';\r\nimport { SdGridMaterialExportColumn } from './models/grid-export.model';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { SdGridMaterialItem, SdItem } from './models/grid.model';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';\r\nimport { SdScrollDirective } from '@sd-angular/core/common';\r\nimport { SdGridFilterService } from './services/grid-filter/grid-filter.service';\r\n\r\n@Component({\r\n selector: 'sd-grid-material',\r\n templateUrl: './grid-material.component.html',\r\n styleUrls: ['./grid-material.component.scss'],\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 SdGridMaterial<T = any> implements OnInit, AfterViewInit, OnDestroy {\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: SdGridMaterialOption) {\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<SdGridMaterialOption>();\r\n\r\n gridOption: SdGridMaterialOption;\r\n #localItems: any[] = [];\r\n items: SdGridMaterialItem<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 // Export\r\n @ViewChild(SdPopupExport) sdPopupExport: SdPopupExport;\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 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(GRID_MATERIAL_CONFIG)\r\n @Optional()\r\n public configuration: ISdGridMaterialConfiguration,\r\n private gridConfigurationService: SdGridConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private columnValuesPipe: SdColumnValuesPipe,\r\n private gridFilterService: SdGridFilterService,\r\n private editorHandlerColumnPipe: SdEditorHandlerColumnPipe\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.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): SdGridMaterialFilterRequest => {\r\n const { columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\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: SdGridMaterialOption) => {\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_GRID_MATERIAL_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.configuration?.paginate?.pages ?? DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false,\r\n };\r\n return option;\r\n };\r\n\r\n #loadFilterRegister = () => {\r\n // Init filter\r\n if (this.gridOption) {\r\n const hasRegister = !!this.filterRegister;\r\n this.filterRegister = this.gridFilterService.register(this.gridOption?.filter?.key, {\r\n columns: this.gridOption?.columns,\r\n externalFilters: this.gridOption?.filter?.externalFilters,\r\n filterDefs: this.filterDefs,\r\n });\r\n if (!hasRegister) {\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 { columnFilter } = filterValue;\r\n this.columnFilter = columnFilter;\r\n this.#paginator.pageIndex = 0;\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n } else {\r\n this.#reload.next({\r\n force: true,\r\n });\r\n }\r\n }\r\n };\r\n\r\n #filterLocal = (localItems: any[], filterInfo: SdGridMaterialFilterRequest) => {\r\n const { columns } = this.gridOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(item => {\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((current, next) => {\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 = (): SdGridMaterialFilterRequest => {\r\n const { columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\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: SdGridMaterialFilterRequest, force: boolean = true) => {\r\n this.isLoading = true;\r\n if (this.gridOption.type === 'server') {\r\n try {\r\n let result = this.gridOption.items(filterReq);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n const data = await result;\r\n return {\r\n items: data?.items || [],\r\n total: data?.total || 0,\r\n };\r\n } catch (error) {\r\n console.error(error);\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n return {\r\n items: [],\r\n total: 0,\r\n };\r\n } finally {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n } else {\r\n if (force) {\r\n try {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n this.#localItems = (await results) || [];\r\n } else {\r\n this.#localItems = results || [];\r\n }\r\n if (!Array.isArray(this.#localItems)) {\r\n this.notifyService.notify.warning('Dữ liệu không phải là một mảng');\r\n this.#localItems = [];\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n this.#localItems = [];\r\n } finally {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n return this.#filterLocal(this.#localItems, filterReq);\r\n }\r\n };\r\n\r\n #render = async (args: { items: any[]; total: number }) => {\r\n this.sdScroll?.scrollTop();\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n // this.isHiddenPaginator = this.filterInfo.pageNumber === 0 && this.total <= this.filterInfo.pageSize;\r\n this.items.forEach((item: SdItem) => {\r\n item.originItem = { ...item };\r\n });\r\n await this.gridOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n };\r\n\r\n reload = async (force: boolean = true) => {\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 if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\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 drop(event: CdkDragDrop<string[]>, columns: string[]) {\r\n moveItemInArray(columns, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n #allColumns = (): SdGridMaterialColumn[] => {\r\n const columns: SdGridMaterialColumn[] = [];\r\n this.gridOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\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 = (): SdGridMaterialExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n };\r\n\r\n #onExport = async (args: { file: SdExportFile; columns: SdExportColumn[]; isCSV: boolean }) => {\r\n try {\r\n const { file, isCSV } = args;\r\n let { columns } = args;\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' || column.type === 'children-col') {\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 (!file?.filePath) {\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 }\r\n await this.exportService.exportByTemplate({\r\n filePath: file.filePath,\r\n fileName: file.fileName,\r\n columns,\r\n items,\r\n });\r\n } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n onExport = async (args: { file: SdExportFile; columns: SdExportColumn[]; isCSV: boolean }) => {\r\n this.#onExport(args);\r\n };\r\n\r\n onFilterChange = () => {\r\n // this.#paginator.pageIndex = 0;\r\n // this.reload(false);\r\n if(this.gridOption?.filter?.inlineColumn) {\r\n this.filterRegister.value.set({\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: SdGridMaterialItem<T>) => {\r\n if (this.gridOption.subInformation?.always) {\r\n return;\r\n }\r\n if (rowData.isExpanding) {\r\n return;\r\n }\r\n if (rowData.isExpanded) {\r\n rowData.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.subInformation?.onExpand?.(rowData);\r\n if (!this.gridOption.subInformation?.multiple) {\r\n this.items.forEach(item => (item.isExpanding = item.isExpanded = false));\r\n }\r\n if (data instanceof Promise) {\r\n rowData.isExpanding = true;\r\n data\r\n .then(res => {\r\n rowData.expandDetail = res;\r\n rowData.isExpanded = true;\r\n })\r\n .finally(() => (rowData.isExpanding = false));\r\n } else {\r\n rowData.expandDetail = data;\r\n rowData.isExpanded = true;\r\n }\r\n };\r\n\r\n onSelect = (rowData: SdGridMaterialItem<T>) => {\r\n if (rowData?.sdGroup?.items?.length) {\r\n rowData?.sdGroup?.items.forEach(e => (e.isSelected = rowData.isSelected));\r\n this.gridOption.selection?.onSelect?.(\r\n rowData,\r\n this.items.filter(e => e.isSelected)\r\n );\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.gridOption.selection?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => (e.isSelected = false));\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selection?.onSelect?.(\r\n rowData,\r\n this.items.filter(e => e.isSelected)\r\n );\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n };\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.selectable && (!this.gridOption?.selection?.actions?.length || e.actions?.length)) {\r\n e.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.gridOption.selection?.onSelectAll?.(this.items.filter(e => e.isSelected));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n onClearSelection = (items?: SdGridMaterialItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => (e.isSelected = false));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedItems = this.items\r\n .filter(item => item.isSelected)\r\n .map(item => {\r\n const {\r\n isSelected,\r\n isExpanded,\r\n isExpanding,\r\n expandDetail,\r\n editorErrorMessage,\r\n editorHandlerColumn,\r\n editorHandlerRow,\r\n editorStatus,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n // Giữ lại các trường thông tin cho selectable (action, groupedAction, sdGroup, selectable)\r\n ...result\r\n } = item;\r\n return result;\r\n }) as T[];\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 this.filterRegister.value.set({\r\n columnFilter,\r\n externalFilter,\r\n filterDef,\r\n });\r\n };\r\n\r\n onCreate = () => {\r\n const { type, editor, columns } = this.gridOption;\r\n if (!editor?.addable) {\r\n return;\r\n }\r\n const item: SdGridMaterialItem = {};\r\n // Gán giá trị mặc định\r\n columns.forEach(column => {\r\n if (column.type === 'values') {\r\n item[column.field] = '';\r\n } else if (column.type === 'bool') {\r\n item[column.field] = true;\r\n } else if (column.type === 'number') {\r\n item[column.field] = null;\r\n }\r\n });\r\n if (type === 'local') {\r\n editor.onAdd?.(item, this.#localItems);\r\n } else {\r\n editor.onAdd?.(item, this.items);\r\n }\r\n // Đưa item lên dòng đầu tiên nếu type khác popup\r\n if (editor.type !== 'popup') {\r\n if (editor.addToLast) {\r\n if (type === 'local') {\r\n this.#localItems = [...this.#localItems, item];\r\n }\r\n this.items = [...this.items, item];\r\n } else {\r\n if (type === 'local') {\r\n this.#localItems = [item, ...this.#localItems];\r\n }\r\n this.items = [item, ...this.items];\r\n }\r\n }\r\n item.editorStatus = 'create';\r\n item.editorHandlerRow = {\r\n temporary: { ...item },\r\n };\r\n };\r\n onUpdate = (item: SdItem) => {\r\n const { editor } = this.gridOption;\r\n item.editorStatus = 'update';\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n temporary: { ...item },\r\n };\r\n // this.generateEditorHanlder(item);\r\n if (editor.type === 'popup') {\r\n // Xử lý case popup\r\n // this.sdGridPopupEditor.open(item, columns, isModified);\r\n }\r\n this.ref.detectChanges();\r\n };\r\n onSave = async (item: SdGridMaterialItem<T>) => {\r\n if (item.editorHandlerRow.saving) {\r\n return;\r\n }\r\n const { editor } = this.gridOption;\r\n try {\r\n item.editorHandlerRow.saving = true;\r\n if (editor.validate) {\r\n const result = editor.validate(item, this.items.indexOf(item));\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n throw message;\r\n }\r\n } else {\r\n if (result) {\r\n throw result;\r\n }\r\n }\r\n }\r\n if (editor.onSave) {\r\n const result = editor.onSave(item);\r\n if (result instanceof Promise) {\r\n await result;\r\n }\r\n }\r\n\r\n if (item.editorStatus === 'create' && editor.type === 'popup') {\r\n if (this.gridOption.type === 'local') {\r\n this.items.splice(0, 0, item);\r\n }\r\n // this.viewItems.splice(0, 0, item);\r\n }\r\n\r\n item.editorStatus = undefined;\r\n // this.generateEditorHanlder(item);\r\n } catch (err) {\r\n this.notifyService.notify.warning(err);\r\n } finally {\r\n item.editorHandlerRow.saving = false;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n onCancel = (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.#localItems.indexOf(item);\r\n this.#localItems.splice(idx2, 1);\r\n this.#localItems = [...this.#localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n if (this.gridOption.type === 'local') {\r\n editor?.onCancel?.(item, this.#localItems);\r\n } else {\r\n editor?.onCancel?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n if (editor.type === 'focus') {\r\n if (item.editorStatus === 'create') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.#localItems.indexOf(item);\r\n this.#localItems.splice(idx2, 1);\r\n this.#localItems = [...this.#localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n } else {\r\n Object.assign(item, item.editorHandlerRow.temporary);\r\n }\r\n }\r\n item.editorStatus = undefined;\r\n this.ref.detectChanges();\r\n };\r\n onRemove = async (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor?.beforeRemove) {\r\n const beforeRemove = editor?.beforeRemove(item);\r\n if (beforeRemove instanceof Promise) {\r\n const result = await beforeRemove;\r\n if (!result) {\r\n return;\r\n }\r\n } else {\r\n if (!beforeRemove) {\r\n return;\r\n }\r\n }\r\n }\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.#localItems.indexOf(item);\r\n this.#localItems.splice(idx2, 1);\r\n this.#localItems = [...this.#localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n if (this.gridOption.type === 'local') {\r\n editor?.onRemove?.(item, this.#localItems);\r\n } else {\r\n editor?.onRemove?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n };\r\n\r\n add = (idx: number, item: T) => {\r\n if (this.items.length > idx) {\r\n this.items.splice(idx, 0, item);\r\n this.items = [...this.items];\r\n } else {\r\n this.items = [...this.items, item];\r\n }\r\n };\r\n\r\n update = (idx: number, item: T) => {\r\n if (this.items[idx]) {\r\n Object.assign(this.items[idx], item);\r\n this.items = [...this.items];\r\n }\r\n };\r\n\r\n remove = (idx: number) => {\r\n if (this.items[idx]) {\r\n this.items.splice(idx, 1);\r\n this.items = [...this.items];\r\n }\r\n };\r\n\r\n refreshItem = (idx: number) => {\r\n const item = this.items[idx];\r\n this.editorHandlerColumnPipe.transform(item.sdVersion, item, this.gridOption);\r\n };\r\n\r\n get editedItems(): (T & { editorErrorMessage: string })[] {\r\n return this.items\r\n .filter(item => {\r\n if (!item.originItem) {\r\n return true;\r\n }\r\n if (Object.keys(item.originItem).some(key => item.originItem[key] !== item[key])) {\r\n return true;\r\n }\r\n return false;\r\n })\r\n .map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n editorErrorMessage,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result\r\n } = item;\r\n return {\r\n ...result,\r\n editorErrorMessage,\r\n } as any;\r\n });\r\n }\r\n\r\n get gridItems(): T[] {\r\n return this.items.map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result\r\n } = item;\r\n return result as T;\r\n });\r\n }\r\n\r\n get localItems(): T[] {\r\n return this.#localItems;\r\n }\r\n\r\n get localGridItems(): T[] {\r\n return this.#localItems.map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result\r\n } = item;\r\n return result as T;\r\n });\r\n }\r\n\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n get isEditing() {\r\n return this.items.some(e => e.editorStatus !== undefined);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand, SdGridMaterialCommandNormal } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: any, commands: SdGridMaterialCommand[]): Promise<SdGridMaterialCommand[]> {\r\n const results: SdGridMaterialCommand[] = [];\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: SdGridMaterialCommandNormal[] = [];\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 { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandDisable'\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: any, command: SdGridMaterialCommand): 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 { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, 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 { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, 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 { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn): 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 { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.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: SdGridMaterialColumn;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn, 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 { SdGridMaterialExternalFilter } from '../services/grid-filter/grid-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdGridMaterialExternalFilter[], field?: string): SdGridMaterialExternalFilter[] {\r\n const results: SdGridMaterialExternalFilter[] = [];\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 { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdGridMaterialColumn[], field?: string): SdGridMaterialColumn[] {\r\n const results: SdGridMaterialColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\r\n if (column.type === 'image') {\r\n continue;\r\n }\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 { Component, Input } from '@angular/core';\r\nimport { SdGridMaterialColumnChildren } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-children-view',\r\n templateUrl: './desktop-cell-children-view.component.html',\r\n styleUrls: ['./desktop-cell-children-view.component.scss']\r\n})\r\nexport class SdDesktopCellChildrenView {\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumnChildren;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn[], item: any): SdGridMaterialColumn[] {\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 { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialChildColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnTitle'\r\n})\r\nexport class SdColumnTitlePipe implements PipeTransform {\r\n async transform(item: any, column: SdGridMaterialChildColumn): Promise<string> {\r\n if (!column?.title) {\r\n return '';\r\n }\r\n const result = column?.dynamicTitle?.(item);\r\n if (result instanceof Promise) {\r\n return (await result) || column?.title;\r\n }\r\n return result || column?.title;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../../models/grid-command.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: any;\r\n @Input() commands: SdGridMaterialCommand[] = [];\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 { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn): {\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 { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridConfiguration, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../services/grid-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: SdGridConfigurationService) { }\r\n transform(configuration: SdGridConfiguration, gridOption: SdGridMaterialOption, sdSubInformation: SdMaterialSubInformationDefDirective): SdGridConfigurationResult {\r\n return this.gridConfigurationService.generateConfigurationResult(configuration, gridOption, sdSubInformation);\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 { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationResult, SdGridConfiguration, SdGridConfigurationCache, SdColumnConfiguration } from '../../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-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 { SdGridMaterialColumn } from '../../models/grid-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: SdGridMaterialOption;\r\n @Input() key: string;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdGridMaterialColumn>;\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: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n }\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 isGeneratedColumn: true,\r\n generatedColumns: this.configuration.columns.filter(e => this.selected[e.origin?.field]).map(e => e.origin?.field)\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<SdGridMaterialColumn[]>) {\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 { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn): 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 { SdGridMaterialAction, SdGridMaterialActionNormal, SdGridMaterialActionSimple } from '../models/grid-action.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdGridMaterialAction): SdGridMaterialActionSimple => {\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: SdItem[], actions: SdGridMaterialAction[]): SdGridMaterialActionSimple[] => {\r\n const results: SdGridMaterialAction[] = [];\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: SdGridMaterialActionNormal[] = [];\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.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.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 { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: SdItem[], rowData: SdItem, selection: SdGridMaterialSelection): boolean => {\r\n const { disabled, actions } = selection;\r\n if (!actions?.length) {\r\n if (!disabled) {\r\n rowData.selectable = true;\r\n return false;\r\n }\r\n rowData.selectable = !disabled(rowData, selectedItems);\r\n return !rowData.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.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.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.actions.includes(hash(childAction))) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if(rowData.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 { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionVisibleSelectAll'\r\n})\r\nexport class SdSelectionVisibleSelectAllPipe implements PipeTransform {\r\n transform = async (items: SdItem[], selection: SdGridMaterialSelection): 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.actions?.length);\r\n if (first) {\r\n for (const action of first.actions) {\r\n if (items.filter(t => t.actions?.length).every(e => e.actions.includes(action))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSetting, SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialConfigOption } from '../../models/grid-config.model';\r\nimport { SdGeneratedColumn } from './generated-column.model';\r\nimport { SdSettingServer } from '@sd-angular/core/setting';\r\n\r\n@Injectable()\r\nexport class SdGeneratedColumnService {\r\n #cache: {\r\n [key: string]: SdSetting<SdGeneratedColumn[]> | SdSettingServer<SdGeneratedColumn[]>\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService) {\r\n }\r\n\r\n load = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '260f5e94-5865-4425-8ced-b9c083c390dd',\r\n key: configuration.key\r\n });\r\n if(!this.#cache[key]) {\r\n if(configuration?.storage === 'server') {\r\n this.#cache[key] = this.settingService.createServer<SdGeneratedColumn[]>(key, {\r\n args: configuration?.args,\r\n default: []\r\n });\r\n } else {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: configuration?.storage,\r\n args: configuration?.args,\r\n default: []\r\n });\r\n }\r\n }\r\n return this.#cache[key];\r\n }\r\n\r\n loadSystem = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n if (!configuration?.systemColumn) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '8b8050ca-1f44-4860-bad3-20e646c0d68f',\r\n key: configuration.key\r\n });\r\n if(!this.#cache[key]) {\r\n if(configuration?.storage === 'server') {\r\n this.#cache[key] = this.settingService.createServer<SdGeneratedColumn[]>(key, {\r\n args: configuration?.systemColumn?.args,\r\n default: []\r\n });\r\n } else {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: configuration?.storage,\r\n args: configuration?.systemColumn?.args,\r\n default: []\r\n });\r\n }\r\n }\r\n return this.#cache[key];\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ChangeDetectorRef, Input, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { SdGeneratedColumnService } from '../../services/generated-column/generated-column.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdGeneratedColumn } from '../../services/generated-column/generated-column.model';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdSideDrawer } from '@sd-angular/core/side-drawer';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-dynamic-column',\r\n templateUrl: './dynamic-column.component.html',\r\n styleUrls: ['./dynamic-column.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDynamicColumn implements OnInit, OnDestroy {\r\n @ViewChild(SdSideDrawer) sideDrawer: SdSideDrawer;\r\n @Input() gridOption: SdGridMaterialOption;\r\n systemColumns: SdGeneratedColumn[];\r\n columns: SdGeneratedColumn[];\r\n #subscription = new Subscription();\r\n columnTypes = ['string', 'number', 'bool', 'date', 'datetime', 'time', 'values', 'children', 'children-col'];\r\n form = new FormGroup({});\r\n isDetail = false;\r\n detail: SdGeneratedColumn;\r\n originColumns: SdGridMaterialColumn[] = [];\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private generatedColumnService: SdGeneratedColumnService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (systemSetting) {\r\n this.#subscription?.add(systemSetting.observer.subscribe(columns => {\r\n this.systemColumns = columns;\r\n }));\r\n }\r\n if (setting) {\r\n this.#subscription?.add(setting.observer.subscribe(columns => {\r\n this.columns = columns;\r\n }));\r\n }\r\n this.originColumns = this.gridOption.columns.filter(e => e.type !== 'children' && e.type !== 'children-col');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onDetail = (column?: SdGeneratedColumn) => {\r\n this.detail = column || {\r\n field: uuid.v4(),\r\n title: '',\r\n type: 'string',\r\n isSystem: false,\r\n useTemplate: false\r\n };\r\n this.form.markAsUntouched();\r\n this.form.markAsPristine();\r\n this.isDetail = true;\r\n }\r\n\r\n onSave = () => {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (this.detail.isSystem) {\r\n if (!this.detail.id) {\r\n systemSetting.set([...this.systemColumns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n systemSetting.set([...this.systemColumns]);\r\n }\r\n } else {\r\n if (!this.detail.id) {\r\n setting.set([...this.columns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n setting.set([...this.columns]);\r\n }\r\n }\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 { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.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: SdGridMaterialColumn;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\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 { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn, SdGridMaterialColumnValues } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-editor',\r\n templateUrl: './desktop-cell-editor.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellEditor {\r\n @Input() sdId: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n\r\n onChange = (selected: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n this.column?.editor?.change?.(this.item, selected);\r\n }\r\n\r\n editorOnAdd = () => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.add?.(this.item);\r\n }\r\n }\r\n\r\n editorOnEdit = (option: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.edit?.(option, this.item);\r\n }\r\n }\r\n\r\n editorOnDelete = (option: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.delete?.(option, this.item);\r\n }\r\n }\r\n}\r\n","import { NgZone, Pipe, PipeTransform } from '@angular/core';\r\nimport { CalculateSdId } from '../functions/calculate-sd-id';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { EditorHandlerRow, SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorHandlerRow'\r\n})\r\nexport class SdEditorHandlerRowPipe implements PipeTransform {\r\n constructor(private zone: NgZone) { }\r\n #visible = (col: SdGridMaterialColumn, item: SdItem) => {\r\n if (col.type === 'children' || col.type === 'children-col') {\r\n return false;\r\n }\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (col.editor) {\r\n const isDisabled = typeof (col.editor.disabled) === 'function' ? col.editor.disabled(item) : col.editor.disabled;\r\n if (isDisabled) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n transform(status: 'create' | 'update', item: SdItem, gridOption: SdGridMaterialOption): EditorHandlerRow {\r\n const { editor } = gridOption;\r\n if (!editor) {\r\n return null;\r\n }\r\n let isDisabled = false;\r\n if (typeof (editor?.disabled) === 'function') {\r\n isDisabled = editor.disabled(item);\r\n } else {\r\n isDisabled = editor?.disabled;\r\n }\r\n if (editor.type === 'inline') {\r\n const removable = editor.removable;\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: !isDisabled,\r\n editable: false,\r\n removable: status !== 'create' && (typeof (removable) === 'function' ? removable(item) : removable),\r\n savable: false,\r\n cancelable: !isDisabled && status === 'create'\r\n }\r\n } else if (editor.type === 'focus') {\r\n if (isDisabled) {\r\n return null;\r\n }\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: !!status,\r\n editable: !status,\r\n removable: false,\r\n savable: !!status,\r\n cancelable: !!status\r\n }\r\n } else if (editor.type === 'popup') {\r\n if (isDisabled) {\r\n return null;\r\n }\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: false,\r\n editable: !status,\r\n removable: false,\r\n savable: false,\r\n cancelable: false\r\n }\r\n }\r\n item.editorHandlerColumn = item.editorHandlerColumn || {};\r\n const { columns } = gridOption;\r\n for (const col of columns) {\r\n if (col.type === 'children-col') {\r\n for (const childCol of col.children) {\r\n item.editorHandlerColumn[childCol.field] = {\r\n ...item.editorHandlerColumn[childCol.field],\r\n visible: this.#visible(childCol, item)\r\n }\r\n }\r\n } else {\r\n item.editorHandlerColumn[col.field] = {\r\n ...item.editorHandlerColumn[col.field],\r\n visible: this.#visible(col, item)\r\n }\r\n }\r\n }\r\n this.zone.run(() => {\r\n item.sdId = CalculateSdId(item);\r\n });\r\n return item.editorHandlerRow;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorValidate'\r\n})\r\nexport class SdEditorValidatePipe implements PipeTransform {\r\n #previous: Date;\r\n #delay = 200; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện validate\r\n async transform(sdId: string, item: SdItem, items: SdItem[], gridOption: SdGridMaterialOption): Promise<string> {\r\n const { editor } = gridOption;\r\n if (!editor.validate) {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n if(editor.type === 'popup') {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n if (editor.type === 'focus' && !item.editorStatus) {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n this.#previous = new Date();\r\n await new Promise(resolve => setTimeout(resolve, this.#delay));\r\n const now = new Date();\r\n const dif = now.getTime() - this.#previous.getTime();\r\n if (dif < this.#delay) {\r\n return;\r\n }\r\n const result = editor.validate(item, items?.indexOf(item));\r\n if (result instanceof Promise) {\r\n item.editorErrorMessage = await result;\r\n return;\r\n } else {\r\n item.editorErrorMessage = result;\r\n return;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\n@Pipe({\r\n name: 'sdStyleRowCss'\r\n})\r\nexport class SdStyleRowCss implements PipeTransform {\r\n transform(item: any, gridOption: SdGridMaterialOption) {\r\n return gridOption?.style?.rowCss?.(item) || {};\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-editor-validation',\r\n templateUrl: './desktop-editor-validation.component.html',\r\n styleUrls: ['./desktop-editor-validation.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopEditorValidation {\r\n @Input() sdId: string;\r\n @Input() item: any;\r\n @Input() items: any[];\r\n @Input() gridOption: SdGridMaterialOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdGridMaterialColumn } from '../../models/grid-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 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 @Input() column: SdGridMaterialColumn;\r\n @Output() filterChange = new EventEmitter();\r\n #valueChanges = new Subject();\r\n #subcription = new Subscription();\r\n constructor(\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.#subcription.add(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 ngOnDestroy() {\r\n this.#subcription.unsubscribe();\r\n }\r\n\r\n onFilterChange = () => {\r\n this.filterChange.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdItem, selection: SdGridMaterialSelection): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.actions = rowData.actions || [];\r\n if (!actions?.length) {\r\n rowData.selectable = true;\r\n return rowData.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.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.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.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.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.selectable = !!rowData.actions.length;\r\n if (!rowData.selectable || !groupedActions.length || rowData?.sdGroup?.items?.length) {\r\n return rowData.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.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../../models/grid-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: SdGridMaterialOption;\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 { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\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 rowData: any,\r\n column: SdGridMaterialColumn,\r\n gridOption: SdGridMaterialOption): Promise<SdCellView> {\r\n const { displayOnEmpty } = gridOption;\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 { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridMaterialItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdGroup'\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: any[], gridOption: SdGridMaterialOption): SdGridMaterialItem[] {\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]: SdGridMaterialItem[]\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: SdGridMaterialItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n results.push({\r\n sdGroup: {\r\n items: groupItem[key],\r\n htmlTemplate: htmlTemplate(groupItem[key])\r\n }\r\n });\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 { SdGridMaterial } from './grid-material.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 { SdGridFilterService } from './services/grid-filter/grid-filter.service';\r\nimport { SdDesktopCellChildrenView } from './components/desktop-cell-children-view/desktop-cell-children-view.component';\r\nimport { SdColumnChildrenFilterPipe } from './pipes/column-children-filter.pipe';\r\nimport { SdColumnTitlePipe } from './pipes/column-title.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 { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdPopupGridConfiguration } from './components/popup-grid-configuration/popup-grid-configuration.component';\r\nimport { SdGridConfigurationService } from './services/grid-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 { SdDynamicColumn } from './components/dynamic-column/dynamic-column.component';\r\nimport { SdGeneratedColumnService } from './services/generated-column/generated-column.service';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdDesktopCellEditor } from './components/desktop-cell-editor/desktop-cell-editor.component';\r\nimport { SdEditorHandlerRowPipe } from './pipes/editor-handler-row.pipe';\r\nimport { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';\r\nimport { SdEditorValidatePipe } from './pipes/editor-validate.pipe';\r\nimport { SdStyleRowCss } from './pipes/style-row-css.pipe';\r\nimport { SdDesktopEditorValidation } from './components/desktop-editor-validation/desktop-editor-validation.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 SdDesktopCellEditor,\r\n SdDesktopEditorValidation,\r\n SdDesktopCellView,\r\n SdDesktopCellChildrenView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdGridMaterial,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdPopupExport,\r\n SdPopupGridConfiguration,\r\n SdGridFilter,\r\n SdPopupFilter,\r\n SdDynamicColumn,\r\n\r\n // Pipes\r\n SdGridConfigurationResultPipe,\r\n SdColumnChildrenFilterPipe,\r\n SdColumnTitlePipe,\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 SdEditorHandlerRowPipe,\r\n SdEditorHandlerColumnPipe,\r\n SdEditorValidatePipe,\r\n SdStyleRowCss,\r\n SdCellViewPipe,\r\n SdGroupPipe\r\n ],\r\n exports: [\r\n SdGridMaterial,\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 SdGridFilterService,\r\n SdGridConfigurationService,\r\n SdGeneratedColumnService,\r\n SdColumnValuesPipe,\r\n SdEditorHandlerColumnPipe,\r\n {\r\n provide: MatPaginatorIntl, useClass: MatPaginatorIntlCro\r\n }\r\n ]\r\n})\r\nexport class SdGridMaterialModule {\r\n}\r\n"]}