@sd-angular/core 1.3.92 → 1.3.93

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/bundles/sd-angular-core-grid-material.umd.js +425 -362
  2. package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
  3. package/bundles/sd-angular-core-grid-material.umd.min.js +2 -2
  4. package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
  5. package/esm2015/grid-material/sd-angular-core-grid-material.js +6 -6
  6. package/esm2015/grid-material/src/lib/components/grid-filter/grid-filter.component.js +69 -137
  7. package/esm2015/grid-material/src/lib/components/popup-filter/popup-filter.component.js +58 -23
  8. package/esm2015/grid-material/src/lib/grid-material.component.js +76 -65
  9. package/esm2015/grid-material/src/lib/grid-material.module.js +2 -2
  10. package/esm2015/grid-material/src/lib/models/grid-export.model.js +1 -1
  11. package/esm2015/grid-material/src/lib/models/grid-option.model.js +1 -1
  12. package/esm2015/grid-material/src/lib/pipes/filter-external.pipe.js +1 -1
  13. package/esm2015/grid-material/src/lib/services/grid-filter/grid-filter.model.js +3 -0
  14. package/esm2015/grid-material/src/lib/services/grid-filter/grid-filter.service.js +166 -0
  15. package/esm2015/grid-material/src/public-api.js +1 -1
  16. package/fesm2015/sd-angular-core-grid-material.js +382 -304
  17. package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
  18. package/grid-material/sd-angular-core-grid-material.d.ts +5 -5
  19. package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
  20. package/grid-material/src/lib/components/grid-filter/grid-filter.component.d.ts +4 -25
  21. package/grid-material/src/lib/components/popup-filter/popup-filter.component.d.ts +7 -31
  22. package/grid-material/src/lib/grid-material.component.d.ts +6 -6
  23. package/grid-material/src/lib/models/grid-export.model.d.ts +1 -1
  24. package/grid-material/src/lib/models/grid-option.model.d.ts +1 -1
  25. package/grid-material/src/lib/pipes/filter-external.pipe.d.ts +1 -1
  26. package/grid-material/src/lib/{models → services/grid-filter}/grid-filter.model.d.ts +14 -9
  27. package/grid-material/src/lib/services/grid-filter/grid-filter.service.d.ts +16 -0
  28. package/grid-material/src/public-api.d.ts +1 -1
  29. package/package.json +1 -1
  30. package/{sd-angular-core-1.3.92.tgz → sd-angular-core-1.3.93.tgz} +0 -0
  31. package/esm2015/grid-material/src/lib/models/grid-filter.model.js +0 -3
  32. package/esm2015/grid-material/src/lib/services/grid-filter.service.js +0 -65
  33. package/grid-material/src/lib/services/grid-filter.service.d.ts +0 -9
