@sd-angular/core 1.2.17 → 1.2.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-cell-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-filter-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-footer-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-empty-data-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-sub-information-def.directive.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/grid-material/src/lib/models/grid-configuration.model.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-filter.service.ts","../../../../projects/sd-core/grid-material/src/lib/components/grid-filter/grid-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-export/popup-export.component.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-configuration.service.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-values.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-html-template.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-transform.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-children-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-badge.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/grid-configuration-result.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-visible-select-all.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/services/generated-column/generated-column.service.ts","../../../../projects/sd-core/grid-material/src/lib/components/dynamic-column/dynamic-column.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-row.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-validate.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/style-row-css.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-editor-validation/desktop-editor-validation.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-visible.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/quick-action/quick-action.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/cell-view.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/sd-group.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.module.ts"],"names":["templateRef","this","Directive","args","selector","TemplateRef","Input","SdMaterialFilterDefDirective","Object","defineProperty","prototype","val","defaultShowing","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","call","__rest","s","e","t","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","apply","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","pop","push","create","__values","o","m","__read","r","ar","error","__spread","arguments","concat","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","DEFAULT_GRID_MATERIAL_CONFIG","pageSize","pages","GRID_MATERIAL_CONFIG","InjectionToken","SdPopupFilter","_this","externalFilters","externalFilter","inlineExternal","columns","columnFilter","inlineColumn","filterDefs","filterDef","inlineFilterDef","changeFilter","EventEmitter","clearFilter","open","JSON","parse","stringify","modal","close","onApply","emit","onClear","Component","template","ViewChild","Output","settingService","_prefix","key","prefix","selectedQuickFilter","quickFilters","configuration","_b","_a","hash","Injectable","SdSettingService","SdGridFilter","deviceService","gridFilterService","isVisible","_filterOptionChanges","Subject","filterChange","_subscription","Subscription","_loadDefault","_u","_v","column","field","filter","_c","_d","default","_w","_x","_e","type","from","_j","_g","_f","_h","undefined","to","_o","_l","_k","_m","_p","_y","_z","sdMaterialFilterDef","_q","_clearFilter","_s","_t","onFilter","item","popupFilter","onChangeFilter","onReset","onClearFilter","setFilter","externalFilter_1","isMobileOrTablet","isDesktop","disabled","ngAfterViewInit","add","pipe","startWith","subscribe","ngOnDestroy","unsubscribe","DeviceDetectorService","SdGridFilterService","SdPopupExport","ref","loadingService","exportService","notifyService","translateService","groups","enableCreating","selected","files","export","form","FormGroup","_getExportableColumns","gridOption","forEach","children","childColumn","map","title","description","width","_getExportableGroups","permission","hideMyTemplates","loadFiles","code","detectChanges","exportDefault","isCSV","file","group","selectedGroup","find","filesInFolder","_0","_initTemplate","fileName","sheets","isArray","sheet","name","items","fields","_2","_1","_3","_5","generateTemplate","start","finally","stop","filePath","download","uuid","generateAndUploadTemplate","generateUploadTemplate","onExport","uploadTemplate","_r","validator","validators","removeFile","confirm","translate","idx","splice","createTemplate","invalid","markAllAsTouched","some","notify","warning","templateName","onChangeGroup","listGroups","selectedOptions","validatorTemplateName","test","option","ngOnInit","ChangeDetectorRef","SdLoadingService","SdExportService","SdNotifyService","SdTranslateService","gridMaterialConfiguration","_COLUMNS","EDITORVALIDATION","EDITOR","SUBINFORMATION","COMMAND","SELECTION","GROUP","_cache","init","subject_1","load","_load","_get","_set","assign","remove","_remove","_default","observer","_getKey","config","hidden","origin","invisible","fixed","subject","storage","createServer","catch","console","isGeneratedColumn","col","generateConfigurationResult","sdSubInformation","fixedColumn","firstColumns","secondColumns","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","selection","commands","editor","addable","removable","visible","generatedColumn","e1","generatedColumns","includes","subColumn","e_2","colSpan","Inject","Optional","transform","valueField","displayField","remain","_prefix$1","_cache$1","values","Pipe","SdEditorHandlerColumnPipe","_visible","sdId","editorHandlerColumn","expandDetail","isExpanded","isExpanding","isSelected","sdGroup","selectable","actions","groupedActions","originItem","editorErrorMessage","editorHandlerRow","columns_1","columns_1_1","childCol","SdGridMaterial","gridConfigurationService","columnValuesPipe","editorHandlerColumnPipe","uuid.v4","localItems","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_optionChanges","isExporting","isSelectAll","exportTitle","_initCellDef","sdMaterialCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","rawColumnFilter","gridFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","_initConfiguration","paginate","showFirstLastButtons","_filterLocal","filterInfo","filterValue","toString","trim","toLowerCase","columnValue","fValue","replace","cValue","fromDate","Date","begin","toDate","end","getTime","type_1","field_1","sort","current","s1","s2","reverse","index","total","_getFilter","pageIndex","filterReq","force","isObservable","toPromise","results","handle","error_1","_render","reload","onReload","every","_updateSelectedItems","_load$1","data","_exportedItems","exportedItems","_allColumns","_allExportedColumns","_onExport","columns_2","maxItemsPerRequest","exportItems","this_1","res","mapping","totalPage","percent","Math","round","allColumns","allExportedColumns","obj","exportColumn","exportedColumn","displayOnTrue","displayOnFalse","date","transformDate","toFormat","e_7","columns_3","columns_3_1","e_6","exportItems_1","exportItems_1_1","exportCSV","exportByTemplate","max","onFilterChange","onExpand","rowData","subInformation","always","multiple","onSelect","single","onSelectAll","onClearSelection","editorStatus","sdVersion","onCreate","onAdd","addToLast","temporary","onUpdate","onSave","saving","validate","message","err_1","onCancel","idx2","idx1","onRemove","update","refreshItem","_subscription$1","debounceTime","switchMap","gridConfigurationObserver","paginator","page","sortChange","changes","drop","event","moveItemInArray","previousIndex","currentIndex","keys","animations","trigger","style","height","minHeight","visibility","transition","animate","SdGridConfigurationService","SdColumnValuesPipe","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","changeDetection","ChangeDetectionStrategy","OnPush","SdColumnTransformPipe","Number","isNumber","toVNCurrency","SdFilterExternalPipe","externalFilters_1","externalFilters_1_1","SdFilterColumnPipe","columnChildren","SdColumnChildrenFilterPipe","_isMobileOrTablet","transformValue","templateValue","SdColumnTitlePipe","dynamicTitle","SdColumnBadgePipe","badge","badgeType","color","badgeIcon","SdGridConfigurationResultPipe","SdPopupGridConfiguration","isCreatingColumn","disabledDrag","_cache$2","createColumn","mouseUp","dropTable","table","renderRows","handleMouseDown","handleMouseUp","HostListener","SdColumnTooltipPipe","tooltip","_convert","action","fontSet","click","childAction","key_1","actions_1","actions_1_1","availableActions","availableActions_1","availableActions_1_1","isGrouped","setTimeout","first","_cache$3","loadSystem","systemColumn","SdDynamicColumn","generatedColumnService","columnTypes","isDetail","originColumns","onDetail","detail","isSystem","useTemplate","markAsUntouched","markAsPristine","systemSetting","setting","id","systemColumns","_subscription$2","SdGeneratedColumnService","SdSideDrawer","onChange","change","editorOnAdd","editorOnEdit","edit","editorOnDelete","delete","SdEditorHandlerRowPipe","status","isDisabled","editable","savable","cancelable","_visible$1","SdEditorValidatePipe","_previous","_delay","now","SdStyleRowCss","rowCss","SdColumnInlineFilter","useFilterDate","hasGroup","clear","SdCellViewPipe","utilityService","_maxSecond","_maxMinute","_maxHour","_maxDay","_maxMonth","_isMobileOrTablet$1","displayOnEmpty","align","display","hasHtml","html","seconds","timeDifferent","timeDifference","emptyValues","SdUtilityService","SdGroupPipe","groupItem","items_1","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","declarations","SdGridQuickAction","SdDesktopCell","SdDesktopCellEditor","SdDesktopEditorValidation","SdDesktopCellView","SdDesktopCellChildrenView","SdDesktopCommand","SdSelectionActionFilterPipe","SdSelectionVisiblePipe","SdSelectionDisablePipe","SdSelectionVisibleSelectAllPipe","exports","providers","DatePipe","DecimalPipe","CdkColumnDef","provide","useClass"],"mappings":"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","sourcesContent":["import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialCellDef]'\r\n})\r\nexport class SdMaterialCellDefDirective {\r\n @Input() sdMaterialCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFilterDef]'\r\n})\r\nexport class SdMaterialFilterDefDirective {\r\n @Input() sdMaterialFilterDef: string;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n defaultShowing: boolean;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFooterDef]'\r\n})\r\nexport class SdMaterialFooterDefDirective {\r\n @Input() sdMaterialFooterDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialEmptyDataDef]'\r\n})\r\nexport class SdMaterialEmptyDataDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialSubInformationDef]'\r\n})\r\nexport class SdMaterialSubInformationDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface ISdGridMaterialConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[]\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_GRID_MATERIAL_CONFIG: ISdGridMaterialConfiguration = {\r\n paginate: {\r\n pageSize: 50,\r\n pages: [50, 100, 200]\r\n }\r\n};\r\n\r\nexport const GRID_MATERIAL_CONFIG = new InjectionToken<ISdGridMaterialConfiguration>('sd-grid-material.configuration');\r\n","import { Component, ViewChild, Output, EventEmitter, Input } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialExternalFilter } from '../../models/grid-filter.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\n\r\n@Component({\r\n selector: 'sd-popup-filter',\r\n templateUrl: './popup-filter.component.html',\r\n styleUrls: ['./popup-filter.component.scss']\r\n})\r\nexport class SdPopupFilter {\r\n @ViewChild('modal') modal: SdModal;\r\n @Input() externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: {\r\n [key: string]: boolean\r\n } = {};\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n columnFilter: any = {};\r\n inlineColumn: {\r\n [key: string]: boolean\r\n } = {};\r\n\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: any = {};\r\n inlineFilterDef: {\r\n [key: string]: boolean;\r\n } = {};\r\n\r\n @Output() changeFilter = new EventEmitter<{\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }>();\r\n @Output() clearFilter = new EventEmitter();\r\n constructor(\r\n ) {\r\n }\r\n\r\n open = (args: {\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }) => {\r\n const { inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = args;\r\n this.inlineColumn = JSON.parse(JSON.stringify(inlineColumn || {}));\r\n this.columnFilter = JSON.parse(JSON.stringify(columnFilter || {}));\r\n this.inlineExternal = JSON.parse(JSON.stringify(inlineExternal || {}));\r\n this.externalFilter = JSON.parse(JSON.stringify(externalFilter || {}));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(inlineFilterDef || {}));\r\n this.filterDef = JSON.parse(JSON.stringify(filterDef || {}));\r\n this.modal.open();\r\n }\r\n\r\n close = () => {\r\n this.modal.close();\r\n }\r\n\r\n onApply = () => {\r\n this.changeFilter.emit({\r\n inlineColumn: this.inlineColumn || {},\r\n columnFilter: this.columnFilter || {},\r\n inlineExternal: this.inlineExternal || {},\r\n externalFilter: this.externalFilter || {},\r\n inlineFilterDef: this.inlineFilterDef || {},\r\n filterDef: this.filterDef || {}\r\n });\r\n this.modal.close();\r\n }\r\n\r\n onClear() {\r\n this.clearFilter.emit();\r\n this.modal.close();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialFilterConfiguration } from '../models/grid-filter.model';\r\n\r\n@Injectable()\r\nexport class SdGridFilterService {\r\n #prefix = '61d22e8e-eee8-4aad-8e1c-044a532fea91';\r\n constructor(private settingService: SdSettingService) {\r\n }\r\n get = async (key: string): Promise<SdGridMaterialFilterConfiguration> => {\r\n if (!key) {\r\n return {\r\n selectedQuickFilter: null,\r\n quickFilters: [],\r\n inlineExternal: {},\r\n inlineColumn: {},\r\n inlineFilterDef: {}\r\n };\r\n }\r\n const { get } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n const configuration = await get();\r\n return {\r\n selectedQuickFilter: configuration?.selectedQuickFilter ?? null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration?.inlineExternal || {},\r\n inlineColumn: configuration?.inlineColumn || {},\r\n inlineFilterDef: configuration?.inlineFilterDef || {},\r\n };\r\n }\r\n\r\n set = async (key: string, configuration: SdGridMaterialFilterConfiguration): Promise<SdGridMaterialFilterConfiguration> => {\r\n configuration = {\r\n selectedQuickFilter: configuration?.selectedQuickFilter || null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration.inlineExternal || {},\r\n inlineColumn: configuration.inlineColumn || {},\r\n inlineFilterDef: configuration.inlineFilterDef || {}\r\n };\r\n if (!key) {\r\n return configuration;\r\n }\r\n const { set } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n key = hash({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n await set(configuration);\r\n return configuration;\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewChild, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { SdGridMaterialFilterOption, SdGridMaterialExternalFilter } from '../../models/grid-filter.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdGridFilterService } from '../../services/grid-filter.service';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\n\r\n@Component({\r\n selector: 'sd-grid-filter',\r\n templateUrl: './grid-filter.component.html',\r\n styleUrls: ['./grid-filter.component.scss']\r\n})\r\nexport class SdGridFilter implements AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupFilter) popupFilter: SdPopupFilter;\r\n isVisible = true;\r\n filter: Readonly<SdGridMaterialFilterOption>;\r\n #filterOptionChanges = new Subject<SdGridMaterialFilterOption>();\r\n @Input('filter') set _filter(filter: SdGridMaterialFilterOption) {\r\n this.filter = filter;\r\n this.isVisible = !this.filter?.disabled;\r\n this.#filterOptionChanges.next(this.filter);\r\n }\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: any = {};\r\n inlineFilterDef: {\r\n [key: string]: boolean;\r\n } = {};\r\n\r\n @Output() filterChange = new EventEmitter();\r\n #subscription = new Subscription();\r\n\r\n columnFilter: any = {};\r\n inlineColumn: {\r\n [key: string]: boolean;\r\n } = {};\r\n externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: {\r\n [key: string]: boolean;\r\n } = {};\r\n isMobileOrTablet: boolean;\r\n constructor(\r\n private deviceService: DeviceDetectorService,\r\n private gridFilterService: SdGridFilterService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.#filterOptionChanges.pipe(startWith(this.filter)).subscribe(() => {\r\n if (!this.isVisible) {\r\n this.filterChange.emit();\r\n return;\r\n }\r\n this.externalFilters = this.filter?.externalFilters || [];\r\n this.gridFilterService.get(this.filter?.key).then(configuration => {\r\n this.inlineColumn = configuration.inlineColumn;\r\n this.inlineExternal = configuration.inlineExternal;\r\n this.inlineFilterDef = configuration.inlineFilterDef;\r\n this.#loadDefault();\r\n this.filterChange.emit();\r\n });\r\n }));\r\n }\r\n\r\n #loadDefault = () => {\r\n for (const column of this.columns) {\r\n this.inlineColumn[column.field] = this.inlineColumn[column.field] ?? column?.filter?.defaultShowing;\r\n this.columnFilter[column.field] = this.columnFilter[column.field] ?? column?.filter?.default;\r\n }\r\n for (const externalFilter of this.externalFilters) {\r\n this.inlineExternal[externalFilter.field] = this.inlineExternal[externalFilter.field] ?? externalFilter?.defaultShowing;\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: this.externalFilter[externalFilter.field]?.from ?? externalFilter.default?.from ?? undefined,\r\n to: this.externalFilter[externalFilter.field]?.to ?? externalFilter.default?.to ?? undefined\r\n };\r\n } else {\r\n this.externalFilter[externalFilter.field] = this.externalFilter[externalFilter.field] ?? externalFilter.default;\r\n }\r\n }\r\n for (const filterDef of this.filterDefs) {\r\n this.inlineFilterDef[filterDef.sdMaterialFilterDef] = this.inlineFilterDef[filterDef.sdMaterialFilterDef] ?? filterDef?.defaultShowing;\r\n }\r\n }\r\n\r\n #clearFilter = () => {\r\n this.columnFilter = {};\r\n this.externalFilter = {};\r\n this.filterDef = {};\r\n for (const externalFilter of this.externalFilters) {\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: undefined,\r\n to: undefined\r\n };\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFilter = (item?: SdGridMaterialColumn | SdGridMaterialExternalFilter) => {\r\n this.filterChange.emit();\r\n }\r\n\r\n open = () => {\r\n this.popupFilter.open({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef\r\n });\r\n }\r\n\r\n onChangeFilter = (args: {\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }) => {\r\n const { inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = args;\r\n this.inlineColumn = inlineColumn;\r\n this.columnFilter = columnFilter;\r\n this.inlineExternal = inlineExternal;\r\n this.externalFilter = externalFilter;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.filterDef = filterDef;\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn,\r\n inlineExternal,\r\n quickFilters: [],\r\n inlineFilterDef,\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.emit();\r\n }\r\n\r\n onReset = () => {\r\n this.inlineColumn = {};\r\n this.columnFilter = {};\r\n this.inlineExternal = {};\r\n this.externalFilter = {};\r\n this.inlineFilterDef = {};\r\n this.filterDef = {};\r\n this.#loadDefault();\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.columnFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n quickFilters: [],\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.emit();\r\n }\r\n\r\n onClearFilter = () => {\r\n this.#clearFilter();\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.columnFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n quickFilters: [],\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.emit();\r\n }\r\n\r\n setFilter = (args: {\r\n columnFilter?: any,\r\n externalFilter?: any,\r\n filterDef?: any\r\n }) => {\r\n const { columnFilter, externalFilter, filterDef} = args;\r\n if (columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n if (externalFilter) {\r\n this.externalFilter = externalFilter;\r\n }\r\n if (filterDef) {\r\n this.filterDef = filterDef;\r\n }\r\n for (const externalFilter of this.externalFilters) {\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: this.externalFilter[externalFilter.field]?.from ?? undefined,\r\n to: this.externalFilter[externalFilter.field]?.to ?? undefined\r\n };\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, AfterViewInit, ViewChild, Output, EventEmitter, Input, ChangeDetectorRef } 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\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})\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 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 #getExportableColumns = (): SdExportColumn[] => {\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, ...(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 #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 exportDefault = (isCSV: boolean = false) => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.columns,\r\n isCSV\r\n });\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 }\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 const result = await this.#initTemplate().finally(this.loadingService.stop);\r\n if (result?.filePath) {\r\n this.exportService.download(result.filePath, `${this.gridOption?.export?.fileName || uuid}.xlsx`);\r\n }\r\n }\r\n\r\n generateAndUploadTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption?.export?.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.exportService.generateUploadTemplate({\r\n key: this.key,\r\n template: {\r\n fileName: fileName || this.gridOption?.export?.fileName,\r\n columns: this.columns.filter(e => this.selected[e.field]),\r\n sheets\r\n },\r\n group: this.selectedGroup?.code\r\n });\r\n }\r\n\r\n onExport = (file: SdExportFile) => {\r\n this.export.emit({\r\n file,\r\n columns: this.columns\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n uploadTemplate = async () => {\r\n const file = await this.exportService.uploadTemplate({\r\n key: this.key,\r\n group: this.selectedGroup?.code,\r\n validator: this.gridOption?.export?.validators\r\n });\r\n if(file) {\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n removeFile = (file: SdExportFile) => {\r\n this.notifyService.confirm(this.translateService.translate('Remove template')).then(() => {\r\n this.exportService.removeFile({\r\n key: this.key,\r\n fileName: file.fileName,\r\n group: this.selectedGroup?.code || null\r\n });\r\n const idx = this.files.indexOf(file);\r\n this.files.splice(idx, 1);\r\n this.files = [...this.files];\r\n this.ref.detectChanges();\r\n });\r\n }\r\n\r\n createTemplate = async () => {\r\n const { translate } = this.translateService;\r\n if (this.form.invalid) {\r\n this.form.markAllAsTouched();\r\n return;\r\n }\r\n if (!this.columns.some(e => this.selected[e.field])) {\r\n this.notifyService.notify.warning(translate('Please select columns'));\r\n return;\r\n }\r\n this.loadingService.start();\r\n const fileName = this.templateName + '.xlsx';\r\n try {\r\n if (this.gridOption?.export?.validators?.(fileName)) {\r\n this.notifyService.notify.warning(this.gridOption?.export?.validators(fileName));\r\n return;\r\n }\r\n const result = await this.generateAndUploadTemplate(fileName);\r\n if (result?.filePath) {\r\n const file: SdExportFile = {\r\n filePath: result.filePath,\r\n fileName: result.fileName\r\n };\r\n this.onExport(file);\r\n this.templateName = null;\r\n this.enableCreating = false;\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n }\r\n\r\n onChangeGroup = () => {\r\n this.loadFiles(this.listGroups?.selectedOptions?.selected[0]?.value);\r\n }\r\n\r\n validatorTemplateName = (val: string) => {\r\n const { translate } = this.translateService;\r\n const regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;\r\n if (!val) {\r\n return translate('Please enter your template name');\r\n }\r\n if (val.length > 50) {\r\n return translate('Template name is too long');\r\n }\r\n if (!regex.test(val)) {\r\n return translate('Template name only contains letters, numbers and spaces');\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnConfiguration, SdGridConfiguration, SdGridConfigurationCache, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { GRID_MATERIAL_CONFIG, ISdGridMaterialConfiguration } from '../models/grid-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdGridConfigurationService {\r\n #COLUMNS = {\r\n EDITORVALIDATION: 'sdEditorValidation',\r\n EDITOR: 'sdEditor',\r\n SUBINFORMATION: 'sdSubInformationAction',\r\n COMMAND: 'sdCommand',\r\n SELECTION: 'sdSelection',\r\n GROUP: 'sdGroup'\r\n };\r\n #cache: {\r\n [key: string]: SdGridConfigurationCache\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(GRID_MATERIAL_CONFIG) @Optional() public gridMaterialConfiguration: ISdGridMaterialConfiguration) {\r\n }\r\n\r\n init = (key: string, gridOption: SdGridMaterialOption) => {\r\n if (!this.#cache[key]) {\r\n const subject = new Subject<SdGridConfiguration>();\r\n this.#cache[key] = {\r\n load: this.#load(gridOption, subject),\r\n get: this.#get(gridOption),\r\n set: (configuration: SdGridConfiguration) => {\r\n configuration = this.#set(gridOption, configuration);\r\n subject.next({ ...configuration });\r\n return configuration;\r\n },\r\n remove: () => {\r\n this.#remove(gridOption)();\r\n subject.next(this.#default(gridOption));\r\n },\r\n observer: subject\r\n };\r\n }\r\n return this.#cache[key];\r\n }\r\n\r\n #getKey = (gridOption: SdGridMaterialOption) => {\r\n const prefix = 'c9e94836-6ace-4aeb-b148-4f0be63589ee';\r\n if (!gridOption?.config?.key && !gridOption?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: gridOption?.config?.key || !gridOption?.key\r\n });\r\n }\r\n\r\n #default = (gridOption: SdGridMaterialOption): SdGridConfiguration => {\r\n const columns: SdColumnConfiguration[] = gridOption?.columns?.filter(e => !e.hidden).map(e => ({\r\n origin: {\r\n field: e.field,\r\n title: e.title,\r\n width: e.width,\r\n invisible: e.invisible\r\n },\r\n invisible: e.invisible,\r\n fixed: false\r\n })) || [];\r\n return {\r\n columns\r\n };\r\n }\r\n\r\n #load = (gridOption: SdGridMaterialOption, subject: Subject<SdGridConfiguration>) => {\r\n return async () => {\r\n const get = this.#get(gridOption);\r\n const configuration = await get();\r\n subject.next({ ...configuration });\r\n };\r\n }\r\n\r\n #get = (gridOption: SdGridMaterialOption) => {\r\n return async () => {\r\n const key = this.#getKey(gridOption);\r\n if (!key) {\r\n return this.#default(gridOption);\r\n }\r\n const { columns, config } = gridOption;\r\n let configuration: SdGridConfiguration;\r\n if (config?.storage === 'server') {\r\n const { get, remove } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: config?.args\r\n });\r\n configuration = await get().catch(() => undefined);\r\n if (!configuration?.columns) {\r\n remove().catch(console.error);\r\n return this.#default(gridOption);\r\n }\r\n } else {\r\n const { get, remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: config?.storage,\r\n args: config?.args\r\n });\r\n configuration = get();\r\n if (!configuration?.columns) {\r\n remove();\r\n return this.#default(gridOption);\r\n }\r\n }\r\n\r\n configuration.columns = configuration.columns\r\n .filter(column => column.isGeneratedColumn || columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // Thêm những column mới vào storage nếu có\r\n columns.forEach(column => {\r\n const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n if (!col) {\r\n configuration.columns.push({\r\n origin: {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible,\r\n },\r\n invisible: column.invisible,\r\n fixed: false\r\n });\r\n } else {\r\n col.origin = {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible\r\n };\r\n }\r\n });\r\n return configuration;\r\n };\r\n }\r\n\r\n #set = (gridOption: SdGridMaterialOption, configuration: SdGridConfiguration) => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n if (gridOption?.config?.storage === 'server') {\r\n const { set } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: gridOption?.config?.args\r\n });\r\n set(configuration);\r\n } else {\r\n const { set } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args\r\n });\r\n set(configuration);\r\n }\r\n }\r\n return JSON.parse(JSON.stringify(configuration));\r\n }\r\n\r\n #remove = (gridOption: SdGridMaterialOption) => {\r\n return () => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n if (gridOption?.config?.storage === 'server') {\r\n const { remove } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: gridOption?.config?.args\r\n });\r\n remove();\r\n } else {\r\n const { remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args\r\n });\r\n remove();\r\n }\r\n }\r\n };\r\n }\r\n\r\n // get = async (gridOption: SdGridMaterialOption): Promise<SdGridConfiguration> => {\r\n // if (!gridOption?.key) {\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // const { key, columns } = gridOption;\r\n // const configuration: SdGridConfiguration = await this.settingService.get(this.#getKey(key)).catch(() => undefined);\r\n // if (!configuration?.columns) {\r\n // this.settingService.remove(this.#getKey(key)).catch(console.error);\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // configuration.columns = configuration.columns\r\n // .filter(column => columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // // Thêm những column mới vào storage nếu có\r\n // columns.forEach(column => {\r\n // const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n // if (!col) {\r\n // configuration.columns.push({\r\n // origin: {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible,\r\n // },\r\n // invisible: column.invisible,\r\n // fixed: false\r\n // });\r\n // } else {\r\n // col.origin = {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible\r\n // };\r\n // }\r\n // });\r\n // return configuration;\r\n // }\r\n\r\n // set = async (key: string, configuration: SdGridConfiguration): Promise<SdGridConfiguration> => {\r\n // if (key) {\r\n // this.settingService.set(this.#getKey(key), configuration);\r\n // }\r\n // return configuration;\r\n // }\r\n\r\n // remove = (key: string) => {\r\n // if (key) {\r\n // this.settingService.remove(this.#getKey(key));\r\n // }\r\n // }\r\n\r\n generateConfigurationResult = (\r\n configuration: SdGridConfiguration,\r\n gridOption: SdGridMaterialOption,\r\n sdSubInformation: SdMaterialSubInformationDefDirective) => {\r\n const result: SdGridConfigurationResult = {\r\n column: {},\r\n fixedColumn: {},\r\n firstColumns: [],\r\n secondColumns: [],\r\n firstHeaders: [],\r\n secondHeaders: [],\r\n displayedColumns: [],\r\n displayedFooters: [],\r\n multipleHeader: false\r\n };\r\n const { selection, commands, editor, group } = gridOption || {};\r\n if (editor?.addable || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITORVALIDATION);\r\n result.displayedColumns.push(this.#COLUMNS.EDITORVALIDATION);\r\n }\r\n if (selection?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (!editor?.hidden) {\r\n if (editor?.addable\r\n || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'popup' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITOR);\r\n result.displayedColumns.push(this.#COLUMNS.EDITOR);\r\n }\r\n }\r\n if (commands?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.COMMAND);\r\n result.displayedColumns.push(this.#COLUMNS.COMMAND);\r\n }\r\n if (group?.fields?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.GROUP);\r\n result.displayedColumns.push(this.#COLUMNS.GROUP);\r\n }\r\n configuration?.columns?.filter(col => !col.invisible).forEach(col => {\r\n if (col.isGeneratedColumn) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n const generatedColumn: SdGridMaterialColumn = {\r\n type: 'children',\r\n field: col.origin.field,\r\n title: col.origin.title,\r\n children: []\r\n };\r\n for (const subColumn of gridOption?.columns.filter(e1 => col.generatedColumns.includes(e1.field))) {\r\n if (subColumn.type === 'children' || subColumn.type === 'children-col') {\r\n for (const childColumn of subColumn.children) {\r\n generatedColumn.children.push({\r\n ...childColumn,\r\n colSpan: 2\r\n });\r\n }\r\n } else {\r\n generatedColumn.children.push({\r\n ...subColumn,\r\n colSpan: 2\r\n });\r\n }\r\n\r\n }\r\n result.firstColumns.push({\r\n ...generatedColumn,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n result.displayedColumns.push(col.origin.field);\r\n return;\r\n }\r\n const column = gridOption?.columns.find(e => e.field === col.origin.field);\r\n if (column) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n result.firstColumns.push({\r\n ...column,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n if (column.type === 'children-col') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n } else {\r\n result.displayedColumns.push(col.origin.field);\r\n }\r\n }\r\n });\r\n if (sdSubInformation?.templateRef) {\r\n result.firstHeaders.push(this.#COLUMNS.SUBINFORMATION);\r\n result.displayedColumns.push(this.#COLUMNS.SUBINFORMATION);\r\n }\r\n result.multipleHeader = result.secondHeaders.length > 0;\r\n // Sub infomation không thể có footer\r\n result.displayedFooters = result.displayedColumns.filter(val => val !== this.#COLUMNS.SUBINFORMATION);\r\n return result;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnValues'\r\n})\r\nexport class SdColumnValuesPipe implements PipeTransform {\r\n #prefix = 'a1e67660-8aa2-4c11-b02d-71a32188719f';\r\n #cache: {\r\n [key: string]: {\r\n result: any\r\n }\r\n } = {};\r\n transform = async (value: any, column: SdGridMaterialColumn): Promise<string> => {\r\n if (column.type !== 'values' || !column.option?.items || !column.option?.valueField || !column.option?.displayField) {\r\n return value;\r\n }\r\n const { items, valueField, displayField, ...remain } = column.option;\r\n const key = hash({\r\n prefix: this.#prefix,\r\n valueField,\r\n displayField,\r\n remain,\r\n value\r\n });\r\n if (typeof (items) === 'function') {\r\n if (!this.#cache[key]) {\r\n const values = await items(value, true);\r\n this.#cache[key] = {\r\n result: values?.find(e => e?.[valueField] === value)?.[displayField] || value\r\n };\r\n }\r\n } else {\r\n if (!this.#cache[key]) {\r\n this.#cache[key] = {\r\n result: items?.find(e => e?.[valueField] === value)?.[displayField] || value\r\n };\r\n }\r\n }\r\n return this.#cache[key].result;\r\n }\r\n}\r\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\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 #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 {\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 const key = hash(remain);\r\n if (sdId === key && 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 item.sdId = key;\r\n return true;\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n Optional,\r\n Inject,\r\n ChangeDetectorRef,\r\n ContentChildren,\r\n QueryList,\r\n OnInit,\r\n OnDestroy,\r\n EventEmitter,\r\n ContentChild\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport * as uuid from 'uuid';\r\nimport {\r\n SdGridMaterialFilterRequest\r\n} from './models/grid-filter.model';\r\nimport {\r\n SdGridMaterialOption\r\n} from './models/grid-option.model';\r\nimport {\r\n GRID_MATERIAL_CONFIG,\r\n DEFAULT_GRID_MATERIAL_CONFIG,\r\n ISdGridMaterialConfiguration\r\n} from './models/grid-configuration.model';\r\nimport { Subscription, isObservable, Observable } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdGridMaterialColumn } from './models/grid-column.model';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';\r\nimport { SdGridConfiguration } from './models/grid-config.model';\r\nimport { SdGridConfigurationService } from './services/grid-configuration.service';\r\nimport { SdGridMaterialExportColumn } from './models/grid-export.model';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { SdGridMaterialItem, SdItem } from './models/grid.model';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';\r\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 key = uuid.v4();\r\n gridConfigurationObserver: Observable<SdGridConfiguration>;\r\n gridFilter: SdGridFilter;\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\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 debounceTime(200),\r\n map(() => {\r\n this.#paginator.pageIndex = 0;\r\n return this.#getFilter();\r\n }),\r\n switchMap(filterInfo => this.#load(filterInfo, false))\r\n ).subscribe(this.#render));\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.#optionChanges.emit();\r\n option?.columns?.forEach(col => {\r\n if (col.filter?.default) {\r\n this.columnFilter[col.field] = col.filter.default;\r\n }\r\n });\r\n const configuration = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.gridConfigurationObserver = configuration.observer;\r\n configuration.load();\r\n }\r\n }\r\n\r\n gridOption: SdGridMaterialOption;\r\n localItems: any[] = [];\r\n items: SdGridMaterialItem<T>[] = [];\r\n selectedItems: T[] = [];\r\n total: number;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n // Paginate\r\n isHiddenPaginator = false;\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(paginator.page.pipe(\r\n debounceTime(200),\r\n map(this.#getFilter),\r\n switchMap(filterInfo => this.#load(filterInfo, false))\r\n ).subscribe(this.#render));\r\n }\r\n }\r\n\r\n // Sorting\r\n #sort: MatSort;\r\n @ViewChild(MatSort) set sort(sort: MatSort) {\r\n if (sort && this.#sort !== sort) {\r\n this.#sort = sort;\r\n this.#subscription.add(sort.sortChange.pipe(\r\n debounceTime(200),\r\n map(this.#getFilter),\r\n switchMap(filterInfo => this.#load(filterInfo, false))\r\n ).subscribe(this.#render));\r\n }\r\n }\r\n\r\n // Export\r\n @ViewChild(SdPopupExport) sdPopupExport: SdPopupExport;\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective) sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective) sdEmptyData: SdMaterialEmptyDataDefDirective;\r\n\r\n // Cell Def\r\n @ContentChildren(SdMaterialCellDefDirective) sdCellDefs = new QueryList<SdMaterialCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n\r\n // Footer Def\r\n @ContentChildren(SdMaterialFooterDefDirective) sdFooterDefs = new QueryList<SdMaterialFooterDefDirective>();\r\n footerDef: {\r\n [column: string]: SdMaterialFooterDefDirective\r\n } = {};\r\n hasFooter = false;\r\n\r\n // Filter Def\r\n @ContentChildren(SdMaterialFilterDefDirective) sdFilterDefs = new QueryList<SdMaterialFilterDefDirective>();\r\n filterDefs: SdMaterialFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnFilter: {\r\n [key: string]: any\r\n } = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #optionChanges = new EventEmitter();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(GRID_MATERIAL_CONFIG) @Optional() public configuration: ISdGridMaterialConfiguration,\r\n private gridConfigurationService: SdGridConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private columnValuesPipe: SdColumnValuesPipe,\r\n private editorHandlerColumnPipe: SdEditorHandlerColumnPipe) {\r\n }\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.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(this.#optionChanges.pipe(\r\n startWith({}),\r\n debounceTime(200),\r\n map(this.#getFilter),\r\n switchMap(filterInfo => this.#load(filterInfo, true))\r\n ).subscribe(this.#render));\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #initCellDef = () => {\r\n this.cellDef = {};\r\n for (const cellDef of this.sdCellDefs) {\r\n if (cellDef.sdMaterialCellDef) {\r\n this.cellDef[cellDef.sdMaterialCellDef] = cellDef;\r\n }\r\n }\r\n }\r\n\r\n #initFilterDef = () => {\r\n this.filterDefs = [];\r\n for (const filterDef of this.sdFilterDefs) {\r\n this.filterDefs.push(filterDef);\r\n }\r\n }\r\n\r\n #initFooterDef = () => {\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdMaterialFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdMaterialFooterDef] = footerDef;\r\n }\r\n }\r\n }\r\n\r\n #filterExportInfo = (pageNumber: number, pageSize: number): SdGridMaterialFilterRequest => {\r\n return {\r\n rawColumnFilter: (this.gridOption?.filter?.inlineColumn ? this.columnFilter : this.gridFilter?.columnFilter) || {},\r\n rawExternalFilter: this.gridFilter?.externalFilter || {},\r\n rawFilterDef: this.gridFilter?.filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber,\r\n pageSize,\r\n isExported: true\r\n };\r\n }\r\n\r\n #initConfiguration = (option: SdGridMaterialOption) => {\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize: option?.paginate?.pageSize ?? this.configuration?.paginate?.pageSize ?? DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.configuration?.paginate?.pages ?? DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false\r\n };\r\n return option;\r\n }\r\n\r\n #filterLocal = (localItems: any[], filterInfo: SdGridMaterialFilterRequest) => {\r\n const { columns } = this.gridOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(item => {\r\n for (const column of columns) {\r\n const { field, type } = column;\r\n const filterValue: string = (rawColumnFilter[field] || '').toString().trim().toLowerCase();\r\n const columnValue: string = (item[field] || '').toString().trim().toLowerCase();\r\n if (filterValue) {\r\n if (!columnValue && type !== 'datetime' && type !== 'date' && type !== 'time') {\r\n return false;\r\n }\r\n if (type === 'string') {\r\n if (columnValue.indexOf(filterValue) === -1) {\r\n return false;\r\n }\r\n } else if (type === 'values') {\r\n if (columnValue !== filterValue) {\r\n return false;\r\n }\r\n } else if (type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (type === 'datetime' || type === 'date' || type === 'time') {\r\n const from = rawColumnFilter[field]?.from ?? rawColumnFilter[field];\r\n const to = rawColumnFilter[field]?.to ?? rawColumnFilter[field];\r\n const fromDate = Date.begin(from);\r\n const toDate = Date.end(to);\r\n if (fromDate && toDate) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n if (new Date(columnValue).getTime() < fromDate.getTime() || new Date(columnValue).getTime() >= toDate.getTime()) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (orderBy && orderDirection) {\r\n const column = columns.find(e => e.field === orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((current, next) => {\r\n if (type === 'number') {\r\n return (current[field] || 0) - (next[field] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(current[field] || '').getTime();\r\n const d2 = new Date(current[field] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (current[field] || '').toString();\r\n const s2 = (next[field] || '').toString();\r\n if (s1 > s2) {\r\n return 1;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (orderDirection === 'desc') {\r\n items.reverse();\r\n }\r\n }\r\n }\r\n return {\r\n items: items.filter((item, index) => {\r\n return index >= pageNumber * pageSize\r\n && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length\r\n };\r\n }\r\n\r\n #getFilter = (): SdGridMaterialFilterRequest => ({\r\n rawColumnFilter: (this.gridOption?.filter?.inlineColumn ? this.columnFilter : this.gridFilter?.columnFilter) || {},\r\n rawExternalFilter: this.gridFilter?.externalFilter || {},\r\n rawFilterDef: this.gridFilter?.filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber: this.#paginator?.pageIndex || 0,\r\n pageSize: this.#paginator?.pageSize || this.gridOption?.paginate?.pageSize || 50\r\n })\r\n\r\n #load = async (filterReq: SdGridMaterialFilterRequest, force: boolean = true): Promise<{ items: any[], total: number }> => {\r\n this.isLoading = true;\r\n try {\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterReq);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n if (force) {\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 }\r\n return this.#filterLocal(this.localItems, filterReq);\r\n }\r\n } catch (error) {\r\n this.notifyService.handle.error(error);\r\n } finally {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n #render = async (args: { items: any[], total: number }) => {\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n // this.isHiddenPaginator = this.filterInfo.pageNumber === 0 && this.total <= this.filterInfo.pageSize;\r\n this.items.forEach((item: SdItem) => {\r\n item.originItem = { ...item };\r\n });\r\n await this.gridOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n\r\n reload = async (force: boolean = true) => {\r\n const data = await this.#load(this.#getFilter(), force);\r\n this.#render(data);\r\n }\r\n\r\n #exportedItems = async (pageNumber: number = 0, pageSize: number = 10000) => {\r\n if (this.gridOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n if (Array.isArray(result)) {\r\n return result;\r\n }\r\n if (isObservable<any[]>(result)) {\r\n result = result.toPromise();\r\n }\r\n if (isObservable<{ items: any[], total: number }>(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n const filterInfo = this.#filterExportInfo(pageNumber, pageSize);\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterInfo);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof (this.gridOption.items) === 'function') {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n exportedItems = await results;\r\n } else {\r\n exportedItems = results;\r\n }\r\n } else {\r\n exportedItems = this.gridOption.items;\r\n }\r\n return this.#filterLocal(exportedItems, filterInfo);\r\n }\r\n }\r\n }\r\n\r\n drop(event: CdkDragDrop<string[]>, columns: string[]) {\r\n moveItemInArray(columns, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n #allColumns = (): SdGridMaterialColumn[] => {\r\n const columns: SdGridMaterialColumn[] = [];\r\n this.gridOption.columns.filter(e => !e.export?.disabled).forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns;\r\n }\r\n\r\n #allExportedColumns = (): SdGridMaterialExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n }\r\n\r\n #onExport = async (args: { file: SdExportFile, columns: SdExportColumn[], isCSV: boolean }) => {\r\n try {\r\n const { file, columns, isCSV } = args;\r\n const pageSize = this.gridOption?.export?.maxItemsPerRequest || 1000;\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 while (pageNumber * pageSize < total) {\r\n const res = await this.#exportedItems(pageNumber, pageSize);\r\n if ('items' in res) {\r\n exportItems = res.items;\r\n total = res.total;\r\n } else {\r\n exportItems = res;\r\n // total = exportItems.length;\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\r\n const totalPage = total / pageSize;\r\n const percent = Math.round(pageNumber * 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 if(transform instanceof Promise) {\r\n obj[column.field] = await transform;\r\n } else {\r\n obj[column.field] = transform;\r\n }\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:ss');\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:ss');\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 pageNumber++;\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 const { translate } = this.translateService;\r\n if (!args.isCSV && this.gridOption.export.max && this.total > this.gridOption.export.max) {\r\n this.notifyService.confirm(translate(`Total rows reach limit, do you want to export CSV`)).then(() => {\r\n args.isCSV = true;\r\n this.#onExport(args);\r\n });\r\n return;\r\n }\r\n this.#onExport(args);\r\n }\r\n\r\n onFilterChange = () => {\r\n this.#paginator.pageIndex = 0;\r\n this.reload(false);\r\n }\r\n\r\n onExpand = async (rowData: SdGridMaterialItem<T>) => {\r\n if (this.gridOption.subInformation?.always) {\r\n return;\r\n }\r\n if (rowData.isExpanding) {\r\n return;\r\n }\r\n if (rowData.isExpanded) {\r\n rowData.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.subInformation?.onExpand?.(rowData);\r\n if (!this.gridOption.subInformation?.multiple) {\r\n this.items.forEach(item => item.isExpanding = item.isExpanded = false);\r\n }\r\n if (data instanceof Promise) {\r\n rowData.isExpanding = true;\r\n data.then(res => {\r\n rowData.expandDetail = res;\r\n rowData.isExpanded = true;\r\n }).finally(() => rowData.isExpanding = false);\r\n } else {\r\n rowData.expandDetail = data;\r\n rowData.isExpanded = true;\r\n }\r\n }\r\n\r\n onSelect = (rowData: SdGridMaterialItem<T>) => {\r\n if (rowData?.sdGroup?.items?.length) {\r\n rowData?.sdGroup?.items.forEach(e => e.isSelected = rowData.isSelected);\r\n this.gridOption.selection?.onSelect?.(rowData, this.items.filter(e => e.isSelected));\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.gridOption.selection?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => e.isSelected = false);\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selection?.onSelect?.(rowData, this.items.filter(e => e.isSelected));\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n }\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.selectable && (!this.gridOption?.selection?.actions?.length || e.actions?.length)) {\r\n e.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.gridOption.selection?.onSelectAll?.(this.items.filter(e => e.isSelected));\r\n this.#updateSelectedItems();\r\n }\r\n\r\n onClearSelection = (items?: SdGridMaterialItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => e.isSelected = false);\r\n this.#updateSelectedItems();\r\n }\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedItems = this.items.filter(item => item.isSelected)\r\n .map(item => {\r\n const {\r\n isSelected,\r\n isExpanded,\r\n isExpanding,\r\n expandDetail,\r\n editorErrorMessage,\r\n editorHandlerColumn,\r\n editorHandlerRow,\r\n editorStatus,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n // Giữ lại các trường thông tin cho selectable (action, groupedAction, sdGroup, selectable)\r\n ...result\r\n } = item;\r\n return result;\r\n }) as T[];\r\n this.ref.detectChanges();\r\n }\r\n\r\n clearFilter = () => {\r\n this.gridFilter?.onClearFilter();\r\n }\r\n\r\n setFilter = (args: {\r\n columnFilter: any,\r\n externalFilter: any,\r\n filterDef: any\r\n }) => {\r\n this.gridFilter?.setFilter(args);\r\n }\r\n\r\n onCreate = () => {\r\n const { type, editor, columns } = this.gridOption;\r\n if (!editor?.addable) {\r\n return;\r\n }\r\n const item: SdGridMaterialItem = {};\r\n // Gán giá trị mặc định\r\n columns.forEach(column => {\r\n if (column.type === 'values') {\r\n item[column.field] = '';\r\n } else if (column.type === 'bool') {\r\n item[column.field] = true;\r\n } else if (column.type === 'number') {\r\n item[column.field] = null;\r\n }\r\n });\r\n if (type === 'local') {\r\n editor.onAdd?.(item, this.localItems);\r\n } else {\r\n editor.onAdd?.(item, this.items);\r\n }\r\n // Đưa item lên dòng đầu tiên nếu type khác popup\r\n if (editor.type !== 'popup') {\r\n if (editor.addToLast) {\r\n if (type === 'local') {\r\n this.localItems = [...this.localItems, item];\r\n }\r\n this.items = [...this.items, item];\r\n } else {\r\n if (type === 'local') {\r\n this.localItems = [item, ...this.localItems];\r\n }\r\n this.items = [item, ...this.items];\r\n }\r\n }\r\n item.editorStatus = 'create';\r\n item.editorHandlerRow = {\r\n temporary: { ...item }\r\n };\r\n }\r\n onUpdate = (item: SdItem) => {\r\n const { editor } = this.gridOption;\r\n item.editorStatus = 'update';\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n temporary: { ...item }\r\n };\r\n // this.generateEditorHanlder(item);\r\n if (editor.type === 'popup') {\r\n // Xử lý case popup\r\n // this.sdGridPopupEditor.open(item, columns, isModified);\r\n }\r\n this.ref.detectChanges();\r\n }\r\n onSave = async (item: SdGridMaterialItem<T>) => {\r\n if (item.editorHandlerRow.saving) {\r\n return;\r\n }\r\n const { editor } = this.gridOption;\r\n try {\r\n item.editorHandlerRow.saving = true;\r\n if (editor.validate) {\r\n const result = editor.validate(item, this.items.indexOf(item));\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n throw message;\r\n }\r\n } else {\r\n if (result) {\r\n throw result;\r\n }\r\n }\r\n }\r\n if (editor.onSave) {\r\n const result = editor.onSave(item);\r\n if (result instanceof Promise) {\r\n await result;\r\n }\r\n }\r\n\r\n if (item.editorStatus === 'create' && editor.type === 'popup') {\r\n if (this.gridOption.type === 'local') {\r\n this.items.splice(0, 0, item);\r\n }\r\n // this.viewItems.splice(0, 0, item);\r\n }\r\n\r\n item.editorStatus = undefined;\r\n // this.generateEditorHanlder(item);\r\n } catch (err) {\r\n this.notifyService.notify.warning(err);\r\n } finally {\r\n item.editorHandlerRow.saving = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n onCancel = (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.localItems.indexOf(item);\r\n this.localItems.splice(idx2, 1);\r\n this.localItems = [...this.localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n 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 = (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 editor?.onRemove?.(item, this.localItems);\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n if (this.gridOption.type === 'local') {\r\n editor?.onRemove?.(item, this.localItems);\r\n } else {\r\n editor?.onRemove?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n }\r\n\r\n add = (idx: number, item: T) => {\r\n if (this.items.length > idx) {\r\n this.items.splice(idx, 0, item);\r\n this.items = [...this.items];\r\n } else {\r\n this.items = [...this.items, item];\r\n }\r\n }\r\n\r\n update = (idx: number, item: T) => {\r\n if (this.items[idx]) {\r\n Object.assign(this.items[idx], item);\r\n this.items = [...this.items];\r\n }\r\n }\r\n\r\n remove = (idx: number) => {\r\n if (this.items[idx]) {\r\n this.items.splice(idx, 1);\r\n this.items = [...this.items];\r\n }\r\n }\r\n\r\n refreshItem = (idx: number) => {\r\n const item = this.items[idx];\r\n this.editorHandlerColumnPipe.transform(item.sdVersion, item, this.gridOption);\r\n }\r\n\r\n get editedItems(): (T & { editorErrorMessage: string })[] {\r\n return this.items.filter(item => {\r\n if (!item.originItem) {\r\n return true;\r\n }\r\n if (Object.keys(item.originItem).some(key => item.originItem[key] !== item[key])) {\r\n return true;\r\n }\r\n return false;\r\n }).map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n editorErrorMessage,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n ...result } = item;\r\n return {\r\n ...result,\r\n editorErrorMessage\r\n } as any;\r\n });\r\n }\r\n\r\n get gridItems(): T[] {\r\n return this.items.map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n ...result } = item;\r\n return result as T;\r\n });\r\n }\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n get isEditing() {\r\n return this.items.some(e => e.editorStatus !== undefined);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand, SdGridMaterialCommandNormal } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: any, commands: SdGridMaterialCommand[]): Promise<SdGridMaterialCommand[]> {\r\n const results: SdGridMaterialCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n let flag = false;\r\n const { hidden } = command;\r\n if (hidden === undefined) {\r\n flag = true;\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n flag = true;\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n flag = true;\r\n }\r\n } else {\r\n if (!isHidden) {\r\n flag = true;\r\n }\r\n }\r\n }\r\n if (flag) {\r\n if ('children' in command) {\r\n const children: SdGridMaterialCommandNormal[] = [];\r\n for (const childCommand of command.children) {\r\n const { hidden } = childCommand;\r\n if (hidden === undefined) {\r\n children.push(childCommand);\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n if (!isHidden) {\r\n children.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...command, children });\r\n }\r\n } else {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandDisable'\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: any, command: SdGridMaterialCommand): boolean {\r\n if (!command?.disabled) {\r\n return false;\r\n }\r\n if (typeof (command.disabled) === 'boolean') {\r\n return command.disabled;\r\n }\r\n return command.disabled(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, item: any): string {\r\n if (!command?.icon) {\r\n return '';\r\n }\r\n if (typeof (command.icon) === 'string') {\r\n return command.icon;\r\n }\r\n return command.icon(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, item: any): string {\r\n if (!command?.title) {\r\n return '';\r\n }\r\n if (typeof (command.title) === 'string') {\r\n return command.title;\r\n }\r\n return command.title(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnHtmlTemplate'\r\n})\r\nexport class SdColumnHtmlTemplatePipe implements PipeTransform {\r\n private isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): string {\r\n if (typeof (column?.htmlTemplate) !== 'function') {\r\n return value;\r\n }\r\n return column?.htmlTemplate(value, rowData, this.isMobileOrTablet);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-view',\r\n templateUrl: './desktop-cell-view.component.html',\r\n styleUrls: ['./desktop-cell-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellView {\r\n @Input() sdId: string;\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\r\n@Pipe({\r\n name: 'columnTransform'\r\n})\r\nexport class SdColumnTransformPipe implements PipeTransform {\r\n constructor(private columnValuesPipe: SdColumnValuesPipe) { }\r\n async transform(value: any, rowData: any, column: SdGridMaterialColumn, key?: string): Promise<string> {\r\n if (column?.transform) {\r\n return column.transform(value, rowData);\r\n }\r\n if (column.type === 'values') {\r\n return await this.columnValuesPipe.transform(value, column);\r\n }\r\n if (column.type === 'number' && Number.isNumber(value)) {\r\n return Number.toVNCurrency(value); // this.decimalPipe.transform(value, '1.0-2');\r\n }\r\n if (column.type === 'bool') {\r\n return value === true ? (column.option?.displayOnTrue || 'True') : (column.option?.displayOnFalse || 'False');\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialExternalFilter } from '../models/grid-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdGridMaterialExternalFilter[], field?: string): SdGridMaterialExternalFilter[] {\r\n const results: SdGridMaterialExternalFilter[] = [];\r\n if (!externalFilters) {\r\n return results;\r\n }\r\n for (const filter of externalFilters) {\r\n results.push(filter);\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdGridMaterialColumn[], field?: string): SdGridMaterialColumn[] {\r\n const results: SdGridMaterialColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\r\n if (column.type === 'image') {\r\n continue;\r\n }\r\n if (column.type === 'children') {\r\n for (const columnChildren of column?.children) {\r\n if (!columnChildren.filter?.disabled) {\r\n results.push(columnChildren);\r\n }\r\n }\r\n continue;\r\n }\r\n if (!column.filter?.disabled) {\r\n results.push(column);\r\n }\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { SdGridMaterialColumnChildren } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-children-view',\r\n templateUrl: './desktop-cell-children-view.component.html',\r\n styleUrls: ['./desktop-cell-children-view.component.scss']\r\n})\r\nexport class SdDesktopCellChildrenView {\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumnChildren;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n\r\n@Pipe({\r\n name: 'columnChildrenFilter'\r\n})\r\nexport class SdColumnChildrenFilterPipe implements PipeTransform {\r\n #isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.#isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(columns: SdGridMaterialColumn[], item: any): SdGridMaterialColumn[] {\r\n return columns.filter(column => {\r\n const value = item?.[column.field];\r\n const transformValue = column.transform?.(item[column.field], item);\r\n const templateValue = column.htmlTemplate?.(item[column.field], item, this.#isMobileOrTablet);\r\n return (value !== undefined && value !== null && value !== '')\r\n || (transformValue !== undefined && transformValue !== null && transformValue !== '')\r\n || (templateValue !== undefined && templateValue !== null && templateValue !== '');\r\n });\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialChildColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnTitle'\r\n})\r\nexport class SdColumnTitlePipe implements PipeTransform {\r\n async transform(item: any, column: SdGridMaterialChildColumn): Promise<string> {\r\n if (!column?.title) {\r\n return '';\r\n }\r\n const result = column?.dynamicTitle?.(item);\r\n if (result instanceof Promise) {\r\n return (await result) || column?.title;\r\n }\r\n return result || column?.title;\r\n }\r\n}\r\n","import { 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})\r\nexport class SdDesktopCommand {\r\n @Input() item: any;\r\n @Input() commands: SdGridMaterialCommand[] = [];\r\n constructor() {\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdBadgeColor } from '@sd-angular/core/badge';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnBadge'\r\n})\r\nexport class SdColumnBadgePipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): {\r\n type: 'round' | 'circle' | 'icon',\r\n color: SdBadgeColor,\r\n icon: string\r\n } {\r\n if (column.type === 'string' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n if (column.type === 'number' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n if (column.type === 'bool') {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: !!value ? 'success' : 'danger',\r\n icon: null\r\n };\r\n }\r\n if (column.type === 'values' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridConfiguration, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../services/grid-configuration.service';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\n\r\n@Pipe({\r\n name: 'sdGridConfigurationResult'\r\n})\r\nexport class SdGridConfigurationResultPipe implements PipeTransform {\r\n constructor(private gridConfigurationService: SdGridConfigurationService) { }\r\n transform(configuration: SdGridConfiguration, gridOption: SdGridMaterialOption, sdSubInformation: SdMaterialSubInformationDefDirective): SdGridConfigurationResult {\r\n return this.gridConfigurationService.generateConfigurationResult(configuration, gridOption, sdSubInformation);\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, EventEmitter, ChangeDetectorRef, Input, HostListener } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationResult, SdGridConfiguration, SdGridConfigurationCache, SdColumnConfiguration } from '../../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { MatTable } from '@angular/material/table';\r\n// import { SdGridMaterialColumn } from '@sd-angular/core/grid-material';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-popup-grid-configuration',\r\n templateUrl: './popup-grid-configuration.component.html',\r\n styleUrls: ['./popup-grid-configuration.component.scss']\r\n})\r\nexport class SdPopupGridConfiguration implements OnInit {\r\n @Input() gridOption: SdGridMaterialOption;\r\n @Input() key: string;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdGridMaterialColumn>;\r\n readonly changes = new EventEmitter<SdGridConfigurationResult>();\r\n #cache: SdGridConfigurationCache;\r\n configuration: SdGridConfiguration;\r\n isCreatingColumn = false;\r\n selected: {\r\n [key: string]: boolean;\r\n } = {};\r\n disabledDrag = true;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n @HostListener('window:mouseup', ['$event'])\r\n mouseUp(event) {\r\n this.disabledDrag = true;\r\n }\r\n open = async () => {\r\n this.#cache = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.configuration = await this.#cache.get();\r\n this.modal.open();\r\n }\r\n\r\n onSave = () => {\r\n this.#cache.set(this.configuration);\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n }\r\n\r\n onReset = async () => {\r\n const { translate } = this.translateService;\r\n this.notifyService.confirm(translate('Reset grid configuration to default')).then(() => {\r\n this.#cache.remove();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n });\r\n }\r\n\r\n createColumn = async () => {\r\n this.selected = {};\r\n this.isCreatingColumn = true;\r\n }\r\n\r\n confirm = async () => {\r\n const generatedColumn: SdColumnConfiguration = {\r\n origin: {\r\n field: uuid.v4(),\r\n title: 'Generated',\r\n width: '300px'\r\n },\r\n fixed: false,\r\n invisible: false,\r\n title: 'Generated',\r\n width: '300px',\r\n isGeneratedColumn: true,\r\n generatedColumns: this.configuration.columns.filter(e => this.selected[e.origin?.field]).map(e => e.origin?.field)\r\n };\r\n this.configuration.columns.push(generatedColumn);\r\n this.configuration = this.#cache.set(this.configuration);\r\n this.isCreatingColumn = false;\r\n }\r\n\r\n dropTable(event: CdkDragDrop<SdGridMaterialColumn[]>) {\r\n moveItemInArray(this.configuration.columns, event.previousIndex, event.currentIndex);\r\n this.table.renderRows();\r\n }\r\n\r\n handleMouseDown() {\r\n this.disabledDrag = false;\r\n }\r\n\r\n handleMouseUp() {\r\n this.disabledDrag = true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnTooltip'\r\n})\r\nexport class SdColumnTooltipPipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): string {\r\n if (column?.tooltip) {\r\n return column.tooltip(value, rowData);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialAction, SdGridMaterialActionNormal, SdGridMaterialActionSimple } from '../models/grid-action.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdGridMaterialAction): SdGridMaterialActionSimple => {\r\n if ('children' in action) {\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n color: action.color,\r\n type: action.type,\r\n children: action.children.map(e => ({\r\n title: e.title,\r\n icon: e.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: e.fontSet,\r\n tooltip: e.tooltip,\r\n click: e.click\r\n }))\r\n };\r\n }\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n click: action.click\r\n };\r\n\r\n }\r\n transform = (selectedItems: SdItem[], actions: SdGridMaterialAction[]): SdGridMaterialActionSimple[] => {\r\n const results: SdGridMaterialAction[] = [];\r\n if (!actions?.length || !selectedItems?.length) {\r\n return [];\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n const children: SdGridMaterialActionNormal[] = [];\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.actions.includes(key))) {\r\n children.push(childAction);\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...action, children });\r\n }\r\n } else {\r\n const key = hash(action);\r\n if (selectedItems.every(e => e.actions.includes(key))) {\r\n results.push(action);\r\n }\r\n }\r\n }\r\n return results.map(result => this.#convert(result));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: SdItem[], rowData: SdItem, selection: SdGridMaterialSelection): boolean => {\r\n const { disabled, actions } = selection;\r\n if (!actions?.length) {\r\n if (!disabled) {\r\n rowData.selectable = true;\r\n return false;\r\n }\r\n rowData.selectable = !disabled(rowData, selectedItems);\r\n return !rowData.selectable;\r\n }\r\n // Lọc các action theo selectedItems hiện tại\r\n const availableActions = actions.filter(action => {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.actions.includes(key))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n } else {\r\n const key = hash(action);\r\n return selectedItems.every(e => e.actions.includes(key));\r\n }\r\n });\r\n // Kiểm tra rowData có action nào thỏa hay ko, nếu ko thì disabled\r\n for (const action of availableActions) {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n if(rowData.actions.includes(hash(childAction))) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if(rowData.actions.includes(hash(action))) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionVisibleSelectAll'\r\n})\r\nexport class SdSelectionVisibleSelectAllPipe implements PipeTransform {\r\n transform = async (items: SdItem[], selection: SdGridMaterialSelection): Promise<boolean> => {\r\n const { actions } = selection;\r\n if (!actions?.length) {\r\n return true;\r\n }\r\n if (!items.length) {\r\n return false;\r\n }\r\n if (actions.some(e => ('children' in e && e.children.some(e1 => e1.isGrouped)) || e.isGrouped)) {\r\n return false;\r\n }\r\n await new Promise(resolve => setTimeout(resolve, 500));\r\n const first = items.find(t => t.actions?.length);\r\n if (first) {\r\n for (const action of first.actions) {\r\n if (items.filter(t => t.actions?.length).every(e => e.actions.includes(action))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSetting, SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialConfigOption } from '../../models/grid-config.model';\r\nimport { SdGeneratedColumn } from './generated-column.model';\r\nimport { SdSettingServer } from '@sd-angular/core/setting';\r\n\r\n@Injectable()\r\nexport class SdGeneratedColumnService {\r\n #cache: {\r\n [key: string]: SdSetting<SdGeneratedColumn[]> | SdSettingServer<SdGeneratedColumn[]>\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService) {\r\n }\r\n\r\n load = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '260f5e94-5865-4425-8ced-b9c083c390dd',\r\n key: configuration.key\r\n });\r\n if(!this.#cache[key]) {\r\n if(configuration?.storage === 'server') {\r\n this.#cache[key] = this.settingService.createServer<SdGeneratedColumn[]>(key, {\r\n args: configuration?.args,\r\n default: []\r\n });\r\n } else {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: configuration?.storage,\r\n args: configuration?.args,\r\n default: []\r\n });\r\n }\r\n }\r\n return this.#cache[key];\r\n }\r\n\r\n loadSystem = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n if (!configuration?.systemColumn) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '8b8050ca-1f44-4860-bad3-20e646c0d68f',\r\n key: configuration.key\r\n });\r\n if(!this.#cache[key]) {\r\n if(configuration?.storage === 'server') {\r\n this.#cache[key] = this.settingService.createServer<SdGeneratedColumn[]>(key, {\r\n args: configuration?.systemColumn?.args,\r\n default: []\r\n });\r\n } else {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: configuration?.storage,\r\n args: configuration?.systemColumn?.args,\r\n default: []\r\n });\r\n }\r\n }\r\n return this.#cache[key];\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ChangeDetectorRef, Input, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { SdGeneratedColumnService } from '../../services/generated-column/generated-column.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdGeneratedColumn } from '../../services/generated-column/generated-column.model';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdSideDrawer } from '@sd-angular/core/side-drawer';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-dynamic-column',\r\n templateUrl: './dynamic-column.component.html',\r\n styleUrls: ['./dynamic-column.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDynamicColumn implements OnInit, OnDestroy {\r\n @ViewChild(SdSideDrawer) sideDrawer: SdSideDrawer;\r\n @Input() gridOption: SdGridMaterialOption;\r\n systemColumns: SdGeneratedColumn[];\r\n columns: SdGeneratedColumn[];\r\n #subscription = new Subscription();\r\n columnTypes = ['string', 'number', 'bool', 'date', 'datetime', 'time', 'values', 'children', 'children-col'];\r\n form = new FormGroup({});\r\n isDetail = false;\r\n detail: SdGeneratedColumn;\r\n originColumns: SdGridMaterialColumn[] = [];\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private generatedColumnService: SdGeneratedColumnService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (systemSetting) {\r\n this.#subscription?.add(systemSetting.observer.subscribe(columns => {\r\n this.systemColumns = columns;\r\n }));\r\n }\r\n if (setting) {\r\n this.#subscription?.add(setting.observer.subscribe(columns => {\r\n this.columns = columns;\r\n }));\r\n }\r\n this.originColumns = this.gridOption.columns.filter(e => e.type !== 'children' && e.type !== 'children-col');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onDetail = (column?: SdGeneratedColumn) => {\r\n this.detail = column || {\r\n field: uuid.v4(),\r\n title: '',\r\n type: 'string',\r\n isSystem: false,\r\n useTemplate: false\r\n };\r\n this.form.markAsUntouched();\r\n this.form.markAsPristine();\r\n this.isDetail = true;\r\n }\r\n\r\n onSave = () => {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (this.detail.isSystem) {\r\n if (!this.detail.id) {\r\n systemSetting.set([...this.systemColumns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n systemSetting.set([...this.systemColumns]);\r\n }\r\n } else {\r\n if (!this.detail.id) {\r\n setting.set([...this.columns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n setting.set([...this.columns]);\r\n }\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdMaterialCellDefDirective } from '../../directives/sd-material-cell-def.directive';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() sdId: string;\r\n @Input() value: any;\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\r\n @Input() cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n @Input() idx: number;\r\n constructor(\r\n ) { }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn, SdGridMaterialColumnValues } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-editor',\r\n templateUrl: './desktop-cell-editor.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellEditor {\r\n @Input() sdId: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n\r\n onChange = (selected: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n this.column?.editor?.change?.(this.item, selected);\r\n }\r\n\r\n editorOnAdd = () => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.add?.(this.item);\r\n }\r\n }\r\n\r\n editorOnEdit = (option: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.edit?.(option, this.item);\r\n }\r\n }\r\n\r\n editorOnDelete = (option: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.delete?.(option, this.item);\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\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 #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 // const { sdId, editorHandlerColumn, ...remain } = item;\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 item.sdId = hash(remain);\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 return item.editorHandlerRow;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorValidate'\r\n})\r\nexport class SdEditorValidatePipe implements PipeTransform {\r\n #previous: Date;\r\n #delay = 200; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện validate\r\n async transform(sdId: string, item: SdItem, items: SdItem[], gridOption: SdGridMaterialOption): Promise<string> {\r\n const { editor } = gridOption;\r\n if (!editor.validate) {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n if(editor.type === 'popup') {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n if (editor.type === 'focus' && !item.editorStatus) {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n this.#previous = new Date();\r\n await new Promise(resolve => setTimeout(resolve, this.#delay));\r\n const now = new Date();\r\n const dif = now.getTime() - this.#previous.getTime();\r\n if (dif < this.#delay) {\r\n return;\r\n }\r\n const result = editor.validate(item, items?.indexOf(item));\r\n if (result instanceof Promise) {\r\n item.editorErrorMessage = await result;\r\n return;\r\n } else {\r\n item.editorErrorMessage = result;\r\n return;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\n@Pipe({\r\n name: 'sdStyleRowCss'\r\n})\r\nexport class SdStyleRowCss implements PipeTransform {\r\n transform(item: any, gridOption: SdGridMaterialOption) {\r\n return gridOption?.style?.rowCss?.(item) || {};\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-editor-validation',\r\n templateUrl: './desktop-editor-validation.component.html',\r\n styleUrls: ['./desktop-editor-validation.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopEditorValidation {\r\n @Input() sdId: string;\r\n @Input() item: any;\r\n @Input() items: any[];\r\n @Input() gridOption: SdGridMaterialOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { 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 @Input() value: any;\r\n @Input() columnFilter: {\r\n [key: string]: any\r\n } = {};\r\n @Input() column: SdGridMaterialColumn;\r\n @Output() filterChange = new EventEmitter();\r\n constructor(\r\n ) { }\r\n\r\n ngOnInit() {\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 onFilterChange = () => {\r\n this.filterChange.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdItem, selection: SdGridMaterialSelection): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.actions = rowData.actions || [];\r\n if (!actions?.length) {\r\n rowData.selectable = true;\r\n return rowData.selectable;\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n let flag = false;\r\n let hasGroup = false;\r\n for (const childAction of action.children) {\r\n const { hidden, isGrouped } = childAction;\r\n const key = hash(childAction);\r\n if (isGrouped) {\r\n hasGroup = true;\r\n }\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n flag = true;\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n flag = true;\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n if (flag) {\r\n rowData.actions.push(hash(action));\r\n if (hasGroup) {\r\n groupedActions.push(hash(action));\r\n }\r\n }\r\n } else {\r\n const { hidden, isGrouped } = action;\r\n const key = hash(action);\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.selectable = !!rowData.actions.length;\r\n if (!rowData.selectable || !groupedActions.length || rowData?.sdGroup?.items?.length) {\r\n return rowData.selectable;\r\n }\r\n // Đối với trường hợp grouped, tuy selectable là true nhưng vẫn ẩn đi checkbox\r\n // nếu các action đều thuộc groupedActions và rowData ko phải là dòng group\r\n return rowData.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-quick-action',\r\n templateUrl: './quick-action.component.html',\r\n styleUrls: ['./quick-action.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdGridQuickAction {\r\n @Input() gridOption: SdGridMaterialOption;\r\n @Input() selectedItems: any[];\r\n @Output() clear = new EventEmitter();\r\n constructor(\r\n ) { }\r\n onClear = () => {\r\n this.clear.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdCellView } from '../models/grid-cell.model';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\r\n@Pipe({\r\n name: 'cellView'\r\n})\r\nexport class SdCellViewPipe implements PipeTransform {\r\n #maxSecond = 60;\r\n #maxMinute = this.#maxSecond * 60;\r\n #maxHour = this.#maxMinute * 24;\r\n #maxDay = this.#maxHour * 30;\r\n #maxMonth = this.#maxHour * 365;\r\n #isMobileOrTablet = false;\r\n constructor(\r\n deviceService: DeviceDetectorService,\r\n private utilityService: SdUtilityService,\r\n private columnValuesPipe: SdColumnValuesPipe) {\r\n this.#isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n async transform(\r\n value: any,\r\n rowData: any,\r\n column: SdGridMaterialColumn,\r\n gridOption: SdGridMaterialOption,\r\n key: string): 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 result.display.value = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n if (column.type === 'datetime' && result.display.value) {\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 }\r\n }\r\n }\r\n if (column.type === 'time') {\r\n result.display.value = Date.toFormat(value, 'HH:mm');\r\n }\r\n if (column.type === 'values') {\r\n result.display.value = await this.columnValuesPipe.transform(value, column);\r\n } else if (column.type === 'number' && Number.isNumber(value)) {\r\n result.display.value = Number.toVNCurrency(value);\r\n }\r\n if (column.type === 'bool') {\r\n const { option } = column;\r\n if(value !== undefined && value !== null && value !== '') {\r\n result.display.value = value === true ? (option?.displayOnTrue || 'True') : (option?.displayOnFalse || 'False');\r\n } else {\r\n result.display.value = null;\r\n }\r\n }\r\n }\r\n if (displayOnEmpty) {\r\n let values = [null, undefined, ''];\r\n if (typeof (displayOnEmpty) === 'object') {\r\n const { display, emptyValues } = displayOnEmpty;\r\n values = [null, undefined, '', ...emptyValues];\r\n if (values.includes(result.display.value)) {\r\n if (typeof (display) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = display(rowData, column);\r\n } else {\r\n result.display.hasHtml = true;\r\n result.display.html = `<div class=\"T16R text-black400\">--</div>`;\r\n }\r\n }\r\n } else {\r\n if (values.includes(result.display.value)) {\r\n if (typeof (displayOnEmpty) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = displayOnEmpty(rowData, column);\r\n } else {\r\n result.display.hasHtml = true;\r\n result.display.html = `<div class=\"T16R text-black400\">--</div>`;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // Badge\r\n if ((column.type === 'string' || column.type === 'number' || column.type === 'values') && column.badge) {\r\n result.badge = {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n } else if (column.type === 'bool') {\r\n result.badge = {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: !!value ? 'success' : 'danger',\r\n icon: null\r\n };\r\n }\r\n // Tooltip\r\n if (typeof (tooltip) === 'function') {\r\n result.tooltip = tooltip(value, rowData);\r\n }\r\n // Clickable\r\n if (typeof (click) === 'function') {\r\n result.click = () => click(value, rowData);\r\n }\r\n return result;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridMaterialItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdGroup'\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: any[], gridOption: SdGridMaterialOption): SdGridMaterialItem[] {\r\n const { group } = gridOption;\r\n if (!group) {\r\n return items;\r\n }\r\n const { fields, htmlTemplate } = group;\r\n if (!fields?.length) {\r\n return items;\r\n }\r\n const groupItem: {\r\n [key: string]: SdGridMaterialItem[]\r\n } = {};\r\n for (const item of items) {\r\n let obj = {};\r\n for (const field of fields) {\r\n obj = {\r\n ...obj,\r\n ...(item[field] ?? { [field]: item[field] })\r\n };\r\n }\r\n const key = hash(obj);\r\n if (!groupItem[key]) {\r\n groupItem[key] = [];\r\n }\r\n groupItem[key].push(item);\r\n }\r\n const results: SdGridMaterialItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n results.push({\r\n sdGroup: {\r\n items: groupItem[key],\r\n htmlTemplate: htmlTemplate(groupItem[key])\r\n }\r\n });\r\n for (const item of groupItem[key]) {\r\n results.push(item);\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Injectable, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdGridMaterial } from './grid-material.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { CdkTableModule, CdkColumnDef } from '@angular/cdk/table';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { SdCommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { SdCommandDisablePipe } from './pipes/command-disable.pipe';\r\nimport { SdCommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { SdCommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdColumnHtmlTemplatePipe } from './pipes/column-html-template.pipe';\r\nimport { SdDesktopCellView } from './components/desktop-cell-view/desktop-cell-view.component';\r\nimport { SdColumnTransformPipe } from './pipes/column-transform.pipe';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SdFilterExternalPipe } from './pipes/filter-external.pipe';\r\nimport { SdFilterColumnPipe } from './pipes/filter-column.pipe';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdPopupFilter } from './components/popup-filter/popup-filter.component';\r\n\r\nimport { SdGridFilterService } from './services/grid-filter.service';\r\nimport { SdDesktopCellChildrenView } from './components/desktop-cell-children-view/desktop-cell-children-view.component';\r\nimport { SdColumnChildrenFilterPipe } from './pipes/column-children-filter.pipe';\r\nimport { SdColumnTitlePipe } from './pipes/column-title.pipe';\r\nimport { SdDesktopCommand } from './components/desktop-command/desktop-command.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdColumnBadgePipe } from './pipes/column-badge.pipe';\r\nimport { SdGridConfigurationResultPipe } from './pipes/grid-configuration-result.pipe';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdPopupGridConfiguration } from './components/popup-grid-configuration/popup-grid-configuration.component';\r\nimport { SdGridConfigurationService } from './services/grid-configuration.service';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { SdColumnTooltipPipe } from './pipes/column-tooltip.pipe';\r\nimport { SdSelectionActionFilterPipe } from './pipes/selection-action-filter.pipe';\r\nimport { SdSelectionDisablePipe } from './pipes/selection-disable.pipe';\r\nimport { SdSelectionVisibleSelectAllPipe } from './pipes/selection-visible-select-all.pipe';\r\nimport { SdDynamicColumn } from './components/dynamic-column/dynamic-column.component';\r\nimport { SdGeneratedColumnService } from './services/generated-column/generated-column.service';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdDesktopCellEditor } from './components/desktop-cell-editor/desktop-cell-editor.component';\r\nimport { SdEditorHandlerRowPipe } from './pipes/editor-handler-row.pipe';\r\nimport { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';\r\nimport { SdEditorValidatePipe } from './pipes/editor-validate.pipe';\r\nimport { SdStyleRowCss } from './pipes/style-row-css.pipe';\r\nimport { SdDesktopEditorValidation } from './components/desktop-editor-validation/desktop-editor-validation.component';\r\nimport { SdColumnInlineFilter } from './components/column-inline-filter/column-inline-filter.component';\r\nimport { SdSelectionVisiblePipe } from './pipes/selection-visible.pipe';\r\nimport { SdGridQuickAction } from './components/quick-action/quick-action.component';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdCellViewPipe } from './pipes/cell-view.pipe';\r\nimport { SdGroupPipe } from './pipes/sd-group.pipe';\r\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 ],\r\n declarations: [\r\n SdGridQuickAction,\r\n SdDesktopCell,\r\n SdDesktopCellEditor,\r\n SdDesktopEditorValidation,\r\n SdDesktopCellView,\r\n SdDesktopCellChildrenView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdGridMaterial,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdPopupExport,\r\n SdPopupGridConfiguration,\r\n SdGridFilter,\r\n SdPopupFilter,\r\n SdDynamicColumn,\r\n\r\n // Pipes\r\n SdGridConfigurationResultPipe,\r\n SdColumnChildrenFilterPipe,\r\n SdColumnTitlePipe,\r\n SdCommandFilterPipe,\r\n SdCommandDisablePipe,\r\n SdCommandIconPipe,\r\n SdCommandTitlePipe,\r\n SdColumnValuesPipe,\r\n SdColumnHtmlTemplatePipe,\r\n SdColumnTransformPipe,\r\n SdColumnTooltipPipe,\r\n SdColumnBadgePipe,\r\n SdFilterColumnPipe,\r\n SdFilterExternalPipe,\r\n SdSelectionActionFilterPipe,\r\n SdSelectionVisiblePipe,\r\n SdSelectionDisablePipe,\r\n SdSelectionVisibleSelectAllPipe,\r\n SdEditorHandlerRowPipe,\r\n SdEditorHandlerColumnPipe,\r\n SdEditorValidatePipe,\r\n SdStyleRowCss,\r\n SdCellViewPipe,\r\n SdGroupPipe\r\n ],\r\n exports: [\r\n SdGridMaterial,\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdMaterialSubInformationDefDirective\r\n ],\r\n providers: [\r\n DatePipe,\r\n DecimalPipe,\r\n CdkColumnDef,\r\n SdGridFilterService,\r\n SdGridConfigurationService,\r\n SdGeneratedColumnService,\r\n SdColumnValuesPipe,\r\n SdEditorHandlerColumnPipe,\r\n {\r\n provide: MatPaginatorIntl, useClass: MatPaginatorIntlCro\r\n }\r\n ]\r\n})\r\nexport class SdGridMaterialModule {\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-cell-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-filter-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-footer-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-empty-data-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-sub-information-def.directive.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/grid-material/src/lib/models/grid-configuration.model.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-filter.service.ts","../../../../projects/sd-core/grid-material/src/lib/components/grid-filter/grid-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-export/popup-export.component.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-configuration.service.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-values.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-html-template.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-transform.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-children-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-badge.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/grid-configuration-result.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-visible-select-all.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/services/generated-column/generated-column.service.ts","../../../../projects/sd-core/grid-material/src/lib/components/dynamic-column/dynamic-column.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-row.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-validate.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/style-row-css.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-editor-validation/desktop-editor-validation.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-visible.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/quick-action/quick-action.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/cell-view.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/sd-group.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.module.ts"],"names":["templateRef","this","Directive","args","selector","TemplateRef","Input","SdMaterialFilterDefDirective","Object","defineProperty","prototype","val","defaultShowing","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","call","__rest","s","e","t","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","apply","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","pop","push","create","__values","o","m","__read","r","ar","error","__spread","arguments","concat","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","DEFAULT_GRID_MATERIAL_CONFIG","pageSize","pages","GRID_MATERIAL_CONFIG","InjectionToken","SdPopupFilter","_this","externalFilters","externalFilter","inlineExternal","columns","columnFilter","inlineColumn","filterDefs","filterDef","inlineFilterDef","changeFilter","EventEmitter","clearFilter","open","JSON","parse","stringify","modal","close","onApply","emit","onClear","Component","template","ViewChild","Output","settingService","_prefix","key","prefix","selectedQuickFilter","quickFilters","configuration","_b","_a","hash","Injectable","SdSettingService","SdGridFilter","deviceService","gridFilterService","isVisible","_filterOptionChanges","Subject","filterChange","_subscription","Subscription","_loadDefault","_u","_v","column","field","filter","_c","_d","default","_w","_x","_e","type","from","_j","_g","_f","_h","undefined","to","_o","_l","_k","_m","_p","_y","_z","sdMaterialFilterDef","_q","_clearFilter","_s","_t","onFilter","item","popupFilter","onChangeFilter","onReset","onClearFilter","setFilter","externalFilter_1","isMobileOrTablet","isDesktop","disabled","ngAfterViewInit","add","pipe","startWith","subscribe","ngOnDestroy","unsubscribe","DeviceDetectorService","SdGridFilterService","SdPopupExport","ref","loadingService","exportService","notifyService","translateService","groups","enableCreating","selected","files","export","form","FormGroup","_getExportableColumns","gridOption","forEach","children","childColumn","map","title","description","width","_getExportableGroups","permission","hideMyTemplates","loadFiles","code","detectChanges","exportDefault","isCSV","file","group","selectedGroup","find","filesInFolder","_0","_initTemplate","fileName","sheets","isArray","sheet","name","items","fields","_2","_1","_3","_5","generateTemplate","start","finally","stop","filePath","download","uuid","generateAndUploadTemplate","generateUploadTemplate","onExport","uploadTemplate","_r","validator","validators","removeFile","confirm","translate","idx","splice","createTemplate","invalid","markAllAsTouched","some","notify","warning","templateName","onChangeGroup","listGroups","selectedOptions","validatorTemplateName","test","option","ngOnInit","ChangeDetectorRef","SdLoadingService","SdExportService","SdNotifyService","SdTranslateService","gridMaterialConfiguration","_COLUMNS","EDITORVALIDATION","EDITOR","SUBINFORMATION","COMMAND","SELECTION","GROUP","_cache","init","subject_1","load","_load","_get","_set","assign","remove","_remove","_default","observer","_getKey","config","hidden","origin","invisible","fixed","subject","storage","createServer","catch","console","isGeneratedColumn","col","generateConfigurationResult","sdSubInformation","fixedColumn","firstColumns","secondColumns","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","selection","commands","editor","addable","removable","visible","generatedColumn","e1","generatedColumns","includes","subColumn","e_2","colSpan","Inject","Optional","transform","valueField","displayField","remain","_prefix$1","_cache$1","values","Pipe","SdEditorHandlerColumnPipe","_visible","sdId","editorHandlerColumn","expandDetail","isExpanded","isExpanding","isSelected","sdGroup","selectable","actions","groupedActions","originItem","editorErrorMessage","editorHandlerRow","columns_1","columns_1_1","childCol","SdGridMaterial","gridConfigurationService","columnValuesPipe","editorHandlerColumnPipe","uuid.v4","localItems","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_optionChanges","isExporting","isSelectAll","exportTitle","_initCellDef","sdMaterialCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","rawColumnFilter","gridFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","_initConfiguration","paginate","showFirstLastButtons","_filterLocal","filterInfo","filterValue","toString","trim","toLowerCase","columnValue","fValue","replace","cValue","fromDate","Date","begin","toDate","end","getTime","type_1","field_1","sort","current","s1","s2","reverse","index","total","_getFilter","pageIndex","filterReq","force","isObservable","toPromise","results","handle","error_1","_render","reload","onReload","every","_updateSelectedItems","_load$1","data","_exportedItems","exportedItems","_allColumns","_allExportedColumns","_onExport","columns_2","maxItemsPerRequest","exportItems","this_1","res","mapping","totalPage","percent","Math","round","allColumns","allExportedColumns","obj","exportColumn","exportedColumn","displayOnTrue","displayOnFalse","date","transformDate","toFormat","e_7","columns_3","columns_3_1","e_6","exportItems_1","exportItems_1_1","exportCSV","exportByTemplate","max","onFilterChange","onExpand","rowData","subInformation","always","multiple","onSelect","single","onSelectAll","onClearSelection","editorStatus","sdVersion","onCreate","onAdd","addToLast","temporary","onUpdate","onSave","saving","validate","message","err_1","onCancel","idx2","idx1","onRemove","update","refreshItem","_subscription$1","debounceTime","switchMap","gridConfigurationObserver","paginator","page","sortChange","changes","drop","event","moveItemInArray","previousIndex","currentIndex","keys","animations","trigger","style","height","minHeight","visibility","transition","animate","SdGridConfigurationService","SdColumnValuesPipe","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","changeDetection","ChangeDetectionStrategy","OnPush","SdColumnTransformPipe","Number","isNumber","toVNCurrency","SdFilterExternalPipe","externalFilters_1","externalFilters_1_1","SdFilterColumnPipe","columnChildren","SdColumnChildrenFilterPipe","_isMobileOrTablet","transformValue","templateValue","SdColumnTitlePipe","dynamicTitle","SdColumnBadgePipe","badge","badgeType","color","badgeIcon","SdGridConfigurationResultPipe","SdPopupGridConfiguration","isCreatingColumn","disabledDrag","_cache$2","createColumn","mouseUp","dropTable","table","renderRows","handleMouseDown","handleMouseUp","HostListener","SdColumnTooltipPipe","tooltip","_convert","action","fontSet","click","childAction","key_1","actions_1","actions_1_1","availableActions","availableActions_1","availableActions_1_1","isGrouped","setTimeout","first","_cache$3","loadSystem","systemColumn","SdDynamicColumn","generatedColumnService","columnTypes","isDetail","originColumns","onDetail","detail","isSystem","useTemplate","markAsUntouched","markAsPristine","systemSetting","setting","id","systemColumns","_subscription$2","SdGeneratedColumnService","SdSideDrawer","onChange","change","editorOnAdd","editorOnEdit","edit","editorOnDelete","delete","SdEditorHandlerRowPipe","status","isDisabled","editable","savable","cancelable","_visible$1","SdEditorValidatePipe","_previous","_delay","now","SdStyleRowCss","rowCss","SdColumnInlineFilter","useFilterDate","hasGroup","clear","SdCellViewPipe","utilityService","_maxSecond","_maxMinute","_maxHour","_maxDay","_maxMonth","_isMobileOrTablet$1","displayOnEmpty","align","display","hasHtml","html","seconds","timeDifferent","timeDifference","emptyValues","SdUtilityService","SdGroupPipe","groupItem","items_1","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","declarations","SdGridQuickAction","SdDesktopCell","SdDesktopCellEditor","SdDesktopEditorValidation","SdDesktopCellView","SdDesktopCellChildrenView","SdDesktopCommand","SdSelectionActionFilterPipe","SdSelectionVisiblePipe","SdSelectionDisablePipe","SdSelectionVisibleSelectAllPipe","exports","providers","DatePipe","DecimalPipe","CdkColumnDef","provide","useClass"],"mappings":"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","sourcesContent":["import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialCellDef]'\r\n})\r\nexport class SdMaterialCellDefDirective {\r\n @Input() sdMaterialCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFilterDef]'\r\n})\r\nexport class SdMaterialFilterDefDirective {\r\n @Input() sdMaterialFilterDef: string;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n defaultShowing: boolean;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFooterDef]'\r\n})\r\nexport class SdMaterialFooterDefDirective {\r\n @Input() sdMaterialFooterDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialEmptyDataDef]'\r\n})\r\nexport class SdMaterialEmptyDataDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialSubInformationDef]'\r\n})\r\nexport class SdMaterialSubInformationDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface ISdGridMaterialConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[]\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_GRID_MATERIAL_CONFIG: ISdGridMaterialConfiguration = {\r\n paginate: {\r\n pageSize: 50,\r\n pages: [50, 100, 200]\r\n }\r\n};\r\n\r\nexport const GRID_MATERIAL_CONFIG = new InjectionToken<ISdGridMaterialConfiguration>('sd-grid-material.configuration');\r\n","import { Component, ViewChild, Output, EventEmitter, Input } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialExternalFilter } from '../../models/grid-filter.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\n\r\n@Component({\r\n selector: 'sd-popup-filter',\r\n templateUrl: './popup-filter.component.html',\r\n styleUrls: ['./popup-filter.component.scss']\r\n})\r\nexport class SdPopupFilter {\r\n @ViewChild('modal') modal: SdModal;\r\n @Input() externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: {\r\n [key: string]: boolean\r\n } = {};\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n columnFilter: any = {};\r\n inlineColumn: {\r\n [key: string]: boolean\r\n } = {};\r\n\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: any = {};\r\n inlineFilterDef: {\r\n [key: string]: boolean;\r\n } = {};\r\n\r\n @Output() changeFilter = new EventEmitter<{\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }>();\r\n @Output() clearFilter = new EventEmitter();\r\n constructor(\r\n ) {\r\n }\r\n\r\n open = (args: {\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }) => {\r\n const { inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = args;\r\n this.inlineColumn = JSON.parse(JSON.stringify(inlineColumn || {}));\r\n this.columnFilter = JSON.parse(JSON.stringify(columnFilter || {}));\r\n this.inlineExternal = JSON.parse(JSON.stringify(inlineExternal || {}));\r\n this.externalFilter = JSON.parse(JSON.stringify(externalFilter || {}));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(inlineFilterDef || {}));\r\n this.filterDef = JSON.parse(JSON.stringify(filterDef || {}));\r\n this.modal.open();\r\n }\r\n\r\n close = () => {\r\n this.modal.close();\r\n }\r\n\r\n onApply = () => {\r\n this.changeFilter.emit({\r\n inlineColumn: this.inlineColumn || {},\r\n columnFilter: this.columnFilter || {},\r\n inlineExternal: this.inlineExternal || {},\r\n externalFilter: this.externalFilter || {},\r\n inlineFilterDef: this.inlineFilterDef || {},\r\n filterDef: this.filterDef || {}\r\n });\r\n this.modal.close();\r\n }\r\n\r\n onClear() {\r\n this.clearFilter.emit();\r\n this.modal.close();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialFilterConfiguration } from '../models/grid-filter.model';\r\n\r\n@Injectable()\r\nexport class SdGridFilterService {\r\n #prefix = '61d22e8e-eee8-4aad-8e1c-044a532fea91';\r\n constructor(private settingService: SdSettingService) {\r\n }\r\n get = async (key: string): Promise<SdGridMaterialFilterConfiguration> => {\r\n if (!key) {\r\n return {\r\n selectedQuickFilter: null,\r\n quickFilters: [],\r\n inlineExternal: {},\r\n inlineColumn: {},\r\n inlineFilterDef: {}\r\n };\r\n }\r\n const { get } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n const configuration = await get();\r\n return {\r\n selectedQuickFilter: configuration?.selectedQuickFilter ?? null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration?.inlineExternal || {},\r\n inlineColumn: configuration?.inlineColumn || {},\r\n inlineFilterDef: configuration?.inlineFilterDef || {},\r\n };\r\n }\r\n\r\n set = async (key: string, configuration: SdGridMaterialFilterConfiguration): Promise<SdGridMaterialFilterConfiguration> => {\r\n configuration = {\r\n selectedQuickFilter: configuration?.selectedQuickFilter || null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration.inlineExternal || {},\r\n inlineColumn: configuration.inlineColumn || {},\r\n inlineFilterDef: configuration.inlineFilterDef || {}\r\n };\r\n if (!key) {\r\n return configuration;\r\n }\r\n const { set } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n key = hash({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n await set(configuration);\r\n return configuration;\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewChild, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { SdGridMaterialFilterOption, SdGridMaterialExternalFilter } from '../../models/grid-filter.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdGridFilterService } from '../../services/grid-filter.service';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\n\r\n@Component({\r\n selector: 'sd-grid-filter',\r\n templateUrl: './grid-filter.component.html',\r\n styleUrls: ['./grid-filter.component.scss']\r\n})\r\nexport class SdGridFilter implements AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupFilter) popupFilter: SdPopupFilter;\r\n isVisible = true;\r\n filter: Readonly<SdGridMaterialFilterOption>;\r\n #filterOptionChanges = new Subject<SdGridMaterialFilterOption>();\r\n @Input('filter') set _filter(filter: SdGridMaterialFilterOption) {\r\n this.filter = filter;\r\n this.isVisible = !this.filter?.disabled;\r\n this.#filterOptionChanges.next(this.filter);\r\n }\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: any = {};\r\n inlineFilterDef: {\r\n [key: string]: boolean;\r\n } = {};\r\n\r\n @Output() filterChange = new EventEmitter();\r\n #subscription = new Subscription();\r\n\r\n columnFilter: any = {};\r\n inlineColumn: {\r\n [key: string]: boolean;\r\n } = {};\r\n externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: {\r\n [key: string]: boolean;\r\n } = {};\r\n isMobileOrTablet: boolean;\r\n constructor(\r\n private deviceService: DeviceDetectorService,\r\n private gridFilterService: SdGridFilterService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.#filterOptionChanges.pipe(startWith(this.filter)).subscribe(() => {\r\n if (!this.isVisible) {\r\n this.filterChange.emit();\r\n return;\r\n }\r\n this.externalFilters = this.filter?.externalFilters || [];\r\n this.gridFilterService.get(this.filter?.key).then(configuration => {\r\n this.inlineColumn = configuration.inlineColumn;\r\n this.inlineExternal = configuration.inlineExternal;\r\n this.inlineFilterDef = configuration.inlineFilterDef;\r\n this.#loadDefault();\r\n this.filterChange.emit();\r\n });\r\n }));\r\n }\r\n\r\n #loadDefault = () => {\r\n for (const column of this.columns) {\r\n this.inlineColumn[column.field] = this.inlineColumn[column.field] ?? column?.filter?.defaultShowing;\r\n this.columnFilter[column.field] = this.columnFilter[column.field] ?? column?.filter?.default;\r\n }\r\n for (const externalFilter of this.externalFilters) {\r\n this.inlineExternal[externalFilter.field] = this.inlineExternal[externalFilter.field] ?? externalFilter?.defaultShowing;\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: this.externalFilter[externalFilter.field]?.from ?? externalFilter.default?.from ?? undefined,\r\n to: this.externalFilter[externalFilter.field]?.to ?? externalFilter.default?.to ?? undefined\r\n };\r\n } else {\r\n this.externalFilter[externalFilter.field] = this.externalFilter[externalFilter.field] ?? externalFilter.default;\r\n }\r\n }\r\n for (const filterDef of this.filterDefs) {\r\n this.inlineFilterDef[filterDef.sdMaterialFilterDef] = this.inlineFilterDef[filterDef.sdMaterialFilterDef] ?? filterDef?.defaultShowing;\r\n }\r\n }\r\n\r\n #clearFilter = () => {\r\n this.columnFilter = {};\r\n this.externalFilter = {};\r\n this.filterDef = {};\r\n for (const externalFilter of this.externalFilters) {\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: undefined,\r\n to: undefined\r\n };\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFilter = (item?: SdGridMaterialColumn | SdGridMaterialExternalFilter) => {\r\n this.filterChange.emit();\r\n }\r\n\r\n open = () => {\r\n this.popupFilter.open({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef\r\n });\r\n }\r\n\r\n onChangeFilter = (args: {\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }) => {\r\n const { inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = args;\r\n this.inlineColumn = inlineColumn;\r\n this.columnFilter = columnFilter;\r\n this.inlineExternal = inlineExternal;\r\n this.externalFilter = externalFilter;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.filterDef = filterDef;\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn,\r\n inlineExternal,\r\n quickFilters: [],\r\n inlineFilterDef,\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.emit();\r\n }\r\n\r\n onReset = () => {\r\n this.inlineColumn = {};\r\n this.columnFilter = {};\r\n this.inlineExternal = {};\r\n this.externalFilter = {};\r\n this.inlineFilterDef = {};\r\n this.filterDef = {};\r\n this.#loadDefault();\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.columnFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n quickFilters: [],\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.emit();\r\n }\r\n\r\n onClearFilter = () => {\r\n this.#clearFilter();\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.columnFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n quickFilters: [],\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.emit();\r\n }\r\n\r\n setFilter = (args: {\r\n columnFilter?: any,\r\n externalFilter?: any,\r\n filterDef?: any\r\n }) => {\r\n const { columnFilter, externalFilter, filterDef} = args;\r\n if (columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n if (externalFilter) {\r\n this.externalFilter = externalFilter;\r\n }\r\n if (filterDef) {\r\n this.filterDef = filterDef;\r\n }\r\n for (const externalFilter of this.externalFilters) {\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: this.externalFilter[externalFilter.field]?.from ?? undefined,\r\n to: this.externalFilter[externalFilter.field]?.to ?? undefined\r\n };\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, AfterViewInit, ViewChild, Output, EventEmitter, Input, ChangeDetectorRef } 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\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})\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 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 #getExportableColumns = (): SdExportColumn[] => {\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, ...(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 #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 exportDefault = (isCSV: boolean = false) => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.columns,\r\n isCSV\r\n });\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 }\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 const result = await this.#initTemplate().finally(this.loadingService.stop);\r\n if (result?.filePath) {\r\n this.exportService.download(result.filePath, `${this.gridOption?.export?.fileName || uuid}.xlsx`);\r\n }\r\n }\r\n\r\n generateAndUploadTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption?.export?.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.exportService.generateUploadTemplate({\r\n key: this.key,\r\n template: {\r\n fileName: fileName || this.gridOption?.export?.fileName,\r\n columns: this.columns.filter(e => this.selected[e.field]),\r\n sheets\r\n },\r\n group: this.selectedGroup?.code\r\n });\r\n }\r\n\r\n onExport = (file: SdExportFile) => {\r\n this.export.emit({\r\n file,\r\n columns: this.columns\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n uploadTemplate = async () => {\r\n const file = await this.exportService.uploadTemplate({\r\n key: this.key,\r\n group: this.selectedGroup?.code,\r\n validator: this.gridOption?.export?.validators\r\n });\r\n if(file) {\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n removeFile = (file: SdExportFile) => {\r\n this.notifyService.confirm(this.translateService.translate('Remove template')).then(() => {\r\n this.exportService.removeFile({\r\n key: this.key,\r\n fileName: file.fileName,\r\n group: this.selectedGroup?.code || null\r\n });\r\n const idx = this.files.indexOf(file);\r\n this.files.splice(idx, 1);\r\n this.files = [...this.files];\r\n this.ref.detectChanges();\r\n });\r\n }\r\n\r\n createTemplate = async () => {\r\n const { translate } = this.translateService;\r\n if (this.form.invalid) {\r\n this.form.markAllAsTouched();\r\n return;\r\n }\r\n if (!this.columns.some(e => this.selected[e.field])) {\r\n this.notifyService.notify.warning(translate('Please select columns'));\r\n return;\r\n }\r\n this.loadingService.start();\r\n const fileName = this.templateName + '.xlsx';\r\n try {\r\n if (this.gridOption?.export?.validators?.(fileName)) {\r\n this.notifyService.notify.warning(this.gridOption?.export?.validators(fileName));\r\n return;\r\n }\r\n const result = await this.generateAndUploadTemplate(fileName);\r\n if (result?.filePath) {\r\n const file: SdExportFile = {\r\n filePath: result.filePath,\r\n fileName: result.fileName\r\n };\r\n this.onExport(file);\r\n this.templateName = null;\r\n this.enableCreating = false;\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n }\r\n\r\n onChangeGroup = () => {\r\n this.loadFiles(this.listGroups?.selectedOptions?.selected[0]?.value);\r\n }\r\n\r\n validatorTemplateName = (val: string) => {\r\n const { translate } = this.translateService;\r\n const regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;\r\n if (!val) {\r\n return translate('Please enter your template name');\r\n }\r\n if (val.length > 50) {\r\n return translate('Template name is too long');\r\n }\r\n if (!regex.test(val)) {\r\n return translate('Template name only contains letters, numbers and spaces');\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnConfiguration, SdGridConfiguration, SdGridConfigurationCache, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { GRID_MATERIAL_CONFIG, ISdGridMaterialConfiguration } from '../models/grid-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdGridConfigurationService {\r\n #COLUMNS = {\r\n EDITORVALIDATION: 'sdEditorValidation',\r\n EDITOR: 'sdEditor',\r\n SUBINFORMATION: 'sdSubInformationAction',\r\n COMMAND: 'sdCommand',\r\n SELECTION: 'sdSelection',\r\n GROUP: 'sdGroup'\r\n };\r\n #cache: {\r\n [key: string]: SdGridConfigurationCache\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(GRID_MATERIAL_CONFIG) @Optional() public gridMaterialConfiguration: ISdGridMaterialConfiguration) {\r\n }\r\n\r\n init = (key: string, gridOption: SdGridMaterialOption) => {\r\n if (!this.#cache[key]) {\r\n const subject = new Subject<SdGridConfiguration>();\r\n this.#cache[key] = {\r\n load: this.#load(gridOption, subject),\r\n get: this.#get(gridOption),\r\n set: (configuration: SdGridConfiguration) => {\r\n configuration = this.#set(gridOption, configuration);\r\n subject.next({ ...configuration });\r\n return configuration;\r\n },\r\n remove: () => {\r\n this.#remove(gridOption)();\r\n subject.next(this.#default(gridOption));\r\n },\r\n observer: subject\r\n };\r\n }\r\n return this.#cache[key];\r\n }\r\n\r\n #getKey = (gridOption: SdGridMaterialOption) => {\r\n const prefix = 'c9e94836-6ace-4aeb-b148-4f0be63589ee';\r\n if (!gridOption?.config?.key && !gridOption?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: gridOption?.config?.key || !gridOption?.key\r\n });\r\n }\r\n\r\n #default = (gridOption: SdGridMaterialOption): SdGridConfiguration => {\r\n const columns: SdColumnConfiguration[] = gridOption?.columns?.filter(e => !e.hidden).map(e => ({\r\n origin: {\r\n field: e.field,\r\n title: e.title,\r\n width: e.width,\r\n invisible: e.invisible\r\n },\r\n invisible: e.invisible,\r\n fixed: false\r\n })) || [];\r\n return {\r\n columns\r\n };\r\n }\r\n\r\n #load = (gridOption: SdGridMaterialOption, subject: Subject<SdGridConfiguration>) => {\r\n return async () => {\r\n const get = this.#get(gridOption);\r\n const configuration = await get();\r\n subject.next({ ...configuration });\r\n };\r\n }\r\n\r\n #get = (gridOption: SdGridMaterialOption) => {\r\n return async () => {\r\n const key = this.#getKey(gridOption);\r\n if (!key) {\r\n return this.#default(gridOption);\r\n }\r\n const { columns, config } = gridOption;\r\n let configuration: SdGridConfiguration;\r\n if (config?.storage === 'server') {\r\n const { get, remove } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: config?.args\r\n });\r\n configuration = await get().catch(() => undefined);\r\n if (!configuration?.columns) {\r\n remove().catch(console.error);\r\n return this.#default(gridOption);\r\n }\r\n } else {\r\n const { get, remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: config?.storage,\r\n args: config?.args\r\n });\r\n configuration = get();\r\n if (!configuration?.columns) {\r\n remove();\r\n return this.#default(gridOption);\r\n }\r\n }\r\n\r\n configuration.columns = configuration.columns\r\n .filter(column => column.isGeneratedColumn || columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // Thêm những column mới vào storage nếu có\r\n columns.forEach(column => {\r\n const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n if (!col) {\r\n configuration.columns.push({\r\n origin: {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible,\r\n },\r\n invisible: column.invisible,\r\n fixed: false\r\n });\r\n } else {\r\n col.origin = {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible\r\n };\r\n }\r\n });\r\n return configuration;\r\n };\r\n }\r\n\r\n #set = (gridOption: SdGridMaterialOption, configuration: SdGridConfiguration) => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n if (gridOption?.config?.storage === 'server') {\r\n const { set } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: gridOption?.config?.args\r\n });\r\n set(configuration);\r\n } else {\r\n const { set } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args\r\n });\r\n set(configuration);\r\n }\r\n }\r\n return JSON.parse(JSON.stringify(configuration));\r\n }\r\n\r\n #remove = (gridOption: SdGridMaterialOption) => {\r\n return () => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n if (gridOption?.config?.storage === 'server') {\r\n const { remove } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: gridOption?.config?.args\r\n });\r\n remove();\r\n } else {\r\n const { remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args\r\n });\r\n remove();\r\n }\r\n }\r\n };\r\n }\r\n\r\n // get = async (gridOption: SdGridMaterialOption): Promise<SdGridConfiguration> => {\r\n // if (!gridOption?.key) {\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // const { key, columns } = gridOption;\r\n // const configuration: SdGridConfiguration = await this.settingService.get(this.#getKey(key)).catch(() => undefined);\r\n // if (!configuration?.columns) {\r\n // this.settingService.remove(this.#getKey(key)).catch(console.error);\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // configuration.columns = configuration.columns\r\n // .filter(column => columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // // Thêm những column mới vào storage nếu có\r\n // columns.forEach(column => {\r\n // const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n // if (!col) {\r\n // configuration.columns.push({\r\n // origin: {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible,\r\n // },\r\n // invisible: column.invisible,\r\n // fixed: false\r\n // });\r\n // } else {\r\n // col.origin = {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible\r\n // };\r\n // }\r\n // });\r\n // return configuration;\r\n // }\r\n\r\n // set = async (key: string, configuration: SdGridConfiguration): Promise<SdGridConfiguration> => {\r\n // if (key) {\r\n // this.settingService.set(this.#getKey(key), configuration);\r\n // }\r\n // return configuration;\r\n // }\r\n\r\n // remove = (key: string) => {\r\n // if (key) {\r\n // this.settingService.remove(this.#getKey(key));\r\n // }\r\n // }\r\n\r\n generateConfigurationResult = (\r\n configuration: SdGridConfiguration,\r\n gridOption: SdGridMaterialOption,\r\n sdSubInformation: SdMaterialSubInformationDefDirective) => {\r\n const result: SdGridConfigurationResult = {\r\n column: {},\r\n fixedColumn: {},\r\n firstColumns: [],\r\n secondColumns: [],\r\n firstHeaders: [],\r\n secondHeaders: [],\r\n displayedColumns: [],\r\n displayedFooters: [],\r\n multipleHeader: false\r\n };\r\n const { selection, commands, editor, group } = gridOption || {};\r\n if (editor?.addable || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITORVALIDATION);\r\n result.displayedColumns.push(this.#COLUMNS.EDITORVALIDATION);\r\n }\r\n if (selection?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (!editor?.hidden) {\r\n if (editor?.addable\r\n || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'popup' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITOR);\r\n result.displayedColumns.push(this.#COLUMNS.EDITOR);\r\n }\r\n }\r\n if (commands?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.COMMAND);\r\n result.displayedColumns.push(this.#COLUMNS.COMMAND);\r\n }\r\n if (group?.fields?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.GROUP);\r\n result.displayedColumns.push(this.#COLUMNS.GROUP);\r\n }\r\n configuration?.columns?.filter(col => !col.invisible).forEach(col => {\r\n if (col.isGeneratedColumn) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n const generatedColumn: SdGridMaterialColumn = {\r\n type: 'children',\r\n field: col.origin.field,\r\n title: col.origin.title,\r\n children: []\r\n };\r\n for (const subColumn of gridOption?.columns.filter(e1 => col.generatedColumns.includes(e1.field))) {\r\n if (subColumn.type === 'children' || subColumn.type === 'children-col') {\r\n for (const childColumn of subColumn.children) {\r\n generatedColumn.children.push({\r\n ...childColumn,\r\n colSpan: 2\r\n });\r\n }\r\n } else {\r\n generatedColumn.children.push({\r\n ...subColumn,\r\n colSpan: 2\r\n });\r\n }\r\n\r\n }\r\n result.firstColumns.push({\r\n ...generatedColumn,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n result.displayedColumns.push(col.origin.field);\r\n return;\r\n }\r\n const column = gridOption?.columns.find(e => e.field === col.origin.field);\r\n if (column) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n result.firstColumns.push({\r\n ...column,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n if (column.type === 'children-col') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n } else {\r\n result.displayedColumns.push(col.origin.field);\r\n }\r\n }\r\n });\r\n if (sdSubInformation?.templateRef) {\r\n result.firstHeaders.push(this.#COLUMNS.SUBINFORMATION);\r\n result.displayedColumns.push(this.#COLUMNS.SUBINFORMATION);\r\n }\r\n result.multipleHeader = result.secondHeaders.length > 0;\r\n // Sub infomation không thể có footer\r\n result.displayedFooters = result.displayedColumns.filter(val => val !== this.#COLUMNS.SUBINFORMATION);\r\n return result;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnValues'\r\n})\r\nexport class SdColumnValuesPipe implements PipeTransform {\r\n #prefix = 'a1e67660-8aa2-4c11-b02d-71a32188719f';\r\n #cache: {\r\n [key: string]: {\r\n result: any\r\n }\r\n } = {};\r\n transform = async (value: any, column: SdGridMaterialColumn): Promise<string> => {\r\n if (column.type !== 'values' || !column.option?.items || !column.option?.valueField || !column.option?.displayField) {\r\n return value;\r\n }\r\n const { items, valueField, displayField, ...remain } = column.option;\r\n const key = hash({\r\n prefix: this.#prefix,\r\n valueField,\r\n displayField,\r\n remain,\r\n value\r\n });\r\n if (typeof (items) === 'function') {\r\n if (!this.#cache[key]) {\r\n const values = await items(value, true);\r\n this.#cache[key] = {\r\n result: values?.find(e => e?.[valueField] === value)?.[displayField] || value\r\n };\r\n }\r\n } else {\r\n if (!this.#cache[key]) {\r\n this.#cache[key] = {\r\n result: items?.find(e => e?.[valueField] === value)?.[displayField] || value\r\n };\r\n }\r\n }\r\n return this.#cache[key].result;\r\n }\r\n}\r\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\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 #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 {\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 const key = hash(remain);\r\n if (sdId === key && 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 item.sdId = key;\r\n return true;\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n Optional,\r\n Inject,\r\n ChangeDetectorRef,\r\n ContentChildren,\r\n QueryList,\r\n OnInit,\r\n OnDestroy,\r\n EventEmitter,\r\n ContentChild\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport * as uuid from 'uuid';\r\nimport {\r\n SdGridMaterialFilterRequest\r\n} from './models/grid-filter.model';\r\nimport {\r\n SdGridMaterialOption\r\n} from './models/grid-option.model';\r\nimport {\r\n GRID_MATERIAL_CONFIG,\r\n DEFAULT_GRID_MATERIAL_CONFIG,\r\n ISdGridMaterialConfiguration\r\n} from './models/grid-configuration.model';\r\nimport { Subscription, isObservable, Observable } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdGridMaterialColumn } from './models/grid-column.model';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';\r\nimport { SdGridConfiguration } from './models/grid-config.model';\r\nimport { SdGridConfigurationService } from './services/grid-configuration.service';\r\nimport { SdGridMaterialExportColumn } from './models/grid-export.model';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { SdGridMaterialItem, SdItem } from './models/grid.model';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';\r\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 key = uuid.v4();\r\n gridConfigurationObserver: Observable<SdGridConfiguration>;\r\n gridFilter: SdGridFilter;\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\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 debounceTime(200),\r\n map(() => {\r\n this.#paginator.pageIndex = 0;\r\n return this.#getFilter();\r\n }),\r\n switchMap(filterInfo => this.#load(filterInfo, false))\r\n ).subscribe(this.#render));\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.#optionChanges.emit();\r\n option?.columns?.forEach(col => {\r\n if (col.filter?.default) {\r\n this.columnFilter[col.field] = col.filter.default;\r\n }\r\n });\r\n const configuration = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.gridConfigurationObserver = configuration.observer;\r\n configuration.load();\r\n }\r\n }\r\n\r\n gridOption: SdGridMaterialOption;\r\n localItems: any[] = [];\r\n items: SdGridMaterialItem<T>[] = [];\r\n selectedItems: T[] = [];\r\n total: number;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n // Paginate\r\n isHiddenPaginator = false;\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(paginator.page.pipe(\r\n debounceTime(200),\r\n map(this.#getFilter),\r\n switchMap(filterInfo => this.#load(filterInfo, false))\r\n ).subscribe(this.#render));\r\n }\r\n }\r\n\r\n // Sorting\r\n #sort: MatSort;\r\n @ViewChild(MatSort) set sort(sort: MatSort) {\r\n if (sort && this.#sort !== sort) {\r\n this.#sort = sort;\r\n this.#subscription.add(sort.sortChange.pipe(\r\n debounceTime(200),\r\n map(this.#getFilter),\r\n switchMap(filterInfo => this.#load(filterInfo, false))\r\n ).subscribe(this.#render));\r\n }\r\n }\r\n\r\n // Export\r\n @ViewChild(SdPopupExport) sdPopupExport: SdPopupExport;\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective) sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective) sdEmptyData: SdMaterialEmptyDataDefDirective;\r\n\r\n // Cell Def\r\n @ContentChildren(SdMaterialCellDefDirective) sdCellDefs = new QueryList<SdMaterialCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n\r\n // Footer Def\r\n @ContentChildren(SdMaterialFooterDefDirective) sdFooterDefs = new QueryList<SdMaterialFooterDefDirective>();\r\n footerDef: {\r\n [column: string]: SdMaterialFooterDefDirective\r\n } = {};\r\n hasFooter = false;\r\n\r\n // Filter Def\r\n @ContentChildren(SdMaterialFilterDefDirective) sdFilterDefs = new QueryList<SdMaterialFilterDefDirective>();\r\n filterDefs: SdMaterialFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnFilter: {\r\n [key: string]: any\r\n } = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #optionChanges = new EventEmitter();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(GRID_MATERIAL_CONFIG) @Optional() public configuration: ISdGridMaterialConfiguration,\r\n private gridConfigurationService: SdGridConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private columnValuesPipe: SdColumnValuesPipe,\r\n private editorHandlerColumnPipe: SdEditorHandlerColumnPipe) {\r\n }\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.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(this.#optionChanges.pipe(\r\n startWith({}),\r\n debounceTime(200),\r\n map(this.#getFilter),\r\n switchMap(filterInfo => this.#load(filterInfo, true))\r\n ).subscribe(this.#render));\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #initCellDef = () => {\r\n this.cellDef = {};\r\n for (const cellDef of this.sdCellDefs) {\r\n if (cellDef.sdMaterialCellDef) {\r\n this.cellDef[cellDef.sdMaterialCellDef] = cellDef;\r\n }\r\n }\r\n }\r\n\r\n #initFilterDef = () => {\r\n this.filterDefs = [];\r\n for (const filterDef of this.sdFilterDefs) {\r\n this.filterDefs.push(filterDef);\r\n }\r\n }\r\n\r\n #initFooterDef = () => {\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdMaterialFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdMaterialFooterDef] = footerDef;\r\n }\r\n }\r\n }\r\n\r\n #filterExportInfo = (pageNumber: number, pageSize: number): SdGridMaterialFilterRequest => {\r\n return {\r\n rawColumnFilter: (this.gridOption?.filter?.inlineColumn ? this.columnFilter : this.gridFilter?.columnFilter) || {},\r\n rawExternalFilter: this.gridFilter?.externalFilter || {},\r\n rawFilterDef: this.gridFilter?.filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber,\r\n pageSize,\r\n isExported: true\r\n };\r\n }\r\n\r\n #initConfiguration = (option: SdGridMaterialOption) => {\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize: option?.paginate?.pageSize ?? this.configuration?.paginate?.pageSize ?? DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.configuration?.paginate?.pages ?? DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false\r\n };\r\n return option;\r\n }\r\n\r\n #filterLocal = (localItems: any[], filterInfo: SdGridMaterialFilterRequest) => {\r\n const { columns } = this.gridOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(item => {\r\n for (const column of columns) {\r\n const { field, type } = column;\r\n const filterValue: string = (rawColumnFilter[field] || '').toString().trim().toLowerCase();\r\n const columnValue: string = (item[field] || '').toString().trim().toLowerCase();\r\n if (filterValue) {\r\n if (!columnValue && type !== 'datetime' && type !== 'date' && type !== 'time') {\r\n return false;\r\n }\r\n if (type === 'string') {\r\n if (columnValue.indexOf(filterValue) === -1) {\r\n return false;\r\n }\r\n } else if (type === 'values') {\r\n if (columnValue !== filterValue) {\r\n return false;\r\n }\r\n } else if (type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (type === 'datetime' || type === 'date' || type === 'time') {\r\n const from = rawColumnFilter[field]?.from ?? rawColumnFilter[field];\r\n const to = rawColumnFilter[field]?.to ?? rawColumnFilter[field];\r\n const fromDate = Date.begin(from);\r\n const toDate = Date.end(to);\r\n if (fromDate && toDate) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n if (new Date(columnValue).getTime() < fromDate.getTime() || new Date(columnValue).getTime() >= toDate.getTime()) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (orderBy && orderDirection) {\r\n const column = columns.find(e => e.field === orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((current, next) => {\r\n if (type === 'number') {\r\n return (current[field] || 0) - (next[field] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(current[field] || '').getTime();\r\n const d2 = new Date(current[field] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (current[field] || '').toString();\r\n const s2 = (next[field] || '').toString();\r\n if (s1 > s2) {\r\n return 1;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (orderDirection === 'desc') {\r\n items.reverse();\r\n }\r\n }\r\n }\r\n return {\r\n items: items.filter((item, index) => {\r\n return index >= pageNumber * pageSize\r\n && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length\r\n };\r\n }\r\n\r\n #getFilter = (): SdGridMaterialFilterRequest => ({\r\n rawColumnFilter: (this.gridOption?.filter?.inlineColumn ? this.columnFilter : this.gridFilter?.columnFilter) || {},\r\n rawExternalFilter: this.gridFilter?.externalFilter || {},\r\n rawFilterDef: this.gridFilter?.filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber: this.#paginator?.pageIndex || 0,\r\n pageSize: this.#paginator?.pageSize || this.gridOption?.paginate?.pageSize || 50\r\n })\r\n\r\n #load = async (filterReq: SdGridMaterialFilterRequest, force: boolean = true): Promise<{ items: any[], total: number }> => {\r\n this.isLoading = true;\r\n try {\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterReq);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n if (force) {\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 }\r\n return this.#filterLocal(this.localItems, filterReq);\r\n }\r\n } catch (error) {\r\n this.notifyService.handle.error(error);\r\n } finally {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n #render = async (args: { items: any[], total: number }) => {\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n // this.isHiddenPaginator = this.filterInfo.pageNumber === 0 && this.total <= this.filterInfo.pageSize;\r\n this.items.forEach((item: SdItem) => {\r\n item.originItem = { ...item };\r\n });\r\n await this.gridOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n\r\n reload = async (force: boolean = true) => {\r\n const data = await this.#load(this.#getFilter(), force);\r\n this.#render(data);\r\n }\r\n\r\n #exportedItems = async (pageNumber: number = 0, pageSize: number = 10000) => {\r\n if (this.gridOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n if (Array.isArray(result)) {\r\n return result;\r\n }\r\n if (isObservable<any[]>(result)) {\r\n result = result.toPromise();\r\n }\r\n if (isObservable<{ items: any[], total: number }>(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n const filterInfo = this.#filterExportInfo(pageNumber, pageSize);\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterInfo);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof (this.gridOption.items) === 'function') {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n exportedItems = await results;\r\n } else {\r\n exportedItems = results;\r\n }\r\n } else {\r\n exportedItems = this.gridOption.items;\r\n }\r\n return this.#filterLocal(exportedItems, filterInfo);\r\n }\r\n }\r\n }\r\n\r\n drop(event: CdkDragDrop<string[]>, columns: string[]) {\r\n moveItemInArray(columns, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n #allColumns = (): SdGridMaterialColumn[] => {\r\n const columns: SdGridMaterialColumn[] = [];\r\n this.gridOption.columns.filter(e => !e.export?.disabled).forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns;\r\n }\r\n\r\n #allExportedColumns = (): SdGridMaterialExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n }\r\n\r\n #onExport = async (args: { file: SdExportFile, columns: SdExportColumn[], isCSV: boolean }) => {\r\n try {\r\n const { file, columns, isCSV } = args;\r\n const pageSize = this.gridOption?.export?.maxItemsPerRequest || 1000;\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 while (pageNumber * pageSize < total) {\r\n const res = await this.#exportedItems(pageNumber, pageSize);\r\n if ('items' in res) {\r\n exportItems = res.items;\r\n total = res.total;\r\n } else {\r\n exportItems = res;\r\n // total = exportItems.length;\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\r\n const totalPage = total / pageSize;\r\n const percent = Math.round(pageNumber * 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 if(transform instanceof Promise) {\r\n obj[column.field] = await transform;\r\n } else {\r\n obj[column.field] = transform;\r\n }\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:ss');\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:ss');\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 pageNumber++;\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 const { translate } = this.translateService;\r\n if (!args.isCSV && this.gridOption.export.max && this.total > this.gridOption.export.max) {\r\n this.notifyService.confirm(translate(`Total rows reach limit, do you want to export CSV`)).then(() => {\r\n args.isCSV = true;\r\n this.#onExport(args);\r\n });\r\n return;\r\n }\r\n this.#onExport(args);\r\n }\r\n\r\n onFilterChange = () => {\r\n this.#paginator.pageIndex = 0;\r\n this.reload(false);\r\n }\r\n\r\n onExpand = async (rowData: SdGridMaterialItem<T>) => {\r\n if (this.gridOption.subInformation?.always) {\r\n return;\r\n }\r\n if (rowData.isExpanding) {\r\n return;\r\n }\r\n if (rowData.isExpanded) {\r\n rowData.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.subInformation?.onExpand?.(rowData);\r\n if (!this.gridOption.subInformation?.multiple) {\r\n this.items.forEach(item => item.isExpanding = item.isExpanded = false);\r\n }\r\n if (data instanceof Promise) {\r\n rowData.isExpanding = true;\r\n data.then(res => {\r\n rowData.expandDetail = res;\r\n rowData.isExpanded = true;\r\n }).finally(() => rowData.isExpanding = false);\r\n } else {\r\n rowData.expandDetail = data;\r\n rowData.isExpanded = true;\r\n }\r\n }\r\n\r\n onSelect = (rowData: SdGridMaterialItem<T>) => {\r\n if (rowData?.sdGroup?.items?.length) {\r\n rowData?.sdGroup?.items.forEach(e => e.isSelected = rowData.isSelected);\r\n this.gridOption.selection?.onSelect?.(rowData, this.items.filter(e => e.isSelected));\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.gridOption.selection?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => e.isSelected = false);\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selection?.onSelect?.(rowData, this.items.filter(e => e.isSelected));\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n }\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.selectable && (!this.gridOption?.selection?.actions?.length || e.actions?.length)) {\r\n e.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.gridOption.selection?.onSelectAll?.(this.items.filter(e => e.isSelected));\r\n this.#updateSelectedItems();\r\n }\r\n\r\n onClearSelection = (items?: SdGridMaterialItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => e.isSelected = false);\r\n this.#updateSelectedItems();\r\n }\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedItems = this.items.filter(item => item.isSelected)\r\n .map(item => {\r\n const {\r\n isSelected,\r\n isExpanded,\r\n isExpanding,\r\n expandDetail,\r\n editorErrorMessage,\r\n editorHandlerColumn,\r\n editorHandlerRow,\r\n editorStatus,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n // Giữ lại các trường thông tin cho selectable (action, groupedAction, sdGroup, selectable)\r\n ...result\r\n } = item;\r\n return result;\r\n }) as T[];\r\n this.ref.detectChanges();\r\n }\r\n\r\n clearFilter = () => {\r\n this.gridFilter?.onClearFilter();\r\n }\r\n\r\n setFilter = (args: {\r\n columnFilter: any,\r\n externalFilter: any,\r\n filterDef: any\r\n }) => {\r\n this.gridFilter?.setFilter(args);\r\n }\r\n\r\n onCreate = () => {\r\n const { type, editor, columns } = this.gridOption;\r\n if (!editor?.addable) {\r\n return;\r\n }\r\n const item: SdGridMaterialItem = {};\r\n // Gán giá trị mặc định\r\n columns.forEach(column => {\r\n if (column.type === 'values') {\r\n item[column.field] = '';\r\n } else if (column.type === 'bool') {\r\n item[column.field] = true;\r\n } else if (column.type === 'number') {\r\n item[column.field] = null;\r\n }\r\n });\r\n if (type === 'local') {\r\n editor.onAdd?.(item, this.localItems);\r\n } else {\r\n editor.onAdd?.(item, this.items);\r\n }\r\n // Đưa item lên dòng đầu tiên nếu type khác popup\r\n if (editor.type !== 'popup') {\r\n if (editor.addToLast) {\r\n if (type === 'local') {\r\n this.localItems = [...this.localItems, item];\r\n }\r\n this.items = [...this.items, item];\r\n } else {\r\n if (type === 'local') {\r\n this.localItems = [item, ...this.localItems];\r\n }\r\n this.items = [item, ...this.items];\r\n }\r\n }\r\n item.editorStatus = 'create';\r\n item.editorHandlerRow = {\r\n temporary: { ...item }\r\n };\r\n }\r\n onUpdate = (item: SdItem) => {\r\n const { editor } = this.gridOption;\r\n item.editorStatus = 'update';\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n temporary: { ...item }\r\n };\r\n // this.generateEditorHanlder(item);\r\n if (editor.type === 'popup') {\r\n // Xử lý case popup\r\n // this.sdGridPopupEditor.open(item, columns, isModified);\r\n }\r\n this.ref.detectChanges();\r\n }\r\n onSave = async (item: SdGridMaterialItem<T>) => {\r\n if (item.editorHandlerRow.saving) {\r\n return;\r\n }\r\n const { editor } = this.gridOption;\r\n try {\r\n item.editorHandlerRow.saving = true;\r\n if (editor.validate) {\r\n const result = editor.validate(item, this.items.indexOf(item));\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n throw message;\r\n }\r\n } else {\r\n if (result) {\r\n throw result;\r\n }\r\n }\r\n }\r\n if (editor.onSave) {\r\n const result = editor.onSave(item);\r\n if (result instanceof Promise) {\r\n await result;\r\n }\r\n }\r\n\r\n if (item.editorStatus === 'create' && editor.type === 'popup') {\r\n if (this.gridOption.type === 'local') {\r\n this.items.splice(0, 0, item);\r\n }\r\n // this.viewItems.splice(0, 0, item);\r\n }\r\n\r\n item.editorStatus = undefined;\r\n // this.generateEditorHanlder(item);\r\n } catch (err) {\r\n this.notifyService.notify.warning(err);\r\n } finally {\r\n item.editorHandlerRow.saving = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n onCancel = (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.localItems.indexOf(item);\r\n this.localItems.splice(idx2, 1);\r\n this.localItems = [...this.localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n if (this.gridOption.type === 'local') {\r\n editor?.onCancel?.(item, this.localItems);\r\n } else {\r\n editor?.onCancel?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n if (editor.type === 'focus') {\r\n if (item.editorStatus === 'create') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.localItems.indexOf(item);\r\n this.localItems.splice(idx2, 1);\r\n this.localItems = [...this.localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n } else {\r\n Object.assign(item, item.editorHandlerRow.temporary);\r\n }\r\n }\r\n item.editorStatus = undefined;\r\n this.ref.detectChanges();\r\n }\r\n onRemove = (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?.onRemove?.(item, this.localItems);\r\n } else {\r\n editor?.onRemove?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n }\r\n\r\n add = (idx: number, item: T) => {\r\n if (this.items.length > idx) {\r\n this.items.splice(idx, 0, item);\r\n this.items = [...this.items];\r\n } else {\r\n this.items = [...this.items, item];\r\n }\r\n }\r\n\r\n update = (idx: number, item: T) => {\r\n if (this.items[idx]) {\r\n Object.assign(this.items[idx], item);\r\n this.items = [...this.items];\r\n }\r\n }\r\n\r\n remove = (idx: number) => {\r\n if (this.items[idx]) {\r\n this.items.splice(idx, 1);\r\n this.items = [...this.items];\r\n }\r\n }\r\n\r\n refreshItem = (idx: number) => {\r\n const item = this.items[idx];\r\n this.editorHandlerColumnPipe.transform(item.sdVersion, item, this.gridOption);\r\n }\r\n\r\n get editedItems(): (T & { editorErrorMessage: string })[] {\r\n return this.items.filter(item => {\r\n if (!item.originItem) {\r\n return true;\r\n }\r\n if (Object.keys(item.originItem).some(key => item.originItem[key] !== item[key])) {\r\n return true;\r\n }\r\n return false;\r\n }).map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n editorErrorMessage,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n ...result } = item;\r\n return {\r\n ...result,\r\n editorErrorMessage\r\n } as any;\r\n });\r\n }\r\n\r\n get gridItems(): T[] {\r\n return this.items.map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n ...result } = item;\r\n return result as T;\r\n });\r\n }\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n get isEditing() {\r\n return this.items.some(e => e.editorStatus !== undefined);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand, SdGridMaterialCommandNormal } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: any, commands: SdGridMaterialCommand[]): Promise<SdGridMaterialCommand[]> {\r\n const results: SdGridMaterialCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n let flag = false;\r\n const { hidden } = command;\r\n if (hidden === undefined) {\r\n flag = true;\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n flag = true;\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n flag = true;\r\n }\r\n } else {\r\n if (!isHidden) {\r\n flag = true;\r\n }\r\n }\r\n }\r\n if (flag) {\r\n if ('children' in command) {\r\n const children: SdGridMaterialCommandNormal[] = [];\r\n for (const childCommand of command.children) {\r\n const { hidden } = childCommand;\r\n if (hidden === undefined) {\r\n children.push(childCommand);\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n if (!isHidden) {\r\n children.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...command, children });\r\n }\r\n } else {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandDisable'\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: any, command: SdGridMaterialCommand): boolean {\r\n if (!command?.disabled) {\r\n return false;\r\n }\r\n if (typeof (command.disabled) === 'boolean') {\r\n return command.disabled;\r\n }\r\n return command.disabled(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, item: any): string {\r\n if (!command?.icon) {\r\n return '';\r\n }\r\n if (typeof (command.icon) === 'string') {\r\n return command.icon;\r\n }\r\n return command.icon(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, item: any): string {\r\n if (!command?.title) {\r\n return '';\r\n }\r\n if (typeof (command.title) === 'string') {\r\n return command.title;\r\n }\r\n return command.title(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnHtmlTemplate'\r\n})\r\nexport class SdColumnHtmlTemplatePipe implements PipeTransform {\r\n private isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): string {\r\n if (typeof (column?.htmlTemplate) !== 'function') {\r\n return value;\r\n }\r\n return column?.htmlTemplate(value, rowData, this.isMobileOrTablet);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-view',\r\n templateUrl: './desktop-cell-view.component.html',\r\n styleUrls: ['./desktop-cell-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellView {\r\n @Input() sdId: string;\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\r\n@Pipe({\r\n name: 'columnTransform'\r\n})\r\nexport class SdColumnTransformPipe implements PipeTransform {\r\n constructor(private columnValuesPipe: SdColumnValuesPipe) { }\r\n async transform(value: any, rowData: any, column: SdGridMaterialColumn, key?: string): Promise<string> {\r\n if (column?.transform) {\r\n return column.transform(value, rowData);\r\n }\r\n if (column.type === 'values') {\r\n return await this.columnValuesPipe.transform(value, column);\r\n }\r\n if (column.type === 'number' && Number.isNumber(value)) {\r\n return Number.toVNCurrency(value); // this.decimalPipe.transform(value, '1.0-2');\r\n }\r\n if (column.type === 'bool') {\r\n return value === true ? (column.option?.displayOnTrue || 'True') : (column.option?.displayOnFalse || 'False');\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialExternalFilter } from '../models/grid-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdGridMaterialExternalFilter[], field?: string): SdGridMaterialExternalFilter[] {\r\n const results: SdGridMaterialExternalFilter[] = [];\r\n if (!externalFilters) {\r\n return results;\r\n }\r\n for (const filter of externalFilters) {\r\n results.push(filter);\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdGridMaterialColumn[], field?: string): SdGridMaterialColumn[] {\r\n const results: SdGridMaterialColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\r\n if (column.type === 'image') {\r\n continue;\r\n }\r\n if (column.type === 'children') {\r\n for (const columnChildren of column?.children) {\r\n if (!columnChildren.filter?.disabled) {\r\n results.push(columnChildren);\r\n }\r\n }\r\n continue;\r\n }\r\n if (!column.filter?.disabled) {\r\n results.push(column);\r\n }\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { SdGridMaterialColumnChildren } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-children-view',\r\n templateUrl: './desktop-cell-children-view.component.html',\r\n styleUrls: ['./desktop-cell-children-view.component.scss']\r\n})\r\nexport class SdDesktopCellChildrenView {\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumnChildren;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n\r\n@Pipe({\r\n name: 'columnChildrenFilter'\r\n})\r\nexport class SdColumnChildrenFilterPipe implements PipeTransform {\r\n #isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.#isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(columns: SdGridMaterialColumn[], item: any): SdGridMaterialColumn[] {\r\n return columns.filter(column => {\r\n const value = item?.[column.field];\r\n const transformValue = column.transform?.(item[column.field], item);\r\n const templateValue = column.htmlTemplate?.(item[column.field], item, this.#isMobileOrTablet);\r\n return (value !== undefined && value !== null && value !== '')\r\n || (transformValue !== undefined && transformValue !== null && transformValue !== '')\r\n || (templateValue !== undefined && templateValue !== null && templateValue !== '');\r\n });\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialChildColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnTitle'\r\n})\r\nexport class SdColumnTitlePipe implements PipeTransform {\r\n async transform(item: any, column: SdGridMaterialChildColumn): Promise<string> {\r\n if (!column?.title) {\r\n return '';\r\n }\r\n const result = column?.dynamicTitle?.(item);\r\n if (result instanceof Promise) {\r\n return (await result) || column?.title;\r\n }\r\n return result || column?.title;\r\n }\r\n}\r\n","import { 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})\r\nexport class SdDesktopCommand {\r\n @Input() item: any;\r\n @Input() commands: SdGridMaterialCommand[] = [];\r\n constructor() {\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdBadgeColor } from '@sd-angular/core/badge';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnBadge'\r\n})\r\nexport class SdColumnBadgePipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): {\r\n type: 'round' | 'circle' | 'icon',\r\n color: SdBadgeColor,\r\n icon: string\r\n } {\r\n if (column.type === 'string' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n if (column.type === 'number' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n if (column.type === 'bool') {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: !!value ? 'success' : 'danger',\r\n icon: null\r\n };\r\n }\r\n if (column.type === 'values' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridConfiguration, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../services/grid-configuration.service';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\n\r\n@Pipe({\r\n name: 'sdGridConfigurationResult'\r\n})\r\nexport class SdGridConfigurationResultPipe implements PipeTransform {\r\n constructor(private gridConfigurationService: SdGridConfigurationService) { }\r\n transform(configuration: SdGridConfiguration, gridOption: SdGridMaterialOption, sdSubInformation: SdMaterialSubInformationDefDirective): SdGridConfigurationResult {\r\n return this.gridConfigurationService.generateConfigurationResult(configuration, gridOption, sdSubInformation);\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, EventEmitter, ChangeDetectorRef, Input, HostListener } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationResult, SdGridConfiguration, SdGridConfigurationCache, SdColumnConfiguration } from '../../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { MatTable } from '@angular/material/table';\r\n// import { SdGridMaterialColumn } from '@sd-angular/core/grid-material';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-popup-grid-configuration',\r\n templateUrl: './popup-grid-configuration.component.html',\r\n styleUrls: ['./popup-grid-configuration.component.scss']\r\n})\r\nexport class SdPopupGridConfiguration implements OnInit {\r\n @Input() gridOption: SdGridMaterialOption;\r\n @Input() key: string;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdGridMaterialColumn>;\r\n readonly changes = new EventEmitter<SdGridConfigurationResult>();\r\n #cache: SdGridConfigurationCache;\r\n configuration: SdGridConfiguration;\r\n isCreatingColumn = false;\r\n selected: {\r\n [key: string]: boolean;\r\n } = {};\r\n disabledDrag = true;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n @HostListener('window:mouseup', ['$event'])\r\n mouseUp(event) {\r\n this.disabledDrag = true;\r\n }\r\n open = async () => {\r\n this.#cache = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.configuration = await this.#cache.get();\r\n this.modal.open();\r\n }\r\n\r\n onSave = () => {\r\n this.#cache.set(this.configuration);\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n }\r\n\r\n onReset = async () => {\r\n const { translate } = this.translateService;\r\n this.notifyService.confirm(translate('Reset grid configuration to default')).then(() => {\r\n this.#cache.remove();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n });\r\n }\r\n\r\n createColumn = async () => {\r\n this.selected = {};\r\n this.isCreatingColumn = true;\r\n }\r\n\r\n confirm = async () => {\r\n const generatedColumn: SdColumnConfiguration = {\r\n origin: {\r\n field: uuid.v4(),\r\n title: 'Generated',\r\n width: '300px'\r\n },\r\n fixed: false,\r\n invisible: false,\r\n title: 'Generated',\r\n width: '300px',\r\n isGeneratedColumn: true,\r\n generatedColumns: this.configuration.columns.filter(e => this.selected[e.origin?.field]).map(e => e.origin?.field)\r\n };\r\n this.configuration.columns.push(generatedColumn);\r\n this.configuration = this.#cache.set(this.configuration);\r\n this.isCreatingColumn = false;\r\n }\r\n\r\n dropTable(event: CdkDragDrop<SdGridMaterialColumn[]>) {\r\n moveItemInArray(this.configuration.columns, event.previousIndex, event.currentIndex);\r\n this.table.renderRows();\r\n }\r\n\r\n handleMouseDown() {\r\n this.disabledDrag = false;\r\n }\r\n\r\n handleMouseUp() {\r\n this.disabledDrag = true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnTooltip'\r\n})\r\nexport class SdColumnTooltipPipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): string {\r\n if (column?.tooltip) {\r\n return column.tooltip(value, rowData);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialAction, SdGridMaterialActionNormal, SdGridMaterialActionSimple } from '../models/grid-action.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdGridMaterialAction): SdGridMaterialActionSimple => {\r\n if ('children' in action) {\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n color: action.color,\r\n type: action.type,\r\n children: action.children.map(e => ({\r\n title: e.title,\r\n icon: e.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: e.fontSet,\r\n tooltip: e.tooltip,\r\n click: e.click\r\n }))\r\n };\r\n }\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n click: action.click\r\n };\r\n\r\n }\r\n transform = (selectedItems: SdItem[], actions: SdGridMaterialAction[]): SdGridMaterialActionSimple[] => {\r\n const results: SdGridMaterialAction[] = [];\r\n if (!actions?.length || !selectedItems?.length) {\r\n return [];\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n const children: SdGridMaterialActionNormal[] = [];\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.actions.includes(key))) {\r\n children.push(childAction);\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...action, children });\r\n }\r\n } else {\r\n const key = hash(action);\r\n if (selectedItems.every(e => e.actions.includes(key))) {\r\n results.push(action);\r\n }\r\n }\r\n }\r\n return results.map(result => this.#convert(result));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: SdItem[], rowData: SdItem, selection: SdGridMaterialSelection): boolean => {\r\n const { disabled, actions } = selection;\r\n if (!actions?.length) {\r\n if (!disabled) {\r\n rowData.selectable = true;\r\n return false;\r\n }\r\n rowData.selectable = !disabled(rowData, selectedItems);\r\n return !rowData.selectable;\r\n }\r\n // Lọc các action theo selectedItems hiện tại\r\n const availableActions = actions.filter(action => {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.actions.includes(key))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n } else {\r\n const key = hash(action);\r\n return selectedItems.every(e => e.actions.includes(key));\r\n }\r\n });\r\n // Kiểm tra rowData có action nào thỏa hay ko, nếu ko thì disabled\r\n for (const action of availableActions) {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n if(rowData.actions.includes(hash(childAction))) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if(rowData.actions.includes(hash(action))) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionVisibleSelectAll'\r\n})\r\nexport class SdSelectionVisibleSelectAllPipe implements PipeTransform {\r\n transform = async (items: SdItem[], selection: SdGridMaterialSelection): Promise<boolean> => {\r\n const { actions } = selection;\r\n if (!actions?.length) {\r\n return true;\r\n }\r\n if (!items.length) {\r\n return false;\r\n }\r\n if (actions.some(e => ('children' in e && e.children.some(e1 => e1.isGrouped)) || e.isGrouped)) {\r\n return false;\r\n }\r\n await new Promise(resolve => setTimeout(resolve, 500));\r\n const first = items.find(t => t.actions?.length);\r\n if (first) {\r\n for (const action of first.actions) {\r\n if (items.filter(t => t.actions?.length).every(e => e.actions.includes(action))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSetting, SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialConfigOption } from '../../models/grid-config.model';\r\nimport { SdGeneratedColumn } from './generated-column.model';\r\nimport { SdSettingServer } from '@sd-angular/core/setting';\r\n\r\n@Injectable()\r\nexport class SdGeneratedColumnService {\r\n #cache: {\r\n [key: string]: SdSetting<SdGeneratedColumn[]> | SdSettingServer<SdGeneratedColumn[]>\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService) {\r\n }\r\n\r\n load = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '260f5e94-5865-4425-8ced-b9c083c390dd',\r\n key: configuration.key\r\n });\r\n if(!this.#cache[key]) {\r\n if(configuration?.storage === 'server') {\r\n this.#cache[key] = this.settingService.createServer<SdGeneratedColumn[]>(key, {\r\n args: configuration?.args,\r\n default: []\r\n });\r\n } else {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: configuration?.storage,\r\n args: configuration?.args,\r\n default: []\r\n });\r\n }\r\n }\r\n return this.#cache[key];\r\n }\r\n\r\n loadSystem = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n if (!configuration?.systemColumn) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '8b8050ca-1f44-4860-bad3-20e646c0d68f',\r\n key: configuration.key\r\n });\r\n if(!this.#cache[key]) {\r\n if(configuration?.storage === 'server') {\r\n this.#cache[key] = this.settingService.createServer<SdGeneratedColumn[]>(key, {\r\n args: configuration?.systemColumn?.args,\r\n default: []\r\n });\r\n } else {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: configuration?.storage,\r\n args: configuration?.systemColumn?.args,\r\n default: []\r\n });\r\n }\r\n }\r\n return this.#cache[key];\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ChangeDetectorRef, Input, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { SdGeneratedColumnService } from '../../services/generated-column/generated-column.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdGeneratedColumn } from '../../services/generated-column/generated-column.model';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdSideDrawer } from '@sd-angular/core/side-drawer';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-dynamic-column',\r\n templateUrl: './dynamic-column.component.html',\r\n styleUrls: ['./dynamic-column.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDynamicColumn implements OnInit, OnDestroy {\r\n @ViewChild(SdSideDrawer) sideDrawer: SdSideDrawer;\r\n @Input() gridOption: SdGridMaterialOption;\r\n systemColumns: SdGeneratedColumn[];\r\n columns: SdGeneratedColumn[];\r\n #subscription = new Subscription();\r\n columnTypes = ['string', 'number', 'bool', 'date', 'datetime', 'time', 'values', 'children', 'children-col'];\r\n form = new FormGroup({});\r\n isDetail = false;\r\n detail: SdGeneratedColumn;\r\n originColumns: SdGridMaterialColumn[] = [];\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private generatedColumnService: SdGeneratedColumnService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (systemSetting) {\r\n this.#subscription?.add(systemSetting.observer.subscribe(columns => {\r\n this.systemColumns = columns;\r\n }));\r\n }\r\n if (setting) {\r\n this.#subscription?.add(setting.observer.subscribe(columns => {\r\n this.columns = columns;\r\n }));\r\n }\r\n this.originColumns = this.gridOption.columns.filter(e => e.type !== 'children' && e.type !== 'children-col');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onDetail = (column?: SdGeneratedColumn) => {\r\n this.detail = column || {\r\n field: uuid.v4(),\r\n title: '',\r\n type: 'string',\r\n isSystem: false,\r\n useTemplate: false\r\n };\r\n this.form.markAsUntouched();\r\n this.form.markAsPristine();\r\n this.isDetail = true;\r\n }\r\n\r\n onSave = () => {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (this.detail.isSystem) {\r\n if (!this.detail.id) {\r\n systemSetting.set([...this.systemColumns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n systemSetting.set([...this.systemColumns]);\r\n }\r\n } else {\r\n if (!this.detail.id) {\r\n setting.set([...this.columns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n setting.set([...this.columns]);\r\n }\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdMaterialCellDefDirective } from '../../directives/sd-material-cell-def.directive';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() sdId: string;\r\n @Input() value: any;\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\r\n @Input() cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n @Input() idx: number;\r\n constructor(\r\n ) { }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn, SdGridMaterialColumnValues } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-editor',\r\n templateUrl: './desktop-cell-editor.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellEditor {\r\n @Input() sdId: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n\r\n onChange = (selected: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n this.column?.editor?.change?.(this.item, selected);\r\n }\r\n\r\n editorOnAdd = () => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.add?.(this.item);\r\n }\r\n }\r\n\r\n editorOnEdit = (option: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.edit?.(option, this.item);\r\n }\r\n }\r\n\r\n editorOnDelete = (option: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.delete?.(option, this.item);\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\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 #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 // const { sdId, editorHandlerColumn, ...remain } = item;\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 item.sdId = hash(remain);\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 return item.editorHandlerRow;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorValidate'\r\n})\r\nexport class SdEditorValidatePipe implements PipeTransform {\r\n #previous: Date;\r\n #delay = 200; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện validate\r\n async transform(sdId: string, item: SdItem, items: SdItem[], gridOption: SdGridMaterialOption): Promise<string> {\r\n const { editor } = gridOption;\r\n if (!editor.validate) {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n if(editor.type === 'popup') {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n if (editor.type === 'focus' && !item.editorStatus) {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n this.#previous = new Date();\r\n await new Promise(resolve => setTimeout(resolve, this.#delay));\r\n const now = new Date();\r\n const dif = now.getTime() - this.#previous.getTime();\r\n if (dif < this.#delay) {\r\n return;\r\n }\r\n const result = editor.validate(item, items?.indexOf(item));\r\n if (result instanceof Promise) {\r\n item.editorErrorMessage = await result;\r\n return;\r\n } else {\r\n item.editorErrorMessage = result;\r\n return;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\n@Pipe({\r\n name: 'sdStyleRowCss'\r\n})\r\nexport class SdStyleRowCss implements PipeTransform {\r\n transform(item: any, gridOption: SdGridMaterialOption) {\r\n return gridOption?.style?.rowCss?.(item) || {};\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-editor-validation',\r\n templateUrl: './desktop-editor-validation.component.html',\r\n styleUrls: ['./desktop-editor-validation.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopEditorValidation {\r\n @Input() sdId: string;\r\n @Input() item: any;\r\n @Input() items: any[];\r\n @Input() gridOption: SdGridMaterialOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { 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 @Input() value: any;\r\n @Input() columnFilter: {\r\n [key: string]: any\r\n } = {};\r\n @Input() column: SdGridMaterialColumn;\r\n @Output() filterChange = new EventEmitter();\r\n constructor(\r\n ) { }\r\n\r\n ngOnInit() {\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 onFilterChange = () => {\r\n this.filterChange.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdItem, selection: SdGridMaterialSelection): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.actions = rowData.actions || [];\r\n if (!actions?.length) {\r\n rowData.selectable = true;\r\n return rowData.selectable;\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n let flag = false;\r\n let hasGroup = false;\r\n for (const childAction of action.children) {\r\n const { hidden, isGrouped } = childAction;\r\n const key = hash(childAction);\r\n if (isGrouped) {\r\n hasGroup = true;\r\n }\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n flag = true;\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n flag = true;\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n if (flag) {\r\n rowData.actions.push(hash(action));\r\n if (hasGroup) {\r\n groupedActions.push(hash(action));\r\n }\r\n }\r\n } else {\r\n const { hidden, isGrouped } = action;\r\n const key = hash(action);\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.selectable = !!rowData.actions.length;\r\n if (!rowData.selectable || !groupedActions.length || rowData?.sdGroup?.items?.length) {\r\n return rowData.selectable;\r\n }\r\n // Đối với trường hợp grouped, tuy selectable là true nhưng vẫn ẩn đi checkbox\r\n // nếu các action đều thuộc groupedActions và rowData ko phải là dòng group\r\n return rowData.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-quick-action',\r\n templateUrl: './quick-action.component.html',\r\n styleUrls: ['./quick-action.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdGridQuickAction {\r\n @Input() gridOption: SdGridMaterialOption;\r\n @Input() selectedItems: any[];\r\n @Output() clear = new EventEmitter();\r\n constructor(\r\n ) { }\r\n onClear = () => {\r\n this.clear.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdCellView } from '../models/grid-cell.model';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\r\n@Pipe({\r\n name: 'cellView'\r\n})\r\nexport class SdCellViewPipe implements PipeTransform {\r\n #maxSecond = 60;\r\n #maxMinute = this.#maxSecond * 60;\r\n #maxHour = this.#maxMinute * 24;\r\n #maxDay = this.#maxHour * 30;\r\n #maxMonth = this.#maxHour * 365;\r\n #isMobileOrTablet = false;\r\n constructor(\r\n deviceService: DeviceDetectorService,\r\n private utilityService: SdUtilityService,\r\n private columnValuesPipe: SdColumnValuesPipe) {\r\n this.#isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n async transform(\r\n value: any,\r\n rowData: any,\r\n column: SdGridMaterialColumn,\r\n gridOption: SdGridMaterialOption,\r\n key: string): 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 result.display.value = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n if (column.type === 'datetime' && result.display.value) {\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 }\r\n }\r\n }\r\n if (column.type === 'time') {\r\n result.display.value = Date.toFormat(value, 'HH:mm');\r\n }\r\n if (column.type === 'values') {\r\n result.display.value = await this.columnValuesPipe.transform(value, column);\r\n } else if (column.type === 'number' && Number.isNumber(value)) {\r\n result.display.value = Number.toVNCurrency(value);\r\n }\r\n if (column.type === 'bool') {\r\n const { option } = column;\r\n if(value !== undefined && value !== null && value !== '') {\r\n result.display.value = value === true ? (option?.displayOnTrue || 'True') : (option?.displayOnFalse || 'False');\r\n } else {\r\n result.display.value = null;\r\n }\r\n }\r\n }\r\n if (displayOnEmpty) {\r\n let values = [null, undefined, ''];\r\n if (typeof (displayOnEmpty) === 'object') {\r\n const { display, emptyValues } = displayOnEmpty;\r\n values = [null, undefined, '', ...emptyValues];\r\n if (values.includes(result.display.value)) {\r\n if (typeof (display) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = display(rowData, column);\r\n } else {\r\n result.display.hasHtml = true;\r\n result.display.html = `<div class=\"T16R text-black400\">--</div>`;\r\n }\r\n }\r\n } else {\r\n if (values.includes(result.display.value)) {\r\n if (typeof (displayOnEmpty) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = displayOnEmpty(rowData, column);\r\n } else {\r\n result.display.hasHtml = true;\r\n result.display.html = `<div class=\"T16R text-black400\">--</div>`;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // Badge\r\n if ((column.type === 'string' || column.type === 'number' || column.type === 'values') && column.badge) {\r\n result.badge = {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n } else if (column.type === 'bool') {\r\n result.badge = {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: !!value ? 'success' : 'danger',\r\n icon: null\r\n };\r\n }\r\n // Tooltip\r\n if (typeof (tooltip) === 'function') {\r\n result.tooltip = tooltip(value, rowData);\r\n }\r\n // Clickable\r\n if (typeof (click) === 'function') {\r\n result.click = () => click(value, rowData);\r\n }\r\n return result;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridMaterialItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdGroup'\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: any[], gridOption: SdGridMaterialOption): SdGridMaterialItem[] {\r\n const { group } = gridOption;\r\n if (!group) {\r\n return items;\r\n }\r\n const { fields, htmlTemplate } = group;\r\n if (!fields?.length) {\r\n return items;\r\n }\r\n const groupItem: {\r\n [key: string]: SdGridMaterialItem[]\r\n } = {};\r\n for (const item of items) {\r\n let obj = {};\r\n for (const field of fields) {\r\n obj = {\r\n ...obj,\r\n ...(item[field] ?? { [field]: item[field] })\r\n };\r\n }\r\n const key = hash(obj);\r\n if (!groupItem[key]) {\r\n groupItem[key] = [];\r\n }\r\n groupItem[key].push(item);\r\n }\r\n const results: SdGridMaterialItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n results.push({\r\n sdGroup: {\r\n items: groupItem[key],\r\n htmlTemplate: htmlTemplate(groupItem[key])\r\n }\r\n });\r\n for (const item of groupItem[key]) {\r\n results.push(item);\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Injectable, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdGridMaterial } from './grid-material.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { CdkTableModule, CdkColumnDef } from '@angular/cdk/table';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { SdCommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { SdCommandDisablePipe } from './pipes/command-disable.pipe';\r\nimport { SdCommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { SdCommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdColumnHtmlTemplatePipe } from './pipes/column-html-template.pipe';\r\nimport { SdDesktopCellView } from './components/desktop-cell-view/desktop-cell-view.component';\r\nimport { SdColumnTransformPipe } from './pipes/column-transform.pipe';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SdFilterExternalPipe } from './pipes/filter-external.pipe';\r\nimport { SdFilterColumnPipe } from './pipes/filter-column.pipe';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdPopupFilter } from './components/popup-filter/popup-filter.component';\r\n\r\nimport { SdGridFilterService } from './services/grid-filter.service';\r\nimport { SdDesktopCellChildrenView } from './components/desktop-cell-children-view/desktop-cell-children-view.component';\r\nimport { SdColumnChildrenFilterPipe } from './pipes/column-children-filter.pipe';\r\nimport { SdColumnTitlePipe } from './pipes/column-title.pipe';\r\nimport { SdDesktopCommand } from './components/desktop-command/desktop-command.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdColumnBadgePipe } from './pipes/column-badge.pipe';\r\nimport { SdGridConfigurationResultPipe } from './pipes/grid-configuration-result.pipe';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdPopupGridConfiguration } from './components/popup-grid-configuration/popup-grid-configuration.component';\r\nimport { SdGridConfigurationService } from './services/grid-configuration.service';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { SdColumnTooltipPipe } from './pipes/column-tooltip.pipe';\r\nimport { SdSelectionActionFilterPipe } from './pipes/selection-action-filter.pipe';\r\nimport { SdSelectionDisablePipe } from './pipes/selection-disable.pipe';\r\nimport { SdSelectionVisibleSelectAllPipe } from './pipes/selection-visible-select-all.pipe';\r\nimport { SdDynamicColumn } from './components/dynamic-column/dynamic-column.component';\r\nimport { SdGeneratedColumnService } from './services/generated-column/generated-column.service';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdDesktopCellEditor } from './components/desktop-cell-editor/desktop-cell-editor.component';\r\nimport { SdEditorHandlerRowPipe } from './pipes/editor-handler-row.pipe';\r\nimport { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';\r\nimport { SdEditorValidatePipe } from './pipes/editor-validate.pipe';\r\nimport { SdStyleRowCss } from './pipes/style-row-css.pipe';\r\nimport { SdDesktopEditorValidation } from './components/desktop-editor-validation/desktop-editor-validation.component';\r\nimport { SdColumnInlineFilter } from './components/column-inline-filter/column-inline-filter.component';\r\nimport { SdSelectionVisiblePipe } from './pipes/selection-visible.pipe';\r\nimport { SdGridQuickAction } from './components/quick-action/quick-action.component';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdCellViewPipe } from './pipes/cell-view.pipe';\r\nimport { SdGroupPipe } from './pipes/sd-group.pipe';\r\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 ],\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"]}