@sd-angular/core 1.3.219 → 1.3.220

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../projects/sd-core/grid-material/src/lib/models/grid-configuration.model.ts","../../../../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/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/models/grid-column.model.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":["DEFAULT_GRID_MATERIAL_CONFIG","pageSize","pages","GRID_MATERIAL_CONFIG","InjectionToken","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","SdPopupFilter","cdRef","_this","_filterRegister","externalFilters","externalFilter","inlineExternal","columns","columnFilter","inlineColumn","filterDefs","filterDef","inlineFilterDef","open","configuration","JSON","parse","stringify","filterValue","modal","markForCheck","close","onApply","ngAfterViewInit","ngOnDestroy","onClear","remove","Component","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","ViewChild","SdModal","SdGridFilter","ref","deviceService","filterRegisterChange","BehaviorSubject","_subscription","Subscription","onFilter","item","filterRegister","updateFilter","notReload","popupFilter","isMobileOrTablet","isDesktop","filter","add","pipe","startWith","subscribe","observer","unsubscribe","DeviceDetectorService","SdPopupExport","loadingService","exportService","notifyService","translateService","groups","enableCreating","selected","files","export","EventEmitter","form","FormGroup","_getExportableColumns","gridColumns","additionalColumns","_getExportableGroups","_c","_b","_a","gridOption","permission","key","hideMyTemplates","loadFiles","code","detectChanges","exportDefault","_getExportColumns","columns_1","_x","displayColumns","firstColumns","secondColumns","reduce","first","column","find","field","type","children","e1","map","assign","data","emit","file","isCSV","exportCSV","group","selectedGroup","filesInFolder","_y","_initTemplate","fileName","sheets","isArray","_d","sheet","name","items","fields","_0","_z","_1","_3","generateTemplate","_f","_e","start","finally","stop","generateAndUploadTemplate","_h","_g","_j","_k","generateUploadTemplate","_m","_l","_o","onExport","uploadTemplate","_p","validator","_r","_q","validators","removeFile","confirm","translate","idx","splice","createTemplate","invalid","markAllAsTouched","some","notify","warning","templateName","_u","_t","_s","_w","_v","filePath","onChangeGroup","listGroups","selectedOptions","validatorTemplateName","test","option","hash","prefix","disabled","forEach","childColumn","title","description","width","ngOnInit","SdLoadingService","SdExportService","SdNotifyService","SdTranslateService","Output","settingService","gridMaterialConfiguration","_COLUMNS","EDITORVALIDATION","EDITOR","SUBINFORMATION","COMMAND","SELECTION","GROUP","_cache","init","subject_1","Subject","load","_load","_get","_set","_remove","_default","_getKey","config","hidden","origin","invisible","fixed","subject","storage","createServer","catch","console","isGeneratedColumn","col","generateConfigurationResult","sdSubInformation","fixedColumn","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","selection","commands","editor","addable","removable","visible","generatedColumn","generatedColumns","includes","subColumn","e_2","colSpan","Injectable","SdSettingService","Inject","Optional","_prefix","transform","valueField","displayField","remain","isMultible","_cache$1","values","join","Pipe","CalculateSdId","sdId","editorHandlerColumn","expandDetail","isExpanded","isExpanding","isSelected","sdGroup","selectable","actions","groupedActions","originItem","editorErrorMessage","editorHandlerRow","SdEditorHandlerColumnPipe","zone","_visible","columns_1_1","childCol","run","NgZone","_filterConfiguration","_filterValue","register","cacheSession","id","tempKey","_cache$2","filterConfiguration_1","default","_defaultConfiguration","undefined","_initConfiguration","filterValue_1","cacheFilter","_defaultValue","_initValue","keys","current","columnOperator","updatedFilter","sdMaterialFilterDef","from","to","SdGridMaterial","gridConfigurationService","columnValuesPipe","gridFilterService","editorHandlerColumnPipe","_gridId","uuid.v4","_optionChanges","_localItems","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_reload","isExporting","isSelectAll","exportTitle","_loadCompleted","_initCellDef","_9","_10","sdMaterialCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","_8","rawColumnFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","paginate","showFirstLastButtons","operator","enable","list","defaultListString","defaultListNumber","_4","_2","defaultListValues","_7","_6","_5","defaultListDate","_isFirstLoad","_loadFilterRegister","_subscription$1","debounceTime","pageIndex","force","_filterLocal","localItems","filterInfo","toString","trim","toLowerCase","columnValue","fValue","replace","cValue","fromDate","Date","begin","toDate","end","columnTime","getTime","fromDateTime","toDateTime","type_1","field_1","sort","s1","s2","reverse","index","total","_getFilter","filterReq","isObservable","toPromise","error_1","results","error_2","_render","sdScroll","scrollTop","reload","onReload","every","_updateSelectedItems","gridFilter","_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","_12","displayOnTrue","displayOnFalse","date","transformDate","toFormat","_11","e_9","columns_3","columns_3_1","exportItems_2","exportItems_2_1","_14","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","update","refreshItem","onOperatorChange","operatorChange","_initConfiguration$1","gridConfigurationObserver","paginator","page","sortChange","switchMap","changes","combineLatest","drop","event","moveItemInArray","previousIndex","currentIndex","animations","trigger","style","height","minHeight","visibility","transition","animate","SdGridConfigurationService","SdColumnValuesPipe","SdGridFilterService","SdScrollDirective","SdQuickAction","MatPaginator","MatSort","ContentChild","SdMaterialSubInformationDefDirective","SdMaterialEmptyDataDefDirective","ContentChildren","SdMaterialCellDefDirective","SdMaterialFooterDefDirective","SdCommandFilterPipe","commands_1","commands_1_1","command","flag","isHidden","e_1","childCommand","hidden_1","SdCommandDisablePipe","SdCommandIconPipe","icon","SdCommandTitlePipe","SdColumnHtmlTemplatePipe","htmlTemplate","SdColumnTransformPipe","Number","isNumber","toVNCurrency","SdFilterExternalPipe","externalFilters_1","externalFilters_1_1","SdFilterColumnPipe","columnChildren","SdColumnChildrenFilterPipe","_isMobileOrTablet","transformValue","templateValue","SdColumnTitlePipe","dynamicTitle","SdColumnBadgePipe","badge","badgeType","color","badgeIcon","SdGridConfigurationResultPipe","SdPopupGridConfiguration","isCreatingColumn","disabledDrag","_cache$3","onReset","createColumn","mouseUp","dropTable","table","renderRows","handleMouseDown","handleMouseUp","HostListener","SdColumnTooltipPipe","tooltip","_convert","action","fontSet","click","childAction","key_1","actions_1","actions_1_1","availableActions","availableActions_1","availableActions_1_1","isGrouped","setTimeout","_cache$4","loadSystem","systemColumn","SdDynamicColumn","generatedColumnService","columnTypes","isDetail","originColumns","onDetail","detail","isSystem","useTemplate","markAsUntouched","markAsPristine","systemSetting","setting","systemColumns","_subscription$2","SdGeneratedColumnService","SdSideDrawer","SdDesktopCell","elementRef","renderer","setStyle","nativeElement","ElementRef","Renderer2","onChange","change","editorOnAdd","editorOnEdit","edit","editorOnDelete","delete","SdEditorHandlerRowPipe","status","isDisabled","editable","savable","cancelable","_visible$1","SdEditorValidatePipe","_previous","_delay","now","SdStyleRowCss","rowCss","SdFilterOperators","symbol","display","SdColumnInlineFilter","inlineSymbol","_inlineOperator_1","inlineOperatorChange","operators","filterChange","_valueChanges","_subcription","onChangeOperator","_value","inlineOperator","useFilterDate","hasGroup","clear","SdCellViewPipe","utilityService","_maxSecond","_maxMinute","_maxHour","_maxDay","_maxMonth","_isMobileOrTablet$1","displayOnEmpty","align","hasHtml","html","seconds","timeDifferent","timeDifference","time","dateTime","emptyValues","SdUtilityService","SdGroupPipe","groupItem","items_1_1","fields_1","fields_1_1","e_4","MatPaginatorIntlCro","_super","firstPageLabel","lastPageLabel","itemsPerPageLabel","nextPageLabel","previousPageLabel","getRangeLabel","String","__","constructor","__extends","MatPaginatorIntl","NgModule","imports","CommonModule","FormsModule","ReactiveFormsModule","MatInputModule","MatFormFieldModule","MatSortModule","MatPaginatorModule","MatTableModule","MatMenuModule","MatIconModule","MatButtonModule","MatTooltipModule","MatProgressSpinnerModule","MatChipsModule","MatRadioModule","MatSlideToggleModule","MatCheckboxModule","MatListModule","MatDividerModule","CdkTableModule","DragDropModule","SdFormModule","SdServiceModule","MatSliderModule","ScrollingModule","SdCommonModule","SdGroupModule","declarations","SdGridQuickAction","SdDesktopCellEditor","SdDesktopEditorValidation","SdDesktopCellView","SdDesktopCellChildrenView","SdDesktopCommand","SdSelectionActionFilterPipe","SdSelectionVisiblePipe","SdSelectionDisablePipe","SdSelectionVisibleSelectAllPipe","exports","providers","DatePipe","DecimalPipe","CdkColumnDef","provide","useClass"],"mappings":"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","sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { SdFilterOperator } from './grid-column.model';\r\n\r\nexport interface ISdGridMaterialConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n operator?: {\r\n defaultListString?: SdFilterOperator[];\r\n defaultListNumber?: SdFilterOperator[];\r\n defaultListDate?: SdFilterOperator[];\r\n defaultListValues?: SdFilterOperator[];\r\n };\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[];\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_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 { 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 { Component, ViewChild, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialExternalFilter, SdGridMaterialFilterRegister } from '../../services/grid-filter/grid-filter.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'sd-popup-filter',\r\n templateUrl: './popup-filter.component.html',\r\n styleUrls: ['./popup-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdPopupFilter {\r\n @ViewChild(SdModal) modal: SdModal;\r\n #filterRegister: SdGridMaterialFilterRegister;\r\n @Input() set filterRegister(value: SdGridMaterialFilterRegister) {\r\n this.#filterRegister = value;\r\n }\r\n @Input() externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: Record<string, any> = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n columnFilter: Record<string, any> = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: Record<string, any> = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n ngOnDestroy() {}\r\n\r\n open = () => {\r\n const configuration = this.#filterRegister.configuration.get();\r\n this.inlineColumn = JSON.parse(JSON.stringify(configuration.inlineColumn));\r\n this.inlineExternal = JSON.parse(JSON.stringify(configuration.inlineExternal));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(configuration.inlineFilterDef));\r\n const filterValue = this.#filterRegister.value.get();\r\n this.columnFilter = JSON.parse(JSON.stringify(filterValue.columnFilter));\r\n this.externalFilter = JSON.parse(JSON.stringify(filterValue.externalFilter));\r\n this.filterDef = JSON.parse(JSON.stringify(filterValue.filterDef));\r\n this.modal.open();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n close = () => {\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onApply = () => {\r\n this.#filterRegister.configuration.set({\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef,\r\n });\r\n this.#filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onClear() {\r\n this.#filterRegister.value.remove();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {\r\n SdGridMaterialFilterOption,\r\n SdGridMaterialExternalFilter,\r\n SdGridMaterialFilterRegister,\r\n} from '../../services/grid-filter/grid-filter.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { startWith } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'sd-grid-filter',\r\n templateUrl: './grid-filter.component.html',\r\n styleUrls: ['./grid-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdGridFilter implements AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupFilter) popupFilter: SdPopupFilter;\r\n filter: Readonly<SdGridMaterialFilterOption>;\r\n @Input('filter') set _filter(filter: SdGridMaterialFilterOption) {\r\n this.filter = filter;\r\n }\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n externalFilters: SdGridMaterialExternalFilter[] = [];\r\n @Input('externalFilters') set _externalFilters(value: SdGridMaterialExternalFilter[]) {\r\n this.externalFilters = value || [];\r\n }\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterRegister: SdGridMaterialFilterRegister;\r\n @Input('filterRegister') set _filterRegister(value: SdGridMaterialFilterRegister) {\r\n this.filterRegister = value;\r\n this.filterRegisterChange.next(this.filterRegister);\r\n }\r\n filterRegisterChange = new BehaviorSubject<SdGridMaterialFilterRegister>(null);\r\n\r\n filterDef: any = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n columnFilter: any = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n externalFilter: any = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n isMobileOrTablet: boolean;\r\n\r\n #subscription = new Subscription();\r\n\r\n constructor(private ref: ChangeDetectorRef, private deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n this.ref.markForCheck();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.filterRegisterChange.pipe(startWith(this.filterRegister)).subscribe(filterRegister => {\r\n if (this.filterRegister) {\r\n this.#subscription.add(\r\n this.filterRegister.configuration.observer.subscribe(configuration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n this.inlineColumn = inlineColumn;\r\n this.inlineExternal = inlineExternal;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.filterRegister.value.observer.subscribe(value => {\r\n const { columnFilter, externalFilter, filterDef } = value;\r\n this.columnFilter = columnFilter;\r\n this.externalFilter = externalFilter;\r\n this.filterDef = filterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFilter = (item?: SdGridMaterialColumn | SdGridMaterialExternalFilter) => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n };\r\n\r\n updateFilter = () => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n notReload: true\r\n });\r\n };\r\n\r\n open = () => {\r\n this.popupFilter.open();\r\n };\r\n}\r\n","import { 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 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(`Vui lòng chọn cột dữ liệu để xuất`);\r\n return;\r\n }\r\n this.loadingService.start();\r\n const fileName = this.templateName + '.xlsx';\r\n try {\r\n if (this.gridOption?.export?.validators?.(fileName)) {\r\n this.notifyService.notify.warning(this.gridOption?.export?.validators(fileName));\r\n return;\r\n }\r\n const result = await this.generateAndUploadTemplate(fileName);\r\n if (result?.filePath) {\r\n const file: SdExportFile = {\r\n filePath: result.filePath,\r\n fileName: result.fileName\r\n };\r\n this.onExport(file);\r\n this.templateName = null;\r\n this.enableCreating = false;\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n }\r\n\r\n onChangeGroup = () => {\r\n this.loadFiles(this.listGroups?.selectedOptions?.selected[0]?.value);\r\n }\r\n\r\n validatorTemplateName = (val: string) => {\r\n const { translate } = this.translateService;\r\n const regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;\r\n if (!val) {\r\n return translate('Please enter your template name');\r\n }\r\n if (val.length > 50) {\r\n return translate('Template name is too long');\r\n }\r\n if (!regex.test(val)) {\r\n return translate('Template name only contains letters, numbers and spaces');\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnConfiguration, SdGridConfiguration, SdGridConfigurationCache, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { GRID_MATERIAL_CONFIG, ISdGridMaterialConfiguration } from '../models/grid-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdGridConfigurationService {\r\n #COLUMNS = {\r\n EDITORVALIDATION: 'sdEditorValidation',\r\n EDITOR: 'sdEditor',\r\n SUBINFORMATION: 'sdSubInformationAction',\r\n COMMAND: 'sdCommand',\r\n SELECTION: 'sdSelection',\r\n GROUP: 'sdGroup'\r\n };\r\n #cache: {\r\n [key: string]: SdGridConfigurationCache\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(GRID_MATERIAL_CONFIG) @Optional() public gridMaterialConfiguration: ISdGridMaterialConfiguration) {\r\n }\r\n\r\n init = (key: string, gridOption: SdGridMaterialOption) => {\r\n if (!this.#cache[key]) {\r\n const subject = new Subject<SdGridConfiguration>();\r\n this.#cache[key] = {\r\n load: this.#load(gridOption, subject),\r\n get: this.#get(gridOption),\r\n set: (configuration: SdGridConfiguration) => {\r\n configuration = this.#set(gridOption, configuration);\r\n subject.next({ ...configuration });\r\n return configuration;\r\n },\r\n remove: () => {\r\n this.#remove(gridOption)();\r\n subject.next(this.#default(gridOption));\r\n },\r\n observer: subject\r\n };\r\n }\r\n return this.#cache[key];\r\n }\r\n\r\n #getKey = (gridOption: SdGridMaterialOption) => {\r\n const prefix = 'c9e94836-6ace-4aeb-b148-4f0be63589ee';\r\n if (!gridOption?.config?.key && !gridOption?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: gridOption?.config?.key || !gridOption?.key\r\n });\r\n }\r\n\r\n #default = (gridOption: SdGridMaterialOption): SdGridConfiguration => {\r\n const columns: SdColumnConfiguration[] = gridOption?.columns?.filter(e => !e.hidden).map(e => ({\r\n origin: {\r\n field: e.field,\r\n title: e.title,\r\n width: e.width,\r\n invisible: e.invisible\r\n },\r\n invisible: e.invisible,\r\n fixed: false\r\n })) || [];\r\n return {\r\n columns\r\n };\r\n }\r\n\r\n #load = (gridOption: SdGridMaterialOption, subject: Subject<SdGridConfiguration>) => {\r\n return async () => {\r\n const get = this.#get(gridOption);\r\n const configuration = await get();\r\n subject.next({ ...configuration });\r\n };\r\n }\r\n\r\n #get = (gridOption: SdGridMaterialOption) => {\r\n return async () => {\r\n const key = this.#getKey(gridOption);\r\n if (!key) {\r\n return this.#default(gridOption);\r\n }\r\n const { columns, config } = gridOption;\r\n let configuration: SdGridConfiguration;\r\n if (config?.storage === 'server') {\r\n const { get, remove } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: config?.args\r\n });\r\n configuration = await get().catch(() => undefined);\r\n if (!configuration?.columns) {\r\n remove().catch(console.error);\r\n return this.#default(gridOption);\r\n }\r\n } else {\r\n const { get, remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: config?.storage,\r\n args: config?.args\r\n });\r\n configuration = get();\r\n if (!configuration?.columns) {\r\n remove();\r\n return this.#default(gridOption);\r\n }\r\n }\r\n\r\n configuration.columns = configuration.columns\r\n .filter(column => column.isGeneratedColumn || columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // Thêm những column mới vào storage nếu có\r\n columns.forEach(column => {\r\n const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n if (!col) {\r\n configuration.columns.push({\r\n origin: {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible,\r\n },\r\n invisible: column.invisible,\r\n fixed: false\r\n });\r\n } else {\r\n col.origin = {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible\r\n };\r\n }\r\n });\r\n return configuration;\r\n };\r\n }\r\n\r\n #set = (gridOption: SdGridMaterialOption, configuration: SdGridConfiguration) => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n if (gridOption?.config?.storage === 'server') {\r\n const { set } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: gridOption?.config?.args\r\n });\r\n set(configuration);\r\n } else {\r\n const { set } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args\r\n });\r\n set(configuration);\r\n }\r\n }\r\n return JSON.parse(JSON.stringify(configuration));\r\n }\r\n\r\n #remove = (gridOption: SdGridMaterialOption) => {\r\n return () => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n if (gridOption?.config?.storage === 'server') {\r\n const { remove } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: gridOption?.config?.args\r\n });\r\n remove();\r\n } else {\r\n const { remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args\r\n });\r\n remove();\r\n }\r\n }\r\n };\r\n }\r\n\r\n // get = async (gridOption: SdGridMaterialOption): Promise<SdGridConfiguration> => {\r\n // if (!gridOption?.key) {\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // const { key, columns } = gridOption;\r\n // const configuration: SdGridConfiguration = await this.settingService.get(this.#getKey(key)).catch(() => undefined);\r\n // if (!configuration?.columns) {\r\n // this.settingService.remove(this.#getKey(key)).catch(console.error);\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // configuration.columns = configuration.columns\r\n // .filter(column => columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // // Thêm những column mới vào storage nếu có\r\n // columns.forEach(column => {\r\n // const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n // if (!col) {\r\n // configuration.columns.push({\r\n // origin: {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible,\r\n // },\r\n // invisible: column.invisible,\r\n // fixed: false\r\n // });\r\n // } else {\r\n // col.origin = {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible\r\n // };\r\n // }\r\n // });\r\n // return configuration;\r\n // }\r\n\r\n // set = async (key: string, configuration: SdGridConfiguration): Promise<SdGridConfiguration> => {\r\n // if (key) {\r\n // this.settingService.set(this.#getKey(key), configuration);\r\n // }\r\n // return configuration;\r\n // }\r\n\r\n // remove = (key: string) => {\r\n // if (key) {\r\n // this.settingService.remove(this.#getKey(key));\r\n // }\r\n // }\r\n\r\n generateConfigurationResult = (\r\n configuration: SdGridConfiguration,\r\n gridOption: SdGridMaterialOption,\r\n sdSubInformation: SdMaterialSubInformationDefDirective) => {\r\n const result: SdGridConfigurationResult = {\r\n column: {},\r\n fixedColumn: {},\r\n firstColumns: [],\r\n secondColumns: [],\r\n firstHeaders: [],\r\n secondHeaders: [],\r\n displayedColumns: [],\r\n displayedFooters: [],\r\n multipleHeader: false\r\n };\r\n const { selection, commands, editor, group } = gridOption || {};\r\n if (editor?.addable || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITORVALIDATION);\r\n result.displayedColumns.push(this.#COLUMNS.EDITORVALIDATION);\r\n }\r\n if (selection?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (!editor?.hidden) {\r\n if (editor?.addable\r\n || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'popup' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITOR);\r\n result.displayedColumns.push(this.#COLUMNS.EDITOR);\r\n }\r\n }\r\n if (commands?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.COMMAND);\r\n result.displayedColumns.push(this.#COLUMNS.COMMAND);\r\n }\r\n if (group?.fields?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.GROUP);\r\n result.displayedColumns.push(this.#COLUMNS.GROUP);\r\n }\r\n configuration?.columns?.filter(col => !col.invisible).forEach(col => {\r\n if (col.isGeneratedColumn) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n const generatedColumn: SdGridMaterialColumn = {\r\n type: 'children',\r\n field: col.origin.field,\r\n title: col.origin.title,\r\n children: []\r\n };\r\n for (const subColumn of gridOption?.columns.filter(e1 => col.generatedColumns.includes(e1.field))) {\r\n if (subColumn.type === 'children' || subColumn.type === 'children-col') {\r\n for (const childColumn of subColumn.children) {\r\n generatedColumn.children.push({\r\n ...childColumn,\r\n colSpan: 2\r\n });\r\n }\r\n } else {\r\n generatedColumn.children.push({\r\n ...subColumn,\r\n colSpan: 2\r\n });\r\n }\r\n\r\n }\r\n result.firstColumns.push({\r\n ...generatedColumn,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n result.displayedColumns.push(col.origin.field);\r\n return;\r\n }\r\n const column = gridOption?.columns.find(e => e.field === col.origin.field);\r\n if (column) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n result.firstColumns.push({\r\n ...column,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n if (column.type === 'children-col') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n } else {\r\n result.displayedColumns.push(col.origin.field);\r\n }\r\n }\r\n });\r\n if (sdSubInformation?.templateRef) {\r\n result.firstHeaders.push(this.#COLUMNS.SUBINFORMATION);\r\n result.displayedColumns.push(this.#COLUMNS.SUBINFORMATION);\r\n }\r\n result.multipleHeader = result.secondHeaders.length > 0;\r\n // Sub infomation không thể có footer\r\n result.displayedFooters = result.displayedColumns.filter(val => val !== this.#COLUMNS.SUBINFORMATION);\r\n return result;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnValues'\r\n})\r\nexport class SdColumnValuesPipe implements PipeTransform {\r\n #prefix = 'a1e67660-8aa2-4c11-b02d-71a32188719f';\r\n #cache: {\r\n [key: string]: {\r\n result: any\r\n }\r\n } = {};\r\n transform = async (value: any, column: SdGridMaterialColumn): Promise<string> => {\r\n if (column.type !== 'values' || !column.option?.items || !column.option?.valueField || !column.option?.displayField) {\r\n return value;\r\n }\r\n const { items, valueField, displayField, selection, ...remain } = column.option;\r\n const key = hash({\r\n prefix: this.#prefix,\r\n valueField,\r\n displayField,\r\n selection,\r\n remain,\r\n value\r\n });\r\n const isMultible = ['MULTIPLE', 'MULTIPLEAUTOCOMPLETE', 'MULTIPLE_EDITOR', 'MULTIPLEAUTOCOMPLETE_EDITOR'].includes(selection);\r\n if (typeof (items) === 'function') {\r\n if (!this.#cache[key]) {\r\n const values = await items(value, true);\r\n let result = '';\r\n if (isMultible && Array.isArray(value)) {\r\n result = values?.filter(e => value?.includes(e?.[valueField]))?.map(e => e?.[displayField])?.join(', ') || value?.join(', ');\r\n }\r\n else {\r\n result = values?.find(e => e?.[valueField] === value)?.[displayField] || value;\r\n }\r\n this.#cache[key] = {\r\n result\r\n };\r\n }\r\n } else {\r\n if (!this.#cache[key]) {\r\n let result = '';\r\n if (isMultible && Array.isArray(value)) {\r\n result = items?.filter(e => value?.includes(e?.[valueField]))?.map(e => e?.[displayField])?.join(', ') ?? value?.join(', ');\r\n }\r\n else {\r\n result = items?.find(e => e?.[valueField] === value)?.[displayField] || value\r\n }\r\n this.#cache[key] = {\r\n result\r\n };\r\n }\r\n }\r\n return this.#cache[key].result;\r\n }\r\n}\r\n","import hash from 'object-hash';\r\nimport { SdItem } from \"../models/grid.model\";\r\n\r\nexport const CalculateSdId = (item: SdItem) => {\r\n const {\r\n sdId,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n sdGroup,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n originItem,\r\n editorErrorMessage,\r\n editorHandlerRow,\r\n ...remain } = item;\r\n return hash(remain);\r\n}","import { Injectable, NgZone, Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { CalculateSdId } from '../functions/calculate-sd-id';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorHandlerColumn'\r\n})\r\n@Injectable()\r\nexport class SdEditorHandlerColumnPipe implements PipeTransform {\r\n constructor(private zone: NgZone) { }\r\n #visible = (col: SdGridMaterialColumn, item: SdItem) => {\r\n if (col.type === 'children' || col.type === 'children-col') {\r\n return false;\r\n }\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (col.editor) {\r\n const isDisabled = typeof (col.editor.disabled) === 'function' ? col.editor.disabled(item) : col.editor.disabled;\r\n if (isDisabled) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n transform(value: any, item: SdItem, gridOption: SdGridMaterialOption) {\r\n const key = CalculateSdId(item);\r\n if (item.sdId === key && item.editorHandlerColumn) {\r\n return true;\r\n }\r\n item.editorHandlerColumn = item.editorHandlerColumn || {};\r\n const { columns } = gridOption;\r\n for (const col of columns) {\r\n if (col.type === 'children-col') {\r\n for (const childCol of col.children) {\r\n item.editorHandlerColumn[childCol.field] = {\r\n ...item.editorHandlerColumn[childCol.field],\r\n visible: this.#visible(childCol, item)\r\n }\r\n }\r\n } else {\r\n item.editorHandlerColumn[col.field] = {\r\n ...item.editorHandlerColumn[col.field],\r\n visible: this.#visible(col, item)\r\n }\r\n }\r\n }\r\n this.zone.run(() => {\r\n item.sdId = CalculateSdId(item);\r\n });\r\n item.sdId = key;\r\n return true;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport {\r\n SdGridMaterialExternalFilter,\r\n SdGridMaterialFilterConfiguration,\r\n SdGridMaterialFilterOption,\r\n SdGridMaterialFilterRegister,\r\n SdGridMaterialFilterValue,\r\n} from './grid-filter.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { map, startWith } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class SdGridFilterService {\r\n #filterConfiguration = 'GRID-FILTER-CONFIGURATION';\r\n #filterValue = 'GRID-FILTER-VALUE';\r\n #cache: Record<string, SdGridMaterialFilterRegister> = {};\r\n constructor(private settingService: SdSettingService) {}\r\n register = (\r\n filter: SdGridMaterialFilterOption,\r\n args: {\r\n id: string;\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }\r\n ) => {\r\n let cacheSession = false;\r\n \r\n const { id, columns, externalFilters } = args;\r\n const tempKey = hash({\r\n id,\r\n columns: columns?.map(e => e.field).filter(field => !!field) || [],\r\n externalFilters: externalFilters?.map(e => e.field).filter(field => !!field) || [],\r\n });\r\n const key = filter?.key || tempKey;\r\n if (!filter?.key) {\r\n cacheSession = true; // Nếu không có key thì chỉ lưu theo session\r\n }\r\n if (!this.#cache[key]) {\r\n // Setting của filter configuration\r\n const filterConfiguration = this.settingService.create<SdGridMaterialFilterConfiguration>(\r\n {\r\n prefix: this.#filterConfiguration,\r\n key,\r\n },\r\n {\r\n default: this.#defaultConfiguration(args),\r\n type: cacheSession ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị configuration merge với giá trị defaultShowing của args nếu như args có thay đổi\r\n filterConfiguration.set(this.#initConfiguration(args, filterConfiguration.get()));\r\n // Setting của filter value\r\n const filterValue = this.settingService.create<SdGridMaterialFilterValue>(\r\n {\r\n prefix: this.#filterValue,\r\n key: !filter?.cacheFilter ? tempKey : key,\r\n },\r\n {\r\n default: this.#defaultValue(args),\r\n type: cacheSession || !filter?.cacheFilter ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị value merge với giá trị default của args nếu như args có thay đổi\r\n filterValue.set(this.#initValue(args, filterValue.get()));\r\n this.#cache[key] = {\r\n configuration: {\r\n get: (): SdGridMaterialFilterConfiguration => {\r\n return filterConfiguration.get();\r\n },\r\n set: (configuration: Partial<SdGridMaterialFilterConfiguration>): SdGridMaterialFilterConfiguration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n filterConfiguration.set({\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n });\r\n return {\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n };\r\n },\r\n remove: () => {\r\n filterConfiguration.set(this.#defaultConfiguration(args));\r\n },\r\n observer: filterConfiguration.observer.pipe(\r\n startWith(filterConfiguration.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(configuration => configuration || this.#defaultConfiguration(args))\r\n ),\r\n },\r\n value: {\r\n get: (): SdGridMaterialFilterValue => {\r\n return filterValue.get();\r\n },\r\n set: (value: Partial<SdGridMaterialFilterValue>): SdGridMaterialFilterValue => {\r\n const keys = Object.keys(value || {});\r\n const current = filterValue.get();\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = current;\r\n const updatedFilter = {\r\n // Filter column\r\n columnOperator: keys.includes('columnOperator') ? value?.columnOperator || {} : columnOperator,\r\n columnFilter: keys.includes('columnFilter') ? value?.columnFilter || {} : columnFilter,\r\n // Filter external\r\n externalFilter: keys.includes('externalFilter') ? value?.externalFilter || {} : externalFilter,\r\n // Filter def\r\n filterDef: keys.includes('filterDef') ? value?.filterDef || {} : filterDef,\r\n // Force\r\n notReload: !!value?.notReload,\r\n };\r\n filterValue.set(updatedFilter);\r\n return updatedFilter;\r\n },\r\n remove: () => {\r\n filterValue.set(this.#defaultValue(args));\r\n },\r\n observer: filterValue.observer.pipe(\r\n startWith(filterValue.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(value => value || this.#defaultValue(args))\r\n ),\r\n },\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #defaultConfiguration = (args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdGridMaterialFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #defaultValue = (args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdGridMaterialFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n externalFilter[item.field] = item?.default;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n\r\n #initConfiguration = (\r\n args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n configuration: SdGridMaterialFilterConfiguration\r\n ): SdGridMaterialFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = configuration?.inlineColumn?.[item.field] ?? item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = configuration?.inlineExternal?.[item.field] ?? item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = configuration?.inlineFilterDef?.[item.sdMaterialFilterDef] ?? item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #initValue = (\r\n args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n value: SdGridMaterialFilterValue\r\n ): SdGridMaterialFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = value?.columnFilter?.[item.field] ?? item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n if (item.type === 'daterange') {\r\n externalFilter[item.field] = {\r\n from: value?.externalFilter?.[item.field]?.from ?? item.default?.from,\r\n to: value?.externalFilter?.[item.field]?.to ?? item.default?.to,\r\n };\r\n } else {\r\n externalFilter[item.field] = value?.externalFilter?.[item.field] ?? item?.default;\r\n }\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = value?.filterDef?.[item.sdMaterialFilterDef] ?? undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n Optional,\r\n Inject,\r\n ChangeDetectorRef,\r\n ContentChildren,\r\n QueryList,\r\n OnInit,\r\n OnDestroy,\r\n ContentChild,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport * as uuid from 'uuid';\r\nimport { SdGridMaterialFilterRegister, SdGridMaterialFilterRequest } from './services/grid-filter/grid-filter.model';\r\nimport { SdGridMaterialOption } from './models/grid-option.model';\r\nimport { GRID_MATERIAL_CONFIG, DEFAULT_GRID_MATERIAL_CONFIG, ISdGridMaterialConfiguration } from './models/grid-configuration.model';\r\nimport { Subscription, isObservable, Observable, BehaviorSubject, Subject, combineLatest } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdFilterOperator, 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 #gridId = uuid.v4();\r\n @ViewChild(SdScrollDirective) sdScroll: SdScrollDirective;\r\n filterRegister: SdGridMaterialFilterRegister;\r\n key = uuid.v4();\r\n gridConfigurationObserver: Observable<SdGridConfiguration>;\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\r\n\r\n gridFilter: SdGridFilter;\r\n @ViewChild(SdGridFilter) set _gridFilter(gridFilter: SdGridFilter) {\r\n if (gridFilter && this.gridFilter !== gridFilter) {\r\n this.gridFilter = gridFilter;\r\n // this.#subscription.add(gridFilter.filterChange.pipe(\r\n // filter(reload => reload),\r\n // debounceTime(500),\r\n // map(() => {\r\n // this.#paginator.pageIndex = 0;\r\n // this.#reload.next({\r\n // force: false,\r\n // source: 'FILTER'\r\n // });\r\n // }),\r\n // ).subscribe());\r\n }\r\n }\r\n\r\n @Input() set option(option: SdGridMaterialOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.gridOption = option;\r\n this.#loadCompleted = false;\r\n const configuration = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.gridConfigurationObserver = configuration.observer;\r\n configuration.load();\r\n this.#optionChanges.next(this.gridOption);\r\n }\r\n }\r\n #optionChanges = new Subject<SdGridMaterialOption>();\r\n\r\n gridOption: SdGridMaterialOption;\r\n #localItems: any[] = [];\r\n items: SdGridMaterialItem<T>[] = [];\r\n selectedItems: T[] = [];\r\n total: number;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n // Paginate\r\n isHiddenPaginator = false;\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(\r\n paginator.page\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sorting\r\n #sort: MatSort;\r\n @ViewChild(MatSort) set sort(sort: MatSort) {\r\n if (sort && this.#sort !== sort) {\r\n this.#sort = sort;\r\n this.#subscription.add(\r\n sort.sortChange\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Export\r\n @ViewChild(SdPopupExport) sdPopupExport: SdPopupExport;\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective)\r\n sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective)\r\n sdEmptyData: SdMaterialEmptyDataDefDirective;\r\n\r\n // Cell Def\r\n @ContentChildren(SdMaterialCellDefDirective) sdCellDefs = new QueryList<SdMaterialCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdMaterialCellDefDirective;\r\n } = {};\r\n\r\n // Footer Def\r\n @ContentChildren(SdMaterialFooterDefDirective) sdFooterDefs = new QueryList<SdMaterialFooterDefDirective>();\r\n footerDef: {\r\n [column: string]: SdMaterialFooterDefDirective;\r\n } = {};\r\n hasFooter = false;\r\n\r\n // Filter Def\r\n @ContentChildren(SdMaterialFilterDefDirective) sdFilterDefs = new QueryList<SdMaterialFilterDefDirective>();\r\n filterDefs: SdMaterialFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnOperator: Record<string, SdFilterOperator> = {};\r\n columnFilter: Record<string, any> = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #reload = new Subject<{\r\n force: boolean;\r\n }>();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n #loadCompleted = false;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(GRID_MATERIAL_CONFIG)\r\n @Optional()\r\n public configuration: ISdGridMaterialConfiguration,\r\n private gridConfigurationService: SdGridConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private columnValuesPipe: SdColumnValuesPipe,\r\n private gridFilterService: SdGridFilterService,\r\n private editorHandlerColumnPipe: SdEditorHandlerColumnPipe\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.#reload\r\n .pipe(\r\n debounceTime(200),\r\n switchMap(async data => {\r\n const filterInfo = this.#getFilter();\r\n const result = await this.#load(filterInfo, !this.#loadCompleted || data.force);\r\n this.#loadCompleted = true;\r\n return result;\r\n })\r\n )\r\n .subscribe(this.#render)\r\n );\r\n this.#subscription.add(this.sdCellDefs.changes.pipe(startWith([])).subscribe(this.#initCellDef));\r\n this.#subscription.add(this.sdFooterDefs.changes.pipe(startWith([])).subscribe(this.#initFooterDef));\r\n this.#subscription.add(this.sdFilterDefs.changes.pipe(startWith([])).subscribe(this.#initFilterDef));\r\n this.#subscription.add(\r\n combineLatest([\r\n this.#optionChanges.pipe(startWith(this.gridOption)),\r\n this.sdFilterDefs.changes.pipe(startWith(this.filterDefs)),\r\n ]).subscribe(() => {\r\n this.#loadFilterRegister();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.#optionChanges.subscribe(() => {\r\n if (this.filterRegister) {\r\n this.#reload.next({\r\n force: true,\r\n });\r\n }\r\n })\r\n );\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #initCellDef = () => {\r\n this.cellDef = {};\r\n for (const cellDef of this.sdCellDefs) {\r\n if (cellDef.sdMaterialCellDef) {\r\n this.cellDef[cellDef.sdMaterialCellDef] = cellDef;\r\n }\r\n }\r\n };\r\n\r\n #initFilterDef = () => {\r\n this.filterDefs = [];\r\n for (const filterDef of this.sdFilterDefs) {\r\n this.filterDefs.push(filterDef);\r\n }\r\n };\r\n\r\n #initFooterDef = () => {\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdMaterialFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdMaterialFooterDef] = footerDef;\r\n }\r\n }\r\n };\r\n\r\n #filterExportInfo = (pageNumber: number, pageSize: number): SdGridMaterialFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber,\r\n pageSize,\r\n isExported: true,\r\n };\r\n };\r\n\r\n #initConfiguration = (option: 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 for (const column of option.columns || []) {\r\n if (column.filter?.operator?.enable && !column.filter?.operator?.list?.length) {\r\n if (column.type === 'string') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListString || [];\r\n }\r\n if (column.type === 'number') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListNumber || [];\r\n }\r\n if (column.type === 'values') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListValues || [];\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListDate || [];\r\n }\r\n }\r\n }\r\n return option;\r\n };\r\n\r\n #isFirstLoad = true;\r\n #loadFilterRegister = () => {\r\n // Init filter\r\n if (this.gridOption) {\r\n if (!this.filterRegister) {\r\n this.filterRegister = this.gridFilterService.register(this.gridOption?.filter, {\r\n id: this.#gridId,\r\n columns: this.gridOption?.columns,\r\n externalFilters: this.gridOption?.filter?.externalFilters,\r\n filterDefs: this.filterDefs,\r\n });\r\n this.#subscription.add(\r\n this.filterRegister.value.observer\r\n .pipe(\r\n debounceTime(500),\r\n map(filterValue => {\r\n const { columnOperator, columnFilter, notReload } = filterValue;\r\n this.columnOperator = columnOperator || {};\r\n this.columnFilter = columnFilter;\r\n if (this.#isFirstLoad) {\r\n this.#isFirstLoad = false;\r\n this.#paginator.pageIndex = 0;\r\n this.#reload.next({\r\n force: true,\r\n });\r\n } else if (!notReload) {\r\n this.#paginator.pageIndex = 0;\r\n this.#reload.next({\r\n force: false,\r\n });\r\n }\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n };\r\n\r\n #filterLocal = (localItems: any[], filterInfo: SdGridMaterialFilterRequest) => {\r\n const { columns } = this.gridOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(item => {\r\n for (const column of columns) {\r\n const { field, type } = column;\r\n const filterValue: string = (rawColumnFilter[field] || '').toString().trim().toLowerCase();\r\n const columnValue: string = (item[field] || '').toString().trim().toLowerCase();\r\n if (filterValue) {\r\n if (!columnValue && type !== 'datetime' && type !== 'date' && type !== 'time') {\r\n return false;\r\n }\r\n if (type === 'string') {\r\n if (columnValue.indexOf(filterValue) === -1) {\r\n return false;\r\n }\r\n } else if (type === 'values') {\r\n if (columnValue !== filterValue) {\r\n return false;\r\n }\r\n } else if (type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (type === 'datetime' || type === 'date' || type === 'time') {\r\n const from = rawColumnFilter[field]?.from ?? rawColumnFilter[field];\r\n const to = rawColumnFilter[field]?.to ?? rawColumnFilter[field];\r\n const fromDate = Date.begin(from);\r\n const toDate = Date.end(to);\r\n if (fromDate || toDate) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n\r\n const columnTime = new Date(columnValue).getTime();\r\n const fromDateTime = fromDate?.getTime() || null;\r\n const toDateTime = toDate?.getTime() || null;\r\n\r\n if (fromDateTime && fromDateTime > columnTime) {\r\n return false;\r\n }\r\n if (toDateTime && columnTime > toDateTime) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (orderBy && orderDirection) {\r\n const column = columns.find(e => e.field === orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((current, next) => {\r\n if (type === 'number') {\r\n return (current[field] || 0) - (next[field] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(current[field] || '').getTime();\r\n const d2 = new Date(current[field] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (current[field] || '').toString();\r\n const s2 = (next[field] || '').toString();\r\n if (s1 > s2) {\r\n return 1;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (orderDirection === 'desc') {\r\n items.reverse();\r\n }\r\n }\r\n }\r\n return {\r\n items: items.filter((item, index) => {\r\n return index >= pageNumber * pageSize && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length,\r\n };\r\n };\r\n\r\n #getFilter = (): SdGridMaterialFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber: this.#paginator?.pageIndex || 0,\r\n pageSize: this.#paginator?.pageSize || this.gridOption?.paginate?.pageSize || 50,\r\n };\r\n };\r\n\r\n #load = async (filterReq: 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 this.gridFilter?.updateFilter?.();\r\n const data = await this.#load(this.#getFilter(), force);\r\n this.#render(data);\r\n };\r\n\r\n #exportedItems = async (pageNumber: number = 0, pageSize: number = 10000) => {\r\n if (this.gridOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n if (Array.isArray(result)) {\r\n return result;\r\n }\r\n if (isObservable<any[]>(result)) {\r\n result = result.toPromise();\r\n }\r\n if (isObservable<{ items: any[]; total: number }>(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n const filterInfo = this.#filterExportInfo(pageNumber, pageSize);\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterInfo);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof this.gridOption.items === 'function') {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n exportedItems = await results;\r\n } else {\r\n exportedItems = results;\r\n }\r\n } else {\r\n exportedItems = this.gridOption.items;\r\n }\r\n return this.#filterLocal(exportedItems, filterInfo);\r\n }\r\n }\r\n };\r\n\r\n drop(event: CdkDragDrop<string[]>, columns: string[]) {\r\n moveItemInArray(columns, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n #allColumns = (): SdGridMaterialColumn[] => {\r\n const columns: SdGridMaterialColumn[] = [];\r\n this.gridOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns;\r\n };\r\n\r\n #allExportedColumns = (): SdGridMaterialExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n };\r\n\r\n #onExport = async (args: { file: SdExportFile; columns: SdExportColumn[]; isCSV: boolean }) => {\r\n try {\r\n const { file, isCSV } = args;\r\n let { columns } = args;\r\n const pageSize = this.gridOption?.export?.maxItemsPerRequest || 1000;\r\n const batch = this.gridOption?.export?.batch || 1;\r\n let total = this.total;\r\n let pageNumber = 0;\r\n let exportItems = [];\r\n this.isExporting = true;\r\n const items: any[] = [];\r\n let promises: Promise<\r\n | any[]\r\n | {\r\n items: any[];\r\n total: number;\r\n }\r\n >[] = [];\r\n const handleData = async () => {\r\n const results = await Promise.all(promises);\r\n promises = [];\r\n exportItems = [];\r\n for (const result of results) {\r\n if ('items' in result) {\r\n exportItems = [...exportItems, ...result.items];\r\n total = result.total;\r\n } else {\r\n exportItems = [...exportItems, ...result];\r\n }\r\n }\r\n if (this.gridOption.export?.mapping) {\r\n const results = this.gridOption.export.mapping(exportItems);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n const totalPage = total / pageSize;\r\n const percent = Math.round(((pageNumber - 1) * 100.0) / totalPage);\r\n this.exportTitle = `Exporting...${percent}%`;\r\n const allColumns = this.#allColumns();\r\n const allExportedColumns = this.#allExportedColumns();\r\n for (const item of exportItems) {\r\n const obj: any = {};\r\n const handle = async (exportColumn: SdExportColumn) => {\r\n obj[exportColumn.field] = item[exportColumn.field];\r\n const column = allColumns.find(e => e.field === exportColumn.field);\r\n const exportedColumn = allExportedColumns.find(e => e.field === exportColumn.field);\r\n if (exportedColumn?.transform) {\r\n obj[exportedColumn.field] = exportedColumn.transform(item[exportedColumn.field], item);\r\n return;\r\n }\r\n if (!column) {\r\n return;\r\n }\r\n if (column.type === 'children' || column.type === 'children-col') {\r\n column?.children.forEach(childColumn => handle(childColumn));\r\n return;\r\n }\r\n if (!columns.some(e => e.field === column.field)) {\r\n return;\r\n }\r\n if (column.transform) {\r\n const transform = column.transform(item[column.field], item, {\r\n isExport: true,\r\n });\r\n if (transform instanceof Promise) {\r\n obj[column.field] = await transform;\r\n } else {\r\n obj[column.field] = transform;\r\n }\r\n obj[column.field] = obj[column.field] ?? '';\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.option?.displayOnTrue || 'True';\r\n } else if (obj[column.field] !== undefined && obj[column.field] !== null) {\r\n obj[column.field] = column.option?.displayOnFalse || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là date thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy');\r\n } else if (column.type === 'datetime') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là datetime thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy HH:mm');\r\n } else if (column.type === 'time') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là time thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'HH:mm');\r\n } else if (column.type === 'values') {\r\n // Nếu là values thì lấy giá trị của value được chọn\r\n obj[column.field] = await this.columnValuesPipe.transform(item[column.field], column);\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n for (const exportColumn of columns) {\r\n await handle(exportColumn);\r\n }\r\n items.push(obj);\r\n }\r\n };\r\n while (pageNumber * pageSize < total) {\r\n promises.push(this.#exportedItems(pageNumber, pageSize));\r\n pageNumber++;\r\n if (promises.length < batch) {\r\n continue;\r\n }\r\n await handleData();\r\n }\r\n if (promises.length > 0) {\r\n await handleData();\r\n }\r\n if (!file?.filePath) {\r\n if (isCSV) {\r\n await this.exportService.exportCSV({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName,\r\n });\r\n return;\r\n }\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n await this.exportService.export({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName,\r\n sheets,\r\n });\r\n return;\r\n }\r\n await this.exportService.exportByTemplate({\r\n filePath: file.filePath,\r\n fileName: file.fileName,\r\n columns,\r\n items,\r\n });\r\n } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n onExport = async (args: { file: SdExportFile; columns: SdExportColumn[]; isCSV: boolean }) => {\r\n this.#onExport(args);\r\n };\r\n\r\n onFilterChange = () => {\r\n this.gridFilter?.updateFilter?.();\r\n if (this.gridOption?.filter?.inlineColumn) {\r\n this.filterRegister.value.set({\r\n columnOperator: this.columnOperator || {},\r\n columnFilter: this.columnFilter,\r\n });\r\n } else {\r\n this.filterRegister.value.set({});\r\n }\r\n };\r\n\r\n onExpand = async (rowData: SdGridMaterialItem<T>) => {\r\n if (this.gridOption.subInformation?.always) {\r\n return;\r\n }\r\n if (rowData.isExpanding) {\r\n return;\r\n }\r\n if (rowData.isExpanded) {\r\n rowData.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.subInformation?.onExpand?.(rowData);\r\n if (!this.gridOption.subInformation?.multiple) {\r\n this.items.forEach(item => (item.isExpanding = item.isExpanded = false));\r\n }\r\n if (data instanceof Promise) {\r\n rowData.isExpanding = true;\r\n data\r\n .then(res => {\r\n rowData.expandDetail = res;\r\n rowData.isExpanded = true;\r\n })\r\n .finally(() => (rowData.isExpanding = false));\r\n } else {\r\n rowData.expandDetail = data;\r\n rowData.isExpanded = true;\r\n }\r\n };\r\n\r\n onSelect = (rowData: SdGridMaterialItem<T>) => {\r\n if (rowData?.sdGroup?.items?.length) {\r\n rowData?.sdGroup?.items.forEach(e => (e.isSelected = rowData.isSelected));\r\n this.gridOption.selection?.onSelect?.(\r\n rowData,\r\n this.items.filter(e => e.isSelected)\r\n );\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.gridOption.selection?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => (e.isSelected = false));\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selection?.onSelect?.(\r\n rowData,\r\n this.items.filter(e => e.isSelected)\r\n );\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n };\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.selectable && (!this.gridOption?.selection?.actions?.length || e.actions?.length)) {\r\n e.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.gridOption.selection?.onSelectAll?.(this.items.filter(e => e.isSelected));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n onClearSelection = (items?: SdGridMaterialItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => (e.isSelected = false));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedItems = this.items\r\n .filter(item => item.isSelected)\r\n .map(item => {\r\n const {\r\n isSelected,\r\n isExpanded,\r\n isExpanding,\r\n expandDetail,\r\n editorErrorMessage,\r\n editorHandlerColumn,\r\n editorHandlerRow,\r\n editorStatus,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n // Giữ lại các trường thông tin cho selectable (action, groupedAction, sdGroup, selectable)\r\n ...result\r\n } = item;\r\n return result;\r\n }) as T[];\r\n this.ref.detectChanges();\r\n };\r\n\r\n clearFilter = () => {\r\n this.filterRegister.value.remove();\r\n };\r\n\r\n setFilter = (args: { columnFilter?: Record<string, any>; externalFilter?: Record<string, any>; filterDef?: Record<string, any> }) => {\r\n const { columnFilter, externalFilter, filterDef } = args || {};\r\n if (this.gridOption?.filter?.inlineColumn && columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n this.filterRegister.value.set({\r\n columnFilter,\r\n externalFilter,\r\n filterDef,\r\n });\r\n };\r\n\r\n onCreate = () => {\r\n const { type, editor, columns } = this.gridOption;\r\n if (!editor?.addable) {\r\n return;\r\n }\r\n const item: SdGridMaterialItem = {};\r\n // Gán giá trị mặc định\r\n columns.forEach(column => {\r\n if (column.type === 'values') {\r\n item[column.field] = '';\r\n } else if (column.type === 'bool') {\r\n item[column.field] = true;\r\n } else if (column.type === 'number') {\r\n item[column.field] = null;\r\n }\r\n });\r\n if (type === 'local') {\r\n editor.onAdd?.(item, this.#localItems);\r\n } else {\r\n editor.onAdd?.(item, this.items);\r\n }\r\n // Đưa item lên dòng đầu tiên nếu type khác popup\r\n if (editor.type !== 'popup') {\r\n if (editor.addToLast) {\r\n if (type === 'local') {\r\n this.#localItems = [...this.#localItems, item];\r\n }\r\n this.items = [...this.items, item];\r\n } else {\r\n if (type === 'local') {\r\n this.#localItems = [item, ...this.#localItems];\r\n }\r\n this.items = [item, ...this.items];\r\n }\r\n }\r\n item.editorStatus = 'create';\r\n item.editorHandlerRow = {\r\n temporary: { ...item },\r\n };\r\n };\r\n onUpdate = (item: SdItem) => {\r\n const { editor } = this.gridOption;\r\n item.editorStatus = 'update';\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n temporary: { ...item },\r\n };\r\n // this.generateEditorHanlder(item);\r\n if (editor.type === 'popup') {\r\n // Xử lý case popup\r\n // this.sdGridPopupEditor.open(item, columns, isModified);\r\n }\r\n this.ref.detectChanges();\r\n };\r\n onSave = async (item: SdGridMaterialItem<T>) => {\r\n if (item.editorHandlerRow.saving) {\r\n return;\r\n }\r\n const { editor } = this.gridOption;\r\n try {\r\n item.editorHandlerRow.saving = true;\r\n if (editor.validate) {\r\n const result = editor.validate(item, this.items.indexOf(item));\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n throw message;\r\n }\r\n } else {\r\n if (result) {\r\n throw result;\r\n }\r\n }\r\n }\r\n if (editor.onSave) {\r\n const result = editor.onSave(item);\r\n if (result instanceof Promise) {\r\n await result;\r\n }\r\n }\r\n\r\n if (item.editorStatus === 'create' && editor.type === 'popup') {\r\n if (this.gridOption.type === 'local') {\r\n this.items.splice(0, 0, item);\r\n }\r\n // this.viewItems.splice(0, 0, item);\r\n }\r\n\r\n item.editorStatus = undefined;\r\n // this.generateEditorHanlder(item);\r\n } catch (err) {\r\n this.notifyService.notify.warning(err);\r\n } finally {\r\n item.editorHandlerRow.saving = false;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n onCancel = (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.#localItems.indexOf(item);\r\n this.#localItems.splice(idx2, 1);\r\n this.#localItems = [...this.#localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n if (this.gridOption.type === 'local') {\r\n editor?.onCancel?.(item, this.#localItems);\r\n } else {\r\n editor?.onCancel?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n if (editor.type === 'focus') {\r\n if (item.editorStatus === 'create') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.#localItems.indexOf(item);\r\n this.#localItems.splice(idx2, 1);\r\n this.#localItems = [...this.#localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n } else {\r\n Object.assign(item, item.editorHandlerRow.temporary);\r\n }\r\n }\r\n item.editorStatus = undefined;\r\n this.ref.detectChanges();\r\n };\r\n onRemove = async (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor?.beforeRemove) {\r\n const beforeRemove = editor?.beforeRemove(item);\r\n if (beforeRemove instanceof Promise) {\r\n const result = await beforeRemove;\r\n if (!result) {\r\n return;\r\n }\r\n } else {\r\n if (!beforeRemove) {\r\n return;\r\n }\r\n }\r\n }\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.#localItems.indexOf(item);\r\n this.#localItems.splice(idx2, 1);\r\n this.#localItems = [...this.#localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n if (this.gridOption.type === 'local') {\r\n editor?.onRemove?.(item, this.#localItems);\r\n } else {\r\n editor?.onRemove?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n };\r\n\r\n add = (idx: number, item: T) => {\r\n if (this.items.length > idx) {\r\n this.items.splice(idx, 0, item);\r\n this.items = [...this.items];\r\n } else {\r\n this.items = [...this.items, item];\r\n }\r\n };\r\n\r\n update = (idx: number, item: T) => {\r\n if (this.items[idx]) {\r\n Object.assign(this.items[idx], item);\r\n this.items = [...this.items];\r\n }\r\n };\r\n\r\n remove = (idx: number) => {\r\n if (this.items[idx]) {\r\n this.items.splice(idx, 1);\r\n this.items = [...this.items];\r\n }\r\n };\r\n\r\n refreshItem = (idx: number) => {\r\n const item = this.items[idx];\r\n this.editorHandlerColumnPipe.transform(item.sdVersion, item, this.gridOption);\r\n };\r\n\r\n get editedItems(): (T & { editorErrorMessage: string })[] {\r\n return this.items\r\n .filter(item => {\r\n if (!item.originItem) {\r\n return true;\r\n }\r\n if (Object.keys(item.originItem).some(key => item.originItem[key] !== item[key])) {\r\n return true;\r\n }\r\n return false;\r\n })\r\n .map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n editorErrorMessage,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result\r\n } = item;\r\n return {\r\n ...result,\r\n editorErrorMessage,\r\n } as any;\r\n });\r\n }\r\n\r\n get gridItems(): T[] {\r\n return this.items.map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result\r\n } = item;\r\n return result as T;\r\n });\r\n }\r\n\r\n get localItems(): T[] {\r\n return this.#localItems;\r\n }\r\n\r\n get localGridItems(): T[] {\r\n return this.#localItems.map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result\r\n } = item;\r\n return result as T;\r\n });\r\n }\r\n\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n onOperatorChange = (column: SdGridMaterialColumn, operator: SdFilterOperator) => {\r\n this.gridOption?.filter?.operatorChange?.(column, operator);\r\n }\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, ElementRef, Input, QueryList, Renderer2 } 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\r\n column: SdGridMaterialColumn;\r\n @Input('column') set _column(column: SdGridMaterialColumn) {\r\n this.column = column;\r\n if (column.width) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'min-width', column.width);\r\n }\r\n }\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(private elementRef: ElementRef, private renderer: Renderer2) {}\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 { SdBadgeColor } from '@sd-angular/core/badge';\r\n\r\nexport type SdGridMaterialColumn<T = any> =\r\n | SdGridMaterialColumnText<T>\r\n | SdGridMaterialColumnNumber<T>\r\n | SdGridMaterialBool<T>\r\n | SdGridMaterialColumnDate<T>\r\n | SdGridMaterialColumnValues<T>\r\n | SdGridMaterialColumnImage<T>\r\n | SdGridMaterialColumnChildren<T>\r\n | SdGridMaterialColumnChildrenCol<T>;\r\n\r\nexport type SdFilterOperator =\r\n | 'EQUAL'\r\n | 'NOT_EQUAL'\r\n | 'CONTAIN'\r\n | 'NOT_CONTAIN'\r\n | 'IN'\r\n | 'NOT_IN'\r\n | 'START_WITH'\r\n | 'END_WITH'\r\n | 'GREATER_THAN'\r\n | 'LESS_THAN'\r\n | 'GREATER_OR_EQUAL'\r\n | 'LESS_OR_EQUAL'\r\n | 'NULL'\r\n | 'NOT_NULL';\r\n\r\nexport const SdFilterOperators: { value: SdFilterOperator, symbol?: string, display: string }[] = [\r\n {\r\n value: 'EQUAL',\r\n symbol: '=',\r\n display: 'Bằng',\r\n },\r\n {\r\n value: 'NOT_EQUAL',\r\n symbol: '≠',\r\n display: 'Không bằng',\r\n },\r\n {\r\n value: 'GREATER_THAN',\r\n symbol: '>',\r\n display: 'Lớn hơn',\r\n },\r\n {\r\n value: 'LESS_THAN',\r\n symbol: '<',\r\n display: 'Nhỏ hơn',\r\n },\r\n {\r\n value: 'GREATER_OR_EQUAL',\r\n symbol: '≥',\r\n display: 'Lớn hơn, hoặc bằng'\r\n },\r\n {\r\n value: 'LESS_OR_EQUAL',\r\n symbol: '≤',\r\n display: 'Nhỏ hơn, hoặc bằng'\r\n },\r\n {\r\n value: 'CONTAIN',\r\n symbol: 'join_inner',\r\n display: 'Chứa',\r\n },\r\n {\r\n value: 'NOT_CONTAIN',\r\n symbol: 'join',\r\n display: 'Không chứa',\r\n },\r\n {\r\n value: 'START_WITH',\r\n symbol: 'line_start_circle',\r\n display: 'Bắt đầu bởi'\r\n },\r\n {\r\n value: 'END_WITH',\r\n symbol: 'line_end_circle',\r\n display: 'Kết thúc bởi'\r\n },\r\n {\r\n value: 'IN',\r\n symbol: 'checklist_rtl',\r\n display: 'Nằm trong'\r\n },\r\n {\r\n value: 'NOT_IN',\r\n symbol: 'event_list',\r\n display: 'Không nằm trong'\r\n },\r\n {\r\n value: 'NULL',\r\n symbol: 'motion_photos_off',\r\n display: 'Là rỗng',\r\n },\r\n {\r\n value: 'NOT_NULL',\r\n symbol: 'adjust',\r\n display: 'Không rỗng',\r\n },\r\n];\r\n\r\nexport type TransformFunc<T = any> = (\r\n value: any,\r\n rowData: T,\r\n args?: {\r\n isExport?: boolean;\r\n }\r\n) => string | Promise<string>;\r\n\r\ninterface SdGridMaterialBaseColumn<T = any> {\r\n field: string;\r\n title: string;\r\n titleHtml?: string;\r\n description?: string;\r\n width?: string;\r\n hidden?: boolean;\r\n invisible?: boolean;\r\n fixed?: boolean;\r\n align?: 'center' | 'left' | 'right';\r\n htmlTemplate?: (value: any, rowData: T, isMobileOrTablet: boolean) => string;\r\n transform?: TransformFunc<T>;\r\n tooltip?: (value: any, rowData: T) => string;\r\n click?: (value: any, rowData: T) => void;\r\n sortable?: boolean;\r\n filter?: {\r\n disabled?: boolean;\r\n defaultShowing?: boolean;\r\n default?: any;\r\n // Chỉ dành cho filter inline column\r\n operator?: {\r\n enable?: boolean;\r\n list?: SdFilterOperator[];\r\n };\r\n };\r\n export?: {\r\n disabled?: boolean;\r\n };\r\n}\r\n\r\ninterface SdGridMaterialColumnText<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'string';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n minLength?: number;\r\n maxLength?: number;\r\n validator?: (rowData: T) => string;\r\n };\r\n}\r\n\r\ninterface SdGridMaterialColumnNumber<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'number';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n minValue?: number;\r\n maxValue?: number;\r\n precision?: number;\r\n validator?: (rowData: T) => string;\r\n };\r\n}\r\n\r\ninterface SdGridMaterialBool<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'bool';\r\n option?: {\r\n displayOnTrue?: string;\r\n displayOnFalse?: string;\r\n };\r\n badgeType?: 'circle';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\ninterface SdGridMaterialColumnDate<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'date' | 'datetime' | 'time';\r\n option?: {\r\n useFilterDate?: boolean;\r\n timeDifferent?: 'second' | 'minute' | 'hour' | 'day' | 'month';\r\n };\r\n transformDate?: (value: any, rowData: T) => string | Date;\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\nexport interface SdGridMaterialColumnValues<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'values';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n option: {\r\n items: any[] | ((searchText?: string, isFormValue?: boolean) => Promise<any[]>) | ((searchText?: string[], isFormValue?: boolean) => Promise<any[]>);\r\n valueField: string;\r\n displayField: string;\r\n selection?:\r\n | 'AUTOCOMPLETE'\r\n | 'MULTIPLE'\r\n | 'MULTIPLEAUTOCOMPLETE'\r\n | 'AUTOCOMPLETE_EDITOR'\r\n | 'MULTIPLE_EDITOR'\r\n | 'MULTIPLEAUTOCOMPLETE_EDITOR';\r\n };\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n add?: (rowData: T) => void;\r\n edit?: (option: any, rowData: T) => void;\r\n delete?: (option: any, rowData: T) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\ninterface SdGridMaterialColumnImage<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'image';\r\n option: {\r\n height: number;\r\n width: number;\r\n };\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\ntype SdGridMaterialNormalColumn<T> = Exclude<\r\n Exclude<SdGridMaterialColumn<T>, SdGridMaterialColumnChildren<T>>,\r\n SdGridMaterialColumnChildrenCol<T>\r\n>;\r\n\r\nexport type SdGridMaterialChildColumn<T = any> = SdGridMaterialNormalColumn<T> & {\r\n dynamicTitle?: (rowData: T) => string | Promise<string>;\r\n colSpan: 1 | 2;\r\n};\r\n\r\nexport interface SdGridMaterialColumnChildren<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'children';\r\n children: SdGridMaterialChildColumn<T>[];\r\n}\r\n\r\nexport interface SdGridMaterialColumnChildrenCol<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'children-col';\r\n children: SdGridMaterialNormalColumn<T>[];\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdFilterOperator, SdFilterOperators, 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 inlineSymbol: string = 'filter_alt';\r\n #inlineOperator: SdFilterOperator;\r\n @Input('inlineOperator') set _inlineOperator(inlineOperator: SdFilterOperator) {\r\n if(this.#inlineOperator !== inlineOperator) {\r\n this.#inlineOperator = inlineOperator;\r\n this.inlineSymbol = SdFilterOperators.find(e => e.value === inlineOperator)?.symbol ?? 'filter_alt';\r\n }\r\n }\r\n @Output() inlineOperatorChange = new EventEmitter<SdFilterOperator>();\r\n @Output() operatorChange = new EventEmitter<SdFilterOperator>();\r\n\r\n columnFilter: Record<string, any> = {};\r\n @Input('columnFilter') set _columnFilter(columnFilter: Record<string, any>) {\r\n this.columnFilter = columnFilter || {};\r\n this.#valueChanges.next();\r\n }\r\n operators: { value: SdFilterOperator, symbol?: string, display: string }[] = [];\r\n column: SdGridMaterialColumn;\r\n @Input('column') set _column(column: SdGridMaterialColumn) {\r\n this.column = column;\r\n if (!column?.filter?.disabled && column?.filter?.operator?.enable) {\r\n this.operators = SdFilterOperators.filter(e => column.filter.operator.list?.includes?.(e.value));\r\n } else {\r\n this.operators = [];\r\n }\r\n }\r\n @Output() filterChange = new EventEmitter();\r\n #valueChanges = new Subject();\r\n #subcription = new Subscription();\r\n constructor(private ref: ChangeDetectorRef) { }\r\n\r\n ngOnInit() {\r\n this.#subcription.add(\r\n this.#valueChanges.pipe(startWith(this.columnFilter)).subscribe(() => {\r\n if (this.column.type === 'date' || this.column.type === 'time' || this.column.type === 'datetime') {\r\n if (!this.column?.option?.useFilterDate) {\r\n this.columnFilter[this.column.field] = this.columnFilter[this.column.field] || {\r\n from: null,\r\n to: null,\r\n };\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subcription.unsubscribe();\r\n }\r\n\r\n onFilterChange = () => {\r\n this.filterChange.emit();\r\n };\r\n\r\n\r\n onChangeOperator = (operator: { value: SdFilterOperator, symbol?: string, display: string }) => {\r\n if (operator) {\r\n this.#inlineOperator = operator.value;\r\n this.inlineSymbol = operator.symbol;\r\n } else {\r\n this.#inlineOperator = null;\r\n this.inlineSymbol = 'filter_alt';\r\n }\r\n this.inlineOperatorChange.emit(this.#inlineOperator);\r\n this.operatorChange.emit(this.#inlineOperator);\r\n this.ref.markForCheck();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { 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 if(result.display.value === null) {\r\n result.display.value = undefined;\r\n }\r\n return result;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridMaterialItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdGroup'\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: any[], gridOption: SdGridMaterialOption): SdGridMaterialItem[] {\r\n const { group } = gridOption;\r\n if (!group) {\r\n return items;\r\n }\r\n const { fields, htmlTemplate } = group;\r\n if (!fields?.length) {\r\n return items;\r\n }\r\n const groupItem: {\r\n [key: string]: SdGridMaterialItem[]\r\n } = {};\r\n for (const item of items) {\r\n let obj = {};\r\n for (const field of fields) {\r\n obj = {\r\n ...obj,\r\n ...(item[field] ?? { [field]: item[field] })\r\n };\r\n }\r\n const key = hash(obj);\r\n if (!groupItem[key]) {\r\n groupItem[key] = [];\r\n }\r\n groupItem[key].push(item);\r\n }\r\n const results: SdGridMaterialItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n results.push({\r\n sdGroup: {\r\n items: groupItem[key],\r\n htmlTemplate: htmlTemplate(groupItem[key])\r\n }\r\n });\r\n for (const item of groupItem[key]) {\r\n results.push(item);\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Injectable, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdGridMaterial } from './grid-material.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { CdkTableModule, CdkColumnDef } from '@angular/cdk/table';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { SdCommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { SdCommandDisablePipe } from './pipes/command-disable.pipe';\r\nimport { SdCommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { SdCommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdColumnHtmlTemplatePipe } from './pipes/column-html-template.pipe';\r\nimport { SdDesktopCellView } from './components/desktop-cell-view/desktop-cell-view.component';\r\nimport { SdColumnTransformPipe } from './pipes/column-transform.pipe';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SdFilterExternalPipe } from './pipes/filter-external.pipe';\r\nimport { SdFilterColumnPipe } from './pipes/filter-column.pipe';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdPopupFilter } from './components/popup-filter/popup-filter.component';\r\n\r\nimport { SdGridFilterService } from './services/grid-filter/grid-filter.service';\r\nimport { SdDesktopCellChildrenView } from './components/desktop-cell-children-view/desktop-cell-children-view.component';\r\nimport { SdColumnChildrenFilterPipe } from './pipes/column-children-filter.pipe';\r\nimport { SdColumnTitlePipe } from './pipes/column-title.pipe';\r\nimport { SdDesktopCommand } from './components/desktop-command/desktop-command.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdColumnBadgePipe } from './pipes/column-badge.pipe';\r\nimport { SdGridConfigurationResultPipe } from './pipes/grid-configuration-result.pipe';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdPopupGridConfiguration } from './components/popup-grid-configuration/popup-grid-configuration.component';\r\nimport { SdGridConfigurationService } from './services/grid-configuration.service';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { SdColumnTooltipPipe } from './pipes/column-tooltip.pipe';\r\nimport { SdSelectionActionFilterPipe } from './pipes/selection-action-filter.pipe';\r\nimport { SdSelectionDisablePipe } from './pipes/selection-disable.pipe';\r\nimport { SdSelectionVisibleSelectAllPipe } from './pipes/selection-visible-select-all.pipe';\r\nimport { SdDynamicColumn } from './components/dynamic-column/dynamic-column.component';\r\nimport { SdGeneratedColumnService } from './services/generated-column/generated-column.service';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdDesktopCellEditor } from './components/desktop-cell-editor/desktop-cell-editor.component';\r\nimport { SdEditorHandlerRowPipe } from './pipes/editor-handler-row.pipe';\r\nimport { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';\r\nimport { SdEditorValidatePipe } from './pipes/editor-validate.pipe';\r\nimport { SdStyleRowCss } from './pipes/style-row-css.pipe';\r\nimport { SdDesktopEditorValidation } from './components/desktop-editor-validation/desktop-editor-validation.component';\r\nimport { SdColumnInlineFilter } from './components/column-inline-filter/column-inline-filter.component';\r\nimport { SdSelectionVisiblePipe } from './pipes/selection-visible.pipe';\r\nimport { SdGridQuickAction } from './components/quick-action/quick-action.component';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdCellViewPipe } from './pipes/cell-view.pipe';\r\nimport { SdGroupPipe } from './pipes/sd-group.pipe';\r\nimport { SdGroupModule } from '@sd-angular/core/group';\r\n\r\n@Injectable()\r\nexport class MatPaginatorIntlCro extends MatPaginatorIntl {\r\n firstPageLabel = 'Trang đầu';\r\n lastPageLabel = 'Trang cuối';\r\n itemsPerPageLabel = 'Kích thước trang';\r\n nextPageLabel = 'Trang sau';\r\n previousPageLabel = 'Trang trước';\r\n\r\n getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n if (length === 0 || pageSize === 0) {\r\n return '';\r\n }\r\n const from = page * pageSize + 1;\r\n const to = from + (length - page * pageSize > pageSize ? pageSize : length - page * pageSize) - 1;\r\n return `${from}-${to} trên ${length}`;\r\n }\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSortModule,\r\n MatPaginatorModule,\r\n MatTableModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatChipsModule,\r\n MatRadioModule,\r\n MatSlideToggleModule,\r\n MatCheckboxModule,\r\n MatListModule,\r\n MatDividerModule,\r\n CdkTableModule,\r\n DragDropModule,\r\n SdFormModule,\r\n SdServiceModule,\r\n MatSliderModule,\r\n ScrollingModule,\r\n SdCommonModule,\r\n SdGroupModule\r\n ],\r\n declarations: [\r\n SdGridQuickAction,\r\n SdDesktopCell,\r\n SdDesktopCellEditor,\r\n SdDesktopEditorValidation,\r\n SdDesktopCellView,\r\n SdDesktopCellChildrenView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdGridMaterial,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdPopupExport,\r\n SdPopupGridConfiguration,\r\n SdGridFilter,\r\n SdPopupFilter,\r\n SdDynamicColumn,\r\n\r\n // Pipes\r\n SdGridConfigurationResultPipe,\r\n SdColumnChildrenFilterPipe,\r\n SdColumnTitlePipe,\r\n SdCommandFilterPipe,\r\n SdCommandDisablePipe,\r\n SdCommandIconPipe,\r\n SdCommandTitlePipe,\r\n SdColumnValuesPipe,\r\n SdColumnHtmlTemplatePipe,\r\n SdColumnTransformPipe,\r\n SdColumnTooltipPipe,\r\n SdColumnBadgePipe,\r\n SdFilterColumnPipe,\r\n SdFilterExternalPipe,\r\n SdSelectionActionFilterPipe,\r\n SdSelectionVisiblePipe,\r\n SdSelectionDisablePipe,\r\n SdSelectionVisibleSelectAllPipe,\r\n SdEditorHandlerRowPipe,\r\n SdEditorHandlerColumnPipe,\r\n SdEditorValidatePipe,\r\n SdStyleRowCss,\r\n SdCellViewPipe,\r\n SdGroupPipe\r\n ],\r\n exports: [\r\n SdGridMaterial,\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdMaterialSubInformationDefDirective\r\n ],\r\n providers: [\r\n DatePipe,\r\n DecimalPipe,\r\n CdkColumnDef,\r\n SdGridFilterService,\r\n SdGridConfigurationService,\r\n SdGeneratedColumnService,\r\n SdColumnValuesPipe,\r\n SdEditorHandlerColumnPipe,\r\n {\r\n provide: MatPaginatorIntl, useClass: MatPaginatorIntlCro\r\n }\r\n ]\r\n})\r\nexport class SdGridMaterialModule {\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../../../projects/sd-core/grid-material/src/lib/models/grid-configuration.model.ts","../../../../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/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/models/grid-column.model.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":["DEFAULT_GRID_MATERIAL_CONFIG","pageSize","pages","GRID_MATERIAL_CONFIG","InjectionToken","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","SdPopupFilter","cdRef","_this","_filterRegister","externalFilters","externalFilter","inlineExternal","columns","columnFilter","inlineColumn","filterDefs","filterDef","inlineFilterDef","open","configuration","JSON","parse","stringify","filterValue","modal","markForCheck","close","onApply","ngAfterViewInit","ngOnDestroy","onClear","remove","Component","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","ViewChild","SdModal","SdGridFilter","ref","deviceService","filterRegisterChange","BehaviorSubject","_subscription","Subscription","onFilter","item","filterRegister","updateFilter","notReload","popupFilter","isMobileOrTablet","isDesktop","filter","add","pipe","startWith","subscribe","observer","unsubscribe","DeviceDetectorService","SdPopupExport","loadingService","exportService","notifyService","translateService","groups","enableCreating","selected","files","export","EventEmitter","form","FormGroup","_getExportableColumns","gridColumns","additionalColumns","_getExportableGroups","_c","_b","_a","gridOption","permission","key","hideMyTemplates","loadFiles","code","detectChanges","exportDefault","_getExportColumns","columns_1","_x","displayColumns","firstColumns","secondColumns","reduce","first","column","find","field","type","children","e1","map","assign","data","emit","file","isCSV","exportCSV","group","selectedGroup","filesInFolder","_y","_initTemplate","fileName","sheets","isArray","_d","sheet","name","items","fields","_0","_z","_1","_3","generateTemplate","_f","_e","start","finally","stop","generateAndUploadTemplate","_h","_g","_j","_k","generateUploadTemplate","_m","_l","_o","onExport","uploadTemplate","_p","validator","_r","_q","validators","removeFile","confirm","translate","idx","splice","createTemplate","invalid","markAllAsTouched","some","notify","warning","templateName","_u","_t","_s","_w","_v","filePath","onChangeGroup","listGroups","selectedOptions","validatorTemplateName","test","option","hash","prefix","disabled","forEach","childColumn","title","description","width","ngOnInit","SdLoadingService","SdExportService","SdNotifyService","SdTranslateService","Output","settingService","gridMaterialConfiguration","_COLUMNS","EDITORVALIDATION","EDITOR","SUBINFORMATION","COMMAND","SELECTION","GROUP","_cache","init","subject_1","Subject","load","_load","_get","_set","_remove","_default","_getKey","config","hidden","origin","invisible","fixed","subject","storage","createServer","catch","console","isGeneratedColumn","col","generateConfigurationResult","sdSubInformation","fixedColumn","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","selection","commands","editor","addable","removable","visible","generatedColumn","generatedColumns","includes","subColumn","e_2","colSpan","Injectable","SdSettingService","Inject","Optional","_prefix","transform","valueField","displayField","remain","isMultible","_cache$1","values","join","Pipe","CalculateSdId","sdId","editorHandlerColumn","expandDetail","isExpanded","isExpanding","isSelected","sdGroup","selectable","actions","groupedActions","originItem","editorErrorMessage","editorHandlerRow","SdEditorHandlerColumnPipe","zone","_visible","columns_1_1","childCol","run","NgZone","_filterConfiguration","_filterValue","register","cacheSession","id","tempKey","_cache$2","filterConfiguration_1","default","_defaultConfiguration","undefined","_initConfiguration","filterValue_1","cacheFilter","_defaultValue","_initValue","keys","current","columnOperator","updatedFilter","sdMaterialFilterDef","from","to","SdGridMaterial","gridConfigurationService","columnValuesPipe","gridFilterService","editorHandlerColumnPipe","_gridId","uuid.v4","_optionChanges","_localItems","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_reload","isExporting","isSelectAll","exportTitle","_loadCompleted","_initCellDef","_9","_10","sdMaterialCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","_8","rawColumnFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","paginate","showFirstLastButtons","operator","enable","list","defaultListString","defaultListNumber","_4","_2","defaultListValues","_7","_6","_5","defaultListDate","_isFirstLoad","_loadFilterRegister","_subscription$1","debounceTime","pageIndex","force","_filterLocal","localItems","filterInfo","toString","trim","toLowerCase","columnValue","fValue","replace","cValue","fromDate","Date","begin","toDate","end","columnTime","getTime","fromDateTime","toDateTime","type_1","field_1","sort","s1","s2","reverse","index","total","_getFilter","filterReq","isObservable","toPromise","error_1","results","error_2","_render","sdScroll","scrollTop","reload","onReload","every","_updateSelectedItems","gridFilter","_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","_12","displayOnTrue","displayOnFalse","date","transformDate","toFormat","_11","e_9","columns_3","columns_3_1","exportItems_2","exportItems_2_1","_14","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","update","refreshItem","onOperatorChange","operatorChange","_initConfiguration$1","gridConfigurationObserver","paginator","page","sortChange","switchMap","changes","combineLatest","drop","event","moveItemInArray","previousIndex","currentIndex","animations","trigger","style","height","minHeight","visibility","transition","animate","SdGridConfigurationService","SdColumnValuesPipe","SdGridFilterService","SdScrollDirective","SdQuickAction","MatPaginator","MatSort","ContentChild","SdMaterialSubInformationDefDirective","SdMaterialEmptyDataDefDirective","ContentChildren","SdMaterialCellDefDirective","SdMaterialFooterDefDirective","SdCommandFilterPipe","commands_1","commands_1_1","command","flag","isHidden","e_1","childCommand","hidden_1","SdCommandDisablePipe","SdCommandIconPipe","icon","SdCommandTitlePipe","SdColumnHtmlTemplatePipe","htmlTemplate","SdColumnTransformPipe","Number","isNumber","toVNCurrency","SdFilterExternalPipe","externalFilters_1","externalFilters_1_1","SdFilterColumnPipe","columnChildren","SdColumnChildrenFilterPipe","_isMobileOrTablet","transformValue","templateValue","SdColumnTitlePipe","dynamicTitle","SdColumnBadgePipe","badge","badgeType","color","badgeIcon","SdGridConfigurationResultPipe","SdPopupGridConfiguration","isCreatingColumn","disabledDrag","_cache$3","onReset","createColumn","mouseUp","dropTable","table","renderRows","handleMouseDown","handleMouseUp","HostListener","SdColumnTooltipPipe","tooltip","_convert","action","fontSet","click","childAction","key_1","actions_1","actions_1_1","availableActions","availableActions_1","availableActions_1_1","isGrouped","setTimeout","_cache$4","loadSystem","systemColumn","SdDynamicColumn","generatedColumnService","columnTypes","isDetail","originColumns","onDetail","detail","isSystem","useTemplate","markAsUntouched","markAsPristine","systemSetting","setting","systemColumns","_subscription$2","SdGeneratedColumnService","SdSideDrawer","SdDesktopCell","elementRef","renderer","setStyle","nativeElement","ElementRef","Renderer2","onChange","change","editorOnAdd","editorOnEdit","edit","editorOnDelete","delete","SdEditorHandlerRowPipe","status","isDisabled","editable","savable","cancelable","_visible$1","SdEditorValidatePipe","_previous","_delay","now","SdStyleRowCss","rowCss","SdFilterOperators","symbol","display","SdColumnInlineFilter","inlineSymbol","_inlineOperator_1","inlineOperatorChange","operators","filterChange","_valueChanges","_subcription","onChangeOperator","_value","inlineOperator","useFilterDate","hasGroup","clear","SdCellViewPipe","utilityService","_maxSecond","_maxMinute","_maxHour","_maxDay","_maxMonth","_isMobileOrTablet$1","displayOnEmpty","align","hasHtml","html","seconds","timeDifferent","timeDifference","time","dateTime","emptyValues","SdUtilityService","SdGroupPipe","groupItem","items_1_1","fields_1","fields_1_1","e_4","MatPaginatorIntlCro","_super","firstPageLabel","lastPageLabel","itemsPerPageLabel","nextPageLabel","previousPageLabel","getRangeLabel","String","__","constructor","__extends","MatPaginatorIntl","NgModule","imports","CommonModule","FormsModule","ReactiveFormsModule","MatInputModule","MatFormFieldModule","MatSortModule","MatPaginatorModule","MatTableModule","MatMenuModule","MatIconModule","MatButtonModule","MatTooltipModule","MatProgressSpinnerModule","MatChipsModule","MatRadioModule","MatSlideToggleModule","MatCheckboxModule","MatListModule","MatDividerModule","CdkTableModule","DragDropModule","SdFormModule","SdServiceModule","MatSliderModule","ScrollingModule","SdCommonModule","SdGroupModule","declarations","SdGridQuickAction","SdDesktopCellEditor","SdDesktopEditorValidation","SdDesktopCellView","SdDesktopCellChildrenView","SdDesktopCommand","SdSelectionActionFilterPipe","SdSelectionVisiblePipe","SdSelectionDisablePipe","SdSelectionVisibleSelectAllPipe","exports","providers","DatePipe","DecimalPipe","CdkColumnDef","provide","useClass"],"mappings":"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","sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { SdFilterOperator } from './grid-column.model';\r\n\r\nexport interface ISdGridMaterialConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n operator?: {\r\n defaultListString?: SdFilterOperator[];\r\n defaultListNumber?: SdFilterOperator[];\r\n defaultListDate?: SdFilterOperator[];\r\n defaultListValues?: SdFilterOperator[];\r\n };\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[];\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_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 { 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 { Component, ViewChild, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialExternalFilter, SdGridMaterialFilterRegister } from '../../services/grid-filter/grid-filter.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'sd-popup-filter',\r\n templateUrl: './popup-filter.component.html',\r\n styleUrls: ['./popup-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdPopupFilter {\r\n @ViewChild(SdModal) modal: SdModal;\r\n #filterRegister: SdGridMaterialFilterRegister;\r\n @Input() set filterRegister(value: SdGridMaterialFilterRegister) {\r\n this.#filterRegister = value;\r\n }\r\n @Input() externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: Record<string, any> = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n columnFilter: Record<string, any> = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: Record<string, any> = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n ngOnDestroy() {}\r\n\r\n open = () => {\r\n const configuration = this.#filterRegister.configuration.get();\r\n this.inlineColumn = JSON.parse(JSON.stringify(configuration.inlineColumn));\r\n this.inlineExternal = JSON.parse(JSON.stringify(configuration.inlineExternal));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(configuration.inlineFilterDef));\r\n const filterValue = this.#filterRegister.value.get();\r\n this.columnFilter = JSON.parse(JSON.stringify(filterValue.columnFilter));\r\n this.externalFilter = JSON.parse(JSON.stringify(filterValue.externalFilter));\r\n this.filterDef = JSON.parse(JSON.stringify(filterValue.filterDef));\r\n this.modal.open();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n close = () => {\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onApply = () => {\r\n this.#filterRegister.configuration.set({\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef,\r\n });\r\n this.#filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onClear() {\r\n this.#filterRegister.value.remove();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {\r\n SdGridMaterialFilterOption,\r\n SdGridMaterialExternalFilter,\r\n SdGridMaterialFilterRegister,\r\n} from '../../services/grid-filter/grid-filter.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { startWith } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'sd-grid-filter',\r\n templateUrl: './grid-filter.component.html',\r\n styleUrls: ['./grid-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdGridFilter implements AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupFilter) popupFilter: SdPopupFilter;\r\n filter: Readonly<SdGridMaterialFilterOption>;\r\n @Input('filter') set _filter(filter: SdGridMaterialFilterOption) {\r\n this.filter = filter;\r\n }\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n externalFilters: SdGridMaterialExternalFilter[] = [];\r\n @Input('externalFilters') set _externalFilters(value: SdGridMaterialExternalFilter[]) {\r\n this.externalFilters = value || [];\r\n }\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterRegister: SdGridMaterialFilterRegister;\r\n @Input('filterRegister') set _filterRegister(value: SdGridMaterialFilterRegister) {\r\n this.filterRegister = value;\r\n this.filterRegisterChange.next(this.filterRegister);\r\n }\r\n filterRegisterChange = new BehaviorSubject<SdGridMaterialFilterRegister>(null);\r\n\r\n filterDef: any = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n columnFilter: any = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n externalFilter: any = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n isMobileOrTablet: boolean;\r\n\r\n #subscription = new Subscription();\r\n\r\n constructor(private ref: ChangeDetectorRef, private deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n this.ref.markForCheck();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.filterRegisterChange.pipe(startWith(this.filterRegister)).subscribe(filterRegister => {\r\n if (this.filterRegister) {\r\n this.#subscription.add(\r\n this.filterRegister.configuration.observer.subscribe(configuration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n this.inlineColumn = inlineColumn;\r\n this.inlineExternal = inlineExternal;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.filterRegister.value.observer.subscribe(value => {\r\n const { columnFilter, externalFilter, filterDef } = value;\r\n this.columnFilter = columnFilter;\r\n this.externalFilter = externalFilter;\r\n this.filterDef = filterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFilter = (item?: SdGridMaterialColumn | SdGridMaterialExternalFilter) => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n };\r\n\r\n updateFilter = () => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n notReload: true\r\n });\r\n };\r\n\r\n open = () => {\r\n this.popupFilter.open();\r\n };\r\n}\r\n","import { 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 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(`Vui lòng chọn cột dữ liệu để xuất`);\r\n return;\r\n }\r\n this.loadingService.start();\r\n const fileName = this.templateName + '.xlsx';\r\n try {\r\n if (this.gridOption?.export?.validators?.(fileName)) {\r\n this.notifyService.notify.warning(this.gridOption?.export?.validators(fileName));\r\n return;\r\n }\r\n const result = await this.generateAndUploadTemplate(fileName);\r\n if (result?.filePath) {\r\n const file: SdExportFile = {\r\n filePath: result.filePath,\r\n fileName: result.fileName\r\n };\r\n this.onExport(file);\r\n this.templateName = null;\r\n this.enableCreating = false;\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n }\r\n\r\n onChangeGroup = () => {\r\n this.loadFiles(this.listGroups?.selectedOptions?.selected[0]?.value);\r\n }\r\n\r\n validatorTemplateName = (val: string) => {\r\n const { translate } = this.translateService;\r\n const regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;\r\n if (!val) {\r\n return translate('Please enter your template name');\r\n }\r\n if (val.length > 50) {\r\n return translate('Template name is too long');\r\n }\r\n if (!regex.test(val)) {\r\n return translate('Template name only contains letters, numbers and spaces');\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnConfiguration, SdGridConfiguration, SdGridConfigurationCache, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { GRID_MATERIAL_CONFIG, ISdGridMaterialConfiguration } from '../models/grid-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdGridConfigurationService {\r\n #COLUMNS = {\r\n EDITORVALIDATION: 'sdEditorValidation',\r\n EDITOR: 'sdEditor',\r\n SUBINFORMATION: 'sdSubInformationAction',\r\n COMMAND: 'sdCommand',\r\n SELECTION: 'sdSelection',\r\n GROUP: 'sdGroup'\r\n };\r\n #cache: {\r\n [key: string]: SdGridConfigurationCache\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(GRID_MATERIAL_CONFIG) @Optional() public gridMaterialConfiguration: ISdGridMaterialConfiguration) {\r\n }\r\n\r\n init = (key: string, gridOption: SdGridMaterialOption) => {\r\n if (!this.#cache[key]) {\r\n const subject = new Subject<SdGridConfiguration>();\r\n this.#cache[key] = {\r\n load: this.#load(gridOption, subject),\r\n get: this.#get(gridOption),\r\n set: (configuration: SdGridConfiguration) => {\r\n configuration = this.#set(gridOption, configuration);\r\n subject.next({ ...configuration });\r\n return configuration;\r\n },\r\n remove: () => {\r\n this.#remove(gridOption)();\r\n subject.next(this.#default(gridOption));\r\n },\r\n observer: subject\r\n };\r\n }\r\n return this.#cache[key];\r\n }\r\n\r\n #getKey = (gridOption: SdGridMaterialOption) => {\r\n const prefix = 'c9e94836-6ace-4aeb-b148-4f0be63589ee';\r\n if (!gridOption?.config?.key && !gridOption?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: gridOption?.config?.key || !gridOption?.key\r\n });\r\n }\r\n\r\n #default = (gridOption: SdGridMaterialOption): SdGridConfiguration => {\r\n const columns: SdColumnConfiguration[] = gridOption?.columns?.filter(e => !e.hidden).map(e => ({\r\n origin: {\r\n field: e.field,\r\n title: e.title,\r\n width: e.width,\r\n invisible: e.invisible\r\n },\r\n invisible: e.invisible,\r\n fixed: false\r\n })) || [];\r\n return {\r\n columns\r\n };\r\n }\r\n\r\n #load = (gridOption: SdGridMaterialOption, subject: Subject<SdGridConfiguration>) => {\r\n return async () => {\r\n const get = this.#get(gridOption);\r\n const configuration = await get();\r\n subject.next({ ...configuration });\r\n };\r\n }\r\n\r\n #get = (gridOption: SdGridMaterialOption) => {\r\n return async () => {\r\n const key = this.#getKey(gridOption);\r\n if (!key) {\r\n return this.#default(gridOption);\r\n }\r\n const { columns, config } = gridOption;\r\n let configuration: SdGridConfiguration;\r\n if (config?.storage === 'server') {\r\n const { get, remove } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: config?.args\r\n });\r\n configuration = await get().catch(() => undefined);\r\n if (!configuration?.columns) {\r\n remove().catch(console.error);\r\n return this.#default(gridOption);\r\n }\r\n } else {\r\n const { get, remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: config?.storage,\r\n args: config?.args\r\n });\r\n configuration = get();\r\n if (!configuration?.columns) {\r\n remove();\r\n return this.#default(gridOption);\r\n }\r\n }\r\n\r\n configuration.columns = configuration.columns\r\n .filter(column => column.isGeneratedColumn || columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // Thêm những column mới vào storage nếu có\r\n columns.forEach(column => {\r\n const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n if (!col) {\r\n configuration.columns.push({\r\n origin: {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible,\r\n },\r\n invisible: column.invisible,\r\n fixed: false\r\n });\r\n } else {\r\n col.origin = {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible\r\n };\r\n }\r\n });\r\n return configuration;\r\n };\r\n }\r\n\r\n #set = (gridOption: SdGridMaterialOption, configuration: SdGridConfiguration) => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n if (gridOption?.config?.storage === 'server') {\r\n const { set } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: gridOption?.config?.args\r\n });\r\n set(configuration);\r\n } else {\r\n const { set } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args\r\n });\r\n set(configuration);\r\n }\r\n }\r\n return JSON.parse(JSON.stringify(configuration));\r\n }\r\n\r\n #remove = (gridOption: SdGridMaterialOption) => {\r\n return () => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n if (gridOption?.config?.storage === 'server') {\r\n const { remove } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: gridOption?.config?.args\r\n });\r\n remove();\r\n } else {\r\n const { remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args\r\n });\r\n remove();\r\n }\r\n }\r\n };\r\n }\r\n\r\n // get = async (gridOption: SdGridMaterialOption): Promise<SdGridConfiguration> => {\r\n // if (!gridOption?.key) {\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // const { key, columns } = gridOption;\r\n // const configuration: SdGridConfiguration = await this.settingService.get(this.#getKey(key)).catch(() => undefined);\r\n // if (!configuration?.columns) {\r\n // this.settingService.remove(this.#getKey(key)).catch(console.error);\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // configuration.columns = configuration.columns\r\n // .filter(column => columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // // Thêm những column mới vào storage nếu có\r\n // columns.forEach(column => {\r\n // const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n // if (!col) {\r\n // configuration.columns.push({\r\n // origin: {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible,\r\n // },\r\n // invisible: column.invisible,\r\n // fixed: false\r\n // });\r\n // } else {\r\n // col.origin = {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible\r\n // };\r\n // }\r\n // });\r\n // return configuration;\r\n // }\r\n\r\n // set = async (key: string, configuration: SdGridConfiguration): Promise<SdGridConfiguration> => {\r\n // if (key) {\r\n // this.settingService.set(this.#getKey(key), configuration);\r\n // }\r\n // return configuration;\r\n // }\r\n\r\n // remove = (key: string) => {\r\n // if (key) {\r\n // this.settingService.remove(this.#getKey(key));\r\n // }\r\n // }\r\n\r\n generateConfigurationResult = (\r\n configuration: SdGridConfiguration,\r\n gridOption: SdGridMaterialOption,\r\n sdSubInformation: SdMaterialSubInformationDefDirective) => {\r\n const result: SdGridConfigurationResult = {\r\n column: {},\r\n fixedColumn: {},\r\n firstColumns: [],\r\n secondColumns: [],\r\n firstHeaders: [],\r\n secondHeaders: [],\r\n displayedColumns: [],\r\n displayedFooters: [],\r\n multipleHeader: false\r\n };\r\n const { selection, commands, editor, group } = gridOption || {};\r\n if (editor?.addable || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITORVALIDATION);\r\n result.displayedColumns.push(this.#COLUMNS.EDITORVALIDATION);\r\n }\r\n if (selection?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (!editor?.hidden) {\r\n if (editor?.addable\r\n || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'popup' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITOR);\r\n result.displayedColumns.push(this.#COLUMNS.EDITOR);\r\n }\r\n }\r\n if (commands?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.COMMAND);\r\n result.displayedColumns.push(this.#COLUMNS.COMMAND);\r\n }\r\n if (group?.fields?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.GROUP);\r\n result.displayedColumns.push(this.#COLUMNS.GROUP);\r\n }\r\n configuration?.columns?.filter(col => !col.invisible).forEach(col => {\r\n if (col.isGeneratedColumn) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n const generatedColumn: SdGridMaterialColumn = {\r\n type: 'children',\r\n field: col.origin.field,\r\n title: col.origin.title,\r\n children: []\r\n };\r\n for (const subColumn of gridOption?.columns.filter(e1 => col.generatedColumns.includes(e1.field))) {\r\n if (subColumn.type === 'children' || subColumn.type === 'children-col') {\r\n for (const childColumn of subColumn.children) {\r\n generatedColumn.children.push({\r\n ...childColumn,\r\n colSpan: 2\r\n });\r\n }\r\n } else {\r\n generatedColumn.children.push({\r\n ...subColumn,\r\n colSpan: 2\r\n });\r\n }\r\n\r\n }\r\n result.firstColumns.push({\r\n ...generatedColumn,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n result.displayedColumns.push(col.origin.field);\r\n return;\r\n }\r\n const column = gridOption?.columns.find(e => e.field === col.origin.field);\r\n if (column) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n result.firstColumns.push({\r\n ...column,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n if (column.type === 'children-col') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n } else {\r\n result.displayedColumns.push(col.origin.field);\r\n }\r\n }\r\n });\r\n if (sdSubInformation?.templateRef) {\r\n result.firstHeaders.push(this.#COLUMNS.SUBINFORMATION);\r\n result.displayedColumns.push(this.#COLUMNS.SUBINFORMATION);\r\n }\r\n result.multipleHeader = result.secondHeaders.length > 0;\r\n // Sub infomation không thể có footer\r\n result.displayedFooters = result.displayedColumns.filter(val => val !== this.#COLUMNS.SUBINFORMATION);\r\n return result;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnValues'\r\n})\r\nexport class SdColumnValuesPipe implements PipeTransform {\r\n #prefix = 'a1e67660-8aa2-4c11-b02d-71a32188719f';\r\n #cache: {\r\n [key: string]: {\r\n result: any\r\n }\r\n } = {};\r\n transform = async (value: any, column: SdGridMaterialColumn): Promise<string> => {\r\n if (column.type !== 'values' || !column.option?.items || !column.option?.valueField || !column.option?.displayField) {\r\n return value;\r\n }\r\n const { items, valueField, displayField, selection, ...remain } = column.option;\r\n const key = hash({\r\n prefix: this.#prefix,\r\n valueField,\r\n displayField,\r\n selection,\r\n remain,\r\n value\r\n });\r\n const isMultible = ['MULTIPLE', 'MULTIPLEAUTOCOMPLETE', 'MULTIPLE_EDITOR', 'MULTIPLEAUTOCOMPLETE_EDITOR'].includes(selection);\r\n if (typeof (items) === 'function') {\r\n if (!this.#cache[key]) {\r\n const values = await items(value, true);\r\n let result = '';\r\n if (isMultible && Array.isArray(value)) {\r\n result = values?.filter(e => value?.includes(e?.[valueField]))?.map(e => e?.[displayField])?.join(', ') || value?.join(', ');\r\n }\r\n else {\r\n result = values?.find(e => e?.[valueField] === value)?.[displayField] || value;\r\n }\r\n this.#cache[key] = {\r\n result\r\n };\r\n }\r\n } else {\r\n if (!this.#cache[key]) {\r\n let result = '';\r\n if (isMultible && Array.isArray(value)) {\r\n result = items?.filter(e => value?.includes(e?.[valueField]))?.map(e => e?.[displayField])?.join(', ') ?? value?.join(', ');\r\n }\r\n else {\r\n result = items?.find(e => e?.[valueField] === value)?.[displayField] || value\r\n }\r\n this.#cache[key] = {\r\n result\r\n };\r\n }\r\n }\r\n return this.#cache[key].result;\r\n }\r\n}\r\n","import hash from 'object-hash';\r\nimport { SdItem } from \"../models/grid.model\";\r\n\r\nexport const CalculateSdId = (item: SdItem) => {\r\n const {\r\n sdId,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n sdGroup,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n originItem,\r\n editorErrorMessage,\r\n editorHandlerRow,\r\n ...remain } = item;\r\n return hash(remain);\r\n}","import { Injectable, NgZone, Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { CalculateSdId } from '../functions/calculate-sd-id';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorHandlerColumn'\r\n})\r\n@Injectable()\r\nexport class SdEditorHandlerColumnPipe implements PipeTransform {\r\n constructor(private zone: NgZone) { }\r\n #visible = (col: SdGridMaterialColumn, item: SdItem) => {\r\n if (col.type === 'children' || col.type === 'children-col') {\r\n return false;\r\n }\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (col.editor) {\r\n const isDisabled = typeof (col.editor.disabled) === 'function' ? col.editor.disabled(item) : col.editor.disabled;\r\n if (isDisabled) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n transform(value: any, item: SdItem, gridOption: SdGridMaterialOption) {\r\n const key = CalculateSdId(item);\r\n if (item.sdId === key && item.editorHandlerColumn) {\r\n return true;\r\n }\r\n item.editorHandlerColumn = item.editorHandlerColumn || {};\r\n const { columns } = gridOption;\r\n for (const col of columns) {\r\n if (col.type === 'children-col') {\r\n for (const childCol of col.children) {\r\n item.editorHandlerColumn[childCol.field] = {\r\n ...item.editorHandlerColumn[childCol.field],\r\n visible: this.#visible(childCol, item)\r\n }\r\n }\r\n } else {\r\n item.editorHandlerColumn[col.field] = {\r\n ...item.editorHandlerColumn[col.field],\r\n visible: this.#visible(col, item)\r\n }\r\n }\r\n }\r\n this.zone.run(() => {\r\n item.sdId = CalculateSdId(item);\r\n });\r\n item.sdId = key;\r\n return true;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport {\r\n SdGridMaterialExternalFilter,\r\n SdGridMaterialFilterConfiguration,\r\n SdGridMaterialFilterOption,\r\n SdGridMaterialFilterRegister,\r\n SdGridMaterialFilterValue,\r\n} from './grid-filter.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { map, startWith } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class SdGridFilterService {\r\n #filterConfiguration = 'GRID-FILTER-CONFIGURATION';\r\n #filterValue = 'GRID-FILTER-VALUE';\r\n #cache: Record<string, SdGridMaterialFilterRegister> = {};\r\n constructor(private settingService: SdSettingService) {}\r\n register = (\r\n filter: SdGridMaterialFilterOption,\r\n args: {\r\n id: string;\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }\r\n ) => {\r\n let cacheSession = false;\r\n \r\n const { id, columns, externalFilters } = args;\r\n const tempKey = hash({\r\n id,\r\n columns: columns?.map(e => e.field).filter(field => !!field) || [],\r\n externalFilters: externalFilters?.map(e => e.field).filter(field => !!field) || [],\r\n });\r\n const key = filter?.key || tempKey;\r\n if (!filter?.key) {\r\n cacheSession = true; // Nếu không có key thì chỉ lưu theo session\r\n }\r\n if (!this.#cache[key]) {\r\n // Setting của filter configuration\r\n const filterConfiguration = this.settingService.create<SdGridMaterialFilterConfiguration>(\r\n {\r\n prefix: this.#filterConfiguration,\r\n key,\r\n },\r\n {\r\n default: this.#defaultConfiguration(args),\r\n type: cacheSession ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị configuration merge với giá trị defaultShowing của args nếu như args có thay đổi\r\n filterConfiguration.set(this.#initConfiguration(args, filterConfiguration.get()));\r\n // Setting của filter value\r\n const filterValue = this.settingService.create<SdGridMaterialFilterValue>(\r\n {\r\n prefix: this.#filterValue,\r\n key: !filter?.cacheFilter ? tempKey : key,\r\n },\r\n {\r\n default: this.#defaultValue(args),\r\n type: cacheSession || !filter?.cacheFilter ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị value merge với giá trị default của args nếu như args có thay đổi\r\n filterValue.set(this.#initValue(args, filterValue.get()));\r\n this.#cache[key] = {\r\n configuration: {\r\n get: (): SdGridMaterialFilterConfiguration => {\r\n return filterConfiguration.get();\r\n },\r\n set: (configuration: Partial<SdGridMaterialFilterConfiguration>): SdGridMaterialFilterConfiguration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n filterConfiguration.set({\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n });\r\n return {\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n };\r\n },\r\n remove: () => {\r\n filterConfiguration.set(this.#defaultConfiguration(args));\r\n },\r\n observer: filterConfiguration.observer.pipe(\r\n startWith(filterConfiguration.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(configuration => configuration || this.#defaultConfiguration(args))\r\n ),\r\n },\r\n value: {\r\n get: (): SdGridMaterialFilterValue => {\r\n return filterValue.get();\r\n },\r\n set: (value: Partial<SdGridMaterialFilterValue>): SdGridMaterialFilterValue => {\r\n const keys = Object.keys(value || {});\r\n const current = filterValue.get();\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = current;\r\n const updatedFilter = {\r\n // Filter column\r\n columnOperator: keys.includes('columnOperator') ? value?.columnOperator || {} : columnOperator,\r\n columnFilter: keys.includes('columnFilter') ? value?.columnFilter || {} : columnFilter,\r\n // Filter external\r\n externalFilter: keys.includes('externalFilter') ? value?.externalFilter || {} : externalFilter,\r\n // Filter def\r\n filterDef: keys.includes('filterDef') ? value?.filterDef || {} : filterDef,\r\n // Force\r\n notReload: !!value?.notReload,\r\n };\r\n filterValue.set(updatedFilter);\r\n return updatedFilter;\r\n },\r\n remove: () => {\r\n filterValue.set(this.#defaultValue(args));\r\n },\r\n observer: filterValue.observer.pipe(\r\n startWith(filterValue.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(value => value || this.#defaultValue(args))\r\n ),\r\n },\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #defaultConfiguration = (args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdGridMaterialFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #defaultValue = (args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdGridMaterialFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n externalFilter[item.field] = item?.default;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n\r\n #initConfiguration = (\r\n args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n configuration: SdGridMaterialFilterConfiguration\r\n ): SdGridMaterialFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = configuration?.inlineColumn?.[item.field] ?? item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = configuration?.inlineExternal?.[item.field] ?? item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = configuration?.inlineFilterDef?.[item.sdMaterialFilterDef] ?? item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #initValue = (\r\n args: {\r\n columns: SdGridMaterialColumn[];\r\n externalFilters: SdGridMaterialExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n value: SdGridMaterialFilterValue\r\n ): SdGridMaterialFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = value?.columnFilter?.[item.field] ?? item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n if (item.type === 'daterange') {\r\n externalFilter[item.field] = {\r\n from: value?.externalFilter?.[item.field]?.from ?? item.default?.from,\r\n to: value?.externalFilter?.[item.field]?.to ?? item.default?.to,\r\n };\r\n } else {\r\n externalFilter[item.field] = value?.externalFilter?.[item.field] ?? item?.default;\r\n }\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = value?.filterDef?.[item.sdMaterialFilterDef] ?? undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n Optional,\r\n Inject,\r\n ChangeDetectorRef,\r\n ContentChildren,\r\n QueryList,\r\n OnInit,\r\n OnDestroy,\r\n ContentChild,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport * as uuid from 'uuid';\r\nimport { SdGridMaterialFilterRegister, SdGridMaterialFilterRequest } from './services/grid-filter/grid-filter.model';\r\nimport { SdGridMaterialOption } from './models/grid-option.model';\r\nimport { GRID_MATERIAL_CONFIG, DEFAULT_GRID_MATERIAL_CONFIG, ISdGridMaterialConfiguration } from './models/grid-configuration.model';\r\nimport { Subscription, isObservable, Observable, BehaviorSubject, Subject, combineLatest } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdFilterOperator, 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 #gridId = uuid.v4();\r\n @ViewChild(SdScrollDirective) sdScroll: SdScrollDirective;\r\n filterRegister: SdGridMaterialFilterRegister;\r\n key = uuid.v4();\r\n gridConfigurationObserver: Observable<SdGridConfiguration>;\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\r\n\r\n gridFilter: SdGridFilter;\r\n @ViewChild(SdGridFilter) set _gridFilter(gridFilter: SdGridFilter) {\r\n if (gridFilter && this.gridFilter !== gridFilter) {\r\n this.gridFilter = gridFilter;\r\n // this.#subscription.add(gridFilter.filterChange.pipe(\r\n // filter(reload => reload),\r\n // debounceTime(500),\r\n // map(() => {\r\n // this.#paginator.pageIndex = 0;\r\n // this.#reload.next({\r\n // force: false,\r\n // source: 'FILTER'\r\n // });\r\n // }),\r\n // ).subscribe());\r\n }\r\n }\r\n\r\n @Input() set option(option: SdGridMaterialOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.gridOption = option;\r\n this.#loadCompleted = false;\r\n const configuration = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.gridConfigurationObserver = configuration.observer;\r\n configuration.load();\r\n this.#optionChanges.next(this.gridOption);\r\n }\r\n }\r\n #optionChanges = new Subject<SdGridMaterialOption>();\r\n\r\n gridOption: SdGridMaterialOption;\r\n #localItems: any[] = [];\r\n items: SdGridMaterialItem<T>[] = [];\r\n selectedItems: T[] = [];\r\n total: number;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n // Paginate\r\n isHiddenPaginator = false;\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(\r\n paginator.page\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sorting\r\n #sort: MatSort;\r\n @ViewChild(MatSort) set sort(sort: MatSort) {\r\n if (sort && this.#sort !== sort) {\r\n this.#sort = sort;\r\n this.#subscription.add(\r\n sort.sortChange\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Export\r\n @ViewChild(SdPopupExport) sdPopupExport: SdPopupExport;\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective)\r\n sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective)\r\n sdEmptyData: SdMaterialEmptyDataDefDirective;\r\n\r\n // Cell Def\r\n @ContentChildren(SdMaterialCellDefDirective) sdCellDefs = new QueryList<SdMaterialCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdMaterialCellDefDirective;\r\n } = {};\r\n\r\n // Footer Def\r\n @ContentChildren(SdMaterialFooterDefDirective) sdFooterDefs = new QueryList<SdMaterialFooterDefDirective>();\r\n footerDef: {\r\n [column: string]: SdMaterialFooterDefDirective;\r\n } = {};\r\n hasFooter = false;\r\n\r\n // Filter Def\r\n @ContentChildren(SdMaterialFilterDefDirective) sdFilterDefs = new QueryList<SdMaterialFilterDefDirective>();\r\n filterDefs: SdMaterialFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnOperator: Record<string, SdFilterOperator> = {};\r\n columnFilter: Record<string, any> = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #reload = new Subject<{\r\n force: boolean;\r\n }>();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n #loadCompleted = false;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(GRID_MATERIAL_CONFIG)\r\n @Optional()\r\n public configuration: ISdGridMaterialConfiguration,\r\n private gridConfigurationService: SdGridConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private columnValuesPipe: SdColumnValuesPipe,\r\n private gridFilterService: SdGridFilterService,\r\n private editorHandlerColumnPipe: SdEditorHandlerColumnPipe\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.#reload\r\n .pipe(\r\n debounceTime(200),\r\n switchMap(async data => {\r\n const filterInfo = this.#getFilter();\r\n const result = await this.#load(filterInfo, !this.#loadCompleted || data.force);\r\n this.#loadCompleted = true;\r\n return result;\r\n })\r\n )\r\n .subscribe(this.#render)\r\n );\r\n this.#subscription.add(this.sdCellDefs.changes.pipe(startWith([])).subscribe(this.#initCellDef));\r\n this.#subscription.add(this.sdFooterDefs.changes.pipe(startWith([])).subscribe(this.#initFooterDef));\r\n this.#subscription.add(this.sdFilterDefs.changes.pipe(startWith([])).subscribe(this.#initFilterDef));\r\n this.#subscription.add(\r\n combineLatest([\r\n this.#optionChanges.pipe(startWith(this.gridOption)),\r\n this.sdFilterDefs.changes.pipe(startWith(this.filterDefs)),\r\n ]).subscribe(() => {\r\n this.#loadFilterRegister();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.#optionChanges.subscribe(() => {\r\n if (this.filterRegister) {\r\n this.#reload.next({\r\n force: true,\r\n });\r\n }\r\n })\r\n );\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #initCellDef = () => {\r\n this.cellDef = {};\r\n for (const cellDef of this.sdCellDefs) {\r\n if (cellDef.sdMaterialCellDef) {\r\n this.cellDef[cellDef.sdMaterialCellDef] = cellDef;\r\n }\r\n }\r\n };\r\n\r\n #initFilterDef = () => {\r\n this.filterDefs = [];\r\n for (const filterDef of this.sdFilterDefs) {\r\n this.filterDefs.push(filterDef);\r\n }\r\n };\r\n\r\n #initFooterDef = () => {\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdMaterialFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdMaterialFooterDef] = footerDef;\r\n }\r\n }\r\n };\r\n\r\n #filterExportInfo = (pageNumber: number, pageSize: number): SdGridMaterialFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber,\r\n pageSize,\r\n isExported: true,\r\n };\r\n };\r\n\r\n #initConfiguration = (option: 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 for (const column of option.columns || []) {\r\n if (column.filter?.operator?.enable && !column.filter?.operator?.list?.length) {\r\n if (column.type === 'string') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListString || [];\r\n }\r\n if (column.type === 'number') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListNumber || [];\r\n }\r\n if (column.type === 'values') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListValues || [];\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListDate || [];\r\n }\r\n }\r\n }\r\n return option;\r\n };\r\n\r\n #isFirstLoad = true;\r\n #loadFilterRegister = () => {\r\n // Init filter\r\n if (this.gridOption) {\r\n if (!this.filterRegister) {\r\n this.filterRegister = this.gridFilterService.register(this.gridOption?.filter, {\r\n id: this.#gridId,\r\n columns: this.gridOption?.columns,\r\n externalFilters: this.gridOption?.filter?.externalFilters,\r\n filterDefs: this.filterDefs,\r\n });\r\n this.#subscription.add(\r\n this.filterRegister.value.observer\r\n .pipe(\r\n debounceTime(500),\r\n map(filterValue => {\r\n const { columnOperator, columnFilter, notReload } = filterValue;\r\n this.columnOperator = columnOperator || {};\r\n this.columnFilter = columnFilter;\r\n if (this.#isFirstLoad) {\r\n this.#isFirstLoad = false;\r\n this.#paginator.pageIndex = 0;\r\n this.#reload.next({\r\n force: true,\r\n });\r\n } else if (!notReload) {\r\n this.#paginator.pageIndex = 0;\r\n this.#reload.next({\r\n force: false,\r\n });\r\n }\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n };\r\n\r\n #filterLocal = (localItems: any[], filterInfo: SdGridMaterialFilterRequest) => {\r\n const { columns } = this.gridOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(item => {\r\n for (const column of columns) {\r\n const { field, type } = column;\r\n const filterValue: string = (rawColumnFilter[field] || '').toString().trim().toLowerCase();\r\n const columnValue: string = (item[field] || '').toString().trim().toLowerCase();\r\n if (filterValue) {\r\n if (!columnValue && type !== 'datetime' && type !== 'date' && type !== 'time') {\r\n return false;\r\n }\r\n if (type === 'string') {\r\n if (columnValue.indexOf(filterValue) === -1) {\r\n return false;\r\n }\r\n } else if (type === 'values') {\r\n if (columnValue !== filterValue) {\r\n return false;\r\n }\r\n } else if (type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (type === 'datetime' || type === 'date' || type === 'time') {\r\n const from = rawColumnFilter[field]?.from ?? rawColumnFilter[field];\r\n const to = rawColumnFilter[field]?.to ?? rawColumnFilter[field];\r\n const fromDate = Date.begin(from);\r\n const toDate = Date.end(to);\r\n if (fromDate || toDate) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n\r\n const columnTime = new Date(columnValue).getTime();\r\n const fromDateTime = fromDate?.getTime() || null;\r\n const toDateTime = toDate?.getTime() || null;\r\n\r\n if (fromDateTime && fromDateTime > columnTime) {\r\n return false;\r\n }\r\n if (toDateTime && columnTime > toDateTime) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (orderBy && orderDirection) {\r\n const column = columns.find(e => e.field === orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((current, next) => {\r\n if (type === 'number') {\r\n return (current[field] || 0) - (next[field] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(current[field] || '').getTime();\r\n const d2 = new Date(current[field] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (current[field] || '').toString();\r\n const s2 = (next[field] || '').toString();\r\n if (s1 > s2) {\r\n return 1;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (orderDirection === 'desc') {\r\n items.reverse();\r\n }\r\n }\r\n }\r\n return {\r\n items: items.filter((item, index) => {\r\n return index >= pageNumber * pageSize && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length,\r\n };\r\n };\r\n\r\n #getFilter = (): SdGridMaterialFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber: this.#paginator?.pageIndex || 0,\r\n pageSize: this.#paginator?.pageSize || this.gridOption?.paginate?.pageSize || 50,\r\n };\r\n };\r\n\r\n #load = async (filterReq: 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 this.gridFilter?.updateFilter?.();\r\n const data = await this.#load(this.#getFilter(), force);\r\n this.#render(data);\r\n };\r\n\r\n #exportedItems = async (pageNumber: number = 0, pageSize: number = 10000) => {\r\n if (this.gridOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n if (Array.isArray(result)) {\r\n return result;\r\n }\r\n if (isObservable<any[]>(result)) {\r\n result = result.toPromise();\r\n }\r\n if (isObservable<{ items: any[]; total: number }>(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n const filterInfo = this.#filterExportInfo(pageNumber, pageSize);\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterInfo);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof this.gridOption.items === 'function') {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n exportedItems = await results;\r\n } else {\r\n exportedItems = results;\r\n }\r\n } else {\r\n exportedItems = this.gridOption.items;\r\n }\r\n return this.#filterLocal(exportedItems, filterInfo);\r\n }\r\n }\r\n };\r\n\r\n drop(event: CdkDragDrop<string[]>, columns: string[]) {\r\n moveItemInArray(columns, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n #allColumns = (): SdGridMaterialColumn[] => {\r\n const columns: SdGridMaterialColumn[] = [];\r\n this.gridOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns;\r\n };\r\n\r\n #allExportedColumns = (): SdGridMaterialExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n };\r\n\r\n #onExport = async (args: { file: SdExportFile; columns: SdExportColumn[]; isCSV: boolean }) => {\r\n try {\r\n const { file, isCSV } = args;\r\n let { columns } = args;\r\n const pageSize = this.gridOption?.export?.maxItemsPerRequest || 1000;\r\n const batch = this.gridOption?.export?.batch || 1;\r\n let total = this.total;\r\n let pageNumber = 0;\r\n let exportItems = [];\r\n this.isExporting = true;\r\n const items: any[] = [];\r\n let promises: Promise<\r\n | any[]\r\n | {\r\n items: any[];\r\n total: number;\r\n }\r\n >[] = [];\r\n const handleData = async () => {\r\n const results = await Promise.all(promises);\r\n promises = [];\r\n exportItems = [];\r\n for (const result of results) {\r\n if ('items' in result) {\r\n exportItems = [...exportItems, ...result.items];\r\n total = result.total;\r\n } else {\r\n exportItems = [...exportItems, ...result];\r\n }\r\n }\r\n if (this.gridOption.export?.mapping) {\r\n const results = this.gridOption.export.mapping(exportItems);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n const totalPage = total / pageSize;\r\n const percent = Math.round(((pageNumber - 1) * 100.0) / totalPage);\r\n this.exportTitle = `Exporting...${percent}%`;\r\n const allColumns = this.#allColumns();\r\n const allExportedColumns = this.#allExportedColumns();\r\n for (const item of exportItems) {\r\n const obj: any = {};\r\n const handle = async (exportColumn: SdExportColumn) => {\r\n obj[exportColumn.field] = item[exportColumn.field];\r\n const column = allColumns.find(e => e.field === exportColumn.field);\r\n const exportedColumn = allExportedColumns.find(e => e.field === exportColumn.field);\r\n if (exportedColumn?.transform) {\r\n obj[exportedColumn.field] = exportedColumn.transform(item[exportedColumn.field], item);\r\n return;\r\n }\r\n if (!column) {\r\n return;\r\n }\r\n if (column.type === 'children' || column.type === 'children-col') {\r\n column?.children.forEach(childColumn => handle(childColumn));\r\n return;\r\n }\r\n if (!columns.some(e => e.field === column.field)) {\r\n return;\r\n }\r\n if (column.transform) {\r\n const transform = column.transform(item[column.field], item, {\r\n isExport: true,\r\n });\r\n if (transform instanceof Promise) {\r\n obj[column.field] = await transform;\r\n } else {\r\n obj[column.field] = transform;\r\n }\r\n obj[column.field] = obj[column.field] ?? '';\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.option?.displayOnTrue || 'True';\r\n } else if (obj[column.field] !== undefined && obj[column.field] !== null) {\r\n obj[column.field] = column.option?.displayOnFalse || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là date thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy');\r\n } else if (column.type === 'datetime') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là datetime thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy HH:mm');\r\n } else if (column.type === 'time') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là time thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'HH:mm');\r\n } else if (column.type === 'values') {\r\n // Nếu là values thì lấy giá trị của value được chọn\r\n obj[column.field] = await this.columnValuesPipe.transform(item[column.field], column);\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n for (const exportColumn of columns) {\r\n await handle(exportColumn);\r\n }\r\n items.push(obj);\r\n }\r\n };\r\n while (pageNumber * pageSize < total) {\r\n promises.push(this.#exportedItems(pageNumber, pageSize));\r\n pageNumber++;\r\n if (promises.length < batch) {\r\n continue;\r\n }\r\n await handleData();\r\n }\r\n if (promises.length > 0) {\r\n await handleData();\r\n }\r\n if (!file?.filePath) {\r\n if (isCSV) {\r\n await this.exportService.exportCSV({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName,\r\n });\r\n return;\r\n }\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n await this.exportService.export({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName,\r\n sheets,\r\n });\r\n return;\r\n }\r\n await this.exportService.exportByTemplate({\r\n filePath: file.filePath,\r\n fileName: file.fileName,\r\n columns,\r\n items,\r\n });\r\n } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n onExport = async (args: { file: SdExportFile; columns: SdExportColumn[]; isCSV: boolean }) => {\r\n this.#onExport(args);\r\n };\r\n\r\n onFilterChange = () => {\r\n this.gridFilter?.updateFilter?.();\r\n if (this.gridOption?.filter?.inlineColumn) {\r\n this.filterRegister.value.set({\r\n columnOperator: this.columnOperator || {},\r\n columnFilter: this.columnFilter,\r\n });\r\n } else {\r\n this.filterRegister.value.set({});\r\n }\r\n };\r\n\r\n onExpand = async (rowData: SdGridMaterialItem<T>) => {\r\n if (this.gridOption.subInformation?.always) {\r\n return;\r\n }\r\n if (rowData.isExpanding) {\r\n return;\r\n }\r\n if (rowData.isExpanded) {\r\n rowData.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.subInformation?.onExpand?.(rowData);\r\n if (!this.gridOption.subInformation?.multiple) {\r\n this.items.forEach(item => (item.isExpanding = item.isExpanded = false));\r\n }\r\n if (data instanceof Promise) {\r\n rowData.isExpanding = true;\r\n data\r\n .then(res => {\r\n rowData.expandDetail = res;\r\n rowData.isExpanded = true;\r\n })\r\n .finally(() => (rowData.isExpanding = false));\r\n } else {\r\n rowData.expandDetail = data;\r\n rowData.isExpanded = true;\r\n }\r\n };\r\n\r\n onSelect = (rowData: SdGridMaterialItem<T>) => {\r\n if (rowData?.sdGroup?.items?.length) {\r\n rowData?.sdGroup?.items.forEach(e => (e.isSelected = rowData.isSelected));\r\n this.gridOption.selection?.onSelect?.(\r\n rowData,\r\n this.items.filter(e => e.isSelected)\r\n );\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.gridOption.selection?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => (e.isSelected = false));\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selection?.onSelect?.(\r\n rowData,\r\n this.items.filter(e => e.isSelected)\r\n );\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n };\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.selectable && (!this.gridOption?.selection?.actions?.length || e.actions?.length)) {\r\n e.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.gridOption.selection?.onSelectAll?.(this.items.filter(e => e.isSelected));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n onClearSelection = (items?: SdGridMaterialItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => (e.isSelected = false));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedItems = this.items\r\n .filter(item => item.isSelected)\r\n .map(item => {\r\n const {\r\n isSelected,\r\n isExpanded,\r\n isExpanding,\r\n expandDetail,\r\n editorErrorMessage,\r\n editorHandlerColumn,\r\n editorHandlerRow,\r\n editorStatus,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n // Giữ lại các trường thông tin cho selectable (action, groupedAction, sdGroup, selectable)\r\n ...result\r\n } = item;\r\n return result;\r\n }) as T[];\r\n this.ref.detectChanges();\r\n };\r\n\r\n clearFilter = () => {\r\n this.filterRegister.value.remove();\r\n };\r\n\r\n setFilter = (args: { columnFilter?: Record<string, any>; externalFilter?: Record<string, any>; filterDef?: Record<string, any> }) => {\r\n const { columnFilter, externalFilter, filterDef } = args || {};\r\n if (this.gridOption?.filter?.inlineColumn && columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n this.filterRegister.value.set({\r\n columnFilter,\r\n externalFilter,\r\n filterDef,\r\n });\r\n };\r\n\r\n onCreate = () => {\r\n const { type, editor, columns } = this.gridOption;\r\n if (!editor?.addable) {\r\n return;\r\n }\r\n const item: SdGridMaterialItem = {};\r\n // Gán giá trị mặc định\r\n columns.forEach(column => {\r\n if (column.type === 'values') {\r\n item[column.field] = '';\r\n } else if (column.type === 'bool') {\r\n item[column.field] = true;\r\n } else if (column.type === 'number') {\r\n item[column.field] = null;\r\n }\r\n });\r\n if (type === 'local') {\r\n editor.onAdd?.(item, this.#localItems);\r\n } else {\r\n editor.onAdd?.(item, this.items);\r\n }\r\n // Đưa item lên dòng đầu tiên nếu type khác popup\r\n if (editor.type !== 'popup') {\r\n if (editor.addToLast) {\r\n if (type === 'local') {\r\n this.#localItems = [...this.#localItems, item];\r\n }\r\n this.items = [...this.items, item];\r\n } else {\r\n if (type === 'local') {\r\n this.#localItems = [item, ...this.#localItems];\r\n }\r\n this.items = [item, ...this.items];\r\n }\r\n }\r\n item.editorStatus = 'create';\r\n item.editorHandlerRow = {\r\n temporary: { ...item },\r\n };\r\n };\r\n onUpdate = (item: SdItem) => {\r\n const { editor } = this.gridOption;\r\n item.editorStatus = 'update';\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n temporary: { ...item },\r\n };\r\n // this.generateEditorHanlder(item);\r\n if (editor.type === 'popup') {\r\n // Xử lý case popup\r\n // this.sdGridPopupEditor.open(item, columns, isModified);\r\n }\r\n this.ref.detectChanges();\r\n };\r\n onSave = async (item: SdGridMaterialItem<T>) => {\r\n if (item.editorHandlerRow.saving) {\r\n return;\r\n }\r\n const { editor } = this.gridOption;\r\n try {\r\n item.editorHandlerRow.saving = true;\r\n if (editor.validate) {\r\n const result = editor.validate(item, this.items.indexOf(item));\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n throw message;\r\n }\r\n } else {\r\n if (result) {\r\n throw result;\r\n }\r\n }\r\n }\r\n if (editor.onSave) {\r\n const result = editor.onSave(item);\r\n if (result instanceof Promise) {\r\n await result;\r\n }\r\n }\r\n\r\n if (item.editorStatus === 'create' && editor.type === 'popup') {\r\n if (this.gridOption.type === 'local') {\r\n this.items.splice(0, 0, item);\r\n }\r\n // this.viewItems.splice(0, 0, item);\r\n }\r\n\r\n item.editorStatus = undefined;\r\n // this.generateEditorHanlder(item);\r\n } catch (err) {\r\n this.notifyService.notify.warning(err);\r\n } finally {\r\n item.editorHandlerRow.saving = false;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n onCancel = (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.#localItems.indexOf(item);\r\n this.#localItems.splice(idx2, 1);\r\n this.#localItems = [...this.#localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n if (this.gridOption.type === 'local') {\r\n editor?.onCancel?.(item, this.#localItems);\r\n } else {\r\n editor?.onCancel?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n if (editor.type === 'focus') {\r\n if (item.editorStatus === 'create') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.#localItems.indexOf(item);\r\n this.#localItems.splice(idx2, 1);\r\n this.#localItems = [...this.#localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n } else {\r\n Object.assign(item, item.editorHandlerRow.temporary);\r\n }\r\n }\r\n item.editorStatus = undefined;\r\n this.ref.detectChanges();\r\n };\r\n onRemove = async (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor?.beforeRemove) {\r\n const beforeRemove = editor?.beforeRemove(item);\r\n if (beforeRemove instanceof Promise) {\r\n const result = await beforeRemove;\r\n if (!result) {\r\n return;\r\n }\r\n } else {\r\n if (!beforeRemove) {\r\n return;\r\n }\r\n }\r\n }\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.#localItems.indexOf(item);\r\n this.#localItems.splice(idx2, 1);\r\n this.#localItems = [...this.#localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n if (this.gridOption.type === 'local') {\r\n editor?.onRemove?.(item, this.#localItems);\r\n } else {\r\n editor?.onRemove?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n };\r\n\r\n add = (idx: number, item: T) => {\r\n if (this.items.length > idx) {\r\n this.items.splice(idx, 0, item);\r\n this.items = [...this.items];\r\n } else {\r\n this.items = [...this.items, item];\r\n }\r\n };\r\n\r\n update = (idx: number, item: T) => {\r\n if (this.items[idx]) {\r\n Object.assign(this.items[idx], item);\r\n this.items = [...this.items];\r\n }\r\n };\r\n\r\n remove = (idx: number) => {\r\n if (this.items[idx]) {\r\n this.items.splice(idx, 1);\r\n this.items = [...this.items];\r\n }\r\n };\r\n\r\n refreshItem = (idx: number) => {\r\n const item = this.items[idx];\r\n this.editorHandlerColumnPipe.transform(item.sdVersion, item, this.gridOption);\r\n };\r\n\r\n get editedItems(): (T & { editorErrorMessage: string })[] {\r\n return this.items\r\n .filter(item => {\r\n if (!item.originItem) {\r\n return true;\r\n }\r\n if (Object.keys(item.originItem).some(key => item.originItem[key] !== item[key])) {\r\n return true;\r\n }\r\n return false;\r\n })\r\n .map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n editorErrorMessage,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result\r\n } = item;\r\n return {\r\n ...result,\r\n editorErrorMessage,\r\n } as any;\r\n });\r\n }\r\n\r\n get gridItems(): T[] {\r\n return this.items.map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result\r\n } = item;\r\n return result as T;\r\n });\r\n }\r\n\r\n get localItems(): T[] {\r\n return this.#localItems;\r\n }\r\n\r\n get localGridItems(): T[] {\r\n return this.#localItems.map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result\r\n } = item;\r\n return result as T;\r\n });\r\n }\r\n\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n onOperatorChange = (column: SdGridMaterialColumn, operator: SdFilterOperator) => {\r\n this.gridOption?.filter?.operatorChange?.(column, operator);\r\n }\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, ElementRef, Input, QueryList, Renderer2 } 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\r\n column: SdGridMaterialColumn;\r\n @Input('column') set _column(column: SdGridMaterialColumn) {\r\n this.column = column;\r\n if (column.width) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'min-width', column.width);\r\n }\r\n }\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(private elementRef: ElementRef, private renderer: Renderer2) {}\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 { SdBadgeColor } from '@sd-angular/core/badge';\r\n\r\nexport type SdGridMaterialColumn<T = any> =\r\n | SdGridMaterialColumnText<T>\r\n | SdGridMaterialColumnNumber<T>\r\n | SdGridMaterialBool<T>\r\n | SdGridMaterialColumnDate<T>\r\n | SdGridMaterialColumnValues<T>\r\n | SdGridMaterialColumnImage<T>\r\n | SdGridMaterialColumnChildren<T>\r\n | SdGridMaterialColumnChildrenCol<T>;\r\n\r\nexport type SdFilterOperator =\r\n | 'EQUAL'\r\n | 'NOT_EQUAL'\r\n | 'CONTAIN'\r\n | 'NOT_CONTAIN'\r\n | 'IN'\r\n | 'NOT_IN'\r\n | 'START_WITH'\r\n | 'END_WITH'\r\n | 'GREATER_THAN'\r\n | 'LESS_THAN'\r\n | 'GREATER_OR_EQUAL'\r\n | 'LESS_OR_EQUAL'\r\n | 'NULL'\r\n | 'NOT_NULL';\r\n\r\nexport const SdFilterOperators: { value: SdFilterOperator, symbol?: string, display: string }[] = [\r\n {\r\n value: 'EQUAL',\r\n symbol: '=',\r\n display: 'Bằng',\r\n },\r\n {\r\n value: 'NOT_EQUAL',\r\n symbol: '≠',\r\n display: 'Không bằng',\r\n },\r\n {\r\n value: 'GREATER_THAN',\r\n symbol: '>',\r\n display: 'Lớn hơn',\r\n },\r\n {\r\n value: 'LESS_THAN',\r\n symbol: '<',\r\n display: 'Nhỏ hơn',\r\n },\r\n {\r\n value: 'GREATER_OR_EQUAL',\r\n symbol: '≥',\r\n display: 'Lớn hơn, hoặc bằng'\r\n },\r\n {\r\n value: 'LESS_OR_EQUAL',\r\n symbol: '≤',\r\n display: 'Nhỏ hơn, hoặc bằng'\r\n },\r\n {\r\n value: 'CONTAIN',\r\n symbol: 'join_inner',\r\n display: 'Chứa',\r\n },\r\n {\r\n value: 'NOT_CONTAIN',\r\n symbol: 'join',\r\n display: 'Không chứa',\r\n },\r\n {\r\n value: 'START_WITH',\r\n symbol: 'line_start_circle',\r\n display: 'Bắt đầu bởi'\r\n },\r\n {\r\n value: 'END_WITH',\r\n symbol: 'line_end_circle',\r\n display: 'Kết thúc bởi'\r\n },\r\n {\r\n value: 'IN',\r\n symbol: 'checklist_rtl',\r\n display: 'Nằm trong'\r\n },\r\n {\r\n value: 'NOT_IN',\r\n symbol: 'event_list',\r\n display: 'Không nằm trong'\r\n },\r\n {\r\n value: 'NULL',\r\n symbol: 'motion_photos_off',\r\n display: 'Là rỗng',\r\n },\r\n {\r\n value: 'NOT_NULL',\r\n symbol: 'adjust',\r\n display: 'Không rỗng',\r\n },\r\n];\r\n\r\nexport type TransformFunc<T = any> = (\r\n value: any,\r\n rowData: T,\r\n args?: {\r\n isExport?: boolean;\r\n }\r\n) => string | Promise<string>;\r\n\r\ninterface SdGridMaterialBaseColumn<T = any> {\r\n field: string;\r\n title: string;\r\n titleHtml?: string;\r\n description?: string;\r\n width?: string;\r\n hidden?: boolean;\r\n invisible?: boolean;\r\n fixed?: boolean;\r\n align?: 'center' | 'left' | 'right';\r\n htmlTemplate?: (value: any, rowData: T, isMobileOrTablet: boolean) => string;\r\n transform?: TransformFunc<T>;\r\n tooltip?: (value: any, rowData: T) => string;\r\n click?: (value: any, rowData: T) => void;\r\n sortable?: boolean;\r\n filter?: {\r\n disabled?: boolean;\r\n defaultShowing?: boolean;\r\n default?: any;\r\n // Chỉ dành cho filter inline column\r\n operator?: {\r\n enable?: boolean;\r\n list?: SdFilterOperator[];\r\n };\r\n };\r\n export?: {\r\n disabled?: boolean;\r\n };\r\n}\r\n\r\ninterface SdGridMaterialColumnText<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'string';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n minLength?: number;\r\n maxLength?: number;\r\n validator?: (rowData: T) => string;\r\n };\r\n}\r\n\r\ninterface SdGridMaterialColumnNumber<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'number';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n minValue?: number;\r\n maxValue?: number;\r\n precision?: number;\r\n validator?: (rowData: T) => string;\r\n };\r\n}\r\n\r\ninterface SdGridMaterialBool<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'bool';\r\n option?: {\r\n displayOnTrue?: string;\r\n displayOnFalse?: string;\r\n };\r\n badgeType?: 'circle';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\ninterface SdGridMaterialColumnDate<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'date' | 'datetime' | 'time';\r\n option?: {\r\n useFilterDate?: boolean;\r\n timeDifferent?: 'second' | 'minute' | 'hour' | 'day' | 'month';\r\n };\r\n transformDate?: (value: any, rowData: T) => string | Date;\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\nexport interface SdGridMaterialColumnValues<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'values';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n option: {\r\n items: any[] | ((searchText?: string, isFormValue?: boolean) => Promise<any[]>) | ((searchText?: string[], isFormValue?: boolean) => Promise<any[]>);\r\n valueField: string;\r\n displayField: string;\r\n selection?:\r\n | 'AUTOCOMPLETE'\r\n | 'MULTIPLE'\r\n | 'MULTIPLEAUTOCOMPLETE'\r\n | 'AUTOCOMPLETE_EDITOR'\r\n | 'MULTIPLE_EDITOR'\r\n | 'MULTIPLEAUTOCOMPLETE_EDITOR';\r\n };\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n add?: (rowData: T) => void;\r\n edit?: (option: any, rowData: T) => void;\r\n delete?: (option: any, rowData: T) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\ninterface SdGridMaterialColumnImage<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'image';\r\n option: {\r\n height: number;\r\n width: number;\r\n };\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\ntype SdGridMaterialNormalColumn<T> = Exclude<\r\n Exclude<SdGridMaterialColumn<T>, SdGridMaterialColumnChildren<T>>,\r\n SdGridMaterialColumnChildrenCol<T>\r\n>;\r\n\r\nexport type SdGridMaterialChildColumn<T = any> = SdGridMaterialNormalColumn<T> & {\r\n dynamicTitle?: (rowData: T) => string | Promise<string>;\r\n colSpan: 1 | 2;\r\n};\r\n\r\nexport interface SdGridMaterialColumnChildren<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'children';\r\n children: SdGridMaterialChildColumn<T>[];\r\n}\r\n\r\nexport interface SdGridMaterialColumnChildrenCol<T = any> extends SdGridMaterialBaseColumn<T> {\r\n type: 'children-col';\r\n children: SdGridMaterialNormalColumn<T>[];\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdFilterOperator, SdFilterOperators, 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 inlineSymbol: string = 'filter_alt';\r\n #inlineOperator: SdFilterOperator;\r\n @Input('inlineOperator') set _inlineOperator(inlineOperator: SdFilterOperator) {\r\n if(this.#inlineOperator !== inlineOperator) {\r\n this.#inlineOperator = inlineOperator;\r\n this.inlineSymbol = SdFilterOperators.find(e => e.value === inlineOperator)?.symbol ?? 'filter_alt';\r\n }\r\n }\r\n @Output() inlineOperatorChange = new EventEmitter<SdFilterOperator>();\r\n @Output() operatorChange = new EventEmitter<SdFilterOperator>();\r\n\r\n columnFilter: Record<string, any> = {};\r\n @Input('columnFilter') set _columnFilter(columnFilter: Record<string, any>) {\r\n this.columnFilter = columnFilter || {};\r\n this.#valueChanges.next();\r\n }\r\n operators: { value: SdFilterOperator, symbol?: string, display: string }[] = [];\r\n column: SdGridMaterialColumn;\r\n @Input('column') set _column(column: SdGridMaterialColumn) {\r\n this.column = column;\r\n if (!column?.filter?.disabled && column?.filter?.operator?.enable) {\r\n this.operators = SdFilterOperators.filter(e => column.filter.operator.list?.includes?.(e.value));\r\n } else {\r\n this.operators = [];\r\n }\r\n }\r\n @Output() filterChange = new EventEmitter();\r\n #valueChanges = new Subject();\r\n #subcription = new Subscription();\r\n constructor(private ref: ChangeDetectorRef) { }\r\n\r\n ngOnInit() {\r\n this.#subcription.add(\r\n this.#valueChanges.pipe(startWith(this.columnFilter)).subscribe(() => {\r\n if (this.column.type === 'date' || this.column.type === 'time' || this.column.type === 'datetime') {\r\n if (!this.column?.option?.useFilterDate) {\r\n this.columnFilter[this.column.field] = this.columnFilter[this.column.field] || {\r\n from: null,\r\n to: null,\r\n };\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subcription.unsubscribe();\r\n }\r\n\r\n onFilterChange = () => {\r\n this.filterChange.emit();\r\n };\r\n\r\n\r\n onChangeOperator = (operator: { value: SdFilterOperator, symbol?: string, display: string }) => {\r\n if (operator) {\r\n this.#inlineOperator = operator.value;\r\n this.inlineSymbol = operator.symbol;\r\n } else {\r\n this.#inlineOperator = null;\r\n this.inlineSymbol = 'filter_alt';\r\n }\r\n this.inlineOperatorChange.emit(this.#inlineOperator);\r\n this.operatorChange.emit(this.#inlineOperator);\r\n this.ref.markForCheck();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { 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 if(result.display.value === null) {\r\n result.display.value = undefined;\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"]}