@@ -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/services/grid-filter.service.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/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","externalFilters","externalFilter","inlineExternal","columns","columnFilter","inlineColumn","filterDefs","filterDef","inlineFilterDef","changeFilter","EventEmitter","clearFilter","open","JSON","parse","stringify","modal","markForCheck","close","onApply","emit","onClear","Component","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","ViewChild","Output","settingService","_prefix","key","selectedQuickFilter","quickFilters","configuration","prefix","_a","hash","Injectable","SdSettingService","SdGridFilter","ref","deviceService","gridFilterService","_filterOptionChanges","Subject","filterChange","BehaviorSubject","_subscription","Subscription","_loadDefault","_u","_v","column","field","_b","filter","_c","_d","default","_w","_x","_e","type","from","_j","_g","_f","_h","undefined","to","_o","_l","_k","_m","_p","_y","_z","sdMaterialFilterDef","_q","_clearFilter","_s","_t","onFilter","item","popupFilter","onChangeFilter","onReset","onClearFilter","setFilter","exFilter","isMobileOrTablet","isDesktop","ngAfterViewInit","add","pipe","startWith","subscribe","disabled","ngOnDestroy","unsubscribe","DeviceDetectorService","SdGridFilterService","SdPopupExport","loadingService","exportService","notifyService","translateService","groups","enableCreating","selected","files","export","form","FormGroup","_getExportableColumns","gridColumns","additionalColumns","_getExportableGroups","gridOption","permission","hideMyTemplates","loadFiles","code","detectChanges","exportDefault","_getExportColumns","columns_1","displayColumns","firstColumns","secondColumns","reduce","first","find","children","e1","map","assign","data","file","isCSV","exportCSV","group","selectedGroup","filesInFolder","_initTemplate","fileName","sheets","isArray","sheet","name","items","fields","_0","_1","_3","generateTemplate","start","finally","stop","generateAndUploadTemplate","generateUploadTemplate","onExport","uploadTemplate","validator","_r","validators","removeFile","confirm","translate","idx","splice","createTemplate","invalid","markAllAsTouched","some","notify","warning","templateName","filePath","onChangeGroup","listGroups","selectedOptions","validatorTemplateName","test","option","forEach","childColumn","title","description","width","ngOnInit","SdLoadingService","SdExportService","SdNotifyService","SdTranslateService","gridMaterialConfiguration","_COLUMNS","EDITORVALIDATION","EDITOR","SUBINFORMATION","COMMAND","SELECTION","GROUP","_cache","init","subject_1","load","_load","_get","_set","remove","_remove","_default","observer","_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","Inject","Optional","transform","valueField","displayField","remain","_prefix$1","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","SdGridMaterial","gridConfigurationService","columnValuesPipe","editorHandlerColumnPipe","uuid.v4","_localItems","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_reload","force","isExporting","isSelectAll","exportTitle","_loadCompleted","_initCellDef","_4","_5","sdMaterialCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","rawColumnFilter","gridFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","_initConfiguration","paginate","showFirstLastButtons","_filterLocal","localItems","filterInfo","filterValue","toString","trim","toLowerCase","columnValue","fValue","replace","cValue","fromDate","Date","begin","toDate","end","columnTime","getTime","fromDateTime","toDateTime","type_1","field_1","sort","current","s1","s2","reverse","index","total","_getFilter","pageIndex","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","onCreate","onAdd","addToLast","temporary","onUpdate","onSave","saving","validate","message","err_1","onCancel","idx2","idx1","onRemove","beforeRemove","_2","update","refreshItem","_subscription$1","debounceTime","source","gridConfigurationObserver","paginator","page","sortChange","switchMap","changes","drop","event","moveItemInArray","previousIndex","currentIndex","keys","animations","trigger","style","height","minHeight","visibility","transition","animate","SdGridConfigurationService","SdColumnValuesPipe","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$2","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$3","loadSystem","systemColumn","SdDynamicColumn","generatedColumnService","columnTypes","isDetail","originColumns","onDetail","detail","isSystem","useTemplate","markAsUntouched","markAsPristine","systemSetting","setting","id","systemColumns","_subscription$2","SdGeneratedColumnService","SdSideDrawer","onChange","change","editorOnAdd","editorOnEdit","edit","editorOnDelete","delete","SdEditorHandlerRowPipe","status","isDisabled","editable","savable","cancelable","_visible$1","SdEditorValidatePipe","_previous","_delay","now","SdStyleRowCss","rowCss","SdColumnInlineFilter","_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, Output, EventEmitter, 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 } from '../../models/grid-filter.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\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 @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\r\n @Output() changeFilter = new EventEmitter<{\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }>();\r\n @Output() clearFilter = new EventEmitter();\r\n constructor(\r\n private cdRef: ChangeDetectorRef\r\n ) {\r\n }\r\n\r\n open = (args: {\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }) => {\r\n const { inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = args;\r\n this.inlineColumn = JSON.parse(JSON.stringify(inlineColumn || {}));\r\n this.columnFilter = JSON.parse(JSON.stringify(columnFilter || {}));\r\n this.inlineExternal = JSON.parse(JSON.stringify(inlineExternal || {}));\r\n this.externalFilter = JSON.parse(JSON.stringify(externalFilter || {}));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(inlineFilterDef || {}));\r\n this.filterDef = JSON.parse(JSON.stringify(filterDef || {}));\r\n this.modal.open();\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n close = () => {\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n onApply = () => {\r\n this.changeFilter.emit({\r\n inlineColumn: this.inlineColumn || {},\r\n columnFilter: this.columnFilter || {},\r\n inlineExternal: this.inlineExternal || {},\r\n externalFilter: this.externalFilter || {},\r\n inlineFilterDef: this.inlineFilterDef || {},\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.clearFilter.emit();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\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 { SdGridMaterialFilterConfiguration } from '../models/grid-filter.model';\r\n\r\n@Injectable()\r\nexport class SdGridFilterService {\r\n #prefix = '61d22e8e-eee8-4aad-8e1c-044a532fea91';\r\n constructor(private settingService: SdSettingService) {\r\n }\r\n get = (key: string): SdGridMaterialFilterConfiguration => {\r\n if (!key) {\r\n return {\r\n selectedQuickFilter: null,\r\n quickFilters: [],\r\n inlineExternal: {},\r\n inlineColumn: {},\r\n inlineFilterDef: {}\r\n };\r\n }\r\n const { get } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n const configuration = get();\r\n return {\r\n selectedQuickFilter: configuration?.selectedQuickFilter ?? null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration?.inlineExternal || {},\r\n inlineColumn: configuration?.inlineColumn || {},\r\n inlineFilterDef: configuration?.inlineFilterDef || {},\r\n };\r\n }\r\n\r\n set = (key: string, configuration: SdGridMaterialFilterConfiguration): SdGridMaterialFilterConfiguration => {\r\n configuration = {\r\n selectedQuickFilter: configuration?.selectedQuickFilter || null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration.inlineExternal || {},\r\n inlineColumn: configuration.inlineColumn || {},\r\n inlineFilterDef: configuration.inlineFilterDef || {}\r\n };\r\n if (!key) {\r\n return configuration;\r\n }\r\n const { set } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n key = hash({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n set(configuration);\r\n return configuration;\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewChild, AfterViewInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdGridMaterialFilterOption, SdGridMaterialExternalFilter } from '../../models/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 { startWith } from 'rxjs/operators';\r\nimport { SdGridFilterService } from '../../services/grid-filter.service';\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 #filterOptionChanges = new Subject<SdGridMaterialFilterOption>();\r\n @Input('filter') set _filter(filter: SdGridMaterialFilterOption) {\r\n this.filter = filter;\r\n this.#filterOptionChanges.next(this.filter);\r\n }\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterChange = new BehaviorSubject<boolean>(false);\r\n\r\n filterDef: any = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n columnFilter: any = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n isMobileOrTablet: boolean;\r\n\r\n #subscription = new Subscription();\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private deviceService: DeviceDetectorService,\r\n private gridFilterService: SdGridFilterService) {\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.#filterOptionChanges.pipe(startWith(this.filter)).subscribe(() => {\r\n if (this.filter?.disabled) {\r\n this.filterChange.next(true);\r\n return;\r\n }\r\n this.externalFilters = this.filter?.externalFilters || [];\r\n const configuration = this.gridFilterService.get(this.filter?.key);\r\n this.inlineColumn = configuration.inlineColumn;\r\n this.inlineExternal = configuration.inlineExternal;\r\n this.inlineFilterDef = configuration.inlineFilterDef;\r\n this.#loadDefault();\r\n this.filterChange.next(true);\r\n this.ref.markForCheck();\r\n }));\r\n }\r\n\r\n #loadDefault = () => {\r\n for (const column of this.columns) {\r\n this.inlineColumn[column.field] = this.inlineColumn[column.field] ?? column?.filter?.defaultShowing;\r\n this.columnFilter[column.field] = this.columnFilter[column.field] ?? column?.filter?.default;\r\n }\r\n for (const externalFilter of this.externalFilters) {\r\n this.inlineExternal[externalFilter.field] = this.inlineExternal[externalFilter.field] ?? externalFilter?.defaultShowing;\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: this.externalFilter[externalFilter.field]?.from ?? externalFilter.default?.from ?? undefined,\r\n to: this.externalFilter[externalFilter.field]?.to ?? externalFilter.default?.to ?? undefined\r\n };\r\n } else {\r\n this.externalFilter[externalFilter.field] = this.externalFilter[externalFilter.field] ?? externalFilter.default;\r\n }\r\n }\r\n for (const filterDef of this.filterDefs) {\r\n this.inlineFilterDef[filterDef.sdMaterialFilterDef] =\r\n this.inlineFilterDef[filterDef.sdMaterialFilterDef] ?? filterDef?.defaultShowing;\r\n }\r\n }\r\n\r\n #clearFilter = () => {\r\n this.columnFilter = {};\r\n this.externalFilter = {};\r\n this.filterDef = {};\r\n for (const externalFilter of this.externalFilters) {\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: undefined,\r\n to: undefined\r\n };\r\n }\r\n }\r\n this.ref.markForCheck();\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.filterChange.next(true);\r\n }\r\n\r\n open = () => {\r\n this.popupFilter.open({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef\r\n });\r\n }\r\n\r\n onChangeFilter = (args: {\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }) => {\r\n const { inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = args;\r\n this.inlineColumn = inlineColumn;\r\n this.columnFilter = columnFilter;\r\n this.inlineExternal = inlineExternal;\r\n this.externalFilter = externalFilter;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.filterDef = filterDef;\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn,\r\n inlineExternal,\r\n quickFilters: [],\r\n inlineFilterDef,\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.next(true);\r\n }\r\n\r\n onReset = () => {\r\n this.inlineColumn = {};\r\n this.columnFilter = {};\r\n this.inlineExternal = {};\r\n this.externalFilter = {};\r\n this.inlineFilterDef = {};\r\n this.filterDef = {};\r\n this.#loadDefault();\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.columnFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n quickFilters: [],\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.next(true);\r\n this.ref.markForCheck();\r\n }\r\n\r\n onClearFilter = () => {\r\n this.#clearFilter();\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.columnFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n quickFilters: [],\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.next(true);\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 if (columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n if (externalFilter) {\r\n this.externalFilter = externalFilter;\r\n }\r\n if (filterDef) {\r\n this.filterDef = filterDef;\r\n }\r\n for (const exFilter of this.externalFilters) {\r\n if (exFilter.type === 'daterange') {\r\n this.externalFilter[exFilter.field] = {\r\n from: this.externalFilter[exFilter.field]?.from ?? undefined,\r\n to: this.externalFilter[exFilter.field]?.to ?? undefined\r\n };\r\n }\r\n }\r\n this.ref.markForCheck();\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 {\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 {\r\n SdGridMaterialFilterRequest\r\n} from './models/grid-filter.model';\r\nimport {\r\n SdGridMaterialOption\r\n} 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 { Subscription, isObservable, Observable, BehaviorSubject } 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 { SdTranslateService } from '@sd-angular/core/translate';\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\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 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\r\n this.#reload.next({\r\n force: true,\r\n source: 'INITIALIZE'\r\n });\r\n option?.columns?.forEach(col => {\r\n if (col.filter?.default) {\r\n this.columnFilter[col.field] = col.filter.default;\r\n }\r\n });\r\n const configuration = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.gridConfigurationObserver = configuration.observer;\r\n configuration.load();\r\n }\r\n }\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(paginator.page.pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false\r\n });\r\n }),\r\n ).subscribe());\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(sort.sortChange.pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false\r\n });\r\n }),\r\n ).subscribe());\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) sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective) 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: {\r\n [key: string]: any\r\n } = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #reload = new BehaviorSubject<{\r\n force: boolean,\r\n source?: 'INITIALIZE' | 'FILTER'\r\n }>({\r\n force: true\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) @Optional() public configuration: ISdGridMaterialConfiguration,\r\n private gridConfigurationService: SdGridConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private columnValuesPipe: SdColumnValuesPipe,\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(this.#reload.pipe(\r\n debounceTime(200),\r\n // startWith(this.#reload.value),\r\n filter(data => {\r\n if (this.#loadCompleted) {\r\n return true;\r\n }\r\n if (!this.gridOption?.filter?.disabled) {\r\n return data.source === 'FILTER';\r\n }\r\n return data.source === 'INITIALIZE';\r\n }),\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 ).subscribe(this.#render));\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\r\n // this.#subscription.add(this.#optionChanges.pipe(\r\n // debounceTime(200),\r\n // startWith({}),\r\n // map(this.#getFilter),\r\n // switchMap(filterInfo => this.#load(filterInfo, true))\r\n // ).subscribe(this.#render));\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 return {\r\n rawColumnFilter: (this.gridOption?.filter?.inlineColumn ? this.columnFilter : this.gridFilter?.columnFilter) || {},\r\n rawExternalFilter: this.gridFilter?.externalFilter || {},\r\n rawFilterDef: this.gridFilter?.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 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 #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\r\n && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length\r\n };\r\n }\r\n\r\n #getFilter = (): SdGridMaterialFilterRequest => ({\r\n rawColumnFilter: (this.gridOption?.filter?.inlineColumn ? this.columnFilter : this.gridFilter?.columnFilter) || {},\r\n rawExternalFilter: this.gridFilter?.externalFilter || {},\r\n rawFilterDef: this.gridFilter?.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 #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.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;\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<any[] | {\r\n items: any[];\r\n total: number;\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 }\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.then(res => {\r\n rowData.expandDetail = res;\r\n rowData.isExpanded = true;\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?.(rowData, this.items.filter(e => e.isSelected));\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?.(rowData, this.items.filter(e => e.isSelected));\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.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 if (this.gridOption?.filter?.inlineColumn) {\r\n this.columnFilter = {};\r\n }\r\n this.gridFilter?.onClearFilter();\r\n }\r\n\r\n setFilter = (args: {\r\n columnFilter: any,\r\n externalFilter: any,\r\n filterDef: any\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(item.sdVersion, item, this.gridOption);\r\n }\r\n\r\n get editedItems(): (T & { editorErrorMessage: string })[] {\r\n return this.items.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 }).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 } = 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 } = 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 } = 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 '../models/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.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","filterRegister","ngAfterViewInit","add","observer","subscribe","configuration","JSON","parse","stringify","ngOnDestroy","unsubscribe","onClear","remove","Component","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","ViewChild","SdGridFilter","ref","deviceService","_filterOptionChanges","Subject","filterRegisterChange","BehaviorSubject","onFilter","item","_filterRegister$1","popupFilter","onReset","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","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","register","cacheSession","uuid.v4","_prefix$1","default","_loadDefault","undefined","selectedQuickFilter","quickFilters","keys","current","updatedConfiguration","from","to","sdMaterialFilterDef","SdGridMaterial","gridConfigurationService","columnValuesPipe","gridFilterService","editorHandlerColumnPipe","_localItems","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_reload","force","isExporting","isSelectAll","exportTitle","_loadCompleted","_initCellDef","_4","_5","sdMaterialCellDef","_initFilterDef","_loadFilterRegister","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","rawColumnFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","_initConfiguration","paginate","showFirstLastButtons","_subscription$2","pipe","debounceTime","pageIndex","_filterLocal","localItems","filterInfo","filterValue","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","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$2","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$3","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, Output, EventEmitter, 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 { BehaviorSubject, 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.#filterOptionChanges.pipe(startWith(this.filter)).subscribe(() => {\r\n // if (this.filter?.disabled) {\r\n // this.filterChange.next(true);\r\n // return;\r\n // }\r\n // this.externalFilters = this.filter?.externalFilters || [];\r\n // const configuration = this.gridFilterService.get(this.filter?.key);\r\n // this.inlineColumn = configuration.inlineColumn;\r\n // this.inlineExternal = configuration.inlineExternal;\r\n // this.inlineFilterDef = configuration.inlineFilterDef;\r\n // this.#loadDefault();\r\n // this.filterChange.next(true);\r\n // this.ref.markForCheck();\r\n // }));\r\n this.#subscription.add(this.#filterRegister.observer.subscribe(configuration => {\r\n this.inlineColumn = JSON.parse(JSON.stringify(configuration.inlineColumn));\r\n this.columnFilter = JSON.parse(JSON.stringify(configuration.columnFilter));\r\n this.inlineExternal = JSON.parse(JSON.stringify(configuration.inlineExternal));\r\n this.externalFilter = JSON.parse(JSON.stringify(configuration.externalFilter));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(configuration.inlineFilterDef));\r\n this.filterDef = JSON.parse(JSON.stringify(configuration.filterDef));\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.set({\r\n inlineColumn: this.inlineColumn,\r\n columnFilter: this.columnFilter,\r\n inlineExternal: this.inlineExternal,\r\n externalFilter: this.externalFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n filterDef: this.filterDef\r\n });\r\n // this.changeFilter.emit({\r\n // inlineColumn: this.inlineColumn || {},\r\n // columnFilter: this.columnFilter || {},\r\n // inlineExternal: this.inlineExternal || {},\r\n // externalFilter: this.externalFilter || {},\r\n // inlineFilterDef: this.inlineFilterDef || {},\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.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 { startWith } from 'rxjs/operators';\r\nimport { SdGridFilterService } from '../../services/grid-filter/grid-filter.service';\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 #filterOptionChanges = new Subject<SdGridMaterialFilterOption>();\r\n @Input('filter') set _filter(filter: SdGridMaterialFilterOption) {\r\n this.filter = filter;\r\n this.#filterOptionChanges.next(this.filter);\r\n }\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n #filterRegister: SdGridMaterialFilterRegister;\r\n @Input() 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 externalFilters: SdGridMaterialExternalFilter[] = [];\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.#filterOptionChanges.pipe(startWith(this.filter)).subscribe(() => {\r\n // if (this.filter?.disabled) {\r\n // this.filterChange.next(true);\r\n // return;\r\n // }\r\n // this.externalFilters = this.filter?.externalFilters || [];\r\n // const configuration = this.gridFilterService.get(this.filter?.key);\r\n // this.inlineColumn = configuration.inlineColumn;\r\n // this.inlineExternal = configuration.inlineExternal;\r\n // this.inlineFilterDef = configuration.inlineFilterDef;\r\n // this.#loadDefault();\r\n // this.filterChange.next(true);\r\n // this.ref.markForCheck();\r\n // }));\r\n this.#subscription.add(this.filterRegisterChange.subscribe(() => {\r\n if (this.#filterRegister) {\r\n this.#subscription.add(this.#filterRegister.observer.subscribe(configuration => {\r\n this.inlineColumn = configuration.inlineColumn;\r\n this.columnFilter = configuration.columnFilter;\r\n this.inlineExternal = configuration.inlineExternal;\r\n this.externalFilter = configuration.externalFilter;\r\n this.inlineFilterDef = configuration.inlineFilterDef;\r\n this.filterDef = configuration.filterDef;\r\n }));\r\n this.ref.markForCheck();\r\n };\r\n }));\r\n }\r\n\r\n // #loadDefault = () => {\r\n // for (const column of this.columns) {\r\n // this.inlineColumn[column.field] = this.inlineColumn[column.field] ?? column?.filter?.defaultShowing;\r\n // this.columnFilter[column.field] = this.columnFilter[column.field] ?? column?.filter?.default;\r\n // }\r\n // for (const externalFilter of this.externalFilters) {\r\n // this.inlineExternal[externalFilter.field] = this.inlineExternal[externalFilter.field] ?? externalFilter?.defaultShowing;\r\n // if (externalFilter.type === 'daterange') {\r\n // this.externalFilter[externalFilter.field] = {\r\n // from: this.externalFilter[externalFilter.field]?.from ?? externalFilter.default?.from ?? undefined,\r\n // to: this.externalFilter[externalFilter.field]?.to ?? externalFilter.default?.to ?? undefined\r\n // };\r\n // } else {\r\n // this.externalFilter[externalFilter.field] = this.externalFilter[externalFilter.field] ?? externalFilter.default;\r\n // }\r\n // }\r\n // for (const filterDef of this.filterDefs) {\r\n // this.inlineFilterDef[filterDef.sdMaterialFilterDef] =\r\n // this.inlineFilterDef[filterDef.sdMaterialFilterDef] ?? filterDef?.defaultShowing;\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.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef\r\n });\r\n // this.filterChange.next(true);\r\n }\r\n\r\n open = () => {\r\n this.popupFilter.open();\r\n }\r\n\r\n onReset = () => {\r\n this.#filterRegister.remove();\r\n this.ref.markForCheck();\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 // if (columnFilter) {\r\n // this.columnFilter = columnFilter;\r\n // }\r\n // if (externalFilter) {\r\n // this.externalFilter = externalFilter;\r\n // }\r\n // if (filterDef) {\r\n // this.filterDef = filterDef;\r\n // }\r\n // for (const exFilter of this.externalFilters) {\r\n // if (exFilter.type === 'daterange') {\r\n // this.externalFilter[exFilter.field] = {\r\n // from: this.externalFilter[exFilter.field]?.from ?? undefined,\r\n // to: this.externalFilter[exFilter.field]?.to ?? undefined\r\n // };\r\n // }\r\n // }\r\n // this.ref.markForCheck();\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 { SdGridMaterialExternalFilter, SdGridMaterialFilterConfiguration, SdGridMaterialFilterRegister } from './grid-filter.model';\r\nimport * as uuid from 'uuid';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\n\r\n@Injectable()\r\nexport class SdGridFilterService {\r\n #prefix = '61d22e8e-eee8-4aad-8e1c-044a532fea91';\r\n constructor(private settingService: SdSettingService) {\r\n }\r\n register = (key: string, args: {\r\n columns: SdGridMaterialColumn[],\r\n externalFilters: SdGridMaterialExternalFilter[],\r\n filterDefs: SdMaterialFilterDefDirective[]\r\n }): SdGridMaterialFilterRegister => {\r\n let cacheSession = false;\r\n if (!key) {\r\n key = uuid.v4();\r\n cacheSession = true; // Nếu không có key thì chỉ lưu theo session\r\n }\r\n const { get, set, remove, subject, observer } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n }, {\r\n default: this.#loadDefault(args),\r\n type: cacheSession ? 'session' : undefined\r\n });\r\n return {\r\n get: (): SdGridMaterialFilterConfiguration => {\r\n const configuration = get();\r\n return {\r\n selectedQuickFilter: configuration?.selectedQuickFilter ?? null,\r\n quickFilters: configuration?.quickFilters || [],\r\n // Filter column\r\n inlineColumn: configuration?.inlineColumn || {},\r\n columnFilter: configuration?.columnFilter || {},\r\n // Filter external\r\n inlineExternal: configuration?.inlineExternal || {},\r\n externalFilter: configuration?.externalFilter || {},\r\n // Filter def\r\n inlineFilterDef: configuration?.inlineFilterDef || {},\r\n filterDef: configuration?.filterDef || {}\r\n };\r\n },\r\n set: (configuration: Partial<SdGridMaterialFilterConfiguration>): SdGridMaterialFilterConfiguration => {\r\n const keys = Object.keys(configuration || {});\r\n const current = get();\r\n const { selectedQuickFilter, quickFilters, inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = current;\r\n const updatedConfiguration = {\r\n selectedQuickFilter: keys.includes('selectedQuickFilter') ? (configuration?.selectedQuickFilter || null) : selectedQuickFilter,\r\n quickFilters: keys.includes('quickFilters') ? (configuration?.quickFilters || []) : quickFilters,\r\n // Filter column\r\n inlineColumn: keys.includes('inlineColumn') ? (configuration?.inlineColumn || {}) : inlineColumn,\r\n columnFilter: keys.includes('columnFilter') ? (configuration?.columnFilter || {}) : columnFilter,\r\n // Filter external\r\n inlineExternal: keys.includes('inlineExternal') ? (configuration?.inlineExternal || {}) : inlineExternal,\r\n externalFilter: keys.includes('externalFilter') ? (configuration?.externalFilter || {}) : externalFilter,\r\n // Filter def\r\n inlineFilterDef: keys.includes('inlineFilterDef') ? (configuration?.inlineFilterDef || {}) : inlineFilterDef,\r\n filterDef: keys.includes('filterDef') ? (configuration?.filterDef || {}) : filterDef,\r\n };\r\n set(updatedConfiguration);\r\n return updatedConfiguration;\r\n },\r\n remove: () => {\r\n remove();\r\n },\r\n subject,\r\n observer\r\n }\r\n }\r\n\r\n #loadDefault = (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 columnFilter: Record<string, any> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n const filterDef: Record<string, any> = {};\r\n // Filter column\r\n for (const item of (columns || [])) {\r\n inlineColumn[item.field] = inlineColumn[item.field] ?? item?.filter?.defaultShowing;\r\n columnFilter[item.field] = columnFilter[item.field] ?? item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of (externalFilters || [])) {\r\n inlineExternal[item.field] = inlineExternal[item.field] ?? item?.defaultShowing;\r\n if (item.type === 'daterange') {\r\n externalFilter[item.field] = {\r\n from: externalFilter[item.field]?.from ?? item.default?.from ?? undefined,\r\n to: externalFilter[item.field]?.to ?? item.default?.to ?? undefined\r\n };\r\n } else {\r\n externalFilter[item.field] = externalFilter[item.field] ?? item.default;\r\n }\r\n }\r\n // Filter def\r\n for (const item of (filterDefs || [])) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = inlineFilterDef[item.sdMaterialFilterDef] ?? item?.defaultShowing;\r\n }\r\n return {\r\n quickFilters: [],\r\n selectedQuickFilter: null,\r\n inlineColumn,\r\n columnFilter,\r\n inlineExternal,\r\n externalFilter,\r\n inlineFilterDef,\r\n filterDef,\r\n }\r\n }\r\n\r\n get = (key: string): SdGridMaterialFilterConfiguration => {\r\n if (!key) {\r\n return {\r\n selectedQuickFilter: null,\r\n quickFilters: [],\r\n inlineExternal: {},\r\n inlineColumn: {},\r\n inlineFilterDef: {}\r\n };\r\n }\r\n const { get } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n const configuration = get();\r\n return {\r\n selectedQuickFilter: configuration?.selectedQuickFilter ?? null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration?.inlineExternal || {},\r\n inlineColumn: configuration?.inlineColumn || {},\r\n inlineFilterDef: configuration?.inlineFilterDef || {},\r\n };\r\n }\r\n\r\n set = (key: string, configuration: SdGridMaterialFilterConfiguration): SdGridMaterialFilterConfiguration => {\r\n configuration = {\r\n selectedQuickFilter: configuration?.selectedQuickFilter || null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration.inlineExternal || {},\r\n inlineColumn: configuration.inlineColumn || {},\r\n inlineFilterDef: configuration.inlineFilterDef || {}\r\n };\r\n if (!key) {\r\n return configuration;\r\n }\r\n const { set } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n key = hash({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n set(configuration);\r\n return configuration;\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 {\r\n SdGridMaterialFilterRegister,\r\n SdGridMaterialFilterRequest\r\n} from './services/grid-filter/grid-filter.model';\r\nimport {\r\n SdGridMaterialOption\r\n} 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 { Subscription, isObservable, Observable, BehaviorSubject } 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.#loadFilterRegister();\r\n this.#loadCompleted = false;\r\n // this.#reload.next({\r\n // force: true,\r\n // });\r\n const configuration = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.gridConfigurationObserver = configuration.observer;\r\n configuration.load();\r\n }\r\n }\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(paginator.page.pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false\r\n });\r\n }),\r\n ).subscribe());\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(sort.sortChange.pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false\r\n });\r\n }),\r\n ).subscribe());\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) sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective) 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 BehaviorSubject<{\r\n force: boolean,\r\n }>({\r\n force: true\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) @Optional() 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(this.#reload.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 ).subscribe(this.#render));\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\r\n // this.#subscription.add(this.#optionChanges.pipe(\r\n // debounceTime(200),\r\n // startWith({}),\r\n // map(this.#getFilter),\r\n // switchMap(filterInfo => this.#load(filterInfo, true))\r\n // ).subscribe(this.#render));\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 this.#loadFilterRegister();\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.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 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 this.#subscription.add(this.filterRegister.observer.pipe(\r\n debounceTime(500),\r\n map((configuration) => {\r\n this.columnFilter = configuration.columnFilter;\r\n this.#paginator.pageIndex = 0;\r\n this.#reload.next({\r\n force: false,\r\n });\r\n }),\r\n ).subscribe());\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\r\n && 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.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.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;\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<any[] | {\r\n items: any[];\r\n total: number;\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 }\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.then(res => {\r\n rowData.expandDetail = res;\r\n rowData.isExpanded = true;\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?.(rowData, this.items.filter(e => e.isSelected));\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?.(rowData, this.items.filter(e => e.isSelected));\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.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.remove();\r\n // if (this.gridOption?.filter?.inlineColumn) {\r\n // this.columnFilter = {};\r\n // }\r\n // this.gridFilter?.onClearFilter();\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.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(item.sdVersion, item, this.gridOption);\r\n }\r\n\r\n get editedItems(): (T & { editorErrorMessage: string })[] {\r\n return this.items.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 }).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 } = 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 } = 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 } = 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"]}