@zeedhi/teknisa-components-common 3.2.0 → 3.3.0
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.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"teknisa-components-common.es.js","sources":["../src/components/tek-breadcrumb-header/breadcrumb-header.ts","../src/components/tek-loading/loading.ts","../src/components/tek-datasource/interfaces.ts","../src/components/tek-datasource/tek-memory-datasource.ts","../src/components/tek-datasource/tek-rest-datasource.ts","../src/components/tek-grid/tek-grid-toolbar-provider/export-options/button-option.ts","../src/components/tek-grid/tek-grid-toolbar-provider/export-options/multi-option.ts","../src/error/teknisa-common-error.ts","../src/error/tek-grid-delete-rows-error.ts","../src/components/tek-grid/tek-grid-toolbar-provider/tek-grid-toolbar-provider.ts","../src/components/tek-grid/columns-searcher.ts","../src/components/tek-grid/dynamic-filter-datasource-factory.ts","../src/components/tek-grid/filter-helper.ts","../src/components/tek-grid/tek-grid-column.ts","../src/components/tek-grid/grid-filter-button.ts","../src/utils/extract-properties/extract-properties.ts","../src/utils/is-filled-object/is-filled-object.ts","../src/utils/is-nil.ts","../src/utils/report-filter/report-filter.ts","../src/components/tek-grid/grouped-data-manager.ts","../src/components/tek-grid/grouped-data-navigator.ts","../src/components/tek-grid/interfaces.ts","../src/components/tek-grid/keymap-grouped.ts","../src/components/tek-grid/tek-grid-data-editor.ts","../src/components/tek-grid/tek-grid-controller.ts","../src/components/tek-grid/tek-grid-events.ts","../src/components/tek-grid/grouped-data-selector.ts","../src/components/tek-grid/tek-grid.ts","../src/components/tek-grid/layout-options.ts","../src/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button-controller.ts","../src/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button.ts","../src/components/tek-user-info/TekUserInfoController.ts","../src/components/tek-user-info/tek-user-info.ts","../src/components/tek-user-info/tek-user-info-list.ts","../src/components/index.ts"],"sourcesContent":["import { type IBreadcrumbs, ComponentRender, type IComponentRender } from '@zeedhi/common';\nimport type { IBreadcrumbHeader } from './interfaces';\n\n/**\n * BreadcrumbHeader join breadcrumb and title\n */\nexport class BreadcrumbHeader extends ComponentRender implements IBreadcrumbHeader {\n\tpublic breadcrumb: IBreadcrumbs;\n\n\tpublic title = '';\n\n\tpublic rightSlot: IComponentRender[] = [];\n\n\tpublic constructor(props: IBreadcrumbHeader) {\n\t\tsuper(props);\n\t\tthis.breadcrumb = this.getBreadcrumbProperties(props.breadcrumb);\n\t\tthis.title = this.getInitValue('title', props.title, this.title);\n\t\tthis.rightSlot = props.rightSlot || this.rightSlot;\n\t}\n\n\tprivate getBreadcrumbProperties(breadcrumb: any): IBreadcrumbs {\n\t\treturn {\n\t\t\t...breadcrumb,\n\t\t\tname: breadcrumb.name,\n\t\t\tcomponent: 'ZdBreadcrumb',\n\t\t\tdivider: '>',\n\t\t};\n\t}\n}\n","import { Loading as ZdLoading } from '@zeedhi/common';\nimport type { ILoading } from './interfaces';\n\n// biome-ignore format: Preserve the legacy embedded GIF without rewriting a very large literal.\nconst loading = 'data:image/gif;base64,R0lGODlhlgCWAPf/AC1oxPa+ADarUdmsFEB/m0yTcjiMhEafWjFova2SNDZotX10VsOfJDlosFZnge25BnJtXTukVWVmaFh1eIuOZ1x0ZEFopHpyWGFpcS5ow+q2CVNnhmVnZvW9AW5qYUyKXUJnofW+AKWNOV9mcS9owZuGQTporlCGXbWXLmNrazxnqeKyDoGDZVFniFZ6ZNSpGJ+IPoR4Ud+wEURnnmtpYklnlll5YbGUMcagIk5njmhnZWpoZGF0aWBmbkdnmbyaKUtnlEaBfWdmZTNou0WUW5WDRFtmeGZmZ82kHqecTXqIdzRouGJmbPC6BIB2VDxnrGNmakyHYPO8AkxnkUh0qmRpZl9wZVxndmRmaVhnffS9AqmPN09ni96vEUmQWzBowC1ow2FtZVR3gl5ndFGCYEVnnF1mdGR9i1dnf7qZK4l7TnRvXOK1FD6eV8ijIG6Cgl58lF1rfEBnpFVsi1pmeo5+Sk56dz9np5OCRjaqUi5pxNarFndwWmNqZm9sYFx7a098itGnG4d6T7ikPKKLO1Rmg+e1Cr2bKVhme0GbVkpmk5mWW5GBSM+nHLiYLPG7BIp8TUKZWUFsqWJnbltmd0hnmNqtFExtm1tsgaiOOIx9TNuuE6CKPWJmbcqjH1OJb8CdJjFovlpwb+u5CzioU1aFbjdos0qYXJOPXWFwczepUnBsX8qrKuW0DD5nqdmsFUl+kTtnrDdntNKuI+OzDVRnhYuEV52HPzNqvjltuVBqkJeERNirFnVvXKSMOjVsvDmLhEJxsTloss+sJTeqUdyzGkaeWreYLmBqdjmMhDyhVvC8B49/STinVVV+YVp/bEuScq6fRj5tr8CnNUV/lUNnoGZnZkCFgTaqUVeCYTuLgz2Ig02RcUySck+QcTxpr5qQUFCPXjZsullviFh4ZNaxH0KAmEGYXFJ4oFCNcEdsoUicWpmFQkRooEFvsHt5YDepUXBvYzyKhESXWkeeWjxutcWlK250bYp+UFCQcGZoaLyeLtitFaGSR0OYV2ZmZiH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDcuMS1jMDAwIDc5LmRhYmFjYmIsIDIwMjEvMDQvMTQtMDA6Mzk6NDQgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCAyMy4wIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEMEVGRUY5RjYzRjYxMUVDQkRFNUM0MjQ5M0FFRTY2RSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEMEVGRUZBMDYzRjYxMUVDQkRFNUM0MjQ5M0FFRTY2RSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQwRUZFRjlENjNGNjExRUNCREU1QzQyNDkzQUVFNjZFIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQwRUZFRjlFNjNGNjExRUNCREU1QzQyNDkzQUVFNjZFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1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3cr155ExDjZsyDKiK8weU4R9AcAWTCgTLcyulFBrCdu7eAHITSmhEpi8gPeirJEBcGDBJR0UNpwXMUksChgfdhxyg+TJlD/eudw480cmdjnf9fxxDAnRo0l3vII6teqNZhajfs1xBILWemlrlNAAt+6NNXz/zjji9OzhGSu1Rp6RSW/RzDOaicw5esZJrqpbx4iFiynZd0mYgtiuEQuaSndMmJAzhY4E8vDjy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEYo4YQUVmjhhRhmqOGGHHbo4YcghijiiCSWaOKJKKao4oostujiizDGKOOMNNZo44045qjjjjz26OOPQAYp5JBEFmnkkUgmqSRVAQEAIfkEBQQA/wAsAAAAAJYAlgAACPEA/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufbjggACH5BAUEAP8ALAAAAAABAAEAAAgEAP8FBAA7';\n\n/**\n * Teknisa component\n */\n\nexport class Loading extends ZdLoading implements ILoading {\n\t/**\n\t * Text shown in the loading overlay.\n\t */\n\tpublic text = '';\n\n\t/**\n\t * Loading image.\n\t */\n\tpublic image = loading;\n\n\tpublic constructor(props: ILoading) {\n\t\tsuper(props);\n\t\tthis.text = this.getInitValue('text', props.text, this.text);\n\t\tthis.image = this.getInitValue('image', props.image, this.image);\n\t}\n}\n","import { IDictionary, IMemoryDatasource, IRestDatasource } from '@zeedhi/core';\n\nexport interface ITekMemoryDatasource extends IMemoryDatasource {\n\tdynamicFilter?: IDictionary<any>;\n\tsearchJoin?: IDictionary<Array<string | number>>;\n}\n\nexport interface ITekRestDatasource extends IRestDatasource {\n\tdynamicFilter?: IDictionary<any>;\n\tsearchJoin?: IDictionary<Array<string | number>>;\n}\n\nexport interface IDynamicFilterItem {\n\trelation: string;\n\toperation: string;\n\tvalue: any;\n}\n\nexport const DynamicFilterOperations: IDictionary<boolean> = {\n\tCONTAINS: true,\n\tNOT_CONTAINS: true,\n\tEQUALS: true,\n\tNOT_EQUALS: true,\n\tGREATER_THAN: true,\n\tLESS_THAN: true,\n\tGREATER_THAN_EQUALS: true,\n\tLESS_THAN_EQUALS: true,\n\tIN: true,\n\tNOT_IN: true,\n\tBETWEEN: true,\n};\n\nexport const DynamicFilterRelations: IDictionary<boolean> = {\n\tAND: true,\n\tOR: true,\n};\n","import { DatasourceFactory, IDatasource, IDictionary, MemoryDatasource, URL, Utils } from '@zeedhi/core';\nimport {\n\tDynamicFilterOperations,\n\tDynamicFilterRelations,\n\tIDynamicFilterItem,\n\tITekMemoryDatasource,\n} from './interfaces';\n\nexport class TekMemoryDatasource extends MemoryDatasource implements ITekMemoryDatasource {\n\t/** Dynamic filter data */\n\tdeclare public dynamicFilter: IDictionary<IDynamicFilterItem[]>;\n\n\t/** Search Join data */\n\tdeclare public searchJoin: IDictionary<Array<string | number>>;\n\n\t/**\n\t * Dynamic Filter Operations\n\t */\n\tpublic dynamicFilterOperations = DynamicFilterOperations;\n\n\t/**\n\t * Dynamic Filter Relations\n\t */\n\tpublic dynamicFilterRelations = DynamicFilterRelations;\n\n\t/**\n\t * Dynamic Filter applied flag\n\t */\n\tprotected dynamicFilterApplied = '';\n\n\t/**\n\t * Create new datasource\n\t * @param props Datasource properties\n\t */\n\tconstructor(props: ITekMemoryDatasource) {\n\t\tsuper(props);\n\n\t\tif (!this.watchUrl) {\n\t\t\tthis.dynamicFilter = this.getInitValue('dynamicFilter', props.dynamicFilter, {});\n\t\t\tthis.searchJoin = this.getInitValue('searchJoin', props.searchJoin, {});\n\t\t}\n\n\t\tthis.createAccessors();\n\t\tthis.createObjAccessors(this.dynamicFilter, 'dynamicFilter');\n\t\tthis.createObjAccessors(this.searchJoin, 'searchJoin');\n\t}\n\n\tprotected updateReservedKeys() {\n\t\tthis.reservedKeys.dynamic_filter = true;\n\t\tthis.reservedKeys.search_join = true;\n\t}\n\n\tprotected updateInternalProperties(datasource: IDatasource = {}) {\n\t\tif (!this.watchUrl) return;\n\t\tthis.updateReservedKeys();\n\t\tsuper.updateInternalProperties(datasource);\n\t\tconst queryString = URL.getParsedQueryStringFromUrl();\n\t\tthis.dynamicFilter = this.getEncodedParam(queryString.dynamic_filter, datasource.dynamicFilter);\n\t\tthis.searchJoin = this.getEncodedParam(queryString.search_join, datasource.searchJoin);\n\t}\n\n\tprotected getEncodedParam(urlParam: string, datasourceParam: IDictionary<any> = {}): IDictionary<any> {\n\t\treturn urlParam ? JSON.parse(atob(urlParam)) : datasourceParam;\n\t}\n\n\tprotected getQueryStringValues(): IDictionary<any> {\n\t\tconst values = super.getQueryStringValues();\n\t\tif (this.dynamicFilter && Object.keys(this.dynamicFilter).length) {\n\t\t\tvalues.dynamic_filter = btoa(JSON.stringify(this.dynamicFilter));\n\t\t}\n\t\tif (this.searchJoin && Object.keys(this.searchJoin).length) {\n\t\t\tvalues.search_join = btoa(JSON.stringify(this.searchJoin));\n\t\t}\n\t\treturn values;\n\t}\n\n\tprotected getUrlQueryString() {\n\t\tconst superQueryString = super.getUrlQueryString();\n\t\tconst query = URL.getParsedQueryStringFromUrl();\n\n\t\tlet dynamicFilterQuerystring = '';\n\t\tif (query.dynamic_filter) {\n\t\t\tdynamicFilterQuerystring = `&${URL.getFormattedQueryString({\n\t\t\t\tdynamic_filter: query.dynamic_filter,\n\t\t\t})}`;\n\t\t}\n\n\t\tlet searchJoinQuerystring = '';\n\t\tif (query.search_join) {\n\t\t\tsearchJoinQuerystring = `&${URL.getFormattedQueryString({\n\t\t\t\tsearch_join: query.search_join,\n\t\t\t})}`;\n\t\t}\n\t\treturn superQueryString + dynamicFilterQuerystring + searchJoinQuerystring;\n\t}\n\n\t/**\n\t * Adds a new dynamic filter position or replace if exists\n\t * @param column Dynamic Filter column name\n\t * @param value Dynamic Filter value\n\t * @returns Promise with data collection\n\t */\n\tpublic addDynamicFilter(column: string, value: any) {\n\t\tif (this.isValidDynamicFilterValue(column, value)) {\n\t\t\tthis.dynamicFilter[column] = value;\n\t\t\treturn this.updateDynamicFilter();\n\t\t}\n\t\treturn this.removeDynamicFilter(column);\n\t}\n\n\t/**\n\t * Removes a dynamic filter position\n\t * @param column Dynamic Filter column name\n\t * @returns Promise with data collection\n\t */\n\tpublic removeDynamicFilter(column: string) {\n\t\tdelete this.dynamicFilter[column];\n\t\treturn this.updateDynamicFilter();\n\t}\n\n\t/**\n\t * Sets new dynamic filter value\n\t * @param filter Dynamic Filter value\n\t * @returns Promise with data collection\n\t */\n\tpublic setDynamicFilter(filter: IDictionary<any>) {\n\t\tthis.dynamicFilter = {};\n\t\tObject.keys(filter).forEach((column: string) => {\n\t\t\tif (this.isValidDynamicFilterValue(column, filter[column])) {\n\t\t\t\tthis.dynamicFilter[column] = filter[column];\n\t\t\t} else {\n\t\t\t\tdelete this.dynamicFilter[column];\n\t\t\t}\n\t\t});\n\t\treturn this.updateDynamicFilter();\n\t}\n\n\t/**\n\t * Clears Dynamic filter value\n\t * @returns Promise with data collection\n\t */\n\tpublic clearDynamicFilter() {\n\t\tthis.dynamicFilter = {};\n\t\treturn this.updateDynamicFilter();\n\t}\n\n\t/**\n\t * Resets page and selected rows and tries to update the url\n\t * @returns Promise with data collection\n\t */\n\tpublic async updateDynamicFilter() {\n\t\tthis.page = this.firstPage;\n\t\tthis.selectedRows = [];\n\t\tthis.visibleSelectedRows = [];\n\t\tif (this.watchUrl) {\n\t\t\tif (this.dynamicFilter && Object.keys(this.dynamicFilter).length) {\n\t\t\t\tURL.updateQueryString({\n\t\t\t\t\tdynamic_filter: btoa(JSON.stringify(this.dynamicFilter)),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tURL.updateQueryString({\n\t\t\t\t\tdynamic_filter: undefined,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn this.get();\n\t}\n\n\t/**\n\t * Checks if a filter value is valid\n\t * @param value Filter value\n\t * @returns Is valid filter value\n\t */\n\tprotected isValidDynamicFilterValue(column: string, value?: IDictionary<any>[]) {\n\t\treturn (\n\t\t\t!this.reservedKeys[column] &&\n\t\t\tvalue &&\n\t\t\tvalue.length > 0 &&\n\t\t\tvalue.every(\n\t\t\t\t(filterValue) =>\n\t\t\t\t\tthis.dynamicFilterOperations[filterValue.operation] &&\n\t\t\t\t\tthis.dynamicFilterRelations[filterValue.relation] &&\n\t\t\t\t\tfilterValue.value !== '' &&\n\t\t\t\t\tfilterValue.value !== null,\n\t\t\t)\n\t\t);\n\t}\n\n\tpublic clone() {\n\t\treturn {\n\t\t\t...super.clone(),\n\t\t\tdynamicFilter: this.dynamicFilter,\n\t\t\tsearchJoin: this.searchJoin,\n\t\t\ttype: 'tek-memory',\n\t\t};\n\t}\n\n\t/**\n\t * Updates filtered data\n\t */\n\tprotected updateFilteredData() {\n\t\t// first apply filters (simple and dynamic)\n\t\tthis.filteredData = Object.keys(this.filter).length\n\t\t\t? this.allData.filter((row) => this.getRowByFilter(row))\n\t\t\t: Array.from(this.allData);\n\n\t\tif (this.dynamicFilter && Object.keys(this.dynamicFilter).length) {\n\t\t\tthis.filteredData = this.filteredData.filter((row) => this.getRowByDynamicFilter(row));\n\t\t}\n\n\t\tconst searchWithoutSearchJoin = (row: IDictionary<any>) => {\n\t\t\tconst searchRow = { ...row };\n\t\t\tif (this.searchJoin) {\n\t\t\t\t// do not search on columns with searchJoin\n\t\t\t\tObject.keys(this.searchJoin).forEach((key) => delete searchRow[key]);\n\t\t\t}\n\t\t\treturn this.getRowBySearch(searchRow);\n\t\t};\n\n\t\t// only after do the search\n\t\tconst searchData = this.search ? this.filteredData.filter(searchWithoutSearchJoin) : this.filteredData;\n\n\t\tlet searchIds = searchData.map((row) => row[this.uniqueKey]);\n\n\t\tif (this.searchJoin && Object.keys(this.searchJoin).length) {\n\t\t\tconst searchJoinData = this.filteredData.filter((row) => this.getRowBySearchJoin(row));\n\n\t\t\t// get the ids from search and searchJoin\n\t\t\tsearchIds = searchIds.concat(searchJoinData.map((row) => row[this.uniqueKey])).sort();\n\t\t}\n\n\t\t// filter filteredData using searchIds\n\t\tthis.filteredData = this.allData.filter((row) => searchIds.indexOf(row[this.uniqueKey]) !== -1);\n\t}\n\n\tprotected getRowByDynamicFilter(row: IDictionary<any>) {\n\t\tlet filtered: any;\n\t\ttry {\n\t\t\tObject.keys(this.dynamicFilter).forEach((key) => {\n\t\t\t\tconst filterItems = this.dynamicFilter[key];\n\t\t\t\tfilterItems.forEach((item) => {\n\t\t\t\t\tif (filtered === false && item.relation === 'AND') return;\n\t\t\t\t\tif (filtered === true && item.relation === 'OR') return;\n\n\t\t\t\t\tconst columnValue = Utils.normalize(row[key].toString());\n\t\t\t\t\tlet value: string | string[] = '';\n\t\t\t\t\tif (Array.isArray(item.value)) {\n\t\t\t\t\t\tvalue = item.value.map((val: string) => Utils.normalize(val.toString()));\n\n\t\t\t\t\t\tswitch (item.operation) {\n\t\t\t\t\t\t\tcase 'IN':\n\t\t\t\t\t\t\t\tfiltered = value.includes(columnValue);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'NOT_IN':\n\t\t\t\t\t\t\t\tfiltered = !value.includes(columnValue);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'BETWEEN':\n\t\t\t\t\t\t\t\tfiltered =\n\t\t\t\t\t\t\t\t\t(Number(columnValue) || columnValue) >= (Number(value[0]) || value[0]) &&\n\t\t\t\t\t\t\t\t\t(Number(columnValue) || columnValue) <= (Number(value[1]) || value[1]);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = Utils.normalize(item.value.toString());\n\n\t\t\t\t\t\tswitch (item.operation) {\n\t\t\t\t\t\t\tcase 'CONTAINS':\n\t\t\t\t\t\t\t\tfiltered = columnValue.indexOf(value) !== -1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'NOT_CONTAINS':\n\t\t\t\t\t\t\t\tfiltered = columnValue.indexOf(value) === -1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'EQUALS':\n\t\t\t\t\t\t\t\tfiltered = columnValue === value;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'NOT_EQUALS':\n\t\t\t\t\t\t\t\tfiltered = columnValue !== value;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'GREATER_THAN':\n\t\t\t\t\t\t\t\tfiltered = (Number(columnValue) || columnValue) > (Number(value) || value);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'LESS_THAN':\n\t\t\t\t\t\t\t\tfiltered = (Number(columnValue) || columnValue) < (Number(value) || value);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'GREATER_THAN_EQUALS':\n\t\t\t\t\t\t\t\tfiltered = (Number(columnValue) || columnValue) >= (Number(value) || value);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'LESS_THAN_EQUALS':\n\t\t\t\t\t\t\t\tfiltered = (Number(columnValue) || columnValue) <= (Number(value) || value);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t} catch {\n\t\t\t// do nothing\n\t\t}\n\t\treturn filtered;\n\t}\n\n\tprotected getRowBySearchJoin(row: IDictionary<any>) {\n\t\treturn Object.keys(this.searchJoin).some((key) => this.searchJoin[key].includes(row[key]));\n\t}\n\n\tpublic hasFilter(columnName: string): boolean {\n\t\treturn this.dynamicFilter[columnName] && this.dynamicFilter[columnName].length > 0;\n\t}\n}\n\nDatasourceFactory.register('tek-memory', TekMemoryDatasource);\n","import { DatasourceFactory, IDatasource, IDictionary, RestDatasource, URL } from '@zeedhi/core';\nimport { DynamicFilterOperations, DynamicFilterRelations, IDynamicFilterItem, ITekRestDatasource } from './interfaces';\n\nexport class TekRestDatasource extends RestDatasource implements ITekRestDatasource {\n\t/** Dynamic filter data */\n\tdeclare public dynamicFilter: IDictionary<IDynamicFilterItem[]>;\n\n\t/** Search Join data */\n\tdeclare public searchJoin: IDictionary<Array<string | number>>;\n\n\t/**\n\t * Dynamic Filter Operations\n\t */\n\tpublic dynamicFilterOperations = DynamicFilterOperations;\n\n\t/**\n\t * Dynamic Filter Relations\n\t */\n\tpublic dynamicFilterRelations = DynamicFilterRelations;\n\n\t/**\n\t * Dynamic Filter applied flag\n\t */\n\tprotected dynamicFilterApplied = '';\n\n\t/**\n\t * Create new datasource\n\t * @param props Datasource properties\n\t */\n\tconstructor(props: ITekRestDatasource) {\n\t\tsuper({ ...props, lazyLoad: true });\n\n\t\tif (!this.watchUrl) {\n\t\t\tthis.dynamicFilter = this.getInitValue('dynamicFilter', props.dynamicFilter, {});\n\t\t\tthis.searchJoin = this.getInitValue('searchJoin', props.searchJoin, {});\n\t\t}\n\t\tthis.lazyLoad = this.getInitValue('lazyLoad', props.lazyLoad, this.lazyLoad);\n\n\t\tthis.createAccessors();\n\t\tthis.createObjAccessors(this.dynamicFilter, 'dynamicFilter');\n\t\tthis.createObjAccessors(this.searchJoin, 'searchJoin');\n\t}\n\n\tprotected updateReservedKeys() {\n\t\tthis.reservedKeys.dynamic_filter = true;\n\t\tthis.reservedKeys.search_join = true;\n\t}\n\n\tprotected updateInternalProperties(datasource: IDatasource = {}) {\n\t\tif (!this.watchUrl) return;\n\t\tthis.updateReservedKeys();\n\t\tsuper.updateInternalProperties(datasource);\n\t\tconst queryString = URL.getParsedQueryStringFromUrl();\n\t\tthis.dynamicFilter = this.getEncodedParam(queryString.dynamic_filter, datasource.dynamicFilter);\n\t\tthis.searchJoin = this.getEncodedParam(queryString.search_join, datasource.searchJoin);\n\t}\n\n\tprotected getEncodedParam(urlParam: string, datasourceParam: IDictionary<any> = {}): IDictionary<any> {\n\t\treturn urlParam ? JSON.parse(atob(urlParam)) : datasourceParam;\n\t}\n\n\tprotected getQueryStringValues(): IDictionary<any> {\n\t\tconst values = super.getQueryStringValues();\n\t\tif (this.dynamicFilter && Object.keys(this.dynamicFilter).length) {\n\t\t\tvalues.dynamic_filter = btoa(JSON.stringify(this.dynamicFilter));\n\t\t}\n\t\tif (this.searchJoin && Object.keys(this.searchJoin).length) {\n\t\t\tvalues.search_join = btoa(JSON.stringify(this.searchJoin));\n\t\t}\n\t\treturn values;\n\t}\n\n\tprotected getUrlQueryString() {\n\t\tconst superQueryString = super.getUrlQueryString();\n\t\tconst query = URL.getParsedQueryStringFromUrl();\n\n\t\tlet dynamicFilterQuerystring = '';\n\t\tif (query.dynamic_filter) {\n\t\t\tdynamicFilterQuerystring = `&${URL.getFormattedQueryString({\n\t\t\t\tdynamic_filter: query.dynamic_filter,\n\t\t\t})}`;\n\t\t}\n\n\t\tlet searchJoinQuerystring = '';\n\t\tif (query.search_join) {\n\t\t\tsearchJoinQuerystring = `&${URL.getFormattedQueryString({\n\t\t\t\tsearch_join: query.search_join,\n\t\t\t})}`;\n\t\t}\n\n\t\treturn superQueryString + dynamicFilterQuerystring + searchJoinQuerystring;\n\t}\n\n\t/**\n\t * Adds a new dynamic filter position or replace if exists\n\t * @param column Dynamic Filter column name\n\t * @param value Dynamic Filter value\n\t * @returns Promise with data collection\n\t */\n\tpublic addDynamicFilter(column: string, value: any) {\n\t\tif (this.isValidDynamicFilterValue(column, value)) {\n\t\t\tthis.dynamicFilter[column] = value;\n\t\t\treturn this.updateDynamicFilter();\n\t\t}\n\t\treturn this.removeDynamicFilter(column);\n\t}\n\n\t/**\n\t * Removes a dynamic filter position\n\t * @param column Dynamic Filter column name\n\t * @returns Promise with data collection\n\t */\n\tpublic removeDynamicFilter(column: string) {\n\t\tdelete this.dynamicFilter[column];\n\t\treturn this.updateDynamicFilter();\n\t}\n\n\t/**\n\t * Sets new dynamic filter value\n\t * @param filter Dynamic Filter value\n\t * @returns Promise with data collection\n\t */\n\tpublic setDynamicFilter(filter: IDictionary<any>) {\n\t\tthis.dynamicFilter = {};\n\t\tObject.keys(filter).forEach((column: string) => {\n\t\t\tif (this.isValidDynamicFilterValue(column, filter[column])) {\n\t\t\t\tthis.dynamicFilter[column] = filter[column];\n\t\t\t} else {\n\t\t\t\tdelete this.dynamicFilter[column];\n\t\t\t}\n\t\t});\n\t\treturn this.updateDynamicFilter();\n\t}\n\n\t/**\n\t * Clears Dynamic filter value\n\t * @returns Promise with data collection\n\t */\n\tpublic clearDynamicFilter() {\n\t\tthis.dynamicFilter = {};\n\t\treturn this.updateDynamicFilter();\n\t}\n\n\t/**\n\t * Resets page and selected rows and tries to update the url\n\t * @returns Promise with data collection\n\t */\n\tpublic async updateDynamicFilter() {\n\t\tthis.page = this.firstPage;\n\t\tthis.selectedRows = [];\n\t\tthis.visibleSelectedRows = [];\n\t\tif (this.watchUrl) {\n\t\t\tif (this.dynamicFilter && Object.keys(this.dynamicFilter).length) {\n\t\t\t\tURL.updateQueryString({\n\t\t\t\t\tdynamic_filter: btoa(JSON.stringify(this.dynamicFilter)),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tURL.updateQueryString({\n\t\t\t\t\tdynamic_filter: undefined,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn this.get();\n\t}\n\n\t/**\n\t * Checks if a filter value is valid\n\t * @param value Filter value\n\t * @returns Is valid filter value\n\t */\n\tprotected isValidDynamicFilterValue(column: string, value?: IDictionary<any>[]) {\n\t\treturn (\n\t\t\t!this.reservedKeys[column] &&\n\t\t\tvalue &&\n\t\t\tvalue.length > 0 &&\n\t\t\tvalue.every(\n\t\t\t\t(filterValue) =>\n\t\t\t\t\tthis.dynamicFilterOperations[filterValue.operation] &&\n\t\t\t\t\tthis.dynamicFilterRelations[filterValue.relation] &&\n\t\t\t\t\tfilterValue.value !== '' &&\n\t\t\t\t\tfilterValue.value !== null,\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves request params\n\t */\n\tprotected getRequestParams(): any {\n\t\tconst requestParams = super.getRequestParams();\n\t\tconst isNotEmptyObj = (obj?: IDictionary) => !!(obj && Object.keys(obj).length);\n\t\tconst isValid =\n\t\t\tthis.dynamicFilter &&\n\t\t\tObject.keys(this.dynamicFilter).every((column) => {\n\t\t\t\tconst value = this.dynamicFilter[column];\n\n\t\t\t\treturn value && value.length > 0 && this.isValidDynamicFilterValue(column, value);\n\t\t\t});\n\n\t\tif (isNotEmptyObj(this.dynamicFilter) && isValid) {\n\t\t\trequestParams.dynamic_filter = btoa(JSON.stringify(this.dynamicFilter));\n\t\t}\n\n\t\tif (isNotEmptyObj(this.searchJoin)) {\n\t\t\trequestParams.search_join = btoa(JSON.stringify(this.searchJoin));\n\t\t}\n\t\treturn requestParams;\n\t}\n\n\tpublic hasFilter(columnName: string): boolean {\n\t\treturn this.dynamicFilter[columnName] && this.dynamicFilter[columnName].length > 0;\n\t}\n\n\tpublic clone() {\n\t\treturn {\n\t\t\t...super.clone(),\n\t\t\tdynamicFilter: this.dynamicFilter,\n\t\t\tsearchJoin: this.searchJoin,\n\t\t\ttype: 'tek-rest',\n\t\t};\n\t}\n}\n\nDatasourceFactory.register('tek-rest', TekRestDatasource);\n","import { IComponent } from '@zeedhi/common';\nimport { IExportable, ITekGridExportConfig } from '../../interfaces';\nimport { IExportOption } from './interfaces';\n\nexport class ButtonOption implements IExportOption {\n\tprivate config: ITekGridExportConfig;\n\n\tconstructor(config: ITekGridExportConfig) {\n\t\tthis.config = config;\n\t}\n\n\tbuildComponent(grid: IComponent & IExportable) {\n\t\tconst { type, label, portrait = true, iconName } = this.config;\n\t\tconst orientation = portrait ? 'portrait' : 'landscape';\n\t\treturn {\n\t\t\tlabel,\n\t\t\ticonName,\n\t\t\tname: `${grid.name}_export_${type}_${orientation}`,\n\t\t\tcomponent: 'ZdButton',\n\t\t\tflat: true,\n\t\t\tevents: {\n\t\t\t\tclick: () => grid.getReport(type, portrait) as any,\n\t\t\t},\n\t\t};\n\t}\n}\n","import { IButton, IComponent, IDivider, IRow, IText, ITooltip } from '@zeedhi/common';\nimport { IExportable, ITekGridExportConfig, MultiOptionParams } from '../../interfaces';\nimport { IExportOption } from './interfaces';\n\nexport class MultiOption implements IExportOption {\n\tprivate config: ITekGridExportConfig;\n\n\tconstructor(config: ITekGridExportConfig) {\n\t\tthis.config = config;\n\t}\n\n\tprivate formatName(id: string, type: string, grid: IComponent & IExportable) {\n\t\treturn `${grid.name}_export_${type}_${id}`;\n\t}\n\n\tprivate buildTooltip(option: MultiOptionParams, type: string, grid: IComponent & IExportable): ITooltip {\n\t\tconst { label } = option;\n\t\treturn {\n\t\t\tname: this.formatName(`tooltip_${label}`, type, grid),\n\t\t\tcomponent: 'ZdTooltip',\n\t\t\tbottom: true,\n\t\t\tlabel,\n\t\t\tchildren: [],\n\t\t};\n\t}\n\n\tprivate buildButton(option: MultiOptionParams, type: string, grid: IComponent & IExportable): IButton {\n\t\tconst { cssClass, label, iconName, reportParams } = option;\n\t\tconst { portrait: optionPortrait, rowObj } = reportParams || {};\n\n\t\treturn {\n\t\t\tname: this.formatName(`button_${label}`, type, grid),\n\t\t\tcomponent: 'ZdButton',\n\t\t\tcssClass,\n\t\t\ticon: true,\n\t\t\ticonName,\n\t\t\tevents: {\n\t\t\t\tclick: () => grid.getReport(type, optionPortrait, rowObj) as any,\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate buildDivider(option: MultiOptionParams, type: string, grid: IComponent & IExportable): IDivider {\n\t\tconst { label } = option;\n\n\t\treturn {\n\t\t\tname: this.formatName(`divider_${label}`, type, grid),\n\t\t\tcomponent: 'ZdDivider',\n\t\t\tcssClass: 'zd-my-1',\n\t\t\tvertical: true,\n\t\t};\n\t}\n\n\tbuildComponent(grid: IComponent & IExportable) {\n\t\tconst { type, label, multiOption } = this.config;\n\n\t\tconst optionComponents = multiOption!.flatMap((option) => [\n\t\t\t{\n\t\t\t\t...this.buildTooltip(option, type, grid),\n\t\t\t\tchildren: [this.buildButton(option, type, grid)],\n\t\t\t},\n\t\t\tthis.buildDivider(option, type, grid),\n\t\t]);\n\n\t\toptionComponents.pop();\n\n\t\tconst text: IText = {\n\t\t\tname: this.formatName('text', type, grid),\n\t\t\tcomponent: 'ZdText',\n\t\t\tcssClass: 'zd-display-flex zd-align-center zd-flex-grow-1 tek-grid-export-multioption-text',\n\t\t\tevents: {\n\t\t\t\tclick: ({ event }) => event?.stopPropagation(),\n\t\t\t},\n\t\t\ttext: label || '',\n\t\t};\n\t\tconst result: IRow = {\n\t\t\tname: this.formatName('row', type, grid),\n\t\t\tcomponent: 'ZdRow',\n\t\t\tcssClass: 'zd-display-flex zd-ma-0 zd-py-0 zd-gap-x-1 tek-grid-export-multioption-row',\n\t\t\tchildren: [text, ...optionComponents],\n\t\t};\n\n\t\treturn result;\n\t}\n}\n","/**\n * Base Teknisa error\n */\nexport class TeknisaCommonError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(`[Teknisa Common err]: ${message}`);\n\t}\n}\n","import { TeknisaCommonError } from './teknisa-common-error';\n\n/**\n * TekGridDelete rows error\n */\nexport class TekGridDeleteRowsError extends TeknisaCommonError {\n\tconstructor() {\n\t\tsuper(\n\t\t\t\"TekGrid can't automatically delete rows when selectAllPages property is true.\" +\n\t\t\t\t' You should delete them manually using the beforeDelete event and preventing' +\n\t\t\t\t' the default execution',\n\t\t);\n\t\tthis.name = 'TekGridDeleteRowsError';\n\t}\n}\n","import { IDictionary, IEventParam, Metadata } from '@zeedhi/core';\nimport { TekGridDeleteRowsError } from '../../../error/tek-grid-delete-rows-error';\nimport { IComponentRender, IGridEditable, Input, Tag } from '@zeedhi/common';\nimport {\n\tIExportable,\n\tISupportsToolbar,\n\tITekGridAtoms,\n\tITekGridExportConfig,\n\tITekGridToolbarProvider,\n} from '../interfaces';\nimport { TekGridFilterButton } from '../grid-filter-button';\nimport { ButtonOption, MultiOption } from './export-options';\n\ntype GridEditableWithToolbar = IGridEditable & ISupportsToolbar & IExportable;\n\nexport class TekGridToolbarProvider implements ITekGridToolbarProvider {\n\tprivate grid: GridEditableWithToolbar;\n\n\tprivate groupsVisibility: 'hide' | 'show';\n\n\tconstructor(grid: GridEditableWithToolbar, groupsVisibility: 'hide' | 'show') {\n\t\tthis.grid = grid;\n\t\tthis.groupsVisibility = groupsVisibility;\n\t}\n\n\tprotected atoms: ITekGridAtoms = {\n\t\tTITLE: '_gridTitle',\n\t\tHIDE_BUTTON: '_hideButton',\n\t\tADD_BUTTON: '_addButton',\n\t\tDELETE_BUTTON: '_deleteButton',\n\t\tREFRESH_BUTTON: '_refreshButton',\n\t\tCOLUMNS_BUTTON: '_columnsButton',\n\t\tLAYOUT_BUTTON: '_layout_options',\n\t\tEXPORT_BUTTON: '_exportButton',\n\t\tACTIONS_BUTTON: '_actionsButton',\n\t\tSAVE_BUTTON: '_saveButton',\n\t\tCANCEL_BUTTON: '_cancelButton',\n\t\tSEARCH: '_gridSearch',\n\t\tFILTER_BUTTON: '_filterButton',\n\t\tFILTER_MODAL: '-filter-modal',\n\t\tFILTER_FORM: '-filter-form',\n\t\tEXPORT_DROPDOWN: '_export_dropdown',\n\t\tACTIONS_DROPDOWN: '_actions_dropdown',\n\t\tHIDE_TOOLTIP: '_hideTooltip',\n\t\tTOOLBAR_DIV: '_toolbarDiv',\n\t\tNOT_EDITING_SPAN: '_notEditingSpan',\n\t\tADD_TOOLTIP: '_add_tooltip',\n\t\tDELETE_TOOLTIP: '_delete_tooltip',\n\t\tDIVIDER1: '_divider1',\n\t\tREFRESH_TOOLTIP: '_refresh_tooltip',\n\t\tDIVIDER2: '_divider2',\n\t\tCOLUMNS_TOOLTIP: '_columns_button_tooltip',\n\t\tDIVIDER_ACTIONS: '_dividerActions',\n\t\tDIVIDER3: '_divider3',\n\t\tFILTER_TOOLTIP: '_filter_tooltip',\n\t} as const;\n\n\tgetAtomName(key: keyof ITekGridAtoms): string {\n\t\treturn `${this.grid.name}${this.atoms[key]}`;\n\t}\n\n\tgetAtomInstance<T>(key: keyof ITekGridAtoms): T {\n\t\treturn Metadata.getInstance<T>(`${this.grid.name}${this.atoms[key]}`);\n\t}\n\n\tpublic filterButton?: TekGridFilterButton;\n\n\tprivate loadFilterButton({ component }: IEventParam<TekGridFilterButton>) {\n\t\tthis.filterButton = component;\n\t}\n\n\tpublic getFilterInputs(columnName?: string): Input[] {\n\t\treturn this.filterButton!.getFilterInputs(columnName);\n\t}\n\n\tprivate getOption(config: ITekGridExportConfig) {\n\t\tif (config.multiOption) return new MultiOption(config);\n\n\t\treturn new ButtonOption(config);\n\t}\n\n\tprivate getExportConfigButtons(): IComponentRender[] {\n\t\treturn this.grid.exportConfig.map((config) => {\n\t\t\tconst option = this.getOption(config);\n\t\t\treturn option.buildComponent(this.grid);\n\t\t});\n\t}\n\n\tprivate hideButtonClick({ event }: IEventParam<any>) {\n\t\tif (!event!.defaultPrevented) {\n\t\t\tconst instance = Metadata.getInstance<Tag>(`${this.grid.name}_toolbarDiv`);\n\t\t\tif (instance) {\n\t\t\t\tinstance.isVisible = !instance.isVisible;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate cancelChanges({ event }: IEventParam<any>) {\n\t\tthis.grid.callEvent('beforeCancel', { component: this.grid, event });\n\t\tif (!event!.defaultPrevented) {\n\t\t\tconst cancel = async () => {\n\t\t\t\tawait this.grid.cancelEditedRows();\n\t\t\t\tthis.grid.editingNewRows = false;\n\t\t\t};\n\t\t\tcancel();\n\n\t\t\tthis.grid.callEvent('afterCancel', { component: this.grid });\n\t\t}\n\t}\n\n\tprivate saveChanges({ event }: IEventParam<any>) {\n\t\tthis.grid.callEvent('beforeSave', { component: this.grid, event });\n\t\tif (!event!.defaultPrevented) {\n\t\t\tconst save = async () => {\n\t\t\t\tawait this.grid.saveEditedRows();\n\t\t\t\tthis.grid.editingNewRows = false;\n\t\t\t};\n\t\t\tsave();\n\t\t\tthis.grid.callEvent('afterSave', { component: this.grid });\n\t\t}\n\t}\n\n\tprivate addButtonClick({ event }: IEventParam<any>) {\n\t\tif (this.grid.editNewRowsOnly) {\n\t\t\tthis.grid.editingNewRows = true;\n\t\t}\n\t\tthis.grid.callEvent('addClick', { component: this.grid, event });\n\t}\n\n\tprivate deleteButtonClick({ event }: IEventParam<any>) {\n\t\tthis.grid.callEvent('beforeDelete', { component: this.grid, event });\n\t\tif (!event!.defaultPrevented) {\n\t\t\tif (this.grid.selectAllPages) {\n\t\t\t\tthrow new TekGridDeleteRowsError();\n\t\t\t}\n\n\t\t\tthis.grid.deleteRows();\n\n\t\t\tthis.grid.callEvent('afterDelete', { component: this.grid });\n\t\t}\n\t}\n\n\tpublic reloadGrid({ event }: IEventParam<any>) {\n\t\tthis.grid.callEvent('beforeReload', { component: this.grid, event });\n\t\tif (event?.defaultPrevented) return;\n\n\t\tthis.grid.reload();\n\t}\n\n\tprivate getDefaultToolbarItems(\n\t\texportConfigButtons: IComponentRender[],\n\t): IDictionary<(index?: number) => IComponentRender | undefined> {\n\t\treturn {\n\t\t\taddButton: () => ({\n\t\t\t\tname: this.getAtomName('ADD_TOOLTIP'),\n\t\t\t\tcomponent: 'ZdTooltip',\n\t\t\t\tlabel: 'TEKGRID_ADD',\n\t\t\t\tbottom: true,\n\t\t\t\tchildren: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: this.getAtomName('ADD_BUTTON'),\n\t\t\t\t\t\tcomponent: 'ZdButton',\n\t\t\t\t\t\ticon: true,\n\t\t\t\t\t\ticonName: 'mdi-plus-box',\n\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showAddButton}}`,\n\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\tclick: this.addButtonClick.bind(this),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}),\n\t\t\tdeleteButton: () => ({\n\t\t\t\tname: this.getAtomName('DELETE_TOOLTIP'),\n\t\t\t\tcomponent: 'ZdTooltip',\n\t\t\t\tlabel: 'TEKGRID_DELETE',\n\t\t\t\tbottom: true,\n\t\t\t\tchildren: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: this.getAtomName('DELETE_BUTTON'),\n\t\t\t\t\t\tcomponent: 'ZdButton',\n\t\t\t\t\t\ticon: true,\n\t\t\t\t\t\ticonName: 'mdi-trash-can-outline',\n\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showDeleteButton}}`,\n\t\t\t\t\t\tdisabled: `{{GridController_${this.grid.name}.disableDeleteButton}}`,\n\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\tclick: this.deleteButtonClick.bind(this),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}),\n\t\t\tdivider: (index?: number) => ({\n\t\t\t\tname: `${this.grid.name}_divider${index}`,\n\t\t\t\tcomponent: 'ZdDivider',\n\t\t\t\tcssClass: 'toolbar-divider',\n\t\t\t\tvertical: true,\n\t\t\t}),\n\t\t\trefreshButton: () => ({\n\t\t\t\tname: this.getAtomName('REFRESH_TOOLTIP'),\n\t\t\t\tcomponent: 'ZdTooltip',\n\t\t\t\tlabel: 'TEKGRID_REFRESH',\n\t\t\t\tbottom: true,\n\t\t\t\tchildren: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: this.getAtomName('REFRESH_BUTTON'),\n\t\t\t\t\t\tcomponent: 'ZdButton',\n\t\t\t\t\t\ticon: true,\n\t\t\t\t\t\ticonName: 'refresh',\n\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showReloadButton}}`,\n\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\tclick: this.reloadGrid.bind(this),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}),\n\t\t\tcolumnsButton: () => ({\n\t\t\t\tname: this.getAtomName('COLUMNS_BUTTON'),\n\t\t\t\tcomponent: 'TekGridColumnsButton',\n\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showColumnsButton}}`,\n\t\t\t\titerableComponentName: this.grid.name,\n\t\t\t\thideGroups: this.groupsVisibility === 'hide',\n\t\t\t\tignoreColumns: `{{GridController_${this.grid.name}.columnsButtonIgnore}}`,\n\t\t\t}),\n\t\t\tlayoutOptions: () => ({\n\t\t\t\tname: this.getAtomName('LAYOUT_BUTTON'),\n\t\t\t\tcomponent: 'TekGridLayoutOptions',\n\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showLayoutOptionsButton}}`,\n\t\t\t}),\n\t\t\texportDropdown: () => ({\n\t\t\t\tname: this.getAtomName('EXPORT_DROPDOWN'),\n\t\t\t\tcomponent: 'ZdDropdown',\n\t\t\t\tcssClass: 'tekgrid-actions-dropdown',\n\t\t\t\toffsetY: true,\n\t\t\t\tactivator: {\n\t\t\t\t\tname: this.getAtomName('EXPORT_BUTTON'),\n\t\t\t\t\tcomponent: 'ZdButton',\n\t\t\t\t\ticon: true,\n\t\t\t\t\ticonName: 'mdi-file-download-outline',\n\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showExportButton}}`,\n\t\t\t\t},\n\t\t\t\tchildren: this.grid.exportActions || exportConfigButtons,\n\t\t\t}),\n\t\t\tactionsDropdown: () => ({\n\t\t\t\tname: this.getAtomName('ACTIONS_DROPDOWN'),\n\t\t\t\tcomponent: 'ZdDropdown',\n\t\t\t\tcssClass: 'tekgrid-actions-dropdown',\n\t\t\t\toffsetY: true,\n\t\t\t\tactivator: {\n\t\t\t\t\tname: this.getAtomName('ACTIONS_BUTTON'),\n\t\t\t\t\tcomponent: 'ZdButton',\n\t\t\t\t\ticon: true,\n\t\t\t\t\ticonName: 'mdi-dots-vertical',\n\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showActionsButton}}`,\n\t\t\t\t},\n\t\t\t\tchildren: this.grid.actions,\n\t\t\t}),\n\t\t\tsaveButton: () => ({\n\t\t\t\tname: this.getAtomName('SAVE_BUTTON'),\n\t\t\t\tcomponent: 'ZdButton',\n\t\t\t\tlabel: 'TEKGRID_SAVE',\n\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showEditButtons}}`,\n\t\t\t\tsmall: true,\n\t\t\t\tevents: {\n\t\t\t\t\tclick: this.saveChanges.bind(this),\n\t\t\t\t},\n\t\t\t}),\n\t\t\tcancelButton: () => ({\n\t\t\t\tname: this.getAtomName('CANCEL_BUTTON'),\n\t\t\t\tcomponent: 'ZdButton',\n\t\t\t\tlabel: 'TEKGRID_CANCEL',\n\t\t\t\toutline: true,\n\t\t\t\tcssClass: 'zd-mx-2',\n\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showEditButtons}}`,\n\t\t\t\tsmall: true,\n\t\t\t\tevents: {\n\t\t\t\t\tclick: this.cancelChanges.bind(this),\n\t\t\t\t},\n\t\t\t}),\n\t\t\tgridSearch: () => ({\n\t\t\t\tname: this.getAtomName('SEARCH'),\n\t\t\t\tcomponent: 'ZdSearch',\n\t\t\t\tcssClass: 'zd-grid-search',\n\t\t\t\titerableComponentName: `${this.grid.name}`,\n\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showSearchInput}}`,\n\t\t\t}),\n\t\t\tfilterButton: () => ({\n\t\t\t\tname: this.getAtomName('FILTER_TOOLTIP'),\n\t\t\t\tcomponent: 'ZdTooltip',\n\t\t\t\tlabel: 'TEKGRID_FILTER',\n\t\t\t\tbottom: true,\n\t\t\t\tchildren: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: this.getAtomName('FILTER_BUTTON'),\n\t\t\t\t\t\tcomponent: 'TekGridFilterButton',\n\t\t\t\t\t\tgrid: this.grid,\n\t\t\t\t\t\tgridName: this.grid.name,\n\t\t\t\t\t\tshowCheckboxAll: this.grid.showCheckboxAllFilter,\n\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showFilterButton}}`,\n\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\tonCreated: this.loadFilterButton.bind(this),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}),\n\t\t};\n\t}\n\n\tprivate processUserToolbarItems(exportConfigButtons: IComponentRender[]): IComponentRender[] {\n\t\tconst defaultToolbar = this.getDefaultToolbarItems(exportConfigButtons);\n\t\tconst toolbarToPropertyMap: IDictionary<string> = {\n\t\t\taddButton: 'addButton',\n\t\t\tdeleteButton: 'deleteButton',\n\t\t\trefreshButton: 'showReload',\n\t\t\tcolumnsButton: 'columnsButton',\n\t\t\tlayoutOptions: 'showLayoutOptions',\n\t\t\texportDropdown: 'showExport',\n\t\t\tactionsDropdown: 'showExport',\n\t\t\tgridSearch: 'showSearch',\n\t\t\tfilterButton: 'filterButton',\n\t\t};\n\n\t\tconst toolbarDivChildren: IComponentRender[] = [];\n\n\t\tthis.grid.toolbarConfig.forEach((item: IComponentRender | string, index: number) => {\n\t\t\tif (typeof item === 'object' && item.component) {\n\t\t\t\ttoolbarDivChildren.push(item);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof item !== 'string') {\n\t\t\t\tconsole.warn('Invalid item in toolbarConfig:', item);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst gridProperty = toolbarToPropertyMap[item];\n\t\t\tif (gridProperty && !(this.grid as any)[gridProperty]) {\n\t\t\t\t(this.grid as any)[gridProperty] = true;\n\t\t\t}\n\n\t\t\tconst itemFactory = defaultToolbar[item];\n\t\t\tif (!itemFactory) {\n\t\t\t\tconsole.warn(`Predefined toolbar item \"${item}\" not found.`);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst predefinedItem = itemFactory(index);\n\t\t\tif (predefinedItem) toolbarDivChildren.push(predefinedItem);\n\t\t});\n\n\t\treturn toolbarDivChildren;\n\t}\n\n\tprivate getHeaderItems(): IComponentRender[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\tname: this.getAtomName('TITLE'),\n\t\t\t\tcomponent: 'ZdText',\n\t\t\t\tcssClass: 'toolbar-title',\n\t\t\t\ttag: 'h2',\n\t\t\t\ttext: this.grid.title,\n\t\t\t\ttitle: this.grid.title,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${this.grid.name}_spacer`,\n\t\t\t\tcomponent: 'VSpacer',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: this.getAtomName('HIDE_TOOLTIP'),\n\t\t\t\tcomponent: 'ZdTooltip',\n\t\t\t\tlabel: `{{GridController_${this.grid.name}.tooltipName}}`,\n\t\t\t\tbottom: true,\n\t\t\t\tchildren: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: this.getAtomName('HIDE_BUTTON'),\n\t\t\t\t\t\tcomponent: 'ZdButton',\n\t\t\t\t\t\tflat: true,\n\t\t\t\t\t\ticon: true,\n\t\t\t\t\t\ticonName: 'mdi-chevron-right',\n\t\t\t\t\t\tcolor: 'grey',\n\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showHideButton}}`,\n\t\t\t\t\t\tcssClass: `{{GridController_${this.grid.name}.toolbarClass}}`,\n\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\tclick: this.hideButtonClick.bind(this),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t];\n\t}\n\n\tpublic getProperties(): IComponentRender[] {\n\t\tconst exportConfigButtons = this.getExportConfigButtons();\n\n\t\tif (this.grid.toolbarConfig && this.grid.toolbarConfig.length > 0) {\n\t\t\treturn [\n\t\t\t\t...this.getHeaderItems(),\n\t\t\t\t{\n\t\t\t\t\tname: this.getAtomName('TOOLBAR_DIV'),\n\t\t\t\t\tcomponent: 'ZdTag',\n\t\t\t\t\ttag: 'div',\n\t\t\t\t\tcssStyle: 'display: flex; align-items: center',\n\t\t\t\t\tcssClass: `{{GridController_${this.grid.name}.toolbarCollapseClass}}`,\n\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showToolbar}}`,\n\t\t\t\t\tchildren: this.processUserToolbarItems(exportConfigButtons),\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\treturn [\n\t\t\t...this.getHeaderItems(),\n\t\t\t{\n\t\t\t\tname: this.getAtomName('TOOLBAR_DIV'),\n\t\t\t\tcomponent: 'ZdTag',\n\t\t\t\ttag: 'div',\n\t\t\t\tcssStyle: 'display: flex; align-items: center',\n\t\t\t\tcssClass: `{{GridController_${this.grid.name}.toolbarCollapseClass}}`,\n\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showToolbar}}`,\n\t\t\t\tchildren: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: this.getAtomName('NOT_EDITING_SPAN'),\n\t\t\t\t\t\tcomponent: 'ZdTag',\n\t\t\t\t\t\ttag: 'span',\n\t\t\t\t\t\tcssStyle: 'display: flex',\n\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.isNotEditing}}`,\n\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: this.getAtomName('ADD_TOOLTIP'),\n\t\t\t\t\t\t\t\tcomponent: 'ZdTooltip',\n\t\t\t\t\t\t\t\tlabel: 'TEKGRID_ADD',\n\t\t\t\t\t\t\t\tbottom: true,\n\t\t\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: this.getAtomName('ADD_BUTTON'),\n\t\t\t\t\t\t\t\t\t\tcomponent: 'ZdButton',\n\t\t\t\t\t\t\t\t\t\ticon: true,\n\t\t\t\t\t\t\t\t\t\ticonName: 'mdi-plus-box',\n\t\t\t\t\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showAddButton}}`,\n\t\t\t\t\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\t\t\t\t\tclick: this.addButtonClick.bind(this),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: this.getAtomName('DELETE_TOOLTIP'),\n\t\t\t\t\t\t\t\tcomponent: 'ZdTooltip',\n\t\t\t\t\t\t\t\tlabel: 'TEKGRID_DELETE',\n\t\t\t\t\t\t\t\tbottom: true,\n\t\t\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: this.getAtomName('DELETE_BUTTON'),\n\t\t\t\t\t\t\t\t\t\tcomponent: 'ZdButton',\n\t\t\t\t\t\t\t\t\t\ticon: true,\n\t\t\t\t\t\t\t\t\t\ticonName: 'mdi-trash-can-outline',\n\t\t\t\t\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showDeleteButton}}`,\n\t\t\t\t\t\t\t\t\t\tdisabled: `{{GridController_${this.grid.name}.disableDeleteButton}}`,\n\t\t\t\t\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\t\t\t\t\tclick: this.deleteButtonClick.bind(this),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: this.getAtomName('DIVIDER1'),\n\t\t\t\t\t\t\t\tcomponent: 'ZdDivider',\n\t\t\t\t\t\t\t\tcssClass: 'toolbar-divider',\n\t\t\t\t\t\t\t\tvertical: true,\n\t\t\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showDivider1}}`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: this.getAtomName('REFRESH_TOOLTIP'),\n\t\t\t\t\t\t\t\tcomponent: 'ZdTooltip',\n\t\t\t\t\t\t\t\tlabel: 'TEKGRID_REFRESH',\n\t\t\t\t\t\t\t\tbottom: true,\n\t\t\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: this.getAtomName('REFRESH_BUTTON'),\n\t\t\t\t\t\t\t\t\t\tcomponent: 'ZdButton',\n\t\t\t\t\t\t\t\t\t\ticon: true,\n\t\t\t\t\t\t\t\t\t\ticonName: 'refresh',\n\t\t\t\t\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showReloadButton}}`,\n\t\t\t\t\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\t\t\t\t\tclick: this.reloadGrid.bind(this),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: this.getAtomName('DIVIDER2'),\n\t\t\t\t\t\t\t\tcomponent: 'ZdDivider',\n\t\t\t\t\t\t\t\tcssClass: 'toolbar-divider',\n\t\t\t\t\t\t\t\tvertical: true,\n\t\t\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showDivider2}}`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: this.getAtomName('COLUMNS_BUTTON'),\n\t\t\t\t\t\t\t\tcomponent: 'TekGridColumnsButton',\n\t\t\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showColumnsButton}}`,\n\t\t\t\t\t\t\t\titerableComponentName: this.grid.name,\n\t\t\t\t\t\t\t\thideGroups: this.groupsVisibility === 'hide',\n\t\t\t\t\t\t\t\tignoreColumns: `{{GridController_${this.grid.name}.columnsButtonIgnore}}`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: this.getAtomName('LAYOUT_BUTTON'),\n\t\t\t\t\t\t\t\tcomponent: 'TekGridLayoutOptions',\n\t\t\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showLayoutOptionsButton}}`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: this.getAtomName('DIVIDER_ACTIONS'),\n\t\t\t\t\t\t\t\tcomponent: 'ZdDivider',\n\t\t\t\t\t\t\t\tcssClass: 'toolbar-divider',\n\t\t\t\t\t\t\t\tvertical: true,\n\t\t\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showActionAndExportButton}}`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: this.getAtomName('EXPORT_DROPDOWN'),\n\t\t\t\t\t\t\t\tcomponent: 'ZdDropdown',\n\t\t\t\t\t\t\t\tcssClass: 'tekgrid-actions-dropdown',\n\t\t\t\t\t\t\t\toffsetY: true,\n\t\t\t\t\t\t\t\tactivator: {\n\t\t\t\t\t\t\t\t\tname: this.getAtomName('EXPORT_BUTTON'),\n\t\t\t\t\t\t\t\t\tcomponent: 'ZdButton',\n\t\t\t\t\t\t\t\t\ticon: true,\n\t\t\t\t\t\t\t\t\ticonName: 'mdi-file-download-outline',\n\t\t\t\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showExportButton}}`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tchildren: this.grid.exportActions || exportConfigButtons,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: this.getAtomName('ACTIONS_DROPDOWN'),\n\t\t\t\t\t\t\t\tcomponent: 'ZdDropdown',\n\t\t\t\t\t\t\t\tcssClass: 'tekgrid-actions-dropdown',\n\t\t\t\t\t\t\t\toffsetY: true,\n\t\t\t\t\t\t\t\tactivator: {\n\t\t\t\t\t\t\t\t\tname: this.getAtomName('ACTIONS_BUTTON'),\n\t\t\t\t\t\t\t\t\tcomponent: 'ZdButton',\n\t\t\t\t\t\t\t\t\ticon: true,\n\t\t\t\t\t\t\t\t\ticonName: 'mdi-dots-vertical',\n\t\t\t\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showActionsButton}}`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tchildren: this.grid.actions,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: this.getAtomName('DIVIDER3'),\n\t\t\t\t\t\t\t\tcomponent: 'ZdDivider',\n\t\t\t\t\t\t\t\tcssClass: 'toolbar-divider',\n\t\t\t\t\t\t\t\tvertical: true,\n\t\t\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showDivider3}}`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: this.getAtomName('SAVE_BUTTON'),\n\t\t\t\t\t\tcomponent: 'ZdButton',\n\t\t\t\t\t\tlabel: 'TEKGRID_SAVE',\n\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showEditButtons}}`,\n\t\t\t\t\t\tsmall: true,\n\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\tclick: this.saveChanges.bind(this),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: this.getAtomName('CANCEL_BUTTON'),\n\t\t\t\t\t\tcomponent: 'ZdButton',\n\t\t\t\t\t\tlabel: 'TEKGRID_CANCEL',\n\t\t\t\t\t\toutline: true,\n\t\t\t\t\t\tcssClass: 'zd-mx-2',\n\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showEditButtons}}`,\n\t\t\t\t\t\tsmall: true,\n\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\tclick: this.cancelChanges.bind(this),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: this.getAtomName('SEARCH'),\n\t\t\t\t\t\tcomponent: 'ZdSearch',\n\t\t\t\t\t\tcssClass: 'zd-grid-search',\n\t\t\t\t\t\titerableComponentName: `${this.grid.name}`,\n\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showSearchInput}}`,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: this.getAtomName('FILTER_TOOLTIP'),\n\t\t\t\t\t\tcomponent: 'ZdTooltip',\n\t\t\t\t\t\tlabel: 'TEKGRID_FILTER',\n\t\t\t\t\t\tbottom: true,\n\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: this.getAtomName('FILTER_BUTTON'),\n\t\t\t\t\t\t\t\tcomponent: 'TekGridFilterButton',\n\t\t\t\t\t\t\t\tgrid: this.grid,\n\t\t\t\t\t\t\t\tgridName: this.grid.name,\n\t\t\t\t\t\t\t\tshowCheckboxAll: this.grid.showCheckboxAllFilter,\n\t\t\t\t\t\t\t\tisVisible: `{{GridController_${this.grid.name}.showFilterButton}}`,\n\t\t\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\t\t\tonCreated: this.loadFilterButton.bind(this),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t];\n\t}\n}\n","import { IDictionary } from '@zeedhi/core';\nimport { IColumnsSearcher, ITekGridColumn } from './interfaces';\n\nexport class ColumnsSearcher implements IColumnsSearcher {\n\tasync searchColumn(columns: ITekGridColumn[], search: string): Promise<IDictionary<(string | number)[]>> {\n\t\tconst lookupColumns = columns.filter((column) => !!column.componentProps?.datasource && !column.skipLookupSearch);\n\t\tconst searchJoin: IDictionary<Array<string | number>> = {};\n\n\t\tif (search) {\n\t\t\tconst promises = lookupColumns.map(async (column) => {\n\t\t\t\tconst searchData = await column.memorySearch(search);\n\n\t\t\t\tconst lookupId = column.componentProps!.datasource.uniqueKey;\n\t\t\t\tsearchJoin[column.name] = searchData.map((row: IDictionary) => row[lookupId]);\n\t\t\t});\n\n\t\t\tawait Promise.all(promises);\n\t\t}\n\n\t\treturn searchJoin;\n\t}\n}\n","import { Datasource, DatasourceFactory, IDictionary } from '@zeedhi/core';\nimport { IDynamicFilterDatasourceFactory } from './interfaces';\n\nexport class DynamicFilterDatasourceFactory implements IDynamicFilterDatasourceFactory {\n\tfactory(options: IDictionary<boolean>): Datasource {\n\t\treturn DatasourceFactory.factory({\n\t\t\tdata: this.getFilterOptionsData(options),\n\t\t\tloadAll: true,\n\t\t\ttranslate: ['text'],\n\t\t});\n\t}\n\n\tprivate getFilterOptionsData(options: IDictionary<boolean>): IDictionary<any>[] {\n\t\tconst optionsKeys = Object.keys(options);\n\t\treturn optionsKeys.map((item) => ({\n\t\t\ttext: `TEKGRID_${item}`,\n\t\t\tvalue: item,\n\t\t}));\n\t}\n}\n","import { DateHelper } from '@zeedhi/core';\nimport { TekGridColumn } from './tek-grid-column';\n\nexport class TekFilterHelper {\n\tpublic static getLabel(name: string) {\n\t\treturn DateHelper.getLabel(name);\n\t}\n\n\tpublic static getValue(name: string, column: TekGridColumn) {\n\t\treturn DateHelper.getValue(name, column.componentProps.dateFormat);\n\t}\n\n\tpublic static register(name: string, label: string, fn: () => Date | [Date, Date]) {\n\t\tDateHelper.register(name, label, fn);\n\t}\n\n\tpublic static unregister(name: string) {\n\t\tDateHelper.unregister(name);\n\t}\n}\n","import { Datasource, DatasourceFactory, IDictionary } from '@zeedhi/core';\nimport { GridColumnEditable } from '@zeedhi/common';\nimport { IFilterPropsComponent, ITekGridColumn, ITekGridColumnAggregation } from './interfaces';\nimport { TekGrid } from './tek-grid';\n\n/**\n * Base class for TekGrid column\n */\nexport class TekGridColumn extends GridColumnEditable implements ITekGridColumn {\n\t/* filter component props */\n\tpublic filterProps: IFilterPropsComponent | IFilterPropsComponent[] = [];\n\n\t/* column can be use to filter */\n\tpublic filterable = true;\n\n\t/* Index of the column inside filter modal */\n\tpublic filterIndex?: number;\n\n\t/* should not consider lookup column on search */\n\tpublic skipLookupSearch = false;\n\n\t/* column is grouped */\n\tprivate groupedValue = false;\n\n\t/* column group is opened */\n\tprivate groupOpenedValue?: boolean = false;\n\n\t/* Value to show when grouped value is empty */\n\tpublic groupLabelForEmptyValue = '';\n\n\t/* column has aggregation */\n\tprivate aggregationValue?: ITekGridColumnAggregation;\n\n\t/* column is visible */\n\tprivate isVisibleValue = true;\n\n\t/**\n\t * Defines if the column should store the componentProps datasource.data in memory\n\t */\n\tpublic storeData = true;\n\n\tprivate grid: TekGrid;\n\n\t/* istanbul ignore next */\n\t/**\n\t * Creates a new TekGrid Column.\n\t * @param props TekGrid column properties\n\t */\n\tconstructor(props: ITekGridColumn, grid: TekGrid) {\n\t\tsuper(props);\n\t\tthis.grid = grid;\n\t\tthis.isVisible = this.getInitValue('isVisible', props.isVisible, this.isVisible);\n\t\tthis.filterProps = this.getInitValue('filterProps', props.filterProps, this.filterProps);\n\t\tthis.filterable = this.getInitValue('filterable', props.filterable, this.filterable);\n\t\tthis.filterIndex = this.getInitValue('filterIndex', props.filterIndex, this.filterIndex);\n\t\tthis.skipLookupSearch = this.getInitValue('skipLookupSearch', props.skipLookupSearch, this.skipLookupSearch);\n\t\tthis.grouped = this.getInitValue('grouped', props.grouped, this.grouped);\n\t\tthis.groupOpened = this.getInitValue('groupOpened', props.groupOpened, this.groupOpened);\n\t\tthis.aggregation = this.getInitValue('aggregation', props.aggregation, this.aggregation);\n\t\tthis.groupLabelForEmptyValue = this.getInitValue(\n\t\t\t'groupLabelForEmptyValue',\n\t\t\tprops.groupLabelForEmptyValue,\n\t\t\tthis.groupLabelForEmptyValue,\n\t\t);\n\t\tthis.storeData = this.getInitValue('storeData', props.storeData, this.storeData);\n\t\tthis.createAccessors();\n\t}\n\n\tpublic async getBatchLookupData(lookupColumn: string, values: any[]): Promise<IDictionary[]> {\n\t\tconst batch: IDictionary[] = [];\n\t\tconst dataToLookup: any[] = [];\n\t\tvalues.forEach((value) => {\n\t\t\tif (this.lookupData[value]) {\n\t\t\t\tbatch.push(this.lookupData[value]);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst dataIndex = this.lookupDatasource!.data.findIndex((row) => row[lookupColumn] === value);\n\t\t\tif (dataIndex !== -1) {\n\t\t\t\tthis.lookupData[value] = this.lookupDatasource!.data[dataIndex];\n\t\t\t\tbatch.push(this.lookupData[value]);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdataToLookup.push(value);\n\t\t});\n\n\t\tif (dataToLookup.length > 0) {\n\t\t\tawait this.lookupFn(lookupColumn, dataToLookup);\n\n\t\t\tdataToLookup.forEach((value) => {\n\t\t\t\tconst row = this.lookupData[value];\n\t\t\t\tif (row) batch.push(row);\n\t\t\t});\n\t\t}\n\n\t\treturn batch;\n\t}\n\n\t/**\n\t * Memory search, without changing lookupDatasource\n\t */\n\tpublic async memorySearch(search: string): Promise<any> {\n\t\tif (!this.lookupDatasource) {\n\t\t\tthrow new Error(\"Can't search in a column that doesn't have a datasource\");\n\t\t}\n\n\t\tlet { data } = this.lookupDatasource;\n\t\tif (this.storeData) {\n\t\t\tif (!data.length) {\n\t\t\t\tdata = await this.lookupDatasource.get();\n\t\t\t}\n\t\t} else {\n\t\t\t// datasource without the lookup filters\n\t\t\tconst defaultDs = DatasourceFactory.factory({\n\t\t\t\t...this.componentProps.datasource,\n\t\t\t\tlazyLoad: true,\n\t\t\t\tloadAll: true,\n\t\t\t});\n\t\t\tdefaultDs.initialize();\n\n\t\t\tdata = await defaultDs.get();\n\t\t}\n\n\t\tconst { dataText } = this.componentProps;\n\t\tconst searchIn = Array.isArray(dataText) ? dataText : [dataText];\n\n\t\t// get datasource as memory\n\t\tconst datasource: Datasource = DatasourceFactory.factory({\n\t\t\tsearchIn,\n\t\t\tdata,\n\t\t\ttype: 'memory',\n\t\t\tloadAll: true,\n\t\t});\n\t\tdatasource.initialize();\n\n\t\treturn datasource.setSearch(search);\n\t}\n\n\tget grouped() {\n\t\treturn this.groupedValue;\n\t}\n\n\tset grouped(value: boolean) {\n\t\tconst changed = value !== this.groupedValue;\n\t\tthis.groupedValue = value;\n\t\tif (changed) {\n\t\t\tthis.changeGrouping();\n\t\t}\n\t}\n\n\tget aggregation() {\n\t\treturn this.aggregationValue;\n\t}\n\n\tset aggregation(value: ITekGridColumnAggregation) {\n\t\tconst changed = value !== this.aggregationValue;\n\t\tthis.aggregationValue = value;\n\t\tif (changed) {\n\t\t\tthis.changeGrouping();\n\t\t}\n\t}\n\n\tget groupOpened() {\n\t\treturn this.groupOpenedValue;\n\t}\n\n\tset groupOpened(value: boolean | undefined) {\n\t\tconst changed = value !== this.groupOpenedValue;\n\t\tthis.groupOpenedValue = value;\n\t\tif (changed) {\n\t\t\tthis.changeGrouping();\n\t\t}\n\t}\n\n\t/* istanbul ignore next */\n\t// @ts-expect-error\n\tget isVisible() {\n\t\treturn this.isVisibleValue && !this.grouped;\n\t}\n\n\t/* istanbul ignore next */\n\tset isVisible(value: boolean) {\n\t\tthis.isVisibleValue = value;\n\t}\n\n\tprivate changeGrouping() {\n\t\t// wait for grid.constructor to be fully executed\n\t\tsetTimeout(() => {\n\t\t\tthis.grid.updateGrouping();\n\t\t});\n\t}\n}\n","import { Config, IDictionary, IEventParam, Metadata } from '@zeedhi/core';\nimport {\n\tButton,\n\tForm,\n\tIModal,\n\tInput,\n\tIterable,\n\tModal,\n\tModalService,\n\tSelectMultiple,\n} from '@zeedhi/common';\nimport { ISupportsToolbar, ITekGridColumn, ITekGridFilterButton } from './interfaces';\nimport { TekGridColumn } from './tek-grid-column';\nimport { TekMemoryDatasource, TekRestDatasource } from '../tek-datasource';\nimport { TekFilterHelper } from './filter-helper';\nimport { ITekConfig } from '../../utils/config/config';\n\n/**\n * Base class for TekGrid Filter Button component\n */\nexport class TekGridFilterButton extends Button implements ITekGridFilterButton {\n\tpublic gridName?: string;\n\n\tpublic grid: Iterable<TekGridColumn> & ISupportsToolbar;\n\n\tpublic showCheckboxAll = false;\n\n\tprivate filterModal?: Modal;\n\n\tprotected filterFormInputs: IDictionary<string[]> = {};\n\n\tconstructor(props: ITekGridFilterButton) {\n\t\tsuper(props);\n\t\tthis.gridName = this.getInitValue('gridName', props.gridName, this.gridName);\n\t\tthis.grid = this.getInitValue('grid', props.grid, undefined);\n\t\tthis.showCheckboxAll = this.getInitValue('showCheckboxAll', props.showCheckboxAll, this.showCheckboxAll);\n\t\tthis.createAccessors();\n\n\t\tif (!this.grid) this.loadGrid();\n\t}\n\n\tpublic loadGrid(gridName?: string) {\n\t\tif (gridName) this.gridName = gridName;\n\t\tif (!this.gridName) return;\n\n\t\tthis.grid = Metadata.getInstances(this.gridName)[0];\n\t}\n\n\tpublic click(event?: Event) {\n\t\tthis.callEvent('click', { component: this, event });\n\t\tthis.grid.callEvent('filterClick', { component: this.grid, event });\n\t\tif (!event?.defaultPrevented) {\n\t\t\tthis.createFilterFromColumns.call(this);\n\t\t}\n\t}\n\n\tprivate loadFilterValues({ component }: IEventParam<Form>) {\n\t\tconst changedCompNames: string[] = [];\n\n\t\tconst { datasource } = this.grid;\n\t\tif (datasource instanceof TekRestDatasource || datasource instanceof TekMemoryDatasource) {\n\t\t\tconst { dynamicFilter } = datasource;\n\n\t\t\tconst newDynamicFilter = { ...this.grid.defaultFilter, ...dynamicFilter };\n\n\t\t\tObject.keys(newDynamicFilter).forEach((column) => {\n\t\t\t\tif (newDynamicFilter[column] && newDynamicFilter[column].length > 0) {\n\t\t\t\t\tnewDynamicFilter[column].forEach((filterItem: any, index: number) => {\n\t\t\t\t\t\tconst relation = filterItem.relation || 'AND';\n\t\t\t\t\t\tconst operation = filterItem.operation || 'CONTAINS';\n\t\t\t\t\t\tconst compName = `${this.grid!.name}-filter-${relation}-${operation}-${column}-${index}`;\n\t\t\t\t\t\tchangedCompNames.push(compName);\n\t\t\t\t\t\tcomponent.value[compName] = filterItem.value;\n\n\t\t\t\t\t\tlet helperValue = '';\n\t\t\t\t\t\tconst columnObj = this.grid!.getColumn(column);\n\t\t\t\t\t\tif (columnObj instanceof TekGridColumn) {\n\t\t\t\t\t\t\tconst { filterProps } = columnObj;\n\t\t\t\t\t\t\tif (!Array.isArray(filterProps)) {\n\t\t\t\t\t\t\t\thelperValue = filterProps.helperValue || '';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfilterProps.forEach((prop) => {\n\t\t\t\t\t\t\t\t\tif ((prop.relation || 'AND') === relation && (prop.operation || 'CONTAINS') === operation) {\n\t\t\t\t\t\t\t\t\t\thelperValue = prop.helperValue || '';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst inputObj = Metadata.getInstances(compName);\n\t\t\t\t\t\t\tif (helperValue && inputObj.length && inputObj[0]) {\n\t\t\t\t\t\t\t\t(inputObj[0] as Input).hint = TekFilterHelper.getLabel(helperValue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst { filter } = datasource;\n\n\t\t\tconst newFilter = { ...this.grid.defaultFilter, ...filter };\n\n\t\t\tObject.keys(newFilter).forEach((item) => {\n\t\t\t\tif (newFilter[item]) {\n\t\t\t\t\tconst compName = `${this.grid!.name}-filter-AND-CONTAINS-${item}-0`;\n\t\t\t\t\tchangedCompNames.push(compName);\n\t\t\t\t\tcomponent.value[compName] = newFilter[item];\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tObject.keys(component.value).forEach((compName: string) => {\n\t\t\tif (changedCompNames.indexOf(compName) === -1) {\n\t\t\t\tcomponent.value[compName] = null;\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic hideFilterModal() {\n\t\tthis.filterModal!.hide();\n\t}\n\n\tpublic destroyFilterModal() {\n\t\tif (this.filterModal) this.filterModal!.destroy();\n\t}\n\n\tprivate createFilterFromColumns() {\n\t\tif (!this.filterModal) {\n\t\t\tconst originalProps = {\n\t\t\t\theight: 'auto',\n\t\t\t\tmaxHeight: '18.75rem',\n\t\t\t\tpersistent: true,\n\t\t\t\ttitle: 'FILTER',\n\t\t\t};\n\t\t\tconst mergeModalFilterProps = Object.assign(originalProps, this.grid.modalFilterProps);\n\t\t\tconst filterModalDef: IModal = {\n\t\t\t\tname: `${this.grid.name}-filter-modal`,\n\t\t\t\tpersistent: mergeModalFilterProps.persistent,\n\t\t\t\tgrid: mergeModalFilterProps.grid,\n\t\t\t\tcssClass: mergeModalFilterProps.cssClass,\n\t\t\t\tcssStyle: mergeModalFilterProps.cssStyle,\n\t\t\t\tdraggable: mergeModalFilterProps.draggable,\n\t\t\t\tdragHandle: mergeModalFilterProps.dragHandle,\n\t\t\t\tfullscreen: mergeModalFilterProps.fullscreen,\n\t\t\t\tlight: mergeModalFilterProps.light,\n\t\t\t\tdark: mergeModalFilterProps.dark,\n\t\t\t\tescKeydownStop: false,\n\t\t\t\tchildren: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: `${this.grid.name}-filter-header-container`,\n\t\t\t\t\t\tcomponent: 'ZdContainer',\n\t\t\t\t\t\tcssClass: 'zd-pa-0 zd-display-flex',\n\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: `${this.grid.name}-filter-title`,\n\t\t\t\t\t\t\t\tcomponent: 'ZdText',\n\t\t\t\t\t\t\t\tcssStyle: `color: ${'var(--v-primary-base);'}`,\n\t\t\t\t\t\t\t\ttext: mergeModalFilterProps.title,\n\t\t\t\t\t\t\t\ttag: 'h3',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: `${this.grid.name}-filter-spacer`,\n\t\t\t\t\t\t\t\tcomponent: 'VSpacer',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: `${this.grid.name}-filter-close-button`,\n\t\t\t\t\t\t\t\tcomponent: 'ZdModalCloseButton',\n\t\t\t\t\t\t\t\tsmall: true,\n\t\t\t\t\t\t\t\tmodalName: `${this.grid.name}-filter-modal`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: `${this.grid.name}-filter-content-container`,\n\t\t\t\t\t\tcomponent: 'ZdContainer',\n\t\t\t\t\t\tscrollView: true,\n\t\t\t\t\t\tcssClass: 'zd-my-2 zd-pa-0 tek-grid-filter-content-container',\n\t\t\t\t\t\tmaxHeight: mergeModalFilterProps!.maxHeight,\n\t\t\t\t\t\theight: mergeModalFilterProps!.height,\n\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: `${this.grid.name}-filter-form`,\n\t\t\t\t\t\t\t\tcomponent: 'ZdForm',\n\t\t\t\t\t\t\t\tcssClass: 'zd-my-2 zd-pa-0',\n\t\t\t\t\t\t\t\tchildren: this.getFilterModalComponents(),\n\t\t\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\t\t\tonMounted: this.loadFilterValues.bind(this),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: `${this.grid.name}-filter-footer-container`,\n\t\t\t\t\t\tcomponent: 'ZdContainer',\n\t\t\t\t\t\tcssClass: 'zd-pa-0',\n\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: `${this.grid.name}-filter-footer`,\n\t\t\t\t\t\t\t\tcomponent: 'ZdFooter',\n\t\t\t\t\t\t\t\tcolor: 'transparent',\n\t\t\t\t\t\t\t\tpadless: true,\n\t\t\t\t\t\t\t\tleftSlot: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: `${this.grid.name}-filter-clearButton`,\n\t\t\t\t\t\t\t\t\t\tcomponent: 'ZdButton',\n\t\t\t\t\t\t\t\t\t\tlabel: 'CLEAR',\n\t\t\t\t\t\t\t\t\t\toutline: true,\n\t\t\t\t\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\t\t\t\t\tclick: this.clearFilter.bind(this),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trightSlot: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: `${this.grid.name}-filter-cancelButton`,\n\t\t\t\t\t\t\t\t\t\tcomponent: 'ZdButton',\n\t\t\t\t\t\t\t\t\t\tlabel: 'CANCEL',\n\t\t\t\t\t\t\t\t\t\tkeyMap: {\n\t\t\t\t\t\t\t\t\t\t\tesc: {\n\t\t\t\t\t\t\t\t\t\t\t\tevent: this.hideFilterModal.bind(this),\n\t\t\t\t\t\t\t\t\t\t\t\tfocus: true,\n\t\t\t\t\t\t\t\t\t\t\t\tvisible: true,\n\t\t\t\t\t\t\t\t\t\t\t\tinput: true,\n\t\t\t\t\t\t\t\t\t\t\t\tstop: true,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\toutline: true,\n\t\t\t\t\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\t\t\t\t\tclick: this.hideFilterModal.bind(this),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: `${this.grid.name}-filter-okButton`,\n\t\t\t\t\t\t\t\t\t\tcomponent: 'ZdButton',\n\t\t\t\t\t\t\t\t\t\tlabel: 'OK',\n\t\t\t\t\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\t\t\t\t\tclick: this.applyFilter.bind(this),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tkeyMap: {\n\t\t\t\t\t\t\t\t\t\t\t'mod+enter': {\n\t\t\t\t\t\t\t\t\t\t\t\tevent: this.applyFilter.bind(this),\n\t\t\t\t\t\t\t\t\t\t\t\tfocus: true,\n\t\t\t\t\t\t\t\t\t\t\t\tinput: true,\n\t\t\t\t\t\t\t\t\t\t\t\tstop: true,\n\t\t\t\t\t\t\t\t\t\t\t\tvisible: true,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tthis.filterModal = ModalService.create(filterModalDef);\n\t\t} else {\n\t\t\tthis.loadFilterValues({ component: Metadata.getInstance(`${this.grid.name}-filter-form`) });\n\t\t}\n\t\tthis.filterModal.show();\n\t}\n\n\tpublic onBeforeDestroy() {\n\t\tsuper.onBeforeDestroy();\n\t\tthis.destroyFilterModal();\n\t}\n\n\tprivate formatFormValue(filterForm: Form) {\n\t\treturn Object.keys(filterForm.value).reduce((result, item) => {\n\t\t\ttry {\n\t\t\t\tconst itemInstance = filterForm.getChildInstance<Input>(item);\n\t\t\t\tif (!(itemInstance instanceof SelectMultiple) || !itemInstance.checkboxAll) return result;\n\n\t\t\t\t// when selectmultiple with checkboxAll, should either remove it from the filter or\n\t\t\t\t// change the value to T, depending on selectAllCompatibilityMode\n\t\t\t\tif ((Config as ITekConfig).selectAllCompatibilityMode) {\n\t\t\t\t\tresult[item] = 'T';\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tdelete result[item];\n\t\t\t\treturn result;\n\t\t\t} catch (e) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}, { ...filterForm.value });\n\t}\n\n\tprivate async applyFilter({ event }: any) {\n\t\tconst filterForm = Metadata.getInstance<Form>(`${this.grid.name}-filter-form`);\n\t\tconst isFormValid = await filterForm.validate();\n\t\tif (isFormValid.valid) {\n\t\t\tconst { datasource } = this.grid;\n\t\t\tconst filter: IDictionary = {};\n\t\t\tconst formValue = this.formatFormValue(filterForm);\n\n\t\t\tif (datasource instanceof TekRestDatasource || datasource instanceof TekMemoryDatasource) {\n\t\t\t\tObject.keys(formValue).forEach((item) => {\n\t\t\t\t\tconst itemValue = formValue[item];\n\n\t\t\t\t\tif (itemValue && !(Array.isArray(itemValue) && !itemValue.length)) {\n\t\t\t\t\t\tconst relationAndOperationAndName = item.split(`${this.grid!.name}-filter-`)[1];\n\t\t\t\t\t\tconst [relation, operation] = relationAndOperationAndName.split('-');\n\t\t\t\t\t\tlet columnName = relationAndOperationAndName.split(`${relation}-${operation}-`)[1];\n\t\t\t\t\t\tcolumnName = columnName.split('-').slice(0, -1).join('-'); // remove index\n\n\t\t\t\t\t\tif (!filter[columnName]) {\n\t\t\t\t\t\t\tfilter[columnName] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst value = itemValue;\n\t\t\t\t\t\tfilter[columnName].push({\n\t\t\t\t\t\t\trelation,\n\t\t\t\t\t\t\toperation,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tdatasource.dynamicFilter = filter;\n\t\t\t\tthis.setFilter(filter, event, datasource.setDynamicFilter.bind(datasource));\n\t\t\t} else {\n\t\t\t\tObject.keys(formValue).forEach((item) => {\n\t\t\t\t\tlet columnName = item.split(`${this.grid!.name}-filter-AND-CONTAINS-`)[1];\n\t\t\t\t\tcolumnName = columnName.split('-').slice(0, -1).join('-'); // remove index\n\n\t\t\t\t\tconst itemValue = formValue[item];\n\t\t\t\t\tif (itemValue && !(Array.isArray(itemValue) && !itemValue.length)) {\n\t\t\t\t\t\tfilter[columnName] = itemValue;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tdatasource.filter = filter;\n\t\t\t\tthis.setFilter(filter, event, datasource.setFilter.bind(datasource));\n\t\t\t}\n\n\t\t\tthis.grid.changeLayout(event);\n\t\t}\n\t}\n\n\tprivate setFilter(filter: IDictionary, event: Event, filterFn: (filter: IDictionary) => Promise<any>) {\n\t\tthis.grid.callEvent('beforeApplyFilter', { component: this.grid, event });\n\t\tif (event.defaultPrevented) return;\n\n\t\tfilterFn(filter);\n\t\tthis.hideFilterModal();\n\t}\n\n\tprivate clearFilter() {\n\t\tconst filterForm = Metadata.getInstance<Form>(`${this.grid!.name}-filter-form`);\n\t\tObject.keys(filterForm.value).forEach((item) => {\n\t\t\tfilterForm.value[item] = null;\n\t\t});\n\t}\n\n\tprivate sortFilterIndex(col1: ITekGridColumn, col2: ITekGridColumn) {\n\t\tconst index1 = col1.filterIndex !== undefined ? col1.filterIndex : Number.MAX_SAFE_INTEGER;\n\t\tconst index2 = col2.filterIndex !== undefined ? col2.filterIndex : Number.MAX_SAFE_INTEGER;\n\t\treturn index1 - index2;\n\t}\n\n\tpublic getFilterInputs(columnName?: string) {\n\t\tconst mapper = (name: string) => Metadata.getInstance<Input>(name);\n\n\t\tif (columnName) {\n\t\t\treturn this.filterFormInputs[columnName].map(mapper);\n\t\t}\n\n\t\tconst values = Object.values(this.filterFormInputs);\n\n\t\treturn values.reduce((result: Input[], current) => ([...result, ...current.map(mapper)]), []);\n\t}\n\n\tprivate getFilterModalComponents() {\n\t\tconst filterColumns: ITekGridColumn[] = [];\n\t\tlet columnComponentName: any;\n\t\t[...this.grid.columns].sort(this.sortFilterIndex).forEach((column) => {\n\t\t\tconst filterProps = Array.isArray(column.filterProps) ? column.filterProps : [column.filterProps];\n\t\t\tif (column.filterable && filterProps && filterProps.length > 0) {\n\t\t\t\tthis.filterFormInputs[column.name] = [];\n\n\t\t\t\tfilterProps.forEach((filterItem, index: number) => {\n\t\t\t\t\tconst { datasource } = this.grid;\n\t\t\t\t\tif (datasource instanceof TekRestDatasource || datasource instanceof TekMemoryDatasource) {\n\t\t\t\t\t\tconst relation = filterItem.relation || 'AND';\n\t\t\t\t\t\tconst operation = filterItem.operation || 'CONTAINS';\n\n\t\t\t\t\t\tcolumnComponentName = `${this.grid!.name}-filter-${relation}-${operation}-${column.name}-${index}`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcolumnComponentName = `${this.grid!.name}-filter-AND-CONTAINS-${column.name}-${index}`;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.filterFormInputs[column.name].push(columnComponentName);\n\n\t\t\t\t\tconst { dataValueOut, ...componentProps } = column.componentProps || {};\n\t\t\t\t\tconst newColumnComponent = {\n\t\t\t\t\t\tlabel: column.label,\n\t\t\t\t\t\t...componentProps,\n\t\t\t\t\t\t...filterItem,\n\t\t\t\t\t\tname: columnComponentName,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (filterItem.helperOptions) {\n\t\t\t\t\t\tif (!newColumnComponent.events) newColumnComponent.events = {};\n\t\t\t\t\t\tnewColumnComponent.events.change = this.changeHelperEvent.bind(this, column);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (newColumnComponent.component === 'ZdSelectMultiple') {\n\t\t\t\t\t\tnewColumnComponent.showCheckboxAll = newColumnComponent.showCheckboxAll ?? this.showCheckboxAll;\n\t\t\t\t\t}\n\n\t\t\t\t\tfilterColumns.push(newColumnComponent);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\treturn filterColumns;\n\t}\n\n\tprivate changeHelperEvent(column: TekGridColumn, { component }: any) {\n\t\tconst { helperValue } = component;\n\t\tconst componentName = component.name;\n\n\t\tif (!Array.isArray(column.filterProps)) {\n\t\t\tcolumn.filterProps.helperValue = helperValue;\n\t\t} else {\n\t\t\tcolumn.filterProps.forEach((prop) => {\n\t\t\t\tconst relationAndOperationAndName = componentName.split(`${this.grid!.name}-filter-`)[1];\n\t\t\t\tconst [relation, operation] = relationAndOperationAndName.split('-');\n\t\t\t\tif ((prop.relation || 'AND') === relation && (prop.operation || 'CONTAINS') === operation) {\n\t\t\t\t\tprop.helperValue = helperValue;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}\n","export const extractProperties = (obj: any, props: string[]) => {\n\tconst result: any = {};\n\tprops.forEach((prop) => {\n\t\tif (obj[prop] !== undefined) {\n\t\t\tresult[prop] = obj[prop];\n\t\t}\n\t});\n\n\treturn result;\n};\n","const isFilledObject = (obj: unknown): obj is object => {\n\treturn !!obj && typeof obj === 'object' && !Array.isArray(obj) && !!Object.keys(obj).length;\n};\n\nexport { isFilledObject };\n","export function isNil(value: unknown): value is null | undefined {\n\treturn value === null || value === undefined;\n}\n","import { MetadataFilter } from '@zeedhi/common';\nimport { I18n, IDictionary } from '@zeedhi/core';\nimport { IDynamicFilterItem } from '../../components/tek-datasource/interfaces';\n\n/**\n * Class to translate a TekRestDatasource dynamicFilter to the ZhReports format\n */\nexport class ReportFilter {\n\tpublic filter: IDictionary<IDynamicFilterItem[]> = {};\n\n\tprivate messages: IDictionary<string> = {\n\t\tCONTAINS: 'TEKGRID_CONTAINS',\n\t\tNOT_CONTAINS: 'TEKGRID_NOT_CONTAINS',\n\t\tEQUALS: 'TEKGRID_EQUALS',\n\t\tNOT_EQUAL: 'TEKGRID_NOT_EQUALS',\n\t\tGREATER_THAN: 'TEKGRID_GREATER_THAN',\n\t\tLESS_THAN: 'TEKGRID_LESS_THAN',\n\t\tGREATER_THAN_EQUALS: 'TEKGRID_GREATER_THAN_EQUALS',\n\t\tLESS_THAN_EQUALS: 'TEKGRID_LESS_THAN_EQUALS',\n\t\tIN: 'TEKGRID_IN',\n\t\tNOT_IN: 'TEKGRID_NOT_IN',\n\t\tBETWEEN: 'TEKGRID_BETWEEN',\n\t\tAND: 'TEKGRID_AND',\n\t\tOR: 'TEKGRID_OR',\n\t};\n\n\tconstructor(filter: IDictionary) {\n\t\tthis.filter = filter;\n\t}\n\n\tpublic build(): MetadataFilter {\n\t\treturn Object.keys(this.filter).map((key) => {\n\t\t\tconst items = this.filter[key];\n\n\t\t\tconst words: string[] = [];\n\t\t\titems.forEach((item, index) => {\n\t\t\t\tconst operation = this.messages[item.operation];\n\t\t\t\twords.push(I18n.translate(operation));\n\n\t\t\t\twords.push(item.value);\n\n\t\t\t\tconst isLast = index === items.length - 1;\n\t\t\t\tif (!isLast) {\n\t\t\t\t\tconst next = items[index + 1];\n\t\t\t\t\tconst relation = this.messages[next.relation];\n\t\t\t\t\twords.push(I18n.translate(relation));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst value = words.join(' ').trim();\n\t\t\treturn {\n\t\t\t\tvalue,\n\t\t\t\tlabel: key,\n\t\t\t};\n\t\t});\n\t}\n}\n","import { I18n, IDictionary } from '@zeedhi/core';\nimport debounce from 'lodash.debounce';\nimport { NonInitializedError } from '@zeedhi/common';\nimport { isFilledObject, isNil } from '../../utils';\nimport {\n\tIGroupedDataManager,\n\tITekGrid,\n\tITekGridGroup,\n\tITekGridGroupFooter,\n\tITekGridGroupHeader,\n\tITekGridSummary,\n} from './interfaces';\nimport { TekGridColumn } from './tek-grid-column';\n\nexport class GroupedDataManager implements IGroupedDataManager {\n\tprotected grid: ITekGrid;\n\n\tpublic summaryColumns: TekGridColumn[] = [];\n\n\tprivate groups: ITekGridGroup[] = [];\n\n\tprivate summary: IDictionary<ITekGridSummary> = {};\n\n\tprivate groupedData: IDictionary<any>[] = [];\n\n\tprivate groupColumnNames: string[] = [];\n\n\tprivate groupColumns: TekGridColumn[] = [];\n\n\tprivate originalDatasourceLoadAll?: boolean;\n\n\tprivate originalDatasourceLimit?: number;\n\n\tprivate viewUpdateScrollData?: () => void;\n\n\tprivate viewUpdateFixedColumns?: () => void;\n\n\tconstructor(grid: ITekGrid) {\n\t\tthis.grid = grid;\n\t}\n\n\tsetViewUpdateFixedColumns(fn: () => void) {\n\t\tthis.viewUpdateFixedColumns = fn;\n\t}\n\n\tsetViewUpdateScrollData(fn: () => void) {\n\t\tthis.viewUpdateScrollData = fn;\n\t}\n\n\t/**\n\t * Tasks that should be finished before loading the grid data\n\t */\n\tprivate tasksBeforeLoad: Promise<any>[] = [];\n\n\tpublic registerTask(task: Promise<any>) {\n\t\tthis.tasksBeforeLoad.push(task);\n\t}\n\n\tprivate request: () => void = () => {\n\t\tthrow new NonInitializedError(this.constructor.name);\n\t};\n\n\tprivate debounceUpdateGrouping: (lazyLoad?: boolean) => void = () => {\n\t\tthrow new NonInitializedError(this.constructor.name);\n\t};\n\n\t/**\n\t * Loads grid data after resolving all tasks\n\t */\n\tpublic async loadAfterTasks() {\n\t\tPromise.all(this.tasksBeforeLoad.map((promise) => promise.catch(() => undefined)));\n\t\tthis.tasksBeforeLoad = [];\n\n\t\treturn this.request();\n\t}\n\n\tprivate initializeDebounceFunctions() {\n\t\tthis.request = debounce(() => {\n\t\t\tthis.grid.reload();\n\t\t}, 500);\n\t\tthis.debounceUpdateGrouping = debounce((lazyLoad = false) => {\n\t\t\tthis.updateGroupedData(lazyLoad);\n\t\t}, 100);\n\t}\n\n\t/**\n\t * Initializes grid groups, summary columns and registers the grid datasource callback\n\t * @param lazyLoad defines if the grid should automatically load data after updating the datasource\n\t */\n\tinitializeGrouping(lazyLoad: boolean): void {\n\t\tthis.initializeDebounceFunctions();\n\n\t\tthis.initGroups();\n\t\tthis.initSummaryColumns();\n\n\t\tthis.originalDatasourceLoadAll = this.grid.datasource.loadAll;\n\t\tthis.originalDatasourceLimit = this.grid.datasource.limit;\n\t\tthis.grid.datasource.registerGetCallback((data) => this.onGet(data));\n\t\tthis.updateGrouping(lazyLoad);\n\t}\n\n\tprivate onGet(data: IDictionary) {\n\t\tif (this.isGrouped()) {\n\t\t\tthis.buildGroupedData();\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tprivate resetFooterVariables(group: ITekGridGroup) {\n\t\tthis.summaryColumns.forEach((column) => {\n\t\t\tgroup.footer[column.name] = {\n\t\t\t\tcount: 0,\n\t\t\t\tsum: undefined,\n\t\t\t\tavg: undefined,\n\t\t\t\tmin: undefined,\n\t\t\t\tmax: undefined,\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate initGroups() {\n\t\tthis.groups = [];\n\t\tthis.groupColumns.forEach((column) => {\n\t\t\tconst newGroup = {\n\t\t\t\tcolumn,\n\t\t\t\tname: column.name,\n\t\t\t\tlabel: column.label,\n\t\t\t\tlastValue: undefined,\n\t\t\t\tinitialized: false,\n\t\t\t\tfooter: {},\n\t\t\t};\n\t\t\tthis.resetFooterVariables(newGroup);\n\n\t\t\tthis.groups.push(newGroup);\n\t\t});\n\t}\n\n\tgetGroupedData(): IDictionary<any>[] {\n\t\treturn this.groupedData;\n\t}\n\n\tprivate initSummaryColumns() {\n\t\tthis.summaryColumns = this.grid.columns.filter((column) => !!column.aggregation && !column.grouped);\n\t\tthis.summary = {};\n\t}\n\n\t/**\n\t * Calls updateGroupedData with debounce\n\t */\n\tpublic updateGrouping(lazyLoad?: boolean) {\n\t\tthis.debounceUpdateGrouping(lazyLoad);\n\t}\n\n\t/**\n\t * Inits summary columns, updates the grid datasource and, if needed, reloads the grid data\n\t */\n\tasync updateGroupedData(lazyLoad: boolean): Promise<void> {\n\t\tthis.initSummaryColumns();\n\t\tthis.updateGridDatasource();\n\n\t\tif (!lazyLoad) {\n\t\t\tawait this.loadAfterTasks();\n\t\t}\n\n\t\tif (this.grid.virtualScroll && this.viewUpdateScrollData) {\n\t\t\tthis.viewUpdateScrollData();\n\t\t}\n\t\tif (this.viewUpdateFixedColumns) {\n\t\t\tthis.viewUpdateFixedColumns();\n\t\t}\n\t}\n\n\t/**\n\t * When using groups, should update the grid datasource order to reflect the group order\n\t * If the grid is not grouped, should not update the datasource order\n\t */\n\tprivate updateGridDatasource() {\n\t\tthis.groupedData = [];\n\n\t\tthis.groupColumns = this.grid.columns.filter((column) => column.grouped);\n\t\tthis.groupColumnNames = this.groupColumns.map((column) => column.name);\n\t\tif (this.isGrouped()) {\n\t\t\tif (this.groupColumns.length) {\n\t\t\t\tconst order = this.getOrder(this.groupColumnNames, this.grid.datasource.order);\n\t\t\t\tthis.grid.datasource.order = order;\n\t\t\t}\n\n\t\t\tthis.grid.datasource.loadAll = true;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.grid.datasource.loadAll = this.originalDatasourceLoadAll!;\n\t\tthis.grid.datasource.limit = this.originalDatasourceLimit!;\n\t}\n\n\t/**\n\t * Returns the order to be used in the grid datasource based on the group column names and the grid order\n\t */\n\tprivate getOrder(groupColumnNames: string[], gridOrder: string[]): string[] {\n\t\tconst groupOrderColumns = groupColumnNames.map((column) => `${column}.asc`);\n\t\tconst otherOrderColumns = gridOrder.filter((column) => groupColumnNames.indexOf(column.split('.')[0]) === -1);\n\n\t\treturn [...groupOrderColumns, ...otherOrderColumns];\n\t}\n\n\t/**\n\t * Returns the summary data for the group\n\t */\n\tpublic getSummaryData(group: IDictionary<ITekGridSummary>) {\n\t\tconst summaryData: IDictionary = {};\n\t\tthis.summaryColumns.forEach((column) => {\n\t\t\tconst { aggregation } = column;\n\t\t\tconst currentGroup = group[column.name];\n\n\t\t\tif (!currentGroup) {\n\t\t\t\tsummaryData[column.name] = 0;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (aggregation === 'COUNT') {\n\t\t\t\tsummaryData[column.name] = currentGroup.count;\n\t\t\t} else if (aggregation === 'SUM') {\n\t\t\t\tsummaryData[column.name] = currentGroup.sum;\n\t\t\t} else if (aggregation === 'AVG') {\n\t\t\t\tif (currentGroup.avg) {\n\t\t\t\t\tsummaryData[column.name] = currentGroup.avg;\n\t\t\t\t} else if (typeof currentGroup.sum === 'number') {\n\t\t\t\t\tsummaryData[column.name] = currentGroup.sum / currentGroup.count;\n\t\t\t\t}\n\t\t\t} else if (aggregation === 'MIN') {\n\t\t\t\tsummaryData[column.name] = currentGroup.min;\n\t\t\t} else {\n\t\t\t\t// if (aggregation === 'MAX') {\n\t\t\t\tsummaryData[column.name] = currentGroup.max;\n\t\t\t}\n\t\t});\n\n\t\treturn summaryData;\n\t}\n\n\t/**\n\t * Adds group footers to the grouped data\n\t */\n\tprivate addGroupFooters(groupIndex: number) {\n\t\tif (this.summaryColumns.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = this.groups.length - 1; i >= groupIndex; i -= 1) {\n\t\t\tif (this.groups[i].initialized) {\n\t\t\t\tconst groupFooterRow: ITekGridGroupFooter = {\n\t\t\t\t\tgroupFooter: true,\n\t\t\t\t\tgroupIndex: i,\n\t\t\t\t\tgroupHeaders: [],\n\t\t\t\t\tgroupLabel: this.groups[i].lastGroupHeaderRow!.groupLabel,\n\t\t\t\t\tgroupValue: this.groups[i].lastGroupHeaderRow!.groupValue,\n\t\t\t\t\t...this.getSummaryData(this.groups[i].footer),\n\t\t\t\t};\n\n\t\t\t\t// add header for outer groups\n\t\t\t\tfor (let g = 0; g < i; g += 1) {\n\t\t\t\t\tconst { lastGroupHeaderRow } = this.groups[g];\n\t\t\t\t\tif (lastGroupHeaderRow) {\n\t\t\t\t\t\tgroupFooterRow.groupHeaders.push(lastGroupHeaderRow);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.groupedData.push(groupFooterRow);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getGroupValue(group: IDictionary<any>, row: IDictionary<any>) {\n\t\tconst groupColumn = this.grid.getColumn(group.column.name);\n\t\tconst cellsApplied = this.grid.getAppliedConditions({ row, column: groupColumn });\n\t\tif (!isFilledObject(cellsApplied)) {\n\t\t\tthis.grid.reapplyConditions(row);\n\t\t}\n\t\tconst groupValue = groupColumn.formatterByRow(row, cellsApplied);\n\t\treturn groupValue;\n\t}\n\n\tprivate addGroupHeader(row: IDictionary, group: ITekGridGroup, index: number) {\n\t\tconst groupValue = this.getGroupValue(group, row) || group.column.groupLabelForEmptyValue;\n\t\tconst groupHeaderRow: ITekGridGroupHeader = {\n\t\t\tgroup: true,\n\t\t\tgroupRow: row,\n\t\t\tgroupColumnName: group.column.name,\n\t\t\tgroupHeader: true,\n\t\t\tgroupIndex: index,\n\t\t\tgroupLabel: I18n.translate(group.label),\n\t\t\tgroupValue,\n\t\t\tgroupOpened: group.column.groupOpened || this.grid.groupsOpened,\n\t\t\tgroupHeaders: [],\n\t\t\tchildren: [],\n\t\t};\n\t\t// add header for outer groups to the added row\n\t\tfor (let i = 0; i < index; i += 1) {\n\t\t\tgroupHeaderRow.groupHeaders.push(this.groups[i].lastGroupHeaderRow!);\n\t\t}\n\t\tgroup.lastGroupHeaderRow = groupHeaderRow;\n\t\tgroup.initialized = true;\n\t\tthis.groupedData.push(groupHeaderRow);\n\t}\n\n\tprivate calcSummaryValues(column: TekGridColumn, summary: ITekGridSummary, row: IDictionary) {\n\t\tconst rowValue = this.grid.getVisibleValue(row, column);\n\n\t\tif (isNil(rowValue)) return;\n\n\t\tsummary.count += 1;\n\n\t\tif (this.grid.events.calcSummary) {\n\t\t\tthis.grid.calcSummary(column, summary, row);\n\t\t\treturn;\n\t\t}\n\n\t\tif (summary.min === undefined) summary.min = rowValue;\n\t\tif (summary.max === undefined) summary.max = rowValue;\n\t\tsummary.min = rowValue < summary.min ? rowValue : summary.min;\n\t\tsummary.max = rowValue > summary.max ? rowValue : summary.max;\n\n\t\tif (typeof rowValue === 'number') {\n\t\t\tsummary.sum = (summary.sum || 0) + rowValue;\n\t\t}\n\t}\n\n\tprivate calcSummary(row: IDictionary<any>) {\n\t\tif (this.summaryColumns.length === 0) return;\n\n\t\tthis.summaryColumns.forEach((column) => {\n\t\t\tconst columnName = column.name;\n\t\t\tif (isNil(this.summary[columnName])) {\n\t\t\t\tthis.summary[columnName] = {\n\t\t\t\t\tcount: 0,\n\t\t\t\t\tsum: undefined,\n\t\t\t\t\tavg: undefined,\n\t\t\t\t\tmin: undefined,\n\t\t\t\t\tmax: undefined,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthis.calcSummaryValues(column, this.summary[columnName], row);\n\n\t\t\tthis.groups.forEach((group) => {\n\t\t\t\tthis.calcSummaryValues(column, group.footer[columnName], row);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate addSummary() {\n\t\tif (this.summaryColumns.length === 0) return;\n\n\t\tconst summaryRow = {\n\t\t\tgroupFooter: true,\n\t\t\tgroupSummary: true,\n\t\t\t...this.getSummaryData(this.summary),\n\t\t};\n\n\t\tthis.groupedData.push(summaryRow);\n\t}\n\n\t/**\n\t * It takes a flat array of data and groups it by the group columns specified in\n\t * the grid.\n\t */\n\tbuildGroupedData(): void {\n\t\tthis.initGroups();\n\t\tthis.initSummaryColumns();\n\t\tthis.groupedData = [];\n\t\tconst data = this.grid.getData();\n\n\t\tdata.forEach((row) => {\n\t\t\tlet groupBreak = false;\n\t\t\tthis.groups.forEach((group, index) => {\n\t\t\t\tconst groupValue = row[group.name];\n\t\t\t\tif (group.lastValue !== groupValue || groupBreak) {\n\t\t\t\t\tif (!groupBreak) {\n\t\t\t\t\t\tthis.addGroupFooters(index);\n\t\t\t\t\t}\n\t\t\t\t\tgroup.lastValue = groupValue;\n\n\t\t\t\t\tthis.resetFooterVariables(group);\n\t\t\t\t\tthis.addGroupHeader(row, group, index);\n\t\t\t\t\tgroupBreak = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.groups.forEach((group) => {\n\t\t\t\tgroup.lastGroupHeaderRow!.children.push(row);\n\t\t\t});\n\n\t\t\tthis.groupedData.push({\n\t\t\t\t...row,\n\t\t\t\tgroupHeaders: this.groups.map((group) => group.lastGroupHeaderRow).filter(Boolean),\n\t\t\t});\n\n\t\t\tthis.calcSummary(row);\n\t\t});\n\n\t\tif (this.groupedData.length > 0) {\n\t\t\tthis.addGroupFooters(0);\n\n\t\t\tif (this.grid.showSummaryTotal) {\n\t\t\t\tthis.addSummary();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate updateGroupFooterSummary(groupFooter: ITekGridGroupFooter) {\n\t\tconst group = this.groups[groupFooter.groupIndex];\n\t\tconst summary = this.getSummaryData(group.footer);\n\n\t\tObject.keys(summary).forEach((key) => {\n\t\t\tgroupFooter[key] = summary[key];\n\t\t});\n\t}\n\n\tprivate updateSummaryTotal(summaryTotal: IDictionary<any>) {\n\t\tconst summary = this.getSummaryData(this.summary);\n\n\t\tObject.keys(summary).forEach((key) => {\n\t\t\tsummaryTotal[key] = summary[key];\n\t\t});\n\t}\n\n\t/**\n\t * Recalculates all group footers and the summary total in place, without rebuilding\n\t * the grouped data structure. Used to reflect in-progress cell edits.\n\t */\n\tpublic updateSummary(): void {\n\t\tthis.summary = {};\n\t\tthis.groups.forEach((group) => this.resetFooterVariables(group));\n\n\t\tthis.groupedData.forEach((row) => {\n\t\t\tif (row.group) return;\n\n\t\t\tif (row.groupFooter && row.groupSummary) {\n\t\t\t\tthis.updateSummaryTotal(row);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (row.groupFooter) {\n\t\t\t\tthis.updateGroupFooterSummary(row as ITekGridGroupFooter);\n\t\t\t\tthis.resetFooterVariables(this.groups[(row as ITekGridGroupFooter).groupIndex]);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.calcSummary(row);\n\t\t});\n\t}\n\n\topenGroup(group: IDictionary<any>): void {\n\t\tgroup.groupOpened = !group.groupOpened;\n\t\tif (this.grid.virtualScroll && this.viewUpdateScrollData) this.viewUpdateScrollData();\n\t}\n\n\tisItemVisible(row: IDictionary<any>) {\n\t\treturn !row.groupHeaders?.length || row.groupHeaders.every((group: any) => group.groupOpened);\n\t}\n\n\tisGrouped(): boolean {\n\t\treturn !!this.groupColumnNames.length || (this.grid.showSummaryTotal && !!this.summaryColumns.length);\n\t}\n\n\tisColumnSearchable(column: TekGridColumn): boolean {\n\t\treturn column.searchable && (!this.grid.searchVisibleOnly || column.isVisible || column.grouped);\n\t}\n\n\tdirectionalLeft(): void {\n\t\tconst { currentRow } = this.grid.datasource;\n\t\tif (currentRow.group && currentRow.groupOpened) {\n\t\t\tcurrentRow.groupOpened = false;\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.grid.cellSelection || !currentRow.groupHeaders?.length) return;\n\n\t\tconst newCurrentRow = currentRow.groupHeaders[currentRow.groupHeaders.length - 1];\n\t\tthis.grid.setCurrentRow(newCurrentRow);\n\t}\n\n\tdirectionalRight(): void {\n\t\tconst { currentRow } = this.grid.datasource;\n\n\t\tif (!currentRow.group || currentRow.groupOpened) return;\n\n\t\tcurrentRow.groupOpened = true;\n\t}\n}\n","import { IDictionary } from '@zeedhi/core';\nimport { DataNavigator, IDataNavigator, VerticalDirection } from '@zeedhi/common';\nimport { ITekGrid } from './interfaces';\n\nexport class GroupedDataNavigator implements IDataNavigator {\n\tprivate dataNavigator: DataNavigator;\n\n\tprotected grid: ITekGrid;\n\n\tconstructor(grid: ITekGrid) {\n\t\tthis.dataNavigator = new DataNavigator(grid);\n\t\tthis.grid = grid;\n\t}\n\n\tpublic navigatePageUp(): void {\n\t\tthis.dataNavigator.navigatePageUp();\n\t}\n\n\tpublic navigatePageDown(): void {\n\t\tthis.dataNavigator.navigatePageDown();\n\t}\n\n\tpublic navigateDatasource(direction: VerticalDirection): void {\n\t\tif (!this.grid.isGrouped()) {\n\t\t\tthis.dataNavigator.navigateDatasource(direction);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.navigateGroupedDatasource(direction);\n\t}\n\n\tprivate getRowIndex(groupedData: IDictionary[], index?: number) {\n\t\tif (index !== undefined) return index;\n\n\t\tconst { currentRow } = this.grid.datasource;\n\t\treturn groupedData.findIndex((row) => {\n\t\t\tif (currentRow.group) {\n\t\t\t\treturn row.group && row.groupValue === currentRow.groupValue;\n\t\t\t}\n\t\t\tconst rowKey = this.grid.getRowKey(row);\n\t\t\tconst currentRowKey = this.grid.getRowKey(currentRow);\n\t\t\treturn rowKey && rowKey === currentRowKey;\n\t\t});\n\t}\n\n\tprivate navigateGroupedDatasource(direction: VerticalDirection, index?: number): void {\n\t\tconst groupedData = this.grid.getGroupedData();\n\t\tconst up = direction === 'up';\n\n\t\tif (!groupedData.length || (up && index === -1) || (!up && index === groupedData.length)) return;\n\n\t\tlet rowIndex = this.getRowIndex(groupedData, index);\n\n\t\tif (up && rowIndex === -1) rowIndex = groupedData.length;\n\n\t\tconst nextIndex = rowIndex + (up ? -1 : 1);\n\t\tconst newRow = groupedData[nextIndex];\n\n\t\tif (!newRow || !this.grid.isItemVisible(newRow) || newRow.groupFooter) {\n\t\t\tthis.navigateGroupedDatasource(direction, nextIndex);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.grid.setCurrentRow(newRow);\n\t}\n}\n","import { Datasource, IDictionary, IEvent, IEventParam } from '@zeedhi/core';\nimport {\n\tEventDef,\n\tGridEventsProp,\n\tIBeforeReportEvent,\n\tIButton,\n\tIComponent,\n\tIComponentEvents,\n\tIComponentRender,\n\tIGridColumnEditable,\n\tIGridEditable,\n\tIGridEditableEvents,\n\tIGridEditableProps,\n\tIGridEvent,\n\tIIterableColumnsButton,\n\tIModal,\n\tInput,\n\tIterable,\n\tLabelFormatter,\n} from '@zeedhi/common';\nimport { IDynamicFilterItem } from '../tek-datasource/interfaces';\nimport { TekGridColumn } from './tek-grid-column';\n\nexport interface IModalFilterProps extends IModal {\n\theight?: string;\n\tmaxHeight?: string;\n}\n\nexport interface ITekGridLayoutColumn {\n\tname: string;\n\twidth?: string;\n\tminWidth?: string;\n\tmaxWidth?: string;\n\tisVisible?: boolean;\n\tfixed?: boolean;\n\tgrouped?: boolean;\n\taggregation?: ITekGridColumnAggregation;\n\tlabel?: string;\n\talign?: 'left' | 'right' | 'center';\n\tgroupOpened?: boolean;\n\tfilterHelperValue?: string | IDictionary<any>;\n}\n\nexport interface ITekGridLayout {\n\tname: string;\n\tgridWidth?: string;\n\tcolumns?: ITekGridLayoutColumn[];\n\torder?: string[];\n\tdynamicFilter?: IDictionary<IDynamicFilterItem[]>;\n\tfilter?: IDictionary<any>;\n}\n\nexport interface ITekGridLayoutInfo {\n\tcurrentLayoutName?: string;\n\tlayouts?: IDictionary<ITekGridLayout>;\n}\n\nexport interface ITekGridLayoutEventParams extends IEventParam<ITekGrid> {\n\tlayouts: ITekGridLayoutInfo;\n}\n\nexport interface ITekGridSummary {\n\tsum: any;\n\tavg: any;\n\tcount: number;\n\tmin: any;\n\tmax: any;\n}\n\nexport interface ITekGridCalcSummaryEventParams extends IEventParam<ITekGrid> {\n\tsummary: ITekGridSummary;\n\tcolumnName: string;\n\trowValue: IDictionary<any>;\n}\n\nexport interface ITekGridProps extends IGridEditableProps, Partial<ISupportsToolbar>, Partial<IExportable> {\n\tevents?: TekGridEventsProp;\n\tgroupsOpened?: boolean;\n\tshowSummaryTotal?: boolean;\n\tmainGrid?: boolean;\n}\n\nexport interface ITekGrid\n\textends IGridEditable<TekGridColumn>,\n\t\tITekGridEvents,\n\t\tISupportsToolbar,\n\t\tIExportable,\n\t\tIGroupedDataManager {\n\tevents: TekGridEventsProp;\n\tgroupsOpened: boolean;\n\tshowSummaryTotal: boolean;\n\tmainGrid: boolean;\n\tcolumnHasFilter: (columnName: string) => boolean;\n}\n\nexport interface ISupportsToolbar {\n\tactions: IComponentRender[];\n\taddButton: boolean;\n\tcolumnsButton: boolean;\n\tcolumnsButtonIgnore: string[];\n\tdeleteButton: 'none' | 'currentRow' | 'selection';\n\tshowEditButtons: boolean;\n\tfilterButton: boolean;\n\tshowSearch: boolean;\n\tshowLayoutOptions: boolean;\n\ttitle: string;\n\tshowExport: boolean;\n\tshowReload: boolean;\n\texportConfig: ITekGridExportConfig[];\n\texportActions?: IComponentRender[];\n\ttoolbarOpened: boolean;\n\tcolumnFilterButton: boolean;\n\tmodalFilterProps: IModalFilterProps;\n\tshowCheckboxAllFilter: boolean;\n\tdefaultFilter: IDictionary;\n\teditNewRowsOnly: boolean;\n\ttoolbarConfig: (IComponentRender | string)[];\n\tshowHideButton: boolean;\n}\n\nexport interface IExportable {\n\treportTitle: string;\n\txlsDefaultType?: string;\n\treportLabelFormatter?: LabelFormatter;\n\tgetReport(type: string, portrait?: boolean, rowObj?: any): Promise<Window | null>;\n}\n\nexport type IAsyncEvent<T> = (event: T) => Promise<any>;\n\nexport interface TekGridEventsProp<\n\tT = IGridEvent | IEventParam<any> | ITekGridLayoutEventParams | ITekGridCalcSummaryEventParams,\n> extends GridEventsProp<T> {\n\taddClick?: EventDef<T>;\n\tafterCancel?: EventDef<T>;\n\tafterDelete?: EventDef<T>;\n\tafterSave?: EventDef<T>;\n\tbeforeApplyFilter?: EventDef<T>;\n\tbeforeCancel?: EventDef<T>;\n\tbeforeDelete?: EventDef<T>;\n\tbeforeOpenReport?: EventDef<T, IBeforeReportEvent>;\n\tbeforeSave?: EventDef<T>;\n\tcalcSummary?: EventDef<T>;\n\tfilterClick?: EventDef<T>;\n\tloadLayouts?: EventDef<T, IAsyncEvent<T>>;\n\tsaveLayouts?: EventDef<T>;\n\tgroupRowClick?: EventDef<T>;\n\tgroupSelect?: EventDef<T>;\n\tgroupUnselect?: EventDef<T>;\n\tbeforeReload?: EventDef<T>;\n\t[key: string]: any;\n}\n\nexport type MultiOptionParams = {\n\ticonName: string;\n\tlabel: string;\n\tcssClass?: string;\n\treportParams?: { portrait?: boolean; rowObj?: any };\n};\n\nexport interface ITekGridExportConfig {\n\ttype: string;\n\tportrait?: boolean;\n\tlabel?: string;\n\ticonName?: string;\n\tmultiOption?: MultiOptionParams[];\n}\n\nexport interface ITekGridEvents extends IGridEditableEvents {\n\trowDoubleClick(row: IDictionary<any>, event: Event, element?: HTMLElement): void;\n\tgroupRowClick(row: IDictionary<any>, event: Event, element?: HTMLElement): void;\n\tgroupRowDoubleClick(row: IDictionary<any>, event: Event, element?: HTMLElement): void;\n\tselectGroupClick(row: IDictionary<any>, isSelected: boolean, event: Event, element?: HTMLElement): void;\n\tcalcSummary(column: TekGridColumn, summary: ITekGridSummary, row: IDictionary): void;\n}\n\nexport type IFilterRelation = 'AND' | 'OR';\n\nexport type IFilterOperation =\n\t| 'CONTAINS'\n\t| 'NOT_CONTAINS'\n\t| 'EQUALS'\n\t| 'NOT_EQUALS'\n\t| 'GREATER_THAN'\n\t| 'LESS_THAN'\n\t| 'GREATER_THAN_EQUALS'\n\t| 'LESS_THAN_EQUALS'\n\t| 'IN'\n\t| 'NOT_IN'\n\t| 'BETWEEN';\n\nexport interface IFilterPropsComponent extends IComponent {\n\trelation?: IFilterRelation;\n\toperation?: IFilterOperation;\n\thelperOptions?: string[];\n\thelperValue?: string;\n}\n\ntype Narrowable = string | number | boolean | symbol | object | void | null | undefined;\nconst tuple = <T extends Narrowable[]>(...args: T) => args;\nexport const columnAggregationValues = tuple('SUM', 'MIN', 'MAX', 'AVG', 'COUNT', undefined);\n\nexport type ITekGridColumnAggregation = (typeof columnAggregationValues)[number];\n\nexport interface ITekGridColumn extends IGridColumnEditable {\n\tfilterProps?: IFilterPropsComponent | IFilterPropsComponent[];\n\tfilterable?: boolean;\n\tfilterIndex?: number;\n\tskipLookupSearch?: boolean;\n\tgrouped?: boolean;\n\taggregation?: ITekGridColumnAggregation;\n\tgroupOpened?: boolean;\n\tgroupLabelForEmptyValue?: string;\n}\n\nexport interface IColumnsSearcher {\n\tsearchColumn(columns: ITekGridColumn[], search: string): Promise<IDictionary<(string | number)[]>>;\n}\n\nexport interface IGroupedDataManager {\n\tinitializeGrouping(lazyLoad: boolean): void;\n\tupdateGrouping: (lazyLoad?: boolean) => void;\n\tupdateGroupedData(lazyLoad: boolean): Promise<void>;\n\tbuildGroupedData(): void;\n\tupdateSummary(): void;\n\topenGroup(group: IDictionary<any>): void;\n\tisItemVisible(row: IDictionary<any>): any;\n\tisGrouped(): boolean;\n\tisColumnSearchable(column: TekGridColumn): boolean;\n\tgetGroupedData(): IDictionary<any>[];\n\tdirectionalLeft(param: IEventParam<any>): void;\n\tdirectionalRight(param: IEventParam<any>): void;\n\tloadAfterTasks(): Promise<void>;\n\tregisterTask(task: Promise<any>): void;\n\tsetViewUpdateFixedColumns(fn: () => void): void;\n\tsetViewUpdateScrollData(fn: () => void): void;\n}\n\nexport interface ITekGridGroupHeader {\n\tgroup: boolean;\n\tgroupRow: IDictionary;\n\tgroupColumnName: string;\n\tgroupHeader: boolean;\n\tgroupIndex: number;\n\tgroupLabel: string;\n\tgroupValue: any;\n\tgroupOpened: boolean;\n\tgroupHeaders: ITekGridGroupHeader[]; // parent group headers\n\tchildren: IDictionary<any>[];\n}\n\nexport interface ITekGridGroupFooter {\n\tgroupFooter: boolean;\n\tgroupIndex: number;\n\tgroupHeaders: ITekGridGroupHeader[];\n\tgroupLabel: string;\n\tgroupValue: any;\n\t[key: string]: any;\n}\n\nexport interface ITekGridFooter {\n\t[key: string]: ITekGridSummary;\n}\n\nexport interface ITekGridGroup {\n\tcolumn: ITekGridColumn;\n\tname: string;\n\tlabel: string;\n\tlastValue: any;\n\tfooter: ITekGridFooter;\n\tinitialized: boolean;\n\tlastGroupHeaderRow?: ITekGridGroupHeader;\n}\n\nexport interface ITekGridAtoms {\n\tTITLE: string;\n\tHIDE_BUTTON: string;\n\tADD_BUTTON: string;\n\tDELETE_BUTTON: string;\n\tREFRESH_BUTTON: string;\n\tCOLUMNS_BUTTON: string;\n\tLAYOUT_BUTTON: string;\n\tEXPORT_BUTTON: string;\n\tACTIONS_BUTTON: string;\n\tSAVE_BUTTON: string;\n\tCANCEL_BUTTON: string;\n\tSEARCH: string;\n\tFILTER_BUTTON: string;\n\tFILTER_MODAL: string;\n\tFILTER_FORM: string;\n\tEXPORT_DROPDOWN: string;\n\tACTIONS_DROPDOWN: string;\n\tHIDE_TOOLTIP: string;\n\tTOOLBAR_DIV: string;\n\tNOT_EDITING_SPAN: string;\n\tADD_TOOLTIP: string;\n\tDELETE_TOOLTIP: string;\n\tDIVIDER1: string;\n\tREFRESH_TOOLTIP: string;\n\tDIVIDER2: string;\n\tCOLUMNS_TOOLTIP: string;\n\tDIVIDER_ACTIONS: string;\n\tDIVIDER3: string;\n\tFILTER_TOOLTIP: string;\n}\n\nexport interface ITekGridToolbarProvider {\n\tgetProperties(): IComponentRender[];\n\tgetAtomInstance<T>(key: keyof ITekGridAtoms): T;\n\tgetAtomName(key: keyof ITekGridAtoms): string;\n\tgetFilterInputs(columnName?: string): Input[];\n}\n\nexport interface IDynamicFilterDatasourceFactory {\n\tfactory(options: IDictionary<boolean>): Datasource;\n}\n\nexport type ITekGridLayoutOptionsEvent<T> = (event: T) => Promise<any>;\n\nexport interface ITekGridLayoutOptionsEvents<T = IEventParam<any> | ITekGridLayoutEventParams>\n\textends IComponentEvents<T> {\n\tloadLayouts?: IAsyncEvent<T>;\n\tsaveLayouts?: IEvent<T>;\n\t[key: string]: any;\n}\n\nexport interface ITekGridLayoutOptions extends IComponentRender {\n\tevents?: ITekGridLayoutOptionsEvents;\n}\n\nexport interface ITekGridFilterButton extends IButton {\n\tgridName?: string;\n\tgrid?: Iterable & ISupportsToolbar;\n\tshowCheckboxAll?: boolean;\n}\n\nexport interface ITekGridColumnsButton extends IIterableColumnsButton {\n\thideGroups?: boolean;\n}\n","import { IKeyMap } from '@zeedhi/core';\nimport { Component, IKeyMapConfig } from '@zeedhi/common';\nimport { IGroupedDataManager } from './interfaces';\n\nexport class KeyMapGrouped implements IKeyMapConfig<IGroupedDataManager> {\n\tgetMap(instance: Component & IGroupedDataManager): IKeyMap {\n\t\treturn {\n\t\t\tleft: {\n\t\t\t\tevent: instance.directionalLeft.bind(instance),\n\t\t\t\tstop: true,\n\t\t\t\tactive: true,\n\t\t\t},\n\t\t\tright: {\n\t\t\t\tevent: instance.directionalRight.bind(instance),\n\t\t\t\tstop: true,\n\t\t\t\tactive: true,\n\t\t\t},\n\t\t};\n\t}\n}\n","import { IDictionary } from '@zeedhi/core';\nimport { DataEditorWithAdd, IGridColumnEditable, Input } from '@zeedhi/common';\nimport { ITekGrid } from './interfaces';\n\n/**\n * Extends DataEditorWithAdd to refresh the grouped data summary/footers after an inline cell edit,\n * since TekGrid composes its data editor instead of inheriting from it.\n */\nexport class TekGridDataEditor extends DataEditorWithAdd {\n\tdeclare protected grid: ITekGrid;\n\n\tchangeEditableComponent(column: IGridColumnEditable, row: IDictionary<any>, value: any, component?: Input): void {\n\t\tsuper.changeEditableComponent(column, row, value, component);\n\t\tthis.grid.updateSummary();\n\t}\n}\n","import { IGridEditable } from '@zeedhi/common';\nimport { ISupportsToolbar } from './interfaces';\n\nexport class TekGridController {\n\tprivate grid!: IGridEditable & ISupportsToolbar;\n\n\tpublic openToolbar = true;\n\n\tpublic constructor(grid: IGridEditable & ISupportsToolbar) {\n\t\tthis.grid = grid;\n\t\tthis.openToolbar = this.grid.toolbarOpened;\n\t}\n\n\tpublic get gridTitle() {\n\t\treturn this.grid.title;\n\t}\n\n\tpublic get showAddButton() {\n\t\treturn this.grid.addButton;\n\t}\n\n\tpublic get showDeleteButton() {\n\t\treturn this.grid.deleteButton !== 'none';\n\t}\n\n\tpublic get showFilterButton() {\n\t\treturn this.grid.filterButton;\n\t}\n\n\tpublic get showModalFilterProps() {\n\t\treturn this.grid.modalFilterProps;\n\t}\n\n\tpublic get showSearchInput() {\n\t\treturn this.grid.showSearch;\n\t}\n\n\tpublic get showToolbar() {\n\t\treturn this.openToolbar;\n\t}\n\n\tpublic get showHideButton() {\n\t\treturn this.grid.showHideButton && this.isNotEditing;\n\t}\n\n\tpublic get toolbarCollapseClass(): string {\n\t\treturn !this.openToolbar ? 'toolbar-visible' : '';\n\t}\n\n\tpublic set showToolbar(value: boolean) {\n\t\tthis.openToolbar = value;\n\t}\n\n\tpublic get toolbarClass(): string {\n\t\treturn !this.openToolbar ? 'is-rotated' : '';\n\t}\n\n\tpublic get tooltipName() {\n\t\treturn !this.openToolbar ? 'TEKGRID_SHOW' : 'TEKGRID_HIDE';\n\t}\n\n\tpublic get showReloadButton() {\n\t\treturn this.grid.showReload;\n\t}\n\n\tpublic get showDivider2() {\n\t\treturn (\n\t\t\tthis.showReloadButton &&\n\t\t\t(this.showLayoutOptionsButton ||\n\t\t\t\tthis.showColumnsButton ||\n\t\t\t\tthis.showActionsButton ||\n\t\t\t\tthis.showExportButton ||\n\t\t\t\tthis.showSearchInput)\n\t\t);\n\t}\n\n\tpublic get showColumnsButton() {\n\t\treturn this.grid.columnsButton;\n\t}\n\n\tpublic get columnsButtonIgnore() {\n\t\treturn this.grid.columnsButtonIgnore;\n\t}\n\n\tpublic get showLayoutOptionsButton() {\n\t\treturn this.grid.showLayoutOptions;\n\t}\n\n\tpublic get showDivider1() {\n\t\treturn (\n\t\t\t(this.showAddButton || this.showDeleteButton) &&\n\t\t\t(this.showReloadButton ||\n\t\t\t\tthis.showLayoutOptionsButton ||\n\t\t\t\tthis.showColumnsButton ||\n\t\t\t\tthis.showActionsButton ||\n\t\t\t\tthis.showExportButton ||\n\t\t\t\tthis.showSearchInput)\n\t\t);\n\t}\n\n\tpublic get showActionsButton() {\n\t\treturn this.grid.actions.length > 0;\n\t}\n\n\tpublic get showExportButton() {\n\t\treturn this.grid.showExport;\n\t}\n\n\tpublic get showActionAndExportButton() {\n\t\treturn (\n\t\t\t(this.showLayoutOptionsButton || this.showColumnsButton) &&\n\t\t\t(this.showActionsButton || this.showExportButton || this.showSearchInput)\n\t\t);\n\t}\n\n\tpublic get showDivider3() {\n\t\treturn (this.showActionsButton || this.showExportButton) && this.showSearchInput;\n\t}\n\n\tpublic get isEditing() {\n\t\treturn this.grid.editing;\n\t}\n\n\tpublic get showEditButtons() {\n\t\treturn this.isEditing && this.grid.showEditButtons;\n\t}\n\n\tpublic get isNotEditing() {\n\t\treturn !this.isEditing;\n\t}\n\n\tpublic get disableDeleteButton() {\n\t\tif (this.grid.deleteButton === 'selection') {\n\t\t\tif (this.grid.selectAllPages) {\n\t\t\t\tconst { allSelected, except } = this.grid.selectionState;\n\t\t\t\treturn (allSelected && except.length === this.grid.datasource.total) || (!allSelected && except.length === 0);\n\t\t\t}\n\n\t\t\treturn this.grid.selectedRows.length === 0;\n\t\t}\n\n\t\tif (this.grid.deleteButton === 'currentRow') {\n\t\t\treturn !this.grid.datasource.currentRow[this.grid.datasource.uniqueKey];\n\t\t}\n\n\t\treturn false;\n\t}\n}\n","import { IDictionary } from '@zeedhi/core';\nimport { GridEditableEvents } from '@zeedhi/common';\nimport { ITekGrid, ITekGridEvents, ITekGridSummary } from './interfaces';\nimport { TekGridColumn } from './tek-grid-column';\n\nexport class TekGridEvents extends GridEditableEvents implements ITekGridEvents {\n\tprotected tekGrid: ITekGrid;\n\n\t/**\n\t * Flag to prevent row click\n\t */\n\tprotected preventRowClick = false;\n\n\tprotected preventRowDoubleClick = false;\n\n\tconstructor(tekGrid: ITekGrid) {\n\t\tsuper(tekGrid);\n\t\tthis.tekGrid = tekGrid;\n\t}\n\n\tcalcSummary(column: TekGridColumn, summary: ITekGridSummary, row: IDictionary): void {\n\t\tthis.tekGrid.callEvent('calcSummary', {\n\t\t\tcomponent: this.tekGrid,\n\t\t\tcolumn,\n\t\t\tcolumnName: column.name,\n\t\t\tsummary,\n\t\t\trow,\n\t\t\trowValue: row[column.name],\n\t\t});\n\t}\n\n\tpublic rowDoubleClick(row: IDictionary<any>, event: Event, element: HTMLElement) {\n\t\tif (!this.preventRowDoubleClick) {\n\t\t\tthis.tekGrid.datasource.currentRow = row;\n\n\t\t\tthis.tekGrid.callEvent('rowDoubleClick', {\n\t\t\t\tevent,\n\t\t\t\telement,\n\t\t\t\trow,\n\t\t\t\tcomponent: this.tekGrid,\n\t\t\t\tcolumn: undefined,\n\t\t\t});\n\t\t}\n\t\tthis.preventRowDoubleClick = false;\n\t}\n\n\t/**\n\t * Dispatches group row click event\n\t * @param row Grid row\n\t * @param event DOM event\n\t * @param element DOM Element\n\t */\n\tpublic groupRowClick(row: IDictionary<any>, event: Event, element: HTMLElement) {\n\t\tif (!this.preventRowClick) {\n\t\t\tthis.tekGrid.callEvent('groupRowClick', {\n\t\t\t\tevent,\n\t\t\t\telement,\n\t\t\t\trow,\n\t\t\t\tcomponent: this.tekGrid,\n\t\t\t\tcolumn: undefined,\n\t\t\t});\n\t\t}\n\t\tthis.preventRowClick = false;\n\t}\n\n\tpublic groupRowDoubleClick(row: IDictionary<any>, event: Event, element: HTMLElement) {\n\t\tif (!this.preventRowDoubleClick) {\n\t\t\tthis.tekGrid.callEvent('groupRowDoubleClick', {\n\t\t\t\tevent,\n\t\t\t\telement,\n\t\t\t\trow,\n\t\t\t\tcomponent: this.tekGrid,\n\t\t\t\tcolumn: undefined,\n\t\t\t});\n\t\t}\n\t\tthis.preventRowDoubleClick = false;\n\t}\n\n\t/**\n\t * Dispatches group select/unselect event\n\t * @param row Group row\n\t * @param isSelected Row is selected\n\t * @param event DOM event\n\t * @param element DOM Element\n\t */\n\tpublic selectGroupClick(row: IDictionary<any>, isSelected: boolean, event: Event, element: HTMLElement) {\n\t\tif (isSelected) {\n\t\t\tthis.tekGrid.callEvent('groupSelected', {\n\t\t\t\tevent,\n\t\t\t\telement,\n\t\t\t\trow,\n\t\t\t\tcomponent: this.tekGrid,\n\t\t\t\tcolumn: undefined,\n\t\t\t});\n\t\t} else {\n\t\t\tthis.tekGrid.callEvent('groupUnselected', {\n\t\t\t\tevent,\n\t\t\t\telement,\n\t\t\t\trow,\n\t\t\t\tcomponent: this.tekGrid,\n\t\t\t\tcolumn: undefined,\n\t\t\t});\n\t\t}\n\t}\n}\n","import { IDictionary } from '@zeedhi/core';\nimport { DataSelector, IDataSelector, IGrid } from '@zeedhi/common';\nimport { IGroupedDataManager } from './interfaces';\n\nexport class GroupedDataSelector extends DataSelector implements IDataSelector {\n\tprotected declare iterable: IGrid & IGroupedDataManager;\n\n\tpublic selectAll(isSelected: boolean) {\n\t\tif (!this.iterable.selectable) return;\n\n\t\tthis.iterable.selectionState = { allSelected: isSelected, except: [] };\n\t\tconst data = this.getData();\n\n\t\tif (!isSelected) {\n\t\t\tdata.forEach((row: IDictionary) => {\n\t\t\t\tconst index = this.iterable.selectedRows.indexOf(row);\n\t\t\t\tif (index > -1) {\n\t\t\t\t\tthis.iterable.selectedRows.splice(index, 1);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tdata.forEach((row: IDictionary) => {\n\t\t\tif (this.callDisableSelection(row)) return;\n\n\t\t\tconst key = this.iterable.getRowKey(row);\n\t\t\tif (key && this.iterable.selectedRows.indexOf(row) === -1) {\n\t\t\t\tthis.iterable.selectedRows.push(row);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate getData() {\n\t\tif (this.iterable.isGrouped()) {\n\t\t\treturn this.iterable.getGroupedData();\n\t\t}\n\t\treturn this.iterable.getData();\n\t}\n}\n","import {\n\tAccessor,\n\tConfig,\n\tDatasource,\n\tDatasourceFactory,\n\tI18n,\n\tIDictionary,\n\tIEventParam,\n\tLoader,\n\tMessages,\n} from '@zeedhi/core';\nimport clonedeep from 'lodash.clonedeep';\nimport merge from 'lodash.merge';\nimport {\n\tAlertService,\n\tColumnNotFoundError,\n\tDirection,\n\tEmptyDataError,\n\tIDataNavigator,\n\tIDataSelector,\n\tIGrid,\n\tIIterableTable,\n\tIKeyMapMerger,\n\tITableActionBuilder,\n\tIterableTable,\n\tKeyMapMerger,\n\tKeyMapNavigation,\n\tLabelFormatter,\n\tReport,\n\tTableActionBuilder,\n\tVerticalDirection, IComponent, IComponentRender, IDataEditorWithAdd, IGridColumnEditable, IGridEditable,\n\tKeyMapEditing, Iterable, IIterableProps, ViewNavigator,\n} from '@zeedhi/common';\nimport {\n\tIColumnsSearcher,\n\tIGroupedDataManager,\n\tIModalFilterProps,\n\tITekGrid,\n\tITekGridAtoms,\n\tITekGridColumn,\n\tITekGridEvents,\n\tITekGridExportConfig,\n\tITekGridProps,\n\tITekGridSummary,\n\tITekGridToolbarProvider,\n\tTekGridEventsProp,\n} from './interfaces';\nimport { KeyMapGrouped } from './keymap-grouped';\nimport { TekMemoryDatasource } from '../tek-datasource/tek-memory-datasource';\nimport { TekRestDatasource } from '../tek-datasource/tek-rest-datasource';\nimport { TekGridColumn } from './tek-grid-column';\nimport { TekGridDataEditor } from './tek-grid-data-editor';\nimport { TekGridController } from './tek-grid-controller';\nimport { TekGridEvents } from './tek-grid-events';\nimport { ColumnsSearcher } from './columns-searcher';\nimport { DynamicFilterDatasourceFactory } from './dynamic-filter-datasource-factory';\nimport { GroupedDataManager } from './grouped-data-manager';\nimport { GroupedDataSelector } from './grouped-data-selector';\nimport { GroupedDataNavigator } from './grouped-data-navigator';\nimport { extractProperties, ITekConfig, ReportFilter } from '../../utils';\nimport { TekGridToolbarProvider } from './tek-grid-toolbar-provider/tek-grid-toolbar-provider';\n\n/* TekGrid Class */\nexport class TekGrid extends Iterable<TekGridColumn> implements ITekGrid {\n\tprivate tableActionBuilder: ITableActionBuilder;\n\n\tprivate iterableTable: IIterableTable;\n\n\tprivate dataSelector: IDataSelector;\n\n\tprivate tekGridEvents: ITekGridEvents;\n\n\tprivate dataNavigator: IDataNavigator;\n\n\tprivate viewNavigator: ViewNavigator;\n\n\tprivate keyMapMerger!: IKeyMapMerger;\n\n\tprivate dataEditor: IDataEditorWithAdd;\n\n\tprivate columnsSearcher: IColumnsSearcher;\n\n\tprivate groupedDataManager: IGroupedDataManager;\n\n\tprivate tekGridToolbarProvider: ITekGridToolbarProvider;\n\n\t/* Grid events */\n\tpublic declare events: TekGridEventsProp;\n\n\t/* Grid Title */\n\tpublic title = '';\n\n\t/* Show Add button */\n\tpublic addButton = false;\n\n\t/* Show Delete button */\n\tpublic deleteButton: 'none' | 'currentRow' | 'selection' = 'none';\n\n\t/* Show Delete button */\n\tpublic actions: IComponentRender[] = [];\n\n\t/* Show edit button */\n\tpublic showEditButtons = true;\n\n\t/* Show Filter button */\n\tpublic filterButton = false;\n\n\t/* Show SearchInput */\n\tpublic showSearch = true;\n\n\t/* Show Column Filter button */\n\tpublic columnFilterButton = false;\n\n\t/* Show Columns button */\n\tpublic columnsButton = false;\n\n\t/* Defines if the grid is the unique grid on screen */\n\tpublic mainGrid = true;\n\n\t/* Columns to be ignored on columns button */\n\tpublic columnsButtonIgnore: string[] = [];\n\n\t/**\n\t * Components that will be rendered on toolbar slot\n\t */\n\tpublic toolbarConfig: (IComponentRender | string)[] = [];\n\n\t/* Show Hide button */\n\tpublic showHideButton = true;\n\n\t/**\n\t * Enables column dragging\n\t * @public\n\t */\n\tpublic dragColumns = true;\n\n\t/**\n\t * Enables column resizing\n\t * @public\n\t */\n\tpublic resizeColumns = true;\n\n\t/**\n\t * Enables layout saving\n\t * @public\n\t */\n\tpublic showLayoutOptions = true;\n\n\tpublic xlsDefaultType?: string;\n\n\tpublic modalFilterProps: IModalFilterProps = {\n\t\tname: this.name,\n\t\theight: 'auto',\n\t\tpersistent: true,\n\t\tcssClass: '',\n\t\tcssStyle: '',\n\t\tdark: false,\n\t\tdraggable: false,\n\t\tfullscreen: false,\n\t\tdragHandle: '',\n\t\ttitle: 'FILTER',\n\t};\n\n\t/**\n\t * Show export button\n\t */\n\tpublic showExport = false;\n\n\t/**\n\t * Show refresh button\n\t */\n\tpublic showReload = true;\n\n\t/**\n\t * Export config\n\t */\n\tpublic exportConfig: ITekGridExportConfig[] = [\n\t\t{\n\t\t\ttype: 'pdf',\n\t\t\tlabel: I18n.translate('TEKGRID_EXPORT_AS', { type: 'PDF' }),\n\t\t\tmultiOption: [\n\t\t\t\t{ label: I18n.translate('TEKGRID_PORTRAIT'), iconName: 'mdi-file-outline' },\n\t\t\t\t{\n\t\t\t\t\tlabel: I18n.translate('TEKGRID_LANDSCAPE'),\n\t\t\t\t\ticonName: 'mdi-file-outline',\n\t\t\t\t\tcssClass: 'tek-grid-export-landscape',\n\t\t\t\t\treportParams: { portrait: false },\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\ttype: 'xls',\n\t\t\tlabel: I18n.translate('TEKGRID_EXPORT_AS', {\n\t\t\t\ttype: 'XLS',\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\ttype: 'xls2',\n\t\t\tlabel: I18n.translate('TEKGRID_EXPORT_AS', {\n\t\t\t\ttype: `XLS ${I18n.translate('TEKGRID_WITH_GROUPS')}`,\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\ttype: 'xls3',\n\t\t\tlabel: I18n.translate('TEKGRID_EXPORT_AS', {\n\t\t\t\ttype: `XLS ${I18n.translate('TEKGRID_GRID_MIRROR')}`,\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\ttype: 'csv',\n\t\t\tlabel: I18n.translate('TEKGRID_EXPORT_AS', { type: 'CSV' }),\n\t\t},\n\t];\n\n\t/**\n\t * Actions to overwrite the default export config\n\t */\n\tpublic exportActions?: IComponentRender[];\n\n\t/**\n\t * Groups should be opened by default after building\n\t */\n\tpublic groupsOpened = false;\n\n\t/**\n\t * Show Total summary\n\t */\n\tpublic showSummaryTotal = true;\n\n\tpublic editNewRowsOnly = false;\n\n\tprotected keyShortcutKeyMapping: any;\n\n\tpublic showCheckboxAllFilter: boolean = (Config as ITekConfig).gridShowCheckboxAllFilter || false;\n\n\tpublic defaultFilter: IDictionary = {};\n\n\tpublic toolbarOpened = true;\n\n\tpublic reportTitle = '';\n\n\tpublic reportLabelFormatter?: LabelFormatter;\n\n\tediting = false;\n\n\tcurrentColumn: TekGridColumn | null = null;\n\n\tselectedRows: IDictionary<any>[] = [];\n\n\tselectionState: { allSelected: boolean; except: IDictionary<any>[] } = {\n\t\tallSelected: false,\n\t\texcept: [],\n\t};\n\n\trowStyleConditions?: (row: IDictionary) => IDictionary;\n\n\tselectAllPages: boolean = Config.gridSelectAllPages;\n\n\tselectable = false;\n\n\tdisableSelection?: (args: { row: IDictionary<any>; component: IGrid }) => boolean;\n\n\tcellSelection = false;\n\n\ttoolbarSlot: IComponentRender[] = [{ name: '<<NAME>>_gridSearch', component: 'ZdSearch' }];\n\n\tfooterSlot: IComponentRender[] = [\n\t\t{ name: '<<NAME>>_iterablePagination', component: 'ZdIterablePagination' },\n\t\t{\n\t\t\tname: '<<NAME>>_iterableInfoDiv',\n\t\t\tcomponent: 'ZdTag',\n\t\t\tcssClass: 'zd-grid-div-footer',\n\t\t\ttag: 'div',\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tname: '<<NAME>>_iterablePageSize',\n\t\t\t\t\tcomponent: 'ZdIterablePageSize',\n\t\t\t\t\titerableComponentName: '<<NAME>>',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: '<<NAME>>_iterablePageInfo',\n\t\t\t\t\tcomponent: 'ZdIterablePageInfo',\n\t\t\t\t\titerableComponentName: '<<NAME>>',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t];\n\n\tnoResultsText = 'NO_RESULT';\n\n\tnoResultSlot: IComponentRender[] = [\n\t\t{\n\t\t\tname: '<<NAME>>_no-result',\n\t\t\tcomponent: 'ZdText',\n\t\t\tcssClass: 'no-result',\n\t\t\ttext: this.noResultsText,\n\t\t},\n\t];\n\n\terrorSlot: IComponentRender[] = [];\n\n\tdense = true;\n\n\theaderBackground = '';\n\n\theaderCellTextColor = '';\n\n\theight: string | number = 'auto';\n\n\tloadingText = 'LOADING';\n\n\tmaxHeight: string | number = 'none';\n\n\tmaxWidth: string | number = 'none';\n\n\tminHeight: string | number = 'auto';\n\n\tminWidth: string | number = 'auto';\n\n\tnoDataText = 'NO_DATA';\n\n\tnoDataSlot: IComponentRender[] = [\n\t\t{\n\t\t\tname: '<<NAME>>_no-data',\n\t\t\tcomponent: 'ZdText',\n\t\t\tcssClass: 'no-data',\n\t\t\ttext: this.noDataText,\n\t\t},\n\t];\n\n\tshowFooter = true;\n\n\tshowHeader = true;\n\n\tshowSelectAll = true;\n\n\twidth: string | number = '100%';\n\n\tbackgroundColor = 'transparent';\n\n\tcanEditRow?: ((args: { row: IDictionary<any>; component: IGridEditable }) => boolean) | undefined;\n\n\tshowCancelColumn = false;\n\n\tdoubleClickEdit = false;\n\n\tsingleEdit = false;\n\n\teditingNewRows = false;\n\n\tprivate defaultLazy = false;\n\n\tprivate toolbarSlotProps = false;\n\n\tpublic filterRelationsDatasource?: Datasource;\n\n\tpublic filterOperationsDatasource?: Datasource;\n\n\t/**\n\t * TekGrid class constructor\n\t * @param props TekGrid properties\n\t */\n\tconstructor(props: ITekGridProps) {\n\t\tsuper(props);\n\t\tthis.title = this.getInitValue('title', props.title, this.title);\n\t\tthis.addButton = this.getInitValue('addButton', props.addButton, this.addButton);\n\t\tthis.deleteButton = this.getInitValue('deleteButton', props.deleteButton, this.deleteButton);\n\t\tthis.filterButton = this.getInitValue('filterButton', props.filterButton, this.filterButton);\n\t\tthis.showSearch = this.getInitValue('showSearch', props.showSearch, this.showSearch);\n\t\tthis.columnFilterButton = this.getInitValue(\n\t\t\t'columnFilterButton',\n\t\t\tprops.columnFilterButton,\n\t\t\tthis.columnFilterButton,\n\t\t);\n\t\tthis.columnsButton = this.getInitValue('columnsButton', props.columnsButton, this.columnsButton);\n\t\tthis.columnsButtonIgnore = this.getInitValue(\n\t\t\t'columnsButtonIgnore',\n\t\t\tprops.columnsButtonIgnore,\n\t\t\tthis.columnsButtonIgnore,\n\t\t);\n\t\tthis.showEditButtons = this.getInitValue('showEditButtons', props.showEditButtons, this.showEditButtons);\n\t\tthis.dragColumns = this.getInitValue('dragColumns', props.dragColumns, this.dragColumns);\n\t\tthis.resizeColumns = this.getInitValue('resizeColumns', props.resizeColumns, this.resizeColumns);\n\t\tthis.showLayoutOptions = this.getInitValue('showLayoutOptions', props.showLayoutOptions, this.showLayoutOptions);\n\t\tthis.xlsDefaultType = this.getInitValue('xlsDefaultType', props.xlsDefaultType, this.xlsDefaultType);\n\t\tthis.showExport = this.getInitValue('showExport', props.showExport, this.showExport);\n\t\tthis.showReload = this.getInitValue('showReload', props.showReload, this.showReload);\n\t\tthis.exportConfig = this.getInitValue('exportConfig', props.exportConfig, this.exportConfig);\n\t\tthis.modalFilterProps = this.getInitValue('modalFilterProps', props.modalFilterProps, this.modalFilterProps);\n\t\tthis.exportActions = props.exportActions || this.exportActions;\n\t\tthis.groupsOpened = this.getInitValue('groupsOpened', props.groupsOpened, this.groupsOpened);\n\t\tthis.showSummaryTotal = this.getInitValue('showSummaryTotal', props.showSummaryTotal, this.showSummaryTotal);\n\t\tthis.showCheckboxAllFilter = this.getInitValue(\n\t\t\t'showCheckboxAllFilter',\n\t\t\tprops.showCheckboxAllFilter,\n\t\t\tthis.showCheckboxAllFilter,\n\t\t);\n\t\tthis.defaultFilter = this.getInitValue('defaultFilter', props.defaultFilter, this.defaultFilter);\n\t\tthis.toolbarConfig = this.getInitValue('toolbarConfig', props.toolbarConfig, this.toolbarConfig);\n\t\tthis.showHideButton = this.getInitValue('showHideButton', props.showHideButton, this.showHideButton);\n\t\tthis.toolbarOpened = this.getInitValue('toolbarOpened', props.toolbarOpened, this.toolbarOpened);\n\t\tthis.editNewRowsOnly = this.getInitValue('editNewRowsOnly', props.editNewRowsOnly, this.editNewRowsOnly);\n\t\tthis.mainGrid = this.getInitValue('mainGrid', props.mainGrid, this.mainGrid);\n\t\tthis.reportTitle = this.getInitValue('reportTitle', props.reportTitle, this.reportTitle);\n\t\tthis.reportLabelFormatter = this.getInitValue(\n\t\t\t'reportLabelFormatter', props.reportLabelFormatter, this.reportLabelFormatter,\n\t\t);\n\t\tthis.actions = props.actions || this.actions;\n\t\tthis.toolbarSlotProps = props.toolbarSlot !== undefined;\n\n\t\tthis.cellSelection = this.getInitValue('cellSelection', props.cellSelection, this.cellSelection);\n\t\tthis.dense = this.getInitValue('dense', props.dense, this.dense);\n\t\tthis.disableSelection = this.getInitValue('disableSelection', props.disableSelection, this.disableSelection);\n\t\tthis.dragColumns = this.getInitValue('dragColumns', props.dragColumns, this.dragColumns);\n\t\tthis.fillHeight = this.getInitValue('fillHeight', props.fillHeight, this.fillHeight);\n\t\tthis.headerCellTextColor = this.getInitValue(\n\t\t\t'headerCellTextColor',\n\t\t\tprops.headerCellTextColor,\n\t\t\tthis.headerCellTextColor,\n\t\t);\n\t\tthis.height = this.getInitValue('height', props.height, this.height);\n\t\tthis.loadingText = this.getInitValue('loadingText', props.loadingText, this.loadingText);\n\t\tthis.maxHeight = this.getInitValue('maxHeight', props.maxHeight, this.maxHeight);\n\t\tthis.maxWidth = this.getInitValue('maxWidth', props.maxWidth, this.maxWidth);\n\t\tthis.minHeight = this.getInitValue('minHeight', props.minHeight, this.minHeight);\n\t\tthis.minWidth = this.getInitValue('minWidth', props.minWidth, this.minWidth);\n\t\tthis.noDataText = this.getInitValue('noDataText', props.noDataText, this.noDataText);\n\t\tthis.noResultsText = this.getInitValue('noResultsText', props.noResultsText, this.noResultsText);\n\t\tthis.resizeColumns = this.getInitValue('resizeColumns', props.resizeColumns, this.resizeColumns);\n\t\tthis.rowStyleConditions = this.getInitValue(\n\t\t\t'rowStyleConditions',\n\t\t\tprops.rowStyleConditions,\n\t\t\tthis.rowStyleConditions,\n\t\t);\n\t\tthis.selectable = this.getInitValue('selectable', props.selectable, this.selectable);\n\t\tthis.selectAllPages = this.getInitValue('selectAllPages', props.selectAllPages, this.selectAllPages);\n\t\tthis.showFooter = this.getInitValue('showFooter', props.showFooter, this.showFooter);\n\t\tthis.showHeader = this.getInitValue('showHeader', props.showHeader, this.showHeader);\n\t\tthis.showSelectAll = this.getInitValue('showSelectAll', props.showSelectAll, this.showSelectAll);\n\t\tthis.width = this.getInitValue('width', props.width, this.width);\n\t\tthis.backgroundColor = this.getInitValue('backgroundColor', props.backgroundColor, this.backgroundColor);\n\t\t// headerBackground defaults to the backgroundColor, unless backgroundColor is transparent\n\t\tconst defaultHeaderBackground = this.backgroundColor === 'transparent' ? '' : this.backgroundColor;\n\t\tthis.headerBackground = this.getInitValue('headerBackground', props.headerBackground, defaultHeaderBackground);\n\t\tthis.doubleClickEdit = this.getInitValue('doubleClickEdit', props.doubleClickEdit, this.doubleClickEdit);\n\t\tthis.singleEdit = this.getInitValue('singleEdit', props.singleEdit, this.singleEdit);\n\t\tthis.showCancelColumn = this.getInitValue('showCancelColumn', props.showCancelColumn, this.showCancelColumn);\n\t\tthis.canEditRow = this.getInitValue('canEditRow', props.canEditRow, this.canEditRow);\n\t\tthis.editingNewRows = this.getInitValue('editingNewRows', props.editingNewRows, this.editingNewRows);\n\n\t\tthis.toolbarSlot = props.toolbarSlot || this.toolbarSlot;\n\t\tthis.footerSlot = props.footerSlot || this.footerSlot;\n\t\tthis.noDataSlot = props.noDataSlot || this.noDataSlot;\n\t\tthis.noResultSlot = props.noResultSlot || this.noResultSlot;\n\t\tthis.errorSlot = props.errorSlot || this.errorSlot;\n\t\tthis.noDataSlot = this.changeDefaultSlotNames(this.noDataSlot);\n\t\tthis.footerSlot = this.changeDefaultSlotNames(this.footerSlot);\n\t\tthis.toolbarSlot = this.changeDefaultSlotNames(this.toolbarSlot);\n\t\tthis.noResultSlot = this.changeDefaultSlotNames(this.noResultSlot);\n\t\tthis.errorSlot = this.changeDefaultSlotNames(this.errorSlot);\n\n\t\tthis.defaultLazy = this.getDefaultLazy(props);\n\n\t\tif (this.deleteButton === 'selection') {\n\t\t\tthis.selectable = true;\n\t\t}\n\n\t\tthis.tableActionBuilder = new TableActionBuilder(this);\n\t\tthis.iterableTable = new IterableTable(this);\n\t\tthis.dataSelector = new GroupedDataSelector(this);\n\t\tthis.tekGridEvents = new TekGridEvents(this);\n\t\tthis.dataNavigator = new GroupedDataNavigator(this);\n\t\tthis.viewNavigator = new ViewNavigator();\n\t\tthis.dataEditor = new TekGridDataEditor(this);\n\t\tthis.columnsSearcher = new ColumnsSearcher();\n\t\tthis.groupedDataManager = new GroupedDataManager(this);\n\t\tthis.tekGridToolbarProvider = new TekGridToolbarProvider(this, 'show');\n\t}\n\n\tprotected initializeDatasource(props: IIterableProps) {\n\t\tlet datasourceProps = clonedeep(props.datasource);\n\t\t// if using accessor, get props from the controller\n\t\tif (typeof props.datasource === 'string' && Accessor.isAccessorDefinition(props.datasource)) {\n\t\t\tconst [controller, accessor] = Accessor.getAccessor(props.datasource);\n\t\t\tconst instance = Loader.getInstance(controller);\n\t\t\tdatasourceProps = instance[accessor];\n\t\t}\n\t\tthis.datasource = DatasourceFactory.factory({\n\t\t\t...datasourceProps,\n\t\t\tsearchIn: props.datasource?.searchIn || (`{{IterableController_${this.name}.searchIn}}` as any),\n\t\t\tlazyLoad: true,\n\t\t});\n\t}\n\n\tpublic columnHasFilter(columnName: string): boolean {\n\t\treturn this.datasource.hasFilter(columnName);\n\t}\n\n\tpublic registerTask(task: Promise<any>) {\n\t\tthis.groupedDataManager.registerTask(task);\n\t}\n\n\tpublic async loadAfterTasks() {\n\t\treturn this.groupedDataManager.loadAfterTasks();\n\t}\n\n\tcalcSummary(column: TekGridColumn, columnNamesummary: ITekGridSummary, row: IDictionary): void {\n\t\tthis.tekGridEvents.calcSummary(column, columnNamesummary, row);\n\t}\n\n\tprivate getDefaultLazy(props: ITekGridProps) {\n\t\tif (typeof props.datasource === 'object') {\n\t\t\treturn props.datasource.lazyLoad;\n\t\t}\n\n\t\tif (typeof props.datasource === 'string' && Accessor.isAccessorDefinition(props.datasource)) {\n\t\t\tconst [controller, accessor] = Accessor.getAccessor(props.datasource);\n\t\t\tconst instance = Loader.getInstance(controller);\n\t\t\treturn instance[accessor].lazyLoad || false;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tinitializeGrouping(lazyLoad: boolean): void {\n\t\tthis.groupedDataManager.initializeGrouping(lazyLoad);\n\t}\n\n\tupdateGrouping(lazyLoad?: boolean) {\n\t\treturn this.groupedDataManager.updateGrouping(lazyLoad);\n\t}\n\n\tupdateGroupedData(lazyLoad: boolean): Promise<void> {\n\t\treturn this.groupedDataManager.updateGroupedData(lazyLoad);\n\t}\n\n\tbuildGroupedData(): void {\n\t\tthis.groupedDataManager.buildGroupedData();\n\t}\n\n\tpublic updateSummary(): void {\n\t\tthis.groupedDataManager.updateSummary();\n\t}\n\n\topenGroup(group: IDictionary<any>): void {\n\t\tthis.groupedDataManager.openGroup(group);\n\t}\n\n\tisItemVisible(row: IDictionary<any>) {\n\t\treturn this.groupedDataManager.isItemVisible(row);\n\t}\n\n\tisGrouped(): boolean {\n\t\treturn this.groupedDataManager.isGrouped();\n\t}\n\n\tisColumnSearchable(column: TekGridColumn): boolean {\n\t\treturn this.groupedDataManager.isColumnSearchable(column);\n\t}\n\n\tgetGroupedData(): IDictionary<any>[] {\n\t\treturn this.groupedDataManager.getGroupedData();\n\t}\n\n\tdirectionalLeft(param: IEventParam<any>): void {\n\t\tthis.groupedDataManager.directionalLeft(param);\n\t\tthis.viewNavigator.navigateLeft(param);\n\t}\n\n\tdirectionalRight(param: IEventParam<any>): void {\n\t\tthis.groupedDataManager.directionalRight(param);\n\t\tthis.viewNavigator.navigateRight(param);\n\t}\n\n\tprivate buildReportGroups() {\n\t\treturn this.columns\n\t\t\t.filter((column) => column.grouped)\n\t\t\t.map((column) => ({\n\t\t\t\tfield: column.name,\n\t\t\t\theader: {\n\t\t\t\t\tdisplayfield: column.name,\n\t\t\t\t\tlabel: I18n.translate(column.label),\n\t\t\t\t},\n\t\t\t\tname: column.name,\n\t\t\t}));\n\t}\n\n\tprivate buildReportAggregations() {\n\t\tconst aggregations: any = {};\n\t\tthis.columns\n\t\t\t.filter((column) => column.aggregation)\n\t\t\t.forEach((column) => {\n\t\t\t\taggregations[column.name] = { expression: column.aggregation };\n\t\t\t});\n\t\treturn aggregations;\n\t}\n\n\tasync getReport(type: string, portrait?: boolean, rowObj: any = {}): Promise<Window | null> {\n\t\tconst report = new Report(this, this.title || this.reportTitle);\n\t\tconst reportGroups = this.buildReportGroups();\n\t\tconst reportAggregations = this.buildReportAggregations();\n\t\tlet typeValue = type;\n\n\t\tif (reportGroups.length === 0 && type.substring(0, 3) === 'xls') {\n\t\t\ttypeValue = 'xls';\n\t\t}\n\n\t\tlet filter;\n\t\tif (this.datasource instanceof TekRestDatasource || this.datasource instanceof TekMemoryDatasource) {\n\t\t\tconst dynamicFilter = { ...this.datasource.dynamicFilter };\n\n\t\t\tconst formatFilter = async (name: string) => {\n\t\t\t\tlet column!: TekGridColumn;\n\t\t\t\ttry {\n\t\t\t\t\tcolumn = this.getColumn(name) as TekGridColumn;\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (e instanceof ColumnNotFoundError) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\tconst { label } = column;\n\n\t\t\t\t// change filter keys to column labels\n\t\t\t\tdynamicFilter[label] = [...dynamicFilter[name]];\n\t\t\t\tdelete dynamicFilter[name];\n\n\t\t\t\tif (!column.componentProps.datasource) return;\n\n\t\t\t\tconst values = dynamicFilter[label].map(\n\t\t\t\t\t(filterItem) => filterItem.value,\n\t\t\t\t);\n\n\t\t\t\tawait column.getBatchLookupData(name, values);\n\n\t\t\t\tdynamicFilter[label] = dynamicFilter[label].map((filterItem) => {\n\t\t\t\t\tconst item = { ...filterItem };\n\t\t\t\t\tconst { value } = item;\n\t\t\t\t\tconst formatted = column.formatterByRow(\n\t\t\t\t\t\t{ [name]: value },\n\t\t\t\t\t\t{ formatterDataText: undefined },\n\t\t\t\t\t);\n\n\t\t\t\t\titem.value = formatted;\n\n\t\t\t\t\treturn item;\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tconst promises = Object.keys(dynamicFilter).map(formatFilter);\n\t\t\tawait Promise.all(promises);\n\n\t\t\tconst reportFilter = new ReportFilter(dynamicFilter);\n\t\t\tfilter = reportFilter.build();\n\t\t}\n\n\t\tlet beforeOpen;\n\n\t\tif (typeof this.events.beforeOpenReport === 'function') {\n\t\t\tbeforeOpen = this.events.beforeOpenReport;\n\t\t}\n\n\t\ttry {\n\t\t\tconst reportUrl = await report\n\t\t\t\t.getReport(\n\t\t\t\t\ttypeValue,\n\t\t\t\t\tportrait,\n\t\t\t\t\t{\n\t\t\t\t\t\tmetaData: merge(rowObj, {\n\t\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t\tgroups: reportGroups,\n\t\t\t\t\t\t\tcolumns: reportAggregations,\n\t\t\t\t\t\t\txlsDefaultType: this.xlsDefaultType,\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t\tbeforeOpen,\n\t\t\t\t\tthis.reportLabelFormatter,\n\t\t\t\t);\n\n\t\t\treturn window.open(reportUrl);\n\t\t} catch (e) {\n\t\t\tif (e instanceof EmptyDataError) {\n\t\t\t\tAlertService.show({ name: 'no-data-warning', text: I18n.translate('TEKGRID_NO_DATA'), color: 'warning' });\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tthrow e;\n\t\t}\n\t}\n\n\tsetViewUpdateFixedColumns(fn: () => void) {\n\t\tthis.groupedDataManager.setViewUpdateFixedColumns(fn);\n\t}\n\n\tsetViewUpdateScrollData(fn: () => void): void {\n\t\tthis.groupedDataManager.setViewUpdateScrollData(fn);\n\t}\n\n\tpublic onCreated(): void {\n\t\tthis.createGridController();\n\t\tthis.addCancelColumn();\n\t\tsuper.onCreated();\n\n\t\tLoader.addController(`GridController_${this.name}`, TekGridController, [this]);\n\t\tif (!this.toolbarSlotProps) this.toolbarSlot = this.tekGridToolbarProvider.getProperties();\n\n\t\tthis.createDynamicFilterDatasources();\n\t}\n\n\tprivate createDynamicFilterDatasources() {\n\t\tif (!(this.datasource instanceof TekRestDatasource || this.datasource instanceof TekMemoryDatasource)) return;\n\n\t\tconst datasourceFactory = new DynamicFilterDatasourceFactory();\n\t\tthis.filterRelationsDatasource = datasourceFactory.factory(this.datasource.dynamicFilterRelations);\n\t\tthis.filterOperationsDatasource = datasourceFactory.factory(this.datasource.dynamicFilterOperations);\n\t}\n\n\tpublic onMounted(element: HTMLElement): void {\n\t\tsuper.onMounted(element);\n\t\tthis.keyMapMerger = new KeyMapMerger(this, [KeyMapNavigation, KeyMapEditing, KeyMapGrouped]);\n\t\tthis.keyMapMerger.bind(element);\n\n\t\tthis.initializeGrouping(this.defaultLazy);\n\t}\n\n\tpublic onBeforeDestroy(): void {\n\t\tsuper.onBeforeDestroy();\n\t\tthis.keyMapMerger.unbind();\n\t}\n\n\tpublic createColumn(column: ITekGridColumn): TekGridColumn {\n\t\treturn new TekGridColumn(column, this);\n\t}\n\n\tgetConditionalProps({ row, column }: { row: IDictionary; column: TekGridColumn }): Partial<IComponentRender> {\n\t\tconst rowStyle = this.getRowStyleConditions(row);\n\t\tconst cellsApplied = this.getAppliedConditions({ row, column });\n\n\t\treturn { ...rowStyle, ...cellsApplied };\n\t}\n\n\tchangeOrder(sortBy: { key: string; order: 'asc' | 'desc' }[]): Promise<void> {\n\t\treturn this.iterableTable.changeOrder(sortBy);\n\t}\n\n\tselectCell(row: IDictionary, column: TekGridColumn): void {\n\t\tthis.iterableTable.selectCell(row, column);\n\t}\n\n\treapplyRowStyleConditions(row: IDictionary): IDictionary {\n\t\treturn this.iterableTable.reapplyRowStyleConditions(row);\n\t}\n\n\tgetRowStyleConditions(row: IDictionary): IDictionary {\n\t\treturn this.iterableTable.getRowStyleConditions(row);\n\t}\n\n\tdeleteRows(): Promise<any[]> {\n\t\treturn this.iterableTable.deleteRows();\n\t}\n\n\tselectAll(isSelected: boolean): void {\n\t\tthis.dataSelector.selectAll(isSelected);\n\t}\n\n\ttoggleRow(row: IDictionary): void {\n\t\tthis.dataSelector.toggleRow(row);\n\t}\n\n\tselectRow(row: IDictionary, select: boolean): void {\n\t\tthis.dataSelector.selectRow(row, select);\n\t}\n\n\tcallDisableSelection(row: IDictionary): boolean {\n\t\treturn this.dataSelector.callDisableSelection(row);\n\t}\n\n\tselectClick(row: IDictionary<any>, isSelected: boolean, event: Event, element?: HTMLElement): void {\n\t\tthis.dataSelector.selectClick(row, isSelected, event, element);\n\t}\n\n\tselectAllClick(isSelected: boolean, event: Event, element?: HTMLElement): void {\n\t\tthis.dataSelector.selectAllClick(isSelected, event, element);\n\t}\n\n\tnavigatePageUp(): void {\n\t\tthis.dataNavigator.navigatePageUp();\n\t}\n\n\tnavigatePageDown(): void {\n\t\tthis.dataNavigator.navigatePageDown();\n\t}\n\n\tsetViewNavigate(viewNavigate: (direction: Direction, event?: Event) => void): void {\n\t\tthis.viewNavigator.setViewNavigate(viewNavigate);\n\t}\n\n\tnavigateLeft(params: IEventParam<any>): void {\n\t\tif (!this.cellSelection) return;\n\t\tthis.viewNavigator.navigateLeft(params);\n\t}\n\n\tnavigateRight(params: IEventParam<any>): void {\n\t\tif (!this.cellSelection) return;\n\t\tthis.viewNavigator.navigateRight(params);\n\t}\n\n\tnavigateUp(): void {\n\t\tthis.viewNavigator.navigateUp();\n\t}\n\n\tnavigateDown(): void {\n\t\tthis.viewNavigator.navigateDown();\n\t}\n\n\tnavigateDatasource(direction: VerticalDirection): void {\n\t\tthis.dataNavigator.navigateDatasource(direction);\n\t}\n\n\tgetActionComponent(\n\t\tactionComponent: IComponent,\n\t\tcolumn: TekGridColumn,\n\t\trow: IDictionary,\n\t\tparentPath?: string,\n\t): IComponent {\n\t\treturn this.tableActionBuilder.getActionComponent(actionComponent, column, row, parentPath);\n\t}\n\n\tcreateGridController(): void {\n\t\tthis.dataEditor.createGridController();\n\t}\n\n\taddCancelColumn(): void {\n\t\tthis.dataEditor.addCancelColumn();\n\t}\n\n\tgetCancelColumnProps(): IGridColumnEditable {\n\t\treturn this.dataEditor.getCancelColumnProps();\n\t}\n\n\tisAdded(row: IDictionary): boolean {\n\t\treturn this.dataEditor.isAdded(row);\n\t}\n\n\tcancelAddedRow(key: string | number): Promise<any> {\n\t\treturn this.dataEditor.cancelAddedRow(key);\n\t}\n\n\tcancelAddedRows(): Promise<void> {\n\t\treturn this.dataEditor.cancelAddedRows();\n\t}\n\n\tgetAddedRows(): IDictionary<any>[] {\n\t\treturn this.dataEditor.getAddedRows();\n\t}\n\n\taddNewRow(row: IDictionary, position?: 'end' | 'start'): Promise<void> {\n\t\treturn this.dataEditor.addNewRow(row, position);\n\t}\n\n\t/**\n\t * Adds a new row taking the group column values from the currently selected row (or group header),\n\t * so callers don't need to manually specify them when adding a row within a selected group.\n\t */\n\tpublic addToSelection(row: IDictionary, position: 'end' | 'start' = 'end'): Promise<void> {\n\t\tconst { currentRow } = this.datasource;\n\t\tconst referenceRow = currentRow.groupHeader ? currentRow.groupRow : currentRow;\n\n\t\tconst groupColumnNames = this.columns.filter((column) => column.grouped).map((column) => column.name);\n\t\tconst groupProperties = extractProperties(referenceRow, groupColumnNames);\n\n\t\tconst rowWithGroups = { ...row, ...groupProperties };\n\t\treturn this.addNewRow(rowWithGroups, position);\n\t}\n\n\tgetVisibleValue(row: IDictionary, column: ITekGridColumn) {\n\t\treturn this.dataEditor.getVisibleValue(row, column);\n\t}\n\n\tgetVisibleRow(row: IDictionary) {\n\t\treturn this.dataEditor.getVisibleRow(row);\n\t}\n\n\tgetEditableComponent(column: ITekGridColumn, row: IDictionary<any>): IComponentRender {\n\t\treturn this.dataEditor.getEditableComponent(column, row);\n\t}\n\n\tisEdited(column: ITekGridColumn, row: IDictionary): boolean {\n\t\treturn this.dataEditor.isEdited(column, row);\n\t}\n\n\tisValid(column: ITekGridColumn, row: IDictionary, revalidate?: boolean): Promise<boolean> {\n\t\treturn this.dataEditor.isValid(column, row, revalidate);\n\t}\n\n\tcheckValid(column: ITekGridColumn, row: IDictionary): boolean {\n\t\treturn this.dataEditor.checkValid(column, row);\n\t}\n\n\tisGridValid(revalidate?: boolean): boolean {\n\t\treturn this.dataEditor.isGridValid(revalidate);\n\t}\n\n\tgetComponent<T>(key: string, columnName: string): T {\n\t\treturn this.dataEditor.getComponent(key, columnName);\n\t}\n\n\tupdateRow(newRow: IDictionary): void {\n\t\tthis.dataEditor.updateRow(newRow);\n\t}\n\n\tupdateCell(rowKey: string, columnName: string, value: any): void {\n\t\tthis.dataEditor.updateCell(rowKey, columnName, value);\n\t}\n\n\tsetViewEnterEdit(fn: ((rowKey: string, columnName: string) => void) | null): void {\n\t\tthis.dataEditor.setViewEnterEdit(fn);\n\t}\n\n\tenterEdit(rowKey: string, columnName: string): void {\n\t\tthis.dataEditor.enterEdit(rowKey, columnName);\n\t}\n\n\tcancelEditedRows(): Promise<void> {\n\t\treturn this.dataEditor.cancelEditedRows();\n\t}\n\n\tsaveEditedRows(revalidate?: boolean): Promise<void[]> {\n\t\treturn this.dataEditor.saveEditedRows(revalidate);\n\t}\n\n\treapplyCanEditRow(row: IDictionary<any>) {\n\t\treturn this.dataEditor.reapplyCanEditRow(row);\n\t}\n\n\tgetCanEditRow(row: IDictionary<any>): boolean | undefined {\n\t\treturn this.dataEditor.getCanEditRow(row);\n\t}\n\n\tgetEditedRows(revalidate?: boolean, silent?: boolean): IDictionary<any>[] {\n\t\treturn this.dataEditor.getEditedRows(revalidate, silent);\n\t}\n\n\tgetEditedRow(row: IDictionary): IDictionary | undefined {\n\t\treturn this.dataEditor.getEditedRow(row);\n\t}\n\n\trowClick(row: IDictionary<any>, event: Event, element?: HTMLElement): void {\n\t\tthis.tekGridEvents.rowClick(row, event, element);\n\t}\n\n\trowDoubleClick(row: IDictionary<any>, event: Event, element?: HTMLElement): void {\n\t\tthis.tekGridEvents.rowDoubleClick(row, event, element);\n\t}\n\n\tcellDoubleClick(row: IDictionary<any>, column: TekGridColumn, event: Event, element?: HTMLElement): void {\n\t\tthis.tekGridEvents.cellDoubleClick(row, column, event, element);\n\t}\n\n\tinlineEdit(row: IDictionary, column: TekGridColumn, event?: Event, element?: HTMLElement): void {\n\t\tthis.tekGridEvents.inlineEdit(row, column, event, element);\n\t}\n\n\tcellClick(row: IDictionary<any>, column: TekGridColumn, event: Event, element?: HTMLElement): void {\n\t\tthis.tekGridEvents.cellClick(row, column, event, element);\n\t}\n\n\tcellClickEvent(row: IDictionary<any>, column: TekGridColumn, event: Event, element?: HTMLElement): void {\n\t\tthis.tekGridEvents.cellClickEvent(row, column, event, element);\n\t}\n\n\tgroupRowClick(row: IDictionary<any>, event: Event, element?: HTMLElement): void {\n\t\tthis.tekGridEvents.groupRowClick(row, event, element);\n\t}\n\n\tgroupRowDoubleClick(row: IDictionary<any>, event: Event, element?: HTMLElement): void {\n\t\tthis.tekGridEvents.groupRowDoubleClick(row, event, element);\n\t}\n\n\tselectGroupClick(row: IDictionary<any>, isSelected: boolean, event: Event, element?: HTMLElement): void {\n\t\tthis.tekGridEvents.selectGroupClick(row, isSelected, event, element);\n\t}\n\n\tpublic async setSearch(search: string): Promise<any> {\n\t\tconst { datasource } = this;\n\t\tif (datasource instanceof TekRestDatasource || datasource instanceof TekMemoryDatasource) {\n\t\t\tdatasource.searchJoin = await this.columnsSearcher.searchColumn(this.columns, search);\n\t\t}\n\n\t\tdatasource.page = 1;\n\t\treturn datasource.setSearch(search);\n\t}\n\n\tgetAtomInstance<T>(key: keyof ITekGridAtoms) {\n\t\treturn this.tekGridToolbarProvider.getAtomInstance<T>(key);\n\t}\n\n\tgetAtomName(key: keyof ITekGridAtoms) {\n\t\treturn this.tekGridToolbarProvider.getAtomName(key);\n\t}\n\n\tpublic getFilterInputs(columnName?: string) {\n\t\treturn this.tekGridToolbarProvider.getFilterInputs(columnName);\n\t}\n}\n\nMessages.add({\n\t'pt-BR': {\n\t\ttranslation: {\n\t\t\tTEKGRID_CONTAINS: 'contém',\n\t\t\tTEKGRID_NOT_CONTAINS: 'não contém',\n\t\t\tTEKGRID_EQUALS: 'é igual a',\n\t\t\tTEKGRID_NOT_EQUALS: 'é diferente de',\n\t\t\tTEKGRID_GREATER_THAN: 'é maior que',\n\t\t\tTEKGRID_LESS_THAN: 'é menor que',\n\t\t\tTEKGRID_GREATER_THAN_EQUALS: 'é maior ou igual a',\n\t\t\tTEKGRID_LESS_THAN_EQUALS: 'é menor ou igual a',\n\t\t\tTEKGRID_IN: 'um dos valores',\n\t\t\tTEKGRID_NOT_IN: 'nenhum dos valores',\n\t\t\tTEKGRID_BETWEEN: 'está entre',\n\t\t\tTEKGRID_AND: 'e',\n\t\t\tTEKGRID_OR: 'ou',\n\t\t\tTEKGRID_HIDE: 'Esconder Ações',\n\t\t\tTEKGRID_SHOW: 'Mostrar Ações',\n\t\t\tTEKGRID_ADD: 'Adicionar',\n\t\t\tTEKGRID_DELETE: 'Excluir',\n\t\t\tTEKGRID_REFRESH: 'Atualizar',\n\t\t\tTEKGRID_COLUMNS: 'Colunas',\n\t\t\tTEKGRID_SAVE: 'Salvar',\n\t\t\tTEKGRID_CANCEL: 'Cancelar',\n\t\t\tTEKGRID_APPLY: 'Aplicar',\n\t\t\tTEKGRID_FILTER: 'Filtro',\n\t\t\tTEKGRID_MULTIPLE_VALUE_HINT: 'Separe valores usando \";\"',\n\t\t\tTEKGRID_EXPORT: 'Exportar',\n\t\t\tTEKGRID_EXPORT_AS: 'Exportar como {{ type }}',\n\t\t\tTEKGRID_PORTRAIT: 'Retrato',\n\t\t\tTEKGRID_LANDSCAPE: 'Paisagem',\n\t\t\tTEKGRID_COLUMN_VISIBLE: 'Visível',\n\t\t\tTEKGRID_COLUMN_GROUPED: 'Grupo',\n\t\t\tTEKGRID_COLUMN_AGGREGATION: 'Totalização',\n\t\t\tTEKGRID_COLUMN_LABEL: 'Rótulo',\n\t\t\tTEKGRID_COLUMN_ALIGNMENT: 'Alinhamento',\n\t\t\tTEKGRID_COLUMN_GROUP_OPENED: 'Aberto (grupo)',\n\t\t\tTEKGRID_COLUMN_ORDER: 'Ordem',\n\t\t\tTEKGRID_COLUMN_ORDER_DIRECTION: 'Direção (ordem)',\n\t\t\tTEKGRID_AGGREGATION_SUM: 'Soma',\n\t\t\tTEKGRID_AGGREGATION_AVG: 'Média',\n\t\t\tTEKGRID_AGGREGATION_MAX: 'Máximo',\n\t\t\tTEKGRID_AGGREGATION_MIN: 'Mínimo',\n\t\t\tTEKGRID_AGGREGATION_COUNT: 'Contador',\n\t\t\tTEKGRID_MORE_OPTIONS: 'Mais opções',\n\t\t\tTEKGRID_COLUMNS_OPTIONS: 'Configuração de colunas',\n\t\t\tTEKGRID_CLOSE: 'Fechar',\n\t\t\tTEKGRID_FIXED_COLUMNS: 'Colunas fixadas',\n\t\t\tTEKGRID_VISIBLE_COLUMNS: 'Colunas visíveis',\n\t\t\tTEKGRID_GROUPED_COLUMNS: 'Colunas agrupadas',\n\t\t\tTEKGRID_ORDER: 'Ordem',\n\t\t\tTEKGRID_OTHER_COLUMNS: 'Outras colunas',\n\t\t\tTEKGRID_DROP_COLUMNS: 'Arraste colunas aqui',\n\t\t\tTEKGRID_DETAILS_FOR: 'Detalhes para:',\n\t\t\tTEKGRID_LEFT: 'Esquerda',\n\t\t\tTEKGRID_CENTER: 'Centro',\n\t\t\tTEKGRID_RIGHT: 'Direita',\n\t\t\tTEKGRID_ASC: 'Crescente',\n\t\t\tTEKGRID_DESC: 'Decrescente',\n\t\t\tTEKGRID_SELECT_COLUMN: '(selecione uma ou mais colunas)',\n\t\t\tTEKGRID_SELECT_ALL: 'Selecionar todas',\n\t\t\tTEKGRID_HELPERVALUE_TODAY: 'Hoje',\n\t\t\tTEKGRID_HELPERVALUE_TOMORROW: 'Amanhã',\n\t\t\tTEKGRID_HELPERVALUE_YESTERDAY: 'Ontem',\n\t\t\tTEKGRID_HELPERVALUE_LAST_7_DAYS: 'Últimos 7 Dias',\n\t\t\tTEKGRID_HELPERVALUE_NEXT_7_DAYS: 'Próximos 7 Dias',\n\t\t\tTEKGRID_HELPERVALUE_CURRENT_WEEK: 'Semana Atual',\n\t\t\tTEKGRID_HELPERVALUE_CURRENT_MONTH: 'Mês Atual',\n\t\t\tTEKGRID_HELPERVALUE_CURRENT_YEAR: 'Ano Atual',\n\t\t\tTEKGRID_WITH_GROUPS: '(Com grupos)',\n\t\t\tTEKGRID_GRID_MIRROR: '(Espelho do grid)',\n\t\t\tTEKGRID_NO_DATA: 'Não há dados para gerar o relatório',\n\t\t},\n\t},\n\t'en-US': {\n\t\ttranslation: {\n\t\t\tTEKGRID_CONTAINS: 'contains',\n\t\t\tTEKGRID_NOT_CONTAINS: 'does not contain',\n\t\t\tTEKGRID_EQUALS: 'is equal to',\n\t\t\tTEKGRID_NOT_EQUALS: 'is different from',\n\t\t\tTEKGRID_GREATER_THAN: 'is greater than',\n\t\t\tTEKGRID_LESS_THAN: 'is less than',\n\t\t\tTEKGRID_GREATER_THAN_EQUALS: 'is greater or equals to',\n\t\t\tTEKGRID_LESS_THAN_EQUALS: 'is less or equals to',\n\t\t\tTEKGRID_IN: 'is in',\n\t\t\tTEKGRID_NOT_IN: 'is not in',\n\t\t\tTEKGRID_BETWEEN: 'is between',\n\t\t\tTEKGRID_AND: 'and',\n\t\t\tTEKGRID_OR: 'or',\n\t\t\tTEKGRID_HIDE: 'Hide Actions',\n\t\t\tTEKGRID_SHOW: 'Show Actions',\n\t\t\tTEKGRID_ADD: 'Add',\n\t\t\tTEKGRID_DELETE: 'Delete',\n\t\t\tTEKGRID_REFRESH: 'Refresh',\n\t\t\tTEKGRID_COLUMNS: 'Columns',\n\t\t\tTEKGRID_SAVE: 'Save',\n\t\t\tTEKGRID_CANCEL: 'Cancel',\n\t\t\tTEKGRID_APPLY: 'Apply',\n\t\t\tTEKGRID_FILTER: 'Filter',\n\t\t\tTEKGRID_MULTIPLE_VALUE_HINT: 'Separate values using \";\"',\n\t\t\tTEKGRID_EXPORT: 'Export',\n\t\t\tTEKGRID_EXPORT_AS: 'Export as {{ type }}',\n\t\t\tTEKGRID_PORTRAIT: 'Portrait',\n\t\t\tTEKGRID_LANDSCAPE: 'Landscape',\n\t\t\tTEKGRID_COLUMN_VISIBLE: 'Visible',\n\t\t\tTEKGRID_COLUMN_GROUPED: 'Grouped',\n\t\t\tTEKGRID_COLUMN_AGGREGATION: 'Aggregation',\n\t\t\tTEKGRID_COLUMN_LABEL: 'Label',\n\t\t\tTEKGRID_COLUMN_ALIGNMENT: 'Alignment',\n\t\t\tTEKGRID_COLUMN_GROUP_OPENED: 'Opened (group)',\n\t\t\tTEKGRID_COLUMN_ORDER: 'Order',\n\t\t\tTEKGRID_COLUMN_ORDER_DIRECTION: 'Direction (order)',\n\t\t\tTEKGRID_AGGREGATION_SUM: 'Sum',\n\t\t\tTEKGRID_AGGREGATION_AVG: 'Average',\n\t\t\tTEKGRID_AGGREGATION_MAX: 'Maximum',\n\t\t\tTEKGRID_AGGREGATION_MIN: 'Minimum',\n\t\t\tTEKGRID_AGGREGATION_COUNT: 'Count',\n\t\t\tTEKGRID_MORE_OPTIONS: 'More options',\n\t\t\tTEKGRID_COLUMNS_OPTIONS: 'Columns configuration',\n\t\t\tTEKGRID_CLOSE: 'Close',\n\t\t\tTEKGRID_FIXED_COLUMNS: 'Fixed columns',\n\t\t\tTEKGRID_VISIBLE_COLUMNS: 'Visible columns',\n\t\t\tTEKGRID_GROUPED_COLUMNS: 'Grouped columns',\n\t\t\tTEKGRID_ORDER: 'Order',\n\t\t\tTEKGRID_OTHER_COLUMNS: 'Other columns',\n\t\t\tTEKGRID_DROP_COLUMNS: 'Drop columns here',\n\t\t\tTEKGRID_DETAILS_FOR: 'Details for:',\n\t\t\tTEKGRID_LEFT: 'Left',\n\t\t\tTEKGRID_CENTER: 'Center',\n\t\t\tTEKGRID_RIGHT: 'Right',\n\t\t\tTEKGRID_ASC: 'Ascending',\n\t\t\tTEKGRID_DESC: 'Descending',\n\t\t\tTEKGRID_SELECT_COLUMN: '(select one or more columns)',\n\t\t\tTEKGRID_SELECT_ALL: 'Select all',\n\t\t\tTEKGRID_HELPERVALUE_TODAY: 'Today',\n\t\t\tTEKGRID_HELPERVALUE_TOMORROW: 'Tomorrow',\n\t\t\tTEKGRID_HELPERVALUE_YESTERDAY: 'Yesterday',\n\t\t\tTEKGRID_HELPERVALUE_LAST_7_DAYS: 'Last 7 Days',\n\t\t\tTEKGRID_HELPERVALUE_NEXT_7_DAYS: 'Next 7 Days',\n\t\t\tTEKGRID_HELPERVALUE_CURRENT_WEEK: 'Current Week',\n\t\t\tTEKGRID_HELPERVALUE_CURRENT_MONTH: 'Current Month',\n\t\t\tTEKGRID_HELPERVALUE_CURRENT_YEAR: 'Current Year',\n\t\t\tTEKGRID_WITH_GROUPS: '(With groups)',\n\t\t\tTEKGRID_GRID_MIRROR: '(Grid mirror)',\n\t\t\tTEKGRID_NO_DATA: 'There is no data to generate the report',\n\t\t},\n\t},\n\t'es-CL': {\n\t\ttranslation: {\n\t\t\tTEKGRID_CONTAINS: 'contiene',\n\t\t\tTEKGRID_NOT_CONTAINS: 'no contiene',\n\t\t\tTEKGRID_EQUALS: 'igual',\n\t\t\tTEKGRID_NOT_EQUALS: 'es diferente de',\n\t\t\tTEKGRID_GREATER_THAN: 'es mayor que',\n\t\t\tTEKGRID_LESS_THAN: 'es menor que',\n\t\t\tTEKGRID_GREATER_THAN_EQUALS: 'es mayor o igual que',\n\t\t\tTEKGRID_LESS_THAN_EQUALS: 'es menor o igual que',\n\t\t\tTEKGRID_IN: 'uno de los valores',\n\t\t\tTEKGRID_NOT_IN: 'ninguno de los valores',\n\t\t\tTEKGRID_BETWEEN: 'está entre',\n\t\t\tTEKGRID_AND: 'e',\n\t\t\tTEKGRID_OR: 'o',\n\t\t\tTEKGRID_HIDE: 'Ocultar Acciones',\n\t\t\tTEKGRID_SHOW: 'Mostrar Acciones',\n\t\t\tTEKGRID_ADD: 'Añadir',\n\t\t\tTEKGRID_DELETE: 'Eliminar',\n\t\t\tTEKGRID_REFRESH: 'Actualizar',\n\t\t\tTEKGRID_COLUMNS: 'Colunas',\n\t\t\tTEKGRID_SAVE: 'Guardar',\n\t\t\tTEKGRID_CANCEL: 'Cancelar',\n\t\t\tTEKGRID_APPLY: 'Aplicar',\n\t\t\tTEKGRID_FILTER: 'Filtro',\n\t\t\tTEKGRID_MULTIPLE_VALUE_HINT: 'Separe los valores usando \";\"',\n\t\t\tTEKGRID_EXPORT: 'Exportar',\n\t\t\tTEKGRID_EXPORT_AS: 'Exportar como {{ type }}',\n\t\t\tTEKGRID_PORTRAIT: 'Vertical',\n\t\t\tTEKGRID_LANDSCAPE: 'Horizontal',\n\t\t\tTEKGRID_COLUMN_VISIBLE: 'Visible',\n\t\t\tTEKGRID_COLUMN_GROUPED: 'Grupo',\n\t\t\tTEKGRID_COLUMN_AGGREGATION: 'Totalización',\n\t\t\tTEKGRID_COLUMN_LABEL: 'Etiqueta',\n\t\t\tTEKGRID_COLUMN_ALIGNMENT: 'alineación',\n\t\t\tTEKGRID_COLUMN_GROUP_OPENED: 'Abierto (grupo)',\n\t\t\tTEKGRID_COLUMN_ORDER: 'Orden',\n\t\t\tTEKGRID_COLUMN_ORDER_DIRECTION: 'Dirección (orden)',\n\t\t\tTEKGRID_AGGREGATION_SUM: 'Suma',\n\t\t\tTEKGRID_AGGREGATION_AVG: 'Media',\n\t\t\tTEKGRID_AGGREGATION_MAX: 'Máximo',\n\t\t\tTEKGRID_AGGREGATION_MIN: 'Mínimo',\n\t\t\tTEKGRID_AGGREGATION_COUNT: 'Contar',\n\t\t\tTEKGRID_MORE_OPTIONS: 'Mas opciones',\n\t\t\tTEKGRID_COLUMNS_OPTIONS: 'Configuración de columna',\n\t\t\tTEKGRID_CLOSE: 'Cerrar',\n\t\t\tTEKGRID_FIXED_COLUMNS: 'Columnas fijas',\n\t\t\tTEKGRID_VISIBLE_COLUMNS: 'Columnas visibles',\n\t\t\tTEKGRID_GROUPED_COLUMNS: 'Columnas agrupadas',\n\t\t\tTEKGRID_ORDER: 'Orden',\n\t\t\tTEKGRID_OTHER_COLUMNS: 'Otras columnas',\n\t\t\tTEKGRID_DROP_COLUMNS: 'Arrastra columnas aquí',\n\t\t\tTEKGRID_DETAILS_FOR: 'Detalles para',\n\t\t\tTEKGRID_LEFT: 'Izquierda',\n\t\t\tTEKGRID_CENTER: 'Centro',\n\t\t\tTEKGRID_RIGHT: 'Derecha',\n\t\t\tTEKGRID_ASC: 'Creciente',\n\t\t\tTEKGRID_DESC: 'Decreciente',\n\t\t\tTEKGRID_SELECT_COLUMN: '(seleccione una o más columnas)',\n\t\t\tTEKGRID_SELECT_ALL: 'Seleccionar todas',\n\t\t\tTEKGRID_HELPERVALUE_TODAY: 'Hoy',\n\t\t\tTEKGRID_HELPERVALUE_TOMORROW: 'Mañana',\n\t\t\tTEKGRID_HELPERVALUE_YESTERDAY: 'Ayer',\n\t\t\tTEKGRID_HELPERVALUE_LAST_7_DAYS: 'Últimos 7 días',\n\t\t\tTEKGRID_HELPERVALUE_NEXT_7_DAYS: 'Próximos 7 días',\n\t\t\tTEKGRID_HELPERVALUE_CURRENT_WEEK: 'Semana actual',\n\t\t\tTEKGRID_HELPERVALUE_CURRENT_MONTH: 'Mes actual',\n\t\t\tTEKGRID_HELPERVALUE_CURRENT_YEAR: 'Año actual',\n\t\t\tTEKGRID_WITH_GROUPS: '(Con grupos)',\n\t\t\tTEKGRID_GRID_MIRROR: '(Espejo de grid)',\n\t\t\tTEKGRID_NO_DATA: 'No hay datos para generar el reporte',\n\t\t},\n\t},\n});\n\nMessages.add({\n\t'pt-BR': {\n\t\ttranslation: {\n\t\t\tNO_NOTIFICATIONS: 'Nenhuma Notificação',\n\t\t\tMARK_ALL_AS_READ: 'Marcar todas como lidas',\n\t\t\tNOTIFICATIONS: 'Notificações',\n\t\t\tSEE_ALL_NOTIFICATIONS: 'Ver todas notificações',\n\t\t\tUNAVAILABLE_IMAGE: 'Imagem indisponível',\n\t\t\tREFRESH: 'Atualizar',\n\t\t\tACTIONS: 'Ações',\n\t\t\tFILTER: 'Filtro',\n\t\t\tLAYOUT: 'Layout: ',\n\t\t\tNEW_LAYOUT: 'Novo layout',\n\t\t\tDEFAULT_LAYOUT: 'Padrão',\n\t\t\tLAYOUT_MODIFIED:\n\t\t\t\t'O layout atual foi modificado. Crie um novo layout, sobrescreva um existente ou descarte as alterações', // eslint-disable-line\n\t\t\tLAYOUT_NOT_MODIFIED: 'Crie um novo layout ou aplique um dos layouts já existentes',\n\t\t\tLAYOUT_DISCART_CHANGES: 'Descartar alterações',\n\t\t},\n\t},\n\t'en-US': {\n\t\ttranslation: {\n\t\t\tNO_NOTIFICATIONS: 'No Notifications',\n\t\t\tMARK_ALL_AS_READ: 'Mark all as read',\n\t\t\tNOTIFICATIONS: 'Notifications',\n\t\t\tSEE_ALL_NOTIFICATIONS: 'See all notifications',\n\t\t\tUNAVAILABLE_IMAGE: 'Unavailable image',\n\t\t\tREFRESH: 'Refresh',\n\t\t\tACTIONS: 'Actions',\n\t\t\tFILTER: 'Filter',\n\t\t\tLAYOUT: 'Layout: ',\n\t\t\tNEW_LAYOUT: 'New layout',\n\t\t\tDEFAULT_LAYOUT: 'Default',\n\t\t\tLAYOUT_MODIFIED:\n\t\t\t\t'The current layout has been modified. Create a new layout, overwrite an existing one or discard changes', // eslint-disable-line\n\t\t\tLAYOUT_NOT_MODIFIED: 'Create a new layout or apply one of the existing layouts',\n\t\t\tLAYOUT_DISCART_CHANGES: 'Discard changes',\n\t\t},\n\t},\n\t'es-CL': {\n\t\ttranslation: {\n\t\t\tNO_NOTIFICATIONS: 'Sin Notificación',\n\t\t\tMARK_ALL_AS_READ: 'Marcar todo como leído',\n\t\t\tNOTIFICATIONS: 'Notificaciones',\n\t\t\tSEE_ALL_NOTIFICATIONS: 'Ver todas las notificaciones',\n\t\t\tUNAVAILABLE_IMAGE: 'Imagen no disponible',\n\t\t\tREFRESH: 'Actualizar',\n\t\t\tACTIONS: 'Acciones',\n\t\t\tFILTER: 'Filtro',\n\t\t\tLAYOUT: 'Disposición: ',\n\t\t\tNEW_LAYOUT: 'Nueva disposición',\n\t\t\tDEFAULT_LAYOUT: 'Default',\n\t\t\tLAYOUT_MODIFIED:\n\t\t\t\t'La disposición actual ha sido modificada. Cree una nueva disposición, sobrescriba una existente o descarte los cambios', // eslint-disable-line\n\t\t\tLAYOUT_NOT_MODIFIED: 'Cree una nueva disposición o aplique una de las disposiciones existentes',\n\t\t\tLAYOUT_DISCART_CHANGES: 'Descartar los cambios',\n\t\t},\n\t},\n});\n","import { Config, Http, IDictionary } from '@zeedhi/core';\nimport { Column, ComponentRender, Iterable } from '@zeedhi/common';\nimport { ITekConfig } from '../../utils/config/config';\nimport {\n\tITekGridLayout,\n\tITekGridLayoutColumn,\n\tITekGridLayoutInfo,\n\tITekGridLayoutOptions,\n\tITekGridLayoutOptionsEvents,\n} from './interfaces';\nimport { IDynamicFilterItem } from '../tek-datasource/interfaces';\nimport { TekGrid } from './tek-grid';\nimport { TekGridColumn } from './tek-grid-column';\n\nexport class TekGridLayoutOptions extends ComponentRender implements ITekGridLayoutOptions {\n\tpublic currentLayoutName = '';\n\n\tpublic layoutEdited = false;\n\n\tpublic layouts: IDictionary<ITekGridLayout> = {};\n\n\tpublic layoutNames: string[] = [];\n\n\tpublic viewApplyLayout?: (layout?: ITekGridLayout) => void;\n\n\tpublic viewGetCurrentLayout?: (layoutName: string) => {\n\t\tname: string;\n\t\tgridWidth: any;\n\t\torder: any;\n\t\tfilter: any;\n\t\tdynamicFilter: any;\n\t\tcolumns: any;\n\t};\n\n\tpublic originalColumnProps: ITekGridLayoutColumn[] = [];\n\n\tpublic originalDatasourceOrder: string[] = [];\n\n\tpublic originalDatasourceDynamicFilter: IDictionary<IDynamicFilterItem[]> = {};\n\n\tpublic originalDatasourceFilter: IDictionary<any> = {};\n\n\t/* Grid events */\n\tpublic declare events: ITekGridLayoutOptionsEvents;\n\n\tpublic grid!: Iterable<TekGridColumn>;\n\n\tprivate getParentGrid() {\n\t\tlet { parent } = this;\n\t\twhile (parent && !(parent.constructor === Iterable || parent.constructor.prototype instanceof Iterable)) {\n\t\t\tparent = parent.parent;\n\t\t}\n\t\treturn parent as Iterable<TekGridColumn>;\n\t}\n\n\tpublic async onMounted(element: HTMLElement) {\n\t\tsuper.onMounted(element);\n\t\tthis.grid = this.getParentGrid();\n\n\t\tthis.originalDatasourceOrder = [...this.grid.datasource.order];\n\t\tthis.originalDatasourceDynamicFilter = {\n\t\t\t...(this.grid.datasource as any).dynamicFilter,\n\t\t};\n\t\tthis.originalDatasourceFilter = { ...this.grid.datasource.filter };\n\t\tthis.originalColumnProps = this.grid.columns.map((column: any) => ({\n\t\t\tname: column.name,\n\t\t\tlabel: column.label,\n\t\t\talign: column.align,\n\t\t\tisVisible: column.isVisible,\n\t\t\tminWidth: column.minWidth,\n\t\t\tmaxWidth: column.maxWidth,\n\t\t\twidth: column.width,\n\t\t\tfixed: column.fixed,\n\t\t\tgrouped: column.grouped,\n\t\t\tgroupOpened: column.groupOpened,\n\t\t\taggregation: column.aggregation,\n\t\t\tfilterHelperValue: this.getHelperValue(column),\n\t\t}));\n\n\t\tlet layoutsInfo: ITekGridLayoutInfo = {};\n\n\t\tconst promise = this.loadLayoutsInfo();\n\n\t\tif (this.grid instanceof TekGrid) {\n\t\t\tthis.grid.registerTask(promise);\n\t\t}\n\n\t\tlayoutsInfo = await promise;\n\t\tif (layoutsInfo.layouts) {\n\t\t\tthis.layouts = layoutsInfo.layouts;\n\t\t\tthis.layoutNames = Object.keys(this.layouts);\n\t\t\tif (layoutsInfo.currentLayoutName) {\n\t\t\t\tthis.currentLayoutName = layoutsInfo.currentLayoutName;\n\t\t\t\tthis.applyLayout(this.currentLayoutName, false);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected async loadLayoutsInfo() {\n\t\tconst eventFunction = this.events.loadLayouts || this.grid.events.loadLayouts;\n\n\t\tif (eventFunction && typeof eventFunction === 'function') {\n\t\t\treturn eventFunction({ component: this.grid });\n\t\t}\n\n\t\tif ((Config as ITekConfig).loadGridLayoutsEndPoint) {\n\t\t\tconst route = (Config as ITekConfig).loadGridLayoutsEndPoint!;\n\t\t\tconst response = await Http.get(`${route}?id=${this.grid.name}`);\n\t\t\tconst responseData = response.data.data;\n\t\t\treturn responseData.length && responseData[0] ? responseData[0].layouts : responseData.layouts || {};\n\t\t}\n\n\t\treturn JSON.parse(localStorage.getItem(this.grid.name) || '{}');\n\t}\n\n\tpublic getHelperValue(column: Column) {\n\t\tif (column instanceof TekGridColumn) {\n\t\t\tif (!Array.isArray(column.filterProps)) return column.filterProps.helperValue;\n\t\t\treturn column.filterProps.map((prop) => prop.helperValue);\n\t\t}\n\t\treturn '';\n\t}\n\n\tpublic newLayout(layout: ITekGridLayout) {\n\t\tthis.fixColumns(layout);\n\t\tthis.currentLayoutName = layout.name;\n\t\tthis.addLayout(layout);\n\t\tthis.layoutEdited = false;\n\t}\n\n\tpublic addLayout(layout: ITekGridLayout) {\n\t\tthis.fixColumns(layout);\n\t\tthis.layouts[layout.name] = layout;\n\n\t\tthis.saveLayouts();\n\t}\n\n\tpublic discardChanges() {\n\t\tconst layoutSelected = this.layouts[this.currentLayoutName];\n\n\t\tif (this.viewApplyLayout) {\n\t\t\tthis.viewApplyLayout(layoutSelected);\n\t\t}\n\n\t\tthis.layoutEdited = false;\n\t}\n\n\tpublic applyLayout(name: string, save = true) {\n\t\tthis.currentLayoutName = name;\n\t\tconst layoutSelected = this.layouts[name];\n\n\t\tif (this.viewApplyLayout) {\n\t\t\tthis.viewApplyLayout(layoutSelected);\n\t\t}\n\n\t\tif (save) {\n\t\t\tthis.saveLayouts();\n\t\t}\n\n\t\tthis.layoutEdited = false;\n\t}\n\n\tprivate saveLayouts() {\n\t\tthis.layoutNames = Object.keys(this.layouts);\n\n\t\tconst layoutInfo: ITekGridLayoutInfo = {\n\t\t\tcurrentLayoutName: this.currentLayoutName,\n\t\t\tlayouts: this.layouts,\n\t\t};\n\n\t\tconst eventFunction = this.events.saveLayouts || this.grid.events.saveLayouts;\n\t\tif (eventFunction && typeof eventFunction === 'function') {\n\t\t\teventFunction({ component: this.grid, layouts: layoutInfo });\n\t\t} else if ((Config as ITekConfig).saveGridLayoutsEndPoint) {\n\t\t\tconst route = (Config as ITekConfig).saveGridLayoutsEndPoint!;\n\t\t\tHttp.post(route, { id: this.grid.name, layouts: layoutInfo });\n\t\t} else {\n\t\t\tlocalStorage.setItem(this.grid.name, JSON.stringify(layoutInfo));\n\t\t}\n\t}\n\n\tpublic deleteLayout(name: string) {\n\t\tif (this.currentLayoutName === name) {\n\t\t\tthis.currentLayoutName = '';\n\t\t\tthis.applyLayout(this.currentLayoutName, false);\n\t\t}\n\n\t\tdelete this.layouts[name];\n\n\t\tthis.saveLayouts();\n\t}\n\n\tpublic updateLayout(name: string, layout: ITekGridLayout) {\n\t\tthis.fixColumns(layout);\n\t\tthis.currentLayoutName = name;\n\t\tlayout.name = name;\n\t\tthis.layouts[layout.name] = layout;\n\n\t\tthis.saveLayouts();\n\n\t\tthis.layoutEdited = false;\n\t}\n\n\tpublic updateDefaultLayout(layout: ITekGridLayout) {\n\t\tthis.fixColumns(layout);\n\t\tthis.originalDatasourceOrder = layout.order || this.originalDatasourceOrder;\n\t\tthis.originalDatasourceDynamicFilter = layout.dynamicFilter || this.originalDatasourceDynamicFilter;\n\t\tthis.originalDatasourceFilter = layout.filter || this.originalDatasourceFilter;\n\t\tif (layout.columns) {\n\t\t\tthis.originalColumnProps = layout.columns.map((column: any) => {\n\t\t\t\tconst originalColumnIdx = this.originalColumnProps.findIndex((item) => item.name === column.name);\n\t\t\t\tconst originalColumn = originalColumnIdx !== -1 ? this.originalColumnProps[originalColumnIdx] : {};\n\t\t\t\treturn {\n\t\t\t\t\t...originalColumn,\n\t\t\t\t\t...column,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\tif (this.currentLayoutName === '') {\n\t\t\tthis.applyLayout(this.currentLayoutName, false);\n\t\t}\n\t}\n\n\tprivate fixColumns(layout: ITekGridLayout) {\n\t\tconst hasLayoutColumns = !!layout.columns;\n\t\tlayout.columns = layout.columns || [];\n\t\tconst layoutColumnNames = layout.columns.map((layoutColumn) => layoutColumn.name);\n\t\tthis.grid.columns.forEach((gridColumn: any) => {\n\t\t\tif (!hasLayoutColumns || layoutColumnNames.indexOf(gridColumn.name) === -1) {\n\t\t\t\tlayout.columns!.push({\n\t\t\t\t\tname: gridColumn.name,\n\t\t\t\t\tlabel: gridColumn.label,\n\t\t\t\t\talign: gridColumn.align,\n\t\t\t\t\tisVisible: !hasLayoutColumns && gridColumn.isVisible,\n\t\t\t\t\twidth: gridColumn.width,\n\t\t\t\t\tminWidth: gridColumn.minWidth,\n\t\t\t\t\tmaxWidth: gridColumn.maxWidth,\n\t\t\t\t\tfixed: gridColumn.fixed,\n\t\t\t\t\tgrouped: gridColumn.grouped,\n\t\t\t\t\tgroupOpened: gridColumn.groupOpened,\n\t\t\t\t\taggregation: gridColumn.aggregation,\n\t\t\t\t\tfilterHelperValue: this.getHelperValue(gridColumn),\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n}\n","import { IEventParam } from '@zeedhi/core';\nimport { Checkbox, IterableColumnsButtonController } from '@zeedhi/common';\nimport { TekGridColumn } from '../tek-grid-column';\n\nexport class TekGridColumnsButtonController extends IterableColumnsButtonController {\n\tpublic changeGroupedColumn(column: TekGridColumn, { component, event, element }: IEventParam<Checkbox>) {\n\t\tcolumn.grouped = component.value;\n\t\tif (!column.grouped) {\n\t\t\tconst index = this.iterableComponent.datasource.order.indexOf(`${column.name}.asc`);\n\t\t\tthis.iterableComponent.datasource.order.splice(index, 1);\n\t\t}\n\t\tthis.iterableComponent.changeLayout(event, element);\n\t}\n\n\tpublic changeAggregationColumn(column: TekGridColumn, { component, event, element }: IEventParam<Checkbox>) {\n\t\tconst newValue = component.value || undefined;\n\t\tif (column.aggregation !== newValue) {\n\t\t\tthis.iterableComponent.changeLayout(event, element);\n\t\t}\n\t\tcolumn.aggregation = newValue;\n\t}\n\n\tpublic showHideTekColumn(column: TekGridColumn, { component, event, element }: IEventParam<Checkbox>) {\n\t\tif (!component.value && column.grouped) column.grouped = false;\n\t\tcolumn.isVisible = component.value;\n\t\tthis.iterableComponent.changeLayout(event, element);\n\t}\n}\n","import { I18n, Loader } from '@zeedhi/core';\nimport { IterableColumnsButton } from '@zeedhi/common';\nimport { TekGridColumn } from '../tek-grid-column';\nimport { ITekGridColumnsButton, columnAggregationValues } from '../interfaces';\nimport { TekGridColumnsButtonController } from './tek-grid-columns-button-controller';\n\n/**\n * Base class for TekGrid Columns Button component\n */\nexport class TekGridColumnsButton extends IterableColumnsButton<TekGridColumn> implements ITekGridColumnsButton {\n\tpublic hideGroups = false;\n\n\tconstructor(props: ITekGridColumnsButton) {\n\t\tsuper(props);\n\t\tthis.hideGroups = this.getInitValue('hideGroups', props.hideGroups, this.hideGroups);\n\t\tthis.createAccessors();\n\t}\n\n\tpublic onCreated() {\n\t\tsuper.onCreated();\n\t\tLoader.addController(`IterableColumnsButtonController_${this.name}`, TekGridColumnsButtonController, [\n\t\t\tthis.iterableComponent,\n\t\t]);\n\t\tthis.controller = Loader.getInstance(`IterableColumnsButtonController_${this.name}`);\n\t}\n\n\tprivate aggregationDataSet: any[] = [];\n\n\tpublic getAggregationSelectData() {\n\t\tif (!this.aggregationDataSet.length) {\n\t\t\tthis.aggregationDataSet = columnAggregationValues.filter(Boolean).map((value) => ({\n\t\t\t\ttext: I18n.translate(`TEKGRID_AGGREGATION_${value}`),\n\t\t\t\tvalue,\n\t\t\t}));\n\t\t}\n\t\treturn this.aggregationDataSet;\n\t}\n}\n","import { TekUserInfo } from './tek-user-info';\n\nclass TekUserInfoController {\n component: TekUserInfo;\n\n get versionInfo() {\n return this.component.versionInfo;\n }\n\n constructor(component: TekUserInfo) {\n this.component = component;\n }\n\n get name() {\n return this.versionInfo?.name || '';\n }\n\n set name(value: string) {\n if (!this.versionInfo) return;\n this.versionInfo.name = value;\n }\n\n get version() {\n return this.versionInfo?.version || '';\n }\n\n set version(value: string) {\n if (!this.versionInfo) return;\n this.versionInfo.version = value;\n }\n\n get hasDefaultEmail() {\n return !!this.component.defaultEmail;\n }\n\n get hasAboutImage() {\n return !!this.component.aboutImage;\n }\n\n mergeText(name: string, version: string) {\n return `<li>${name} - <b>${version}</b></li>`;\n }\n\n get mainVersion() {\n if (!this.versionInfo?.name || !this.versionInfo.version) return '';\n\n return `${this.versionInfo.name} - <b>${this.versionInfo.version}</b>`;\n }\n\n protected getItems(tab: 'frontend' | 'backend' | 'modules') {\n if (!this.versionInfo) return [];\n\n const tabInfo = this.versionInfo[tab];\n\n return `<ul>${tabInfo.map((item) => this.mergeText(item.name, item.version)).join('')}</ul>`;\n }\n\n get frontendItems() {\n return this.getItems('frontend');\n }\n\n get backendItems() {\n return this.getItems('backend');\n }\n\n get modulesItems() {\n return this.getItems('modules');\n }\n\n get showReportError() {\n const { reportError } = this.component.visibleItems;\n return reportError || reportError === undefined;\n }\n\n get showVersionInfo() {\n const { versionInfo } = this.component.visibleItems;\n return versionInfo || versionInfo === undefined;\n }\n\n get showAbout() {\n const { about } = this.component.visibleItems;\n return about || about === undefined;\n }\n}\n\nexport { TekUserInfoController };\n\n","import { Button, Form, IComponentRender, Modal, ModalService } from '@zeedhi/common';\nimport {\n Http, IEventParam, Loader, Messages, Metadata,\n} from '@zeedhi/core';\nimport { ITekUserInfo, IVersionInfo } from './interfaces';\nimport { TekUserInfoController } from './TekUserInfoController';\nimport { UserInfo } from '@zeedhi/zd-user-info-common';\n\nexport class TekUserInfo extends UserInfo implements ITekUserInfo {\n public aboutModal?: Modal;\n\n public reportModal?: Modal;\n\n /**\n * Data about the application version\n */\n public versionInfo: IVersionInfo | null = null;\n\n /**\n * Default email address to be defined in the Report Bug form\n */\n public defaultEmail = '';\n\n /**\n * Url from which the version info will be retrieved\n */\n public versionUrl = '';\n\n /**\n * Path to the image to be shown on about modal\n */\n public aboutImage = '';\n\n protected propBottomSlot?: IComponentRender[];\n\n constructor(props: ITekUserInfo) {\n super(props);\n this.versionInfo = this.getInitValue('versionInfo', props.versionInfo, this.versionInfo);\n this.defaultEmail = this.getInitValue('defaultEmail', props.defaultEmail, this.defaultEmail);\n this.versionUrl = this.getInitValue('versionUrl', props.versionUrl, this.versionUrl);\n this.aboutImage = this.getInitValue('aboutImage', props.aboutImage, this.aboutImage);\n\n this.createAccessors();\n this.propBottomSlot = props.bottomSlot;\n }\n\n protected getBottomSlot(): IComponentRender[] {\n return [\n {\n name: `${this.name}_bottom_list`,\n component: 'TekUserInfoList',\n parentName: this.name,\n },\n ];\n }\n\n public onAboutClick() {\n if (!this.aboutModal) {\n this.aboutModal = ModalService.create({\n name: `${this.name}_about_modal`,\n cssClass: 'about-modal',\n grid: { cols: 8, sm: 4, lg: 5 },\n children: [\n {\n name: `${this.name}_about_header`,\n component: 'ZdHeader',\n color: 'transparent',\n padless: true,\n elevation: 0,\n rightSlot: [\n {\n name: `${this.name}_about_close_button`,\n component: 'ZdModalCloseButton',\n small: true,\n modalName: `${this.name}_about_modal`,\n },\n ],\n },\n {\n name: `${this.name}_about_row`,\n component: 'ZdTag',\n tag: 'div',\n cssClass: 'zd-justify-center zd-px-6',\n isVisible: `{{TekUserInfoController_${this.componentId}.hasAboutImage}}`,\n children: [\n {\n name: `${this.name}_about_image`,\n component: 'ZdImage',\n width: '100%',\n src: this.aboutImage,\n },\n ],\n },\n {\n name: `${this.name}_version_tabs`,\n cssClass: 'zd-pt-3 zd-tekUserInfo-tab',\n component: 'ZdTabs',\n tabs: [\n {\n name: `${this.name}_version_frontend_tab`,\n tabTitle: 'Frontend',\n children: this.getVersionTree('frontend'),\n },\n {\n name: `${this.name}_version_backend_tab`,\n tabTitle: 'Backend',\n children: this.getVersionTree('backend'),\n },\n {\n name: `${this.name}_version_modules_tab`,\n tabTitle: 'Modules',\n children: this.getVersionTree('modules'),\n },\n ],\n },\n ],\n });\n }\n\n this.aboutModal.show();\n }\n\n protected getVersionTree(tab: 'frontend' | 'backend' | 'modules') {\n if (!this.versionInfo) return [];\n\n const main = {\n name: `${this.name}_version_${tab}_main`,\n component: 'ZdText',\n text: `{{TekUserInfoController_${this.componentId}.mainVersion}}`,\n };\n\n const itemsComponent = {\n name: `${this.name}_version_${tab}`,\n component: 'ZdText',\n cssClass: 'zd-pl-4',\n text: `{{TekUserInfoController_${this.componentId}.${tab}Items}}`,\n };\n\n return [main, itemsComponent];\n }\n\n public onReportClick() {\n if (!this.reportModal) {\n this.reportModal = ModalService.create({\n name: `${this.name}_report_modal`,\n children: [\n {\n name: `${this.name}_report_header`,\n component: 'ZdHeader',\n color: 'transparent',\n padless: true,\n elevation: 0,\n leftSlot: [\n {\n name: `${this.name}_report_title`,\n component: 'ZdText',\n text: 'TEKUSERINFO_REPORT_ERROR',\n cssClass: 'zd-theme-font-title',\n },\n ],\n rightSlot: [\n {\n name: `${this.name}_report_close_button`,\n component: 'ZdModalCloseButton',\n small: true,\n modalName: `${this.name}_report_modal`,\n },\n ],\n },\n {\n name: `${this.name}_report_form`,\n component: 'ZdForm',\n cssClass: 'zd-pt-4',\n children: [\n {\n name: 'report_email',\n component: 'ZdTextInput',\n label: 'E-mail',\n grid: {\n cols: '12',\n },\n value: this.defaultEmail,\n readonly: `{{TekUserInfoController_${this.componentId}.hasDefaultEmail}}`,\n validations: {\n required: {},\n email: {},\n },\n },\n {\n name: 'report_cc',\n component: 'ZdTextInput',\n label: 'CC',\n placeholder: 'TEKUSERINFO_EMAIL_PLACEHOLDER',\n grid: {\n cols: '12',\n },\n },\n {\n name: 'report_type',\n component: 'ZdSelect',\n label: 'TEKUSERINFO_TYPE',\n dataValue: 'value',\n dataText: 'text',\n datasource: {\n uniqueKey: 'value',\n translate: true,\n data: [\n { value: '0', text: 'TEKUSERINFO_ERROR' },\n { value: '1', text: 'TEKUSERINFO_IMPROVEMENT' },\n ],\n },\n grid: {\n cols: '12',\n },\n validations: {\n required: {},\n },\n },\n {\n name: 'report_description',\n component: 'ZdTextarea',\n label: 'TEKUSERINFO_DESCRIPTION',\n grid: {\n cols: '12',\n },\n validations: {\n required: {},\n },\n },\n ],\n },\n {\n name: `${this.name}_report_footer`,\n component: 'ZdFooter',\n color: 'transparent',\n padless: true,\n rightSlot: [\n {\n name: `${this.name}_report_cancel`,\n component: 'ZdButton',\n label: 'TEKUSERINFO_CANCEL',\n outline: true,\n events: {\n click: () => { this.reportModal?.hide(); },\n },\n },\n {\n name: `${this.name}_report_send`,\n component: 'ZdButton',\n label: 'TEKUSERINFO_SEND',\n events: {\n click: (args: IEventParam<Button>) => this.onSendReport(args),\n },\n },\n ],\n },\n ],\n });\n }\n\n this.reportModal.show();\n }\n\n public async onSendReport({ event, element }: IEventParam<Button>) {\n if (!this.reportModal) return;\n\n const form = Metadata.getInstance<Form>(`${this.name}_report_form`);\n\n const validation = await form.validate();\n\n if (!validation.valid) return;\n\n this.callEvent('onSendReport', {\n event, element, component: this, form,\n });\n this.reportModal.hide();\n }\n\n public onCreated() {\n super.onCreated();\n Loader.addController(`TekUserInfoController_${this.componentId}`, TekUserInfoController, [this]);\n\n this.bottomSlot = this.propBottomSlot ? this.propBottomSlot : this.getBottomSlot();\n }\n\n public async onMounted(element: any) {\n super.onMounted(element);\n\n if (this.versionUrl) {\n const res = await Http.get(this.versionUrl);\n\n this.versionInfo = res.data.versionInfo;\n }\n }\n}\n\nMessages.add({\n 'pt-BR': {\n translation: {\n TEKUSERINFO_ABOUT: 'Sobre',\n TEKUSERINFO_REPORT_ERROR: 'Reportar Erro',\n TEKUSERINFO_EMAIL_PLACEHOLDER: 'Separe e-mails usando \";\"',\n TEKUSERINFO_TYPE: 'Tipo',\n TEKUSERINFO_ERROR: 'Erro',\n TEKUSERINFO_IMPROVEMENT: 'Melhoria',\n TEKUSERINFO_DESCRIPTION: 'Descrição',\n TEKUSERINFO_CANCEL: 'Cancelar',\n TEKUSERINFO_SEND: 'Enviar',\n },\n },\n 'en-US': {\n translation: {\n TEKUSERINFO_ABOUT: 'About',\n TEKUSERINFO_REPORT_ERROR: 'Report Bug',\n TEKUSERINFO_EMAIL_PLACEHOLDER: 'Separate e-mails using \";\"',\n TEKUSERINFO_TYPE: 'Type',\n TEKUSERINFO_ERROR: 'Bug',\n TEKUSERINFO_IMPROVEMENT: 'Improvement',\n TEKUSERINFO_DESCRIPTION: 'Description',\n TEKUSERINFO_CANCEL: 'Cancel',\n TEKUSERINFO_SEND: 'Send',\n },\n },\n 'es-CL': {\n translation: {\n TEKUSERINFO_ABOUT: 'Sobre',\n TEKUSERINFO_REPORT_ERROR: 'Reportar Error',\n TEKUSERINFO_EMAIL_PLACEHOLDER: 'Separar e-mails usando \";\"',\n TEKUSERINFO_TYPE: 'Tipo',\n TEKUSERINFO_ERROR: 'Error',\n TEKUSERINFO_IMPROVEMENT: 'Mejora',\n TEKUSERINFO_DESCRIPTION: 'Descripción',\n TEKUSERINFO_CANCEL: 'Cancelar',\n TEKUSERINFO_SEND: 'Enviar',\n },\n },\n});\n","import { List } from '@zeedhi/common';\nimport { Metadata } from '@zeedhi/core';\nimport { ITekUserInfoList } from './interfaces';\nimport { TekUserInfo } from './tek-user-info';\n\nexport class TekUserInfoList extends List implements ITekUserInfoList {\n /**\n * Name of the user info component\n */\n public parentName = '';\n\n public dense = true;\n\n constructor(props: ITekUserInfoList) {\n super(props);\n this.parentName = props.parentName || '';\n }\n\n onCreated(): void {\n super.onCreated();\n this.items = this.getItems();\n }\n\n protected getItems() {\n const parent = this.parentName ? Metadata.getInstance<TekUserInfo>(this.parentName) : this.parent;\n\n if (!(parent instanceof TekUserInfo)) {\n throw Error(`Could not find the TekUserInfo component associated with ${this.name} TekUserInfoList`);\n }\n\n return [\n {\n name: `${parent.name}_version`,\n component: 'ZdListItem',\n title: `{{TekUserInfoController_${parent.componentId}.name}}`,\n subtitle: `{{TekUserInfoController_${parent.componentId}.version}}`,\n isVisible: `{{TekUserInfoController_${parent.componentId}.showVersionInfo}}`,\n cssClass: 'zd-px-2',\n },\n {\n name: `${parent.name}_about`,\n component: 'ZdListItem',\n title: 'TEKUSERINFO_ABOUT',\n prependIcon: 'infoOutline',\n cssClass: 'zd-px-2',\n isVisible: `{{TekUserInfoController_${parent.componentId}.showAbout}}`,\n events: {\n click: () => parent.onAboutClick(),\n },\n },\n {\n name: `${parent.name}_report`,\n component: 'ZdListItem',\n title: 'TEKUSERINFO_REPORT_ERROR',\n prependIcon: 'mdi-ladybug',\n cssClass: 'zd-px-2',\n isVisible: `{{TekUserInfoController_${parent.componentId}.showReportError}}`,\n events: {\n click: () => parent.onReportClick(),\n },\n },\n ];\n }\n}\n","import { Messages } from '@zeedhi/core';\n\nMessages.add({\n 'pt-BR': {\n translation: {\n NO_NOTIFICATIONS: 'Nenhuma Notificação',\n MARK_ALL_AS_READ: 'Marcar todas como lidas',\n NOTIFICATIONS: 'Notificações',\n SEE_ALL_NOTIFICATIONS: 'Ver todas notificações',\n UNAVAILABLE_IMAGE: 'Imagem indisponível',\n REFRESH: 'Atualizar',\n ACTIONS: 'Ações',\n FILTER: 'Filtro',\n LAYOUT: 'Layout: ',\n NEW_LAYOUT: 'Novo layout',\n DEFAULT_LAYOUT: 'Padrão',\n LAYOUT_MODIFIED: 'O layout atual foi modificado. Crie um novo layout, sobrescreva um existente ou descarte as alterações', // eslint-disable-line\n LAYOUT_NOT_MODIFIED: 'Crie um novo layout ou aplique um dos layouts já existentes',\n LAYOUT_DISCART_CHANGES: 'Descartar alterações',\n },\n },\n 'en-US': {\n translation: {\n NO_NOTIFICATIONS: 'No Notifications',\n MARK_ALL_AS_READ: 'Mark all as read',\n NOTIFICATIONS: 'Notifications',\n SEE_ALL_NOTIFICATIONS: 'See all notifications',\n UNAVAILABLE_IMAGE: 'Unavailable image',\n REFRESH: 'Refresh',\n ACTIONS: 'Actions',\n FILTER: 'Filter',\n LAYOUT: 'Layout: ',\n NEW_LAYOUT: 'New layout',\n DEFAULT_LAYOUT: 'Default',\n LAYOUT_MODIFIED: 'The current layout has been modified. Create a new layout, overwrite an existing one or discard changes', // eslint-disable-line\n LAYOUT_NOT_MODIFIED: 'Create a new layout or apply one of the existing layouts',\n LAYOUT_DISCART_CHANGES: 'Discard changes',\n },\n },\n 'es-CL': {\n translation: {\n NO_NOTIFICATIONS: 'Sin Notificación',\n MARK_ALL_AS_READ: 'Marcar todo como leído',\n NOTIFICATIONS: 'Notificaciones',\n SEE_ALL_NOTIFICATIONS: 'Ver todas las notificaciones',\n UNAVAILABLE_IMAGE: 'Imagen no disponible',\n REFRESH: 'Actualizar',\n ACTIONS: 'Acciones',\n FILTER: 'Filtro',\n LAYOUT: 'Disposición: ',\n NEW_LAYOUT: 'Nueva disposición',\n DEFAULT_LAYOUT: 'Default',\n LAYOUT_MODIFIED: 'La disposición actual ha sido modificada. Cree una nueva disposición, sobrescriba una existente o descarte los cambios', // eslint-disable-line\n LAYOUT_NOT_MODIFIED: 'Cree una nueva disposición o aplique una de las disposiciones existentes',\n LAYOUT_DISCART_CHANGES: 'Descartar los cambios',\n },\n },\n});\n\n// export * from './crud/crud-form';\n// export * from './crud/crud-button';\n// export * from './crud/crud-add-button';\n// export * from './crud/crud-cancel-button';\n// export * from './crud/crud-delete-button';\n// export * from './crud/crud-save-button';\n// export * from './crud/interfaces';\n\nexport * from './tek-breadcrumb-header/breadcrumb-header';\nexport * from './tek-breadcrumb-header/interfaces';\n\n// export * from './tek-card-title/card-title';\n// export * from './tek-card-title/interfaces';\n\n// export * from './tek-image/image';\n// export * from './tek-image/interfaces';\n\n// export * from './tek-product-card/product-card';\n// export * from './tek-product-card/interfaces';\n\n// export * from './tek-iterable-component-render/iterable-component-render';\n// export * from './tek-iterable-component-render/interfaces';\n\n// export * from './tek-iterable-carousel/iterable-carousel';\n// export * from './tek-iterable-carousel/interfaces';\n\nexport * from './tek-loading/interfaces';\nexport * from './tek-loading/loading';\n\n// export * from './tek-notifications/notifications';\n// export * from './tek-notifications/interfaces';\n\nexport * from './tek-grid';\n\nexport * from './tek-datasource';\n\n// export * from './tek-tree-grid/interfaces';\n// export * from './tek-tree-grid/tree-grid';\n\nexport * from './tek-user-info/interfaces';\nexport * from './tek-user-info/tek-user-info';\nexport * from './tek-user-info/tek-user-info-list';\n"],"names":["BreadcrumbHeader","ComponentRender","props","__publicField","breadcrumb","loading","Loading","ZdLoading","DynamicFilterOperations","DynamicFilterRelations","TekMemoryDatasource","MemoryDatasource","datasource","queryString","URL","urlParam","datasourceParam","values","superQueryString","query","dynamicFilterQuerystring","searchJoinQuerystring","column","value","filter","filterValue","row","searchWithoutSearchJoin","searchRow","key","searchIds","searchJoinData","filtered","item","columnValue","Utils","val","columnName","DatasourceFactory","TekRestDatasource","RestDatasource","requestParams","isNotEmptyObj","obj","isValid","ButtonOption","config","grid","type","label","portrait","iconName","orientation","MultiOption","id","option","cssClass","reportParams","optionPortrait","rowObj","multiOption","optionComponents","text","event","TeknisaCommonError","message","TekGridDeleteRowsError","TekGridToolbarProvider","groupsVisibility","Metadata","component","instance","exportConfigButtons","index","defaultToolbar","toolbarToPropertyMap","toolbarDivChildren","gridProperty","itemFactory","predefinedItem","ColumnsSearcher","columns","search","lookupColumns","_a","searchJoin","promises","searchData","lookupId","DynamicFilterDatasourceFactory","options","TekFilterHelper","name","DateHelper","fn","TekGridColumn","GridColumnEditable","lookupColumn","batch","dataToLookup","dataIndex","data","defaultDs","dataText","searchIn","changed","TekGridFilterButton","Button","gridName","changedCompNames","dynamicFilter","newDynamicFilter","filterItem","relation","operation","compName","helperValue","columnObj","filterProps","prop","inputObj","newFilter","mergeModalFilterProps","filterModalDef","ModalService","filterForm","result","itemInstance","SelectMultiple","Config","formValue","itemValue","relationAndOperationAndName","filterFn","col1","col2","index1","index2","mapper","current","filterColumns","columnComponentName","dataValueOut","componentProps","newColumnComponent","componentName","extractProperties","isFilledObject","isNil","ReportFilter","items","words","I18n","next","GroupedDataManager","NonInitializedError","task","promise","debounce","lazyLoad","group","newGroup","order","groupColumnNames","gridOrder","groupOrderColumns","otherOrderColumns","summaryData","aggregation","currentGroup","groupIndex","i","groupFooterRow","g","lastGroupHeaderRow","groupColumn","cellsApplied","groupValue","groupHeaderRow","summary","rowValue","summaryRow","groupBreak","groupFooter","summaryTotal","currentRow","newCurrentRow","GroupedDataNavigator","DataNavigator","direction","groupedData","rowKey","currentRowKey","up","rowIndex","nextIndex","newRow","tuple","args","columnAggregationValues","KeyMapGrouped","TekGridDataEditor","DataEditorWithAdd","TekGridController","allSelected","except","TekGridEvents","GridEditableEvents","tekGrid","element","isSelected","GroupedDataSelector","DataSelector","TekGrid","Iterable","defaultHeaderBackground","TableActionBuilder","IterableTable","ViewNavigator","datasourceProps","clonedeep","Accessor","controller","accessor","Loader","columnNamesummary","param","aggregations","report","Report","reportGroups","reportAggregations","typeValue","formatFilter","e","ColumnNotFoundError","formatted","beforeOpen","reportUrl","merge","EmptyDataError","AlertService","datasourceFactory","KeyMapMerger","KeyMapNavigation","KeyMapEditing","rowStyle","sortBy","select","viewNavigate","params","actionComponent","parentPath","position","referenceRow","groupProperties","rowWithGroups","revalidate","silent","Messages","TekGridLayoutOptions","parent","layoutsInfo","eventFunction","route","responseData","Http","layout","layoutSelected","save","layoutInfo","originalColumnIdx","hasLayoutColumns","layoutColumnNames","layoutColumn","gridColumn","TekGridColumnsButtonController","IterableColumnsButtonController","newValue","TekGridColumnsButton","IterableColumnsButton","TekUserInfoController","version","tab","reportError","versionInfo","about","TekUserInfo","UserInfo","main","itemsComponent","form","res","TekUserInfoList","List"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeedhi/teknisa-components-common",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"description": "Teknisa Components Common",
|
|
5
5
|
"author": "Zeedhi <zeedhi@teknisa.com>",
|
|
6
6
|
"license": "ISC",
|
|
@@ -60,5 +60,5 @@
|
|
|
60
60
|
"env": {
|
|
61
61
|
"NODE_ENV": "production"
|
|
62
62
|
},
|
|
63
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "ee16bba18da34043f62f3aa45fe5f3d148e71dfd"
|
|
64
64
|
}
|