@paperless/core 1.37.1 → 1.38.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.
@@ -29,6 +29,10 @@ export declare class Table {
29
29
  * Wether to enable selection
30
30
  */
31
31
  enableRowSelection: boolean;
32
+ /**
33
+ * A limit to the amount of rows that can be selected
34
+ */
35
+ rowSelectionLimit: number | undefined;
32
36
  /**
33
37
  * Wether to enable row clicking
34
38
  */
@@ -1255,6 +1255,10 @@ export namespace Components {
1255
1255
  * Quick filters to show
1256
1256
  */
1257
1257
  "quickFilters": QuickFilter[];
1258
+ /**
1259
+ * A limit to the amount of rows that can be selected
1260
+ */
1261
+ "rowSelectionLimit": number | undefined;
1258
1262
  /**
1259
1263
  * The amount of filters being selected
1260
1264
  */
@@ -3426,6 +3430,10 @@ declare namespace LocalJSX {
3426
3430
  * Quick filters to show
3427
3431
  */
3428
3432
  "quickFilters"?: QuickFilter[];
3433
+ /**
3434
+ * A limit to the amount of rows that can be selected
3435
+ */
3436
+ "rowSelectionLimit"?: number | undefined;
3429
3437
  /**
3430
3438
  * The amount of filters being selected
3431
3439
  */
package/hydrate/index.js CHANGED
@@ -21551,7 +21551,7 @@ class TabItem {
21551
21551
  }; }
21552
21552
  }
21553
21553
 
21554
- const tableComponentCss = ".fixed{position:fixed!important}.absolute{position:absolute!important}.relative{position:relative!important}.bottom-4{bottom:1rem!important}.left-1\\/2{left:50%!important}.flex{display:flex!important}.hidden{display:none!important}.flex-shrink{flex-shrink:1!important}.-translate-x-1\\/2{--tw-translate-x:-50%!important}.-translate-x-1\\/2,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}*{box-sizing:border-box}p-table{display:flex;flex-direction:column;position:relative}p-table .p-input[type=checkbox]{flex-shrink:0}p-table p-table-container{position:relative}p-table p-table-container p-floating-menu-container{--tw-translate-x:-50%;animation:floatingMenuContainerIn .3s ease forwards!important;bottom:1rem;left:50%;position:fixed;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (min-width:40rem){p-table p-table-container p-floating-menu-container{bottom:4rem;position:absolute}}p-table p-table-container p-floating-menu-container:not(.shown){display:none}p-table p-table-container p-floating-menu-container.inactive{animation:floatingMenuContainerOut .3s ease forwards!important}p-table p-table-container p-floating-menu-container .hide-mobile{display:none}@media (min-width:40rem){p-table p-table-container p-floating-menu-container .hide-mobile{display:block}}@keyframes floatingMenuContainerOut{0%{display:flex;opacity:1;transform:translateY(0) translateX(-50%)}99%{display:flex;opacity:0;transform:translateY(100%) translateX(-50%)}to{display:none;opacity:0;transform:translateY(100%) translateX(-50%)}}@keyframes floatingMenuContainerIn{0%{display:none;opacity:0;transform:translateY(100%) translateX(-50%)}1%{display:flex;opacity:0;transform:translateY(100%) translateX(-50%)}to{display:flex;opacity:1;transform:translateY(0) translateX(-50%)}}@media (min-width:40rem){.tablet\\:block{display:block!important}}.static{position:static!important}.mx-0{margin-left:0!important;margin-right:0!important}.mb-14{margin-bottom:3.5rem!important}.mb-6{margin-bottom:1.5rem!important}.table{display:table!important}.h-6{height:1.5rem!important}.w-6{width:1.5rem!important}.max-w-\\[20rem\\]{max-width:20rem!important}.flex-1{flex:1 1 0%!important}.cursor-pointer{cursor:pointer!important}.flex-col{flex-direction:column!important}.items-center{align-items:center!important}.self-center{align-self:center!important}.rounded{border-radius:.25rem!important}.py-24{padding-bottom:6rem!important;padding-top:6rem!important}.text-center{text-align:center!important}.text-sm{font-size:.875rem!important;line-height:1.25rem!important}.font-semibold{font-weight:600!important}.text-storm{--tw-text-opacity:1!important;color:rgb(81 83 107/var(--tw-text-opacity))!important}.text-storm-medium{--tw-text-opacity:1!important;color:rgb(128 130 158/var(--tw-text-opacity))!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}";
21554
+ const tableComponentCss = ".fixed{position:fixed!important}.absolute{position:absolute!important}.relative{position:relative!important}.bottom-4{bottom:1rem!important}.left-1\\/2{left:50%!important}.flex{display:flex!important}.hidden{display:none!important}.flex-shrink{flex-shrink:1!important}.-translate-x-1\\/2{--tw-translate-x:-50%!important}.-translate-x-1\\/2,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}*{box-sizing:border-box}p-table{display:flex;flex-direction:column;position:relative}p-table .p-input[type=checkbox]{flex-shrink:0}p-table p-table-container{position:relative}p-table p-table-container p-floating-menu-container{--tw-translate-x:-50%;animation:floatingMenuContainerIn .3s ease forwards!important;bottom:1rem;left:50%;position:fixed;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (min-width:40rem){p-table p-table-container p-floating-menu-container{bottom:4rem;position:absolute}}p-table p-table-container p-floating-menu-container:not(.shown){display:none}p-table p-table-container p-floating-menu-container.inactive{animation:floatingMenuContainerOut .3s ease forwards!important}p-table p-table-container p-floating-menu-container .hide-mobile{display:none}@media (min-width:40rem){p-table p-table-container p-floating-menu-container .hide-mobile{display:block}}@keyframes floatingMenuContainerOut{0%{display:flex;opacity:1;transform:translateY(0) translateX(-50%)}99%{display:flex;opacity:0;transform:translateY(100%) translateX(-50%)}to{display:none;opacity:0;transform:translateY(100%) translateX(-50%)}}@keyframes floatingMenuContainerIn{0%{display:none;opacity:0;transform:translateY(100%) translateX(-50%)}1%{display:flex;opacity:0;transform:translateY(100%) translateX(-50%)}to{display:flex;opacity:1;transform:translateY(0) translateX(-50%)}}@media (min-width:40rem){.tablet\\:block{display:block!important}}.static{position:static!important}.mx-0{margin-left:0!important;margin-right:0!important}.mb-14{margin-bottom:3.5rem!important}.mb-6{margin-bottom:1.5rem!important}.table{display:table!important}.h-6{height:1.5rem!important}.w-6{width:1.5rem!important}.max-w-\\[20rem\\]{max-width:20rem!important}.flex-1{flex:1 1 0%!important}.cursor-pointer{cursor:pointer!important}.flex-col{flex-direction:column!important}.items-center{align-items:center!important}.self-center{align-self:center!important}.rounded{border-radius:.25rem!important}.py-24{padding-bottom:6rem!important;padding-top:6rem!important}.text-center{text-align:center!important}.text-sm{font-size:.875rem!important;line-height:1.25rem!important}.font-semibold{font-weight:600!important}.text-storm{--tw-text-opacity:1!important;color:rgb(81 83 107/var(--tw-text-opacity))!important}.text-storm-medium{--tw-text-opacity:1!important;color:rgb(128 130 158/var(--tw-text-opacity))!important}.opacity-0{opacity:0!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}";
21555
21555
 
21556
21556
  class Table {
21557
21557
  constructor(hostRef) {
@@ -21579,6 +21579,7 @@ class Table {
21579
21579
  this.footerLoading = false;
21580
21580
  this.amountOfLoadingRows = 6;
21581
21581
  this.enableRowSelection = true;
21582
+ this.rowSelectionLimit = undefined;
21582
21583
  this.enableRowClick = true;
21583
21584
  this.selectedRows = [];
21584
21585
  this.enableFloatingMenu = true;
@@ -21743,10 +21744,14 @@ class Table {
21743
21744
  return hAsync("p-loader", { variant: "ghost", class: "h-6 w-6 rounded" });
21744
21745
  }
21745
21746
  if (variant === 'header') {
21746
- return (hAsync("input", { class: "p-input", type: "checkbox", onChange: (ev) => this._selectAllChange(ev), checked: this._selectionContainsAll(), indeterminate: this._selectionIndeterminate() }));
21747
+ return (hAsync("input", { class: `p-input ${this.rowSelectionLimit === 1 && 'opacity-0'}`, type: "checkbox", onChange: (ev) => this._selectAllChange(ev), checked: this._selectionContainsAll(), indeterminate: this._selectionIndeterminate(), disabled: this.rowSelectionLimit === 1 }));
21747
21748
  }
21748
21749
  const item = this._items[rowIndex];
21749
- return (hAsync("input", { class: "p-input", type: "checkbox", onChange: (ev) => this._checkboxChange(ev === null || ev === void 0 ? void 0 : ev.target, rowIndex), disabled: this.canSelectKey && !item[this.canSelectKey], checked: this._selectionContains(item, rowIndex) }));
21750
+ const selectionContains = this._selectionContains(item, rowIndex);
21751
+ return (hAsync("input", { class: "p-input", type: "checkbox", onChange: (ev) => this._checkboxChange(ev === null || ev === void 0 ? void 0 : ev.target, rowIndex), disabled: (this.canSelectKey && !item[this.canSelectKey]) ||
21752
+ (this.rowSelectionLimit !== undefined &&
21753
+ !selectionContains &&
21754
+ this.selectedRows.length === this.rowSelectionLimit), checked: selectionContains }));
21750
21755
  }
21751
21756
  _getEmptyState() {
21752
21757
  var _a;
@@ -21775,6 +21780,11 @@ class Table {
21775
21780
  }
21776
21781
  toAdd.push(row);
21777
21782
  this.rowSelected.emit(row);
21783
+ if (this.rowSelectionLimit !== undefined &&
21784
+ this.selectedRows.length + toAdd.length ===
21785
+ this.rowSelectionLimit) {
21786
+ break;
21787
+ }
21778
21788
  }
21779
21789
  this.selectedRows = [...this.selectedRows, ...toAdd];
21780
21790
  this.selectedRowsChange.emit(this.selectedRows);
@@ -21799,12 +21809,18 @@ class Table {
21799
21809
  if (!this.enableRowSelection) {
21800
21810
  return;
21801
21811
  }
21812
+ const value = this._getCheckedValue(target);
21813
+ if (value &&
21814
+ this.rowSelectionLimit !== undefined &&
21815
+ this.selectedRows.length >= this.rowSelectionLimit) {
21816
+ target.checked = false;
21817
+ return;
21818
+ }
21802
21819
  const row = this._items[index];
21803
21820
  if (this.canSelectKey && !row[this.canSelectKey]) {
21804
21821
  target.checked = false;
21805
21822
  return;
21806
21823
  }
21807
- const value = this._getCheckedValue(target);
21808
21824
  if (value) {
21809
21825
  this.selectedRows = [...this.selectedRows, row];
21810
21826
  this.selectedRowsChange.emit(this.selectedRows);
@@ -21839,6 +21855,10 @@ class Table {
21839
21855
  if (!((_a = this._items) === null || _a === void 0 ? void 0 : _a.length)) {
21840
21856
  return false;
21841
21857
  }
21858
+ if (this.rowSelectionLimit !== undefined &&
21859
+ this.selectedRows.length === this.rowSelectionLimit) {
21860
+ return true;
21861
+ }
21842
21862
  for (let i = 0; i < ((_b = this._items) === null || _b === void 0 ? void 0 : _b.length); i++) {
21843
21863
  const item = this._items[i];
21844
21864
  const contains = this._selectionContains(item, i);
@@ -21854,6 +21874,10 @@ class Table {
21854
21874
  if (!((_a = this._items) === null || _a === void 0 ? void 0 : _a.length) || !((_b = this.selectedRows) === null || _b === void 0 ? void 0 : _b.length)) {
21855
21875
  return false;
21856
21876
  }
21877
+ if (this.rowSelectionLimit !== undefined &&
21878
+ this.selectedRows.length === this.rowSelectionLimit) {
21879
+ return false;
21880
+ }
21857
21881
  let containsCount = 0;
21858
21882
  for (let i = 0; i < ((_c = this._items) === null || _c === void 0 ? void 0 : _c.length); i++) {
21859
21883
  const item = this._items[i];
@@ -21932,6 +21956,7 @@ class Table {
21932
21956
  "footerLoading": [4, "footer-loading"],
21933
21957
  "amountOfLoadingRows": [2, "amount-of-loading-rows"],
21934
21958
  "enableRowSelection": [4, "enable-row-selection"],
21959
+ "rowSelectionLimit": [2, "row-selection-limit"],
21935
21960
  "enableRowClick": [4, "enable-row-click"],
21936
21961
  "selectedRows": [16],
21937
21962
  "enableFloatingMenu": [4, "enable-floating-menu"],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paperless/core",
3
- "version": "1.37.1",
3
+ "version": "1.38.0",
4
4
  "description": "Stencil Component Starter",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",
@@ -1 +0,0 @@
1
- {"version":3,"names":["tableComponentCss","Table","this","_ctrlDown","_hasCustomFilterSlot","_hasFloatingMenuItems","_floatingMenuShown","amount","formatTranslation","_c","_a","_locales","floating_menu","amount_selected","_b","amount_selected_plural","replace","defaultSize","defaultSizeOptions","empty_state","no_filter","header","content","action","filtered","componentWillLoad","_el","querySelector","querySelectorAll","length","_setLocales","_parseItems","items","_generateColumns","componentDidRender","hasRendered","emit","render","h","Host","class","shadow","enableHeader","quickFilters","activeQuickFilterIdentifier","onQuickFilter","detail","quickFilter","enableSearch","query","onQueryChange","queryChange","enableFilter","selectedFiltersAmount","filterButtonTemplate","onFilter","filter","enableAction","actionIcon","actionButtonIcon","actionText","actionButtonText","actionLoading","actionButtonLoading","canUseAction","actionButtonEnabled","actionButtonTemplate","onAction","itemsSelectedAmount","selectedRows","loading","headerLoading","name","slot","_getHeader","_getRows","enableFooter","hideOnSinglePage","enablePageSize","pageSize","pageSizeOptions","onPageSizeChange","pageSizeChange","enablePagination","page","total","onPageChange","pageChange","enableExport","onExport","export","footerLoading","enableFloatingMenu","enableRowSelection","usedInTable","hover","floatingMenuAmountSelectedTemplate","variant","onClick","_selectAllChange","getLocaleComponentStrings","onTableDefinitionUpdated","keyDown","key","keyUp","visibilityChange","document","visibilityState","_items","Array","isArray","JSON","parse","definitions","definitionsArray","from","_columns","map","col","index","definition","value","checkbox","hasCheckbox","_getCheckbox","amountOfLoadingRows","_","i","enableHover","enableRowClick","_getLoadingColumns","_getEmptyState","item","ev","_rowClick","_getRowColumns","colIndex","rowIndex","selectionKey","type","onChange","checked","_selectionContainsAll","indeterminate","_selectionIndeterminate","_checkboxChange","target","disabled","canSelectKey","_selectionContains","emptyStateFilteredHeader","emptyStateFilteredContent","enableEmptyStateAction","emptyStateActionClick","emptyStateHeader","emptyStateContent","icon","size","emptyStateAction","$event","forceValue","undefined","_getCheckedValue","toAdd","row","push","rowSelected","selectedRowsChange","find","d","_getSelectionValue","rowDeselected","indexOfToRemove","selection","splice","returnIndex","returnValue","findIndex","contains","containsCount","tagName","toLowerCase","_findRow","_findRowAction","rowClick","ctrlDown","el","parentElement","getAttribute"],"sources":["src/components/organisms/table/table.component.scss?tag=p-table","src/components/organisms/table/table.component.tsx"],"sourcesContent":["p-table {\n\t@apply relative flex flex-col;\n\n\t.p-input[type='checkbox'] {\n\t\tflex-shrink: 0;\n\t}\n\n\tp-table-container {\n\t\t@apply relative;\n\n\t\tp-floating-menu-container {\n\t\t\t@apply fixed bottom-4 left-1/2 -translate-x-1/2 transform;\n\t\t\tanimation: forwards floatingMenuContainerIn 0.3s ease !important;\n\n\t\t\t@screen tablet {\n\t\t\t\t@apply absolute bottom-16;\n\t\t\t}\n\n\t\t\t&:not(.shown) {\n\t\t\t\t@apply hidden;\n\t\t\t}\n\n\t\t\t&.inactive {\n\t\t\t\tanimation: forwards floatingMenuContainerOut 0.3s ease !important;\n\t\t\t}\n\n\t\t\t.hide-mobile {\n\t\t\t\t@apply hidden tablet:block;\n\t\t\t}\n\t\t}\n\t}\n}\n\n@keyframes floatingMenuContainerOut {\n\t0% {\n\t\tdisplay: flex;\n\t\ttransform: translateY(0) translateX(-50%);\n\t\topacity: 100;\n\t}\n\t99% {\n\t\ttransform: translateY(100%) translateX(-50%);\n\t\topacity: 0;\n\t\tdisplay: flex;\n\t}\n\t100% {\n\t\ttransform: translateY(100%) translateX(-50%);\n\t\topacity: 0;\n\t\tdisplay: none;\n\t}\n}\n\n@keyframes floatingMenuContainerIn {\n\t0% {\n\t\ttransform: translateY(100%) translateX(-50%);\n\t\topacity: 0;\n\t\tdisplay: none;\n\t}\n\t1% {\n\t\ttransform: translateY(100%) translateX(-50%);\n\t\topacity: 0;\n\t\tdisplay: flex;\n\t}\n\t100% {\n\t\ttransform: translateY(0) translateX(-50%);\n\t\topacity: 100;\n\t\tdisplay: flex;\n\t}\n}\n","import {\n\tComponent,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tProp,\n\tState,\n\tWatch,\n} from '@stencil/core';\nimport { IconVariant } from '../../../components';\nimport { QuickFilter, RowClickEvent } from '../../../types/table';\nimport { formatTranslation, getLocaleComponentStrings } from '../../../utils';\nimport { TableColumn } from '../../helpers/table-column/table-column.component';\nimport {\n\tdefaultSize,\n\tdefaultSizeOptions,\n} from '../../molecules/page-size-select/constants';\nimport { buttonTemplateFunc } from '../../molecules/table-header/table-header.component';\n\nexport type templateFunc = () => string;\nexport type amountSelectedTemplateFunc = (amount: number) => string;\n\n@Component({\n\ttag: 'p-table',\n\tstyleUrl: 'table.component.scss',\n})\nexport class Table {\n\t/**\n\t * The items to be fed to the table\n\t */\n\t@Prop() items: string;\n\n\t/**\n\t * Wether data is loading\n\t */\n\t@Prop() loading: boolean = false;\n\n\t/**\n\t * Wether the header should show loading state\n\t */\n\t@Prop() headerLoading: boolean = false;\n\n\t/**\n\t * Wether the footer should show loading state\n\t */\n\t@Prop() footerLoading: boolean = false;\n\n\t/**\n\t * The amount of loading rows to show\n\t */\n\t@Prop() amountOfLoadingRows: number = 6;\n\n\t/**\n\t * Wether to enable selection\n\t */\n\t@Prop() enableRowSelection: boolean = true;\n\n\t/**\n\t * Wether to enable row clicking\n\t */\n\t@Prop() enableRowClick: boolean = true;\n\n\t/**\n\t * The current selection of items\n\t */\n\t@Prop() selectedRows: any[] = [];\n\n\t/**\n\t * Wether to enable the floating menu\n\t */\n\t@Prop() enableFloatingMenu: boolean = true;\n\n\t/**\n\t * The template for amount selected item in the floating menu\n\t */\n\t@Prop() floatingMenuAmountSelectedTemplate: amountSelectedTemplateFunc = (\n\t\tamount: number\n\t) =>\n\t\tformatTranslation(\n\t\t\t(amount === 1\n\t\t\t\t? this._locales.floating_menu?.amount_selected\n\t\t\t\t: this._locales.floating_menu?.amount_selected_plural\n\t\t\t)?.replace('{{amount}}', amount)\n\t\t);\n\n\t/**\n\t * Event whenever the current selection changes\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\tselectedRowsChange: EventEmitter<any>;\n\n\t/**\n\t * The key to determine if a row is selected\n\t */\n\t@Prop() selectionKey: string;\n\n\t/**\n\t * A key to determine if a row can be selected\n\t */\n\t@Prop() canSelectKey: string;\n\n\t/**\n\t * Event whenever a row is clicked\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\trowClick: EventEmitter<RowClickEvent>;\n\n\t/**\n\t * Event whenever a row is selected\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\trowSelected: EventEmitter<any>;\n\n\t/**\n\t * Event whenever a row is deselected\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\trowDeselected: EventEmitter<any>;\n\n\t/**\n\t * Event when the table has rendered\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\thasRendered: EventEmitter<number>;\n\n\t/** START HEADER */\n\n\t/**\n\t * Wether to show the header\n\t */\n\t@Prop() enableHeader: boolean = true;\n\n\t/**\n\t * Quick filters to show\n\t */\n\t@Prop() quickFilters: QuickFilter[] = [];\n\n\t/**\n\t * Active quick filter identifier\n\t */\n\t@Prop() activeQuickFilterIdentifier: string;\n\n\t/**\n\t * Wether to show the search input\n\t */\n\t@Prop() enableSearch: boolean = true;\n\n\t/**\n\t * The query to show in the search bar\n\t */\n\t@Prop({ mutable: true }) query: string;\n\n\t/**\n\t * Wether to show the filter button\n\t */\n\t@Prop() enableFilter: boolean = true;\n\n\t/**\n\t * The amount of filters being selected\n\t */\n\t@Prop() selectedFiltersAmount: number;\n\n\t/**\n\t * The template for the filter button text\n\t */\n\t@Prop() filterButtonTemplate: templateFunc;\n\n\t/**\n\t * Wether to show the action button\n\t */\n\t@Prop() enableAction: boolean = false;\n\n\t/**\n\t * Wether the action button is loading\n\t */\n\t@Prop() actionButtonLoading: boolean = false;\n\n\t/**\n\t * Wether the action button is enabled\n\t */\n\t@Prop() actionButtonEnabled: boolean = false;\n\n\t/**\n\t * The action button icon\n\t */\n\t@Prop() actionButtonIcon: IconVariant = 'pencil';\n\n\t/**\n\t * The action button text if changed\n\t */\n\t@Prop() actionButtonText: string;\n\n\t/**\n\t * The template for the action button text\n\t */\n\t@Prop() actionButtonTemplate: buttonTemplateFunc;\n\n\t/**\n\t * Event when one of the quick filters is clicked\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\tquickFilter: EventEmitter<QuickFilter>;\n\n\t/**\n\t * Event when the query changes\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\tqueryChange: EventEmitter<string>;\n\n\t/**\n\t * Event when the filter button is clicked\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\tfilter: EventEmitter<null>;\n\n\t/**\n\t * Event when the action button is clicked\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\taction: EventEmitter<null>;\n\n\t/** START FOOTER */\n\n\t/**\n\t * Wether to show the header\n\t */\n\t@Prop() enableFooter: boolean = true;\n\n\t/**\n\t * Wether to enable page size select\n\t */\n\t@Prop() enablePageSize: boolean = true;\n\n\t/**\n\t * Wether to enable pagination\n\t */\n\t@Prop() enablePagination: boolean = true;\n\n\t/**\n\t * Wether to enable export\n\t */\n\t@Prop() enableExport: boolean = true;\n\n\t/**\n\t * The current page\n\t */\n\t@Prop({ mutable: true, reflect: true }) page: number = 1;\n\n\t/**\n\t * The total amount of items\n\t */\n\t@Prop() total!: number;\n\n\t/**\n\t * Event whenever the page changes\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\tpageChange: EventEmitter<number>;\n\n\t/**\n\t * The amount of items per page\n\t */\n\t@Prop() pageSize: number = defaultSize;\n\n\t/**\n\t * The options for the page size\n\t */\n\t@Prop() pageSizeOptions: number[] = defaultSizeOptions;\n\n\t/**\n\t * Event whenever the page changes\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\tpageSizeChange: EventEmitter<number>;\n\n\t/**\n\t * Event whenever the page changes\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\texport: EventEmitter<number>;\n\n\t/**\n\t * Wether to hide when there is only 1 page available\n\t */\n\t@Prop() hideOnSinglePage: boolean = true;\n\n\t/* Empty state start */\n\t@Prop() emptyStateHeader: templateFunc = () =>\n\t\tformatTranslation(this._locales.empty_state?.no_filter.header);\n\t@Prop() emptyStateContent: templateFunc = () =>\n\t\tformatTranslation(this._locales.empty_state?.no_filter.content);\n\t@Prop() emptyStateAction: templateFunc = () =>\n\t\tformatTranslation(this._locales.empty_state?.no_filter.action);\n\t/**\n\t * Wether to enable empty state action\n\t */\n\t@Prop() enableEmptyStateAction: boolean = true;\n\n\t@Prop() emptyStateFilteredHeader: templateFunc = () =>\n\t\tformatTranslation(this._locales.empty_state.filtered.header);\n\t@Prop() emptyStateFilteredContent: templateFunc = () =>\n\t\tformatTranslation(this._locales.empty_state.filtered.content);\n\n\t/**\n\t * Event whenever the empty state is clicked\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\temptyStateActionClick: EventEmitter<null>;\n\n\t/*\n\t * Wether to show the shadow or not\n\t */\n\t@Prop() shadow: boolean = true;\n\n\t/* Empty state end */\n\n\t/**\n\t * The host element\n\t */\n\t@Element() private _el: HTMLElement;\n\n\t/**\n\t * Locales used for this component\n\t */\n\t@State() private _locales: any = {};\n\n\t@State() private _columns: any[] = [];\n\t@State() private _items: any[] = [];\n\n\tprivate _ctrlDown = false;\n\tprivate _hasCustomFilterSlot = false;\n\tprivate _hasFloatingMenuItems = false;\n\tprivate _floatingMenuShown = false;\n\n\tcomponentWillLoad() {\n\t\tthis._hasCustomFilterSlot = !!this._el.querySelector(\n\t\t\t':scope > [slot=\"custom-filter\"]'\n\t\t);\n\t\tthis._hasFloatingMenuItems = !!this._el.querySelectorAll(\n\t\t\t':scope > [slot=\"floating-menu-item\"]'\n\t\t).length;\n\n\t\tthis._setLocales();\n\t\tthis._parseItems(this.items);\n\t\tthis._generateColumns();\n\t}\n\n\tcomponentDidRender() {\n\t\tthis.hasRendered.emit();\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host class=\"p-table\">\n\t\t\t\t<p-table-container shadow={this.shadow}>\n\t\t\t\t\t{this.enableHeader && (\n\t\t\t\t\t\t<p-table-header\n\t\t\t\t\t\t\t// quick filters\n\t\t\t\t\t\t\tquickFilters={this.quickFilters}\n\t\t\t\t\t\t\tactiveQuickFilterIdentifier={\n\t\t\t\t\t\t\t\tthis.activeQuickFilterIdentifier\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonQuickFilter={({ detail }) =>\n\t\t\t\t\t\t\t\tthis.quickFilter.emit(detail)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// search\n\t\t\t\t\t\t\tenableSearch={this.enableSearch}\n\t\t\t\t\t\t\tquery={this.query}\n\t\t\t\t\t\t\tonQueryChange={({ detail }) =>\n\t\t\t\t\t\t\t\tthis.queryChange.emit(detail)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// filter button\n\t\t\t\t\t\t\tenableFilter={this.enableFilter}\n\t\t\t\t\t\t\tselectedFiltersAmount={this.selectedFiltersAmount}\n\t\t\t\t\t\t\tfilterButtonTemplate={this.filterButtonTemplate}\n\t\t\t\t\t\t\tonFilter={() => this.filter.emit()}\n\t\t\t\t\t\t\t// action button\n\t\t\t\t\t\t\tenableAction={this.enableAction}\n\t\t\t\t\t\t\tactionIcon={this.actionButtonIcon}\n\t\t\t\t\t\t\tactionText={this.actionButtonText}\n\t\t\t\t\t\t\tactionLoading={this.actionButtonLoading}\n\t\t\t\t\t\t\tcanUseAction={this.actionButtonEnabled}\n\t\t\t\t\t\t\tactionButtonTemplate={this.actionButtonTemplate}\n\t\t\t\t\t\t\tonAction={() => this.action.emit()}\n\t\t\t\t\t\t\titemsSelectedAmount={this.selectedRows?.length}\n\t\t\t\t\t\t\t//loading\n\t\t\t\t\t\t\tloading={this.headerLoading}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{this._hasCustomFilterSlot && (\n\t\t\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\t\t\tname=\"custom-filter\"\n\t\t\t\t\t\t\t\t\tslot=\"custom-filter\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</p-table-header>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{this._getHeader()}\n\t\t\t\t\t<div class=\"flex flex-col flex-1\">{this._getRows()}</div>\n\n\t\t\t\t\t{this.enableFooter && (\n\t\t\t\t\t\t<p-table-footer\n\t\t\t\t\t\t\t// overall\n\t\t\t\t\t\t\thideOnSinglePage={this.hideOnSinglePage}\n\t\t\t\t\t\t\t// page size select\n\t\t\t\t\t\t\tenablePageSize={this.enablePageSize}\n\t\t\t\t\t\t\tpageSize={this.pageSize}\n\t\t\t\t\t\t\tpageSizeOptions={this.pageSizeOptions}\n\t\t\t\t\t\t\tonPageSizeChange={({ detail }) =>\n\t\t\t\t\t\t\t\tthis.pageSizeChange.emit(detail)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// pagination\n\t\t\t\t\t\t\tenablePagination={this.enablePagination}\n\t\t\t\t\t\t\tpage={this.page}\n\t\t\t\t\t\t\ttotal={this.total}\n\t\t\t\t\t\t\tonPageChange={({ detail }) =>\n\t\t\t\t\t\t\t\tthis.pageChange.emit(detail)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// export\n\t\t\t\t\t\t\tenableExport={this.enableExport}\n\t\t\t\t\t\t\tonExport={() => this.export.emit()}\n\t\t\t\t\t\t\t//loading\n\t\t\t\t\t\t\tloading={this.footerLoading}\n\t\t\t\t\t\t></p-table-footer>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{this.enableFloatingMenu && this.enableRowSelection ? (\n\t\t\t\t\t\t<p-floating-menu-container\n\t\t\t\t\t\t\tusedInTable={true}\n\t\t\t\t\t\t\tclass={`${\n\t\t\t\t\t\t\t\tthis.selectedRows?.length ? '' : 'inactive'\n\t\t\t\t\t\t\t} ${this._floatingMenuShown ? 'shown' : ''}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<p-floating-menu-item\n\t\t\t\t\t\t\t\thover={false}\n\t\t\t\t\t\t\t\tslot=\"floating-menu-item\"\n\t\t\t\t\t\t\t\tclass={\n\t\t\t\t\t\t\t\t\tthis._hasFloatingMenuItems\n\t\t\t\t\t\t\t\t\t\t? 'hide-mobile'\n\t\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\t{this.floatingMenuAmountSelectedTemplate(\n\t\t\t\t\t\t\t\t\tthis.selectedRows?.length\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</p-floating-menu-item>\n\t\t\t\t\t\t\t<p-divider\n\t\t\t\t\t\t\t\tclass={`mx-0 text-storm ${\n\t\t\t\t\t\t\t\t\tthis._hasFloatingMenuItems\n\t\t\t\t\t\t\t\t\t\t? 'hide-mobile'\n\t\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\tvariant=\"vertical\"\n\t\t\t\t\t\t\t\tslot=\"floating-menu-item\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{this._hasFloatingMenuItems && (\n\t\t\t\t\t\t\t\t<slot name=\"floating-menu-item\"></slot>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{this._hasFloatingMenuItems && (\n\t\t\t\t\t\t\t\t<p-divider\n\t\t\t\t\t\t\t\t\tclass=\"mx-0 text-storm\"\n\t\t\t\t\t\t\t\t\tvariant=\"vertical\"\n\t\t\t\t\t\t\t\t\tslot=\"floating-menu-item\"\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<p-floating-menu-item\n\t\t\t\t\t\t\t\tslot=\"floating-menu-item\"\n\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\tthis._selectAllChange(null, false)\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\t<p-icon variant=\"negative\" />\n\t\t\t\t\t\t\t</p-floating-menu-item>\n\t\t\t\t\t\t</p-floating-menu-container>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t''\n\t\t\t\t\t)}\n\t\t\t\t</p-table-container>\n\t\t\t</Host>\n\t\t);\n\t}\n\n\t@Listen('localeChanged', { target: 'body' })\n\tprivate async _setLocales(): Promise<void> {\n\t\tthis._locales = await getLocaleComponentStrings(this._el);\n\t}\n\n\t@Listen('tableDefinitionChanged', { target: 'body' })\n\tonTableDefinitionUpdated() {\n\t\tthis._generateColumns();\n\t}\n\n\t@Listen('keydown', { target: 'document' })\n\tkeyDown({ key }) {\n\t\tif (key !== 'Control' || this._ctrlDown === true) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._ctrlDown = true;\n\t}\n\n\t@Listen('keyup', { target: 'document' })\n\tkeyUp({ key }) {\n\t\tif (key !== 'Control' || this._ctrlDown === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._ctrlDown = false;\n\t}\n\n\t@Listen('visibilitychange', { target: 'document' })\n\tvisibilityChange() {\n\t\tif (document.visibilityState !== 'hidden' || this._ctrlDown === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._ctrlDown = false;\n\t}\n\n\t@Watch('items')\n\tprivate _parseItems(items: string) {\n\t\tif (!items) {\n\t\t\tthis._items = [];\n\t\t\treturn;\n\t\t}\n\n\t\tif (Array.isArray(items)) {\n\t\t\tthis._items = items;\n\t\t\treturn;\n\t\t}\n\n\t\tthis._items = JSON.parse(items);\n\t}\n\n\tprivate _generateColumns() {\n\t\tconst definitions = this._el.querySelectorAll('p-table-column');\n\t\tconst definitionsArray = Array.from(definitions);\n\n\t\tdefinitionsArray[definitionsArray.length - 1]['isLast'] = true;\n\n\t\tthis._columns = definitionsArray;\n\t}\n\n\tprivate _getHeader() {\n\t\treturn (\n\t\t\t<p-table-row variant=\"header\">\n\t\t\t\t{this._columns.map((col: TableColumn, index) => (\n\t\t\t\t\t<p-table-cell\n\t\t\t\t\t\tdefinition={col}\n\t\t\t\t\t\tvalue={col.name}\n\t\t\t\t\t\tvariant=\"header\"\n\t\t\t\t\t\tcheckbox={\n\t\t\t\t\t\t\tindex === 0 || col.hasCheckbox\n\t\t\t\t\t\t\t\t? this._getCheckbox(\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tthis.loading ? 'loading' : 'header'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t}\n\t\t\t\t\t\tindex={index}\n\t\t\t\t\t></p-table-cell>\n\t\t\t\t))}\n\t\t\t</p-table-row>\n\t\t);\n\t}\n\n\tprivate _getRows() {\n\t\tif (this.loading) {\n\t\t\treturn Array.from(\n\t\t\t\t{\n\t\t\t\t\tlength: this.amountOfLoadingRows,\n\t\t\t\t},\n\t\t\t\t(_, i) => (\n\t\t\t\t\t<p-table-row\n\t\t\t\t\t\tenableHover={\n\t\t\t\t\t\t\tthis.enableRowSelection || this.enableRowClick\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{this._getLoadingColumns(i)}\n\t\t\t\t\t</p-table-row>\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tif (!this._items.length) {\n\t\t\treturn this._getEmptyState();\n\t\t}\n\n\t\treturn this._items.map((item, index) => (\n\t\t\t<p-table-row\n\t\t\t\tenableHover={this.enableRowSelection || this.enableRowClick}\n\t\t\t\tonClick={(ev) => this._rowClick(ev, index)}\n\t\t\t>\n\t\t\t\t{this._getRowColumns(item, index)}\n\t\t\t</p-table-row>\n\t\t));\n\t}\n\n\tprivate _getRowColumns(item, index) {\n\t\treturn this._columns.map((col: TableColumn, colIndex) => {\n\t\t\treturn (\n\t\t\t\t<p-table-cell\n\t\t\t\t\tdefinition={col}\n\t\t\t\t\titem={item}\n\t\t\t\t\tcheckbox={\n\t\t\t\t\t\tcolIndex === 0 || col.hasCheckbox\n\t\t\t\t\t\t\t? this._getCheckbox(index)\n\t\t\t\t\t\t\t: null\n\t\t\t\t\t}\n\t\t\t\t\tindex={colIndex}\n\t\t\t\t\trowIndex={index}\n\t\t\t\t></p-table-cell>\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate _getLoadingColumns(index) {\n\t\treturn this._columns.map((col: TableColumn, colIndex) => {\n\t\t\treturn (\n\t\t\t\t<p-table-cell\n\t\t\t\t\tdefinition={col}\n\t\t\t\t\tvariant=\"loading\"\n\t\t\t\t\tcheckbox={\n\t\t\t\t\t\tcolIndex === 0 || col.hasCheckbox\n\t\t\t\t\t\t\t? this._getCheckbox(index, 'loading')\n\t\t\t\t\t\t\t: null\n\t\t\t\t\t}\n\t\t\t\t\tindex={colIndex}\n\t\t\t\t\trowIndex={index}\n\t\t\t\t></p-table-cell>\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate _getCheckbox(\n\t\trowIndex,\n\t\tvariant: 'header' | 'default' | 'loading' = 'default'\n\t) {\n\t\tif (!this.enableRowSelection || !this.selectionKey) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (variant === 'loading') {\n\t\t\treturn <p-loader variant=\"ghost\" class=\"h-6 w-6 rounded\" />;\n\t\t}\n\n\t\tif (variant === 'header') {\n\t\t\treturn (\n\t\t\t\t<input\n\t\t\t\t\tclass=\"p-input\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tonChange={(ev) => this._selectAllChange(ev)}\n\t\t\t\t\tchecked={this._selectionContainsAll()}\n\t\t\t\t\tindeterminate={this._selectionIndeterminate()}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tconst item = this._items[rowIndex];\n\n\t\treturn (\n\t\t\t<input\n\t\t\t\tclass=\"p-input\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tonChange={(ev) => this._checkboxChange(ev?.target, rowIndex)}\n\t\t\t\tdisabled={this.canSelectKey && !item[this.canSelectKey]}\n\t\t\t\tchecked={this._selectionContains(item, rowIndex)}\n\t\t\t/>\n\t\t);\n\t}\n\n\tprivate _getEmptyState() {\n\t\tif (this.query?.length || this.selectedFiltersAmount) {\n\t\t\treturn (\n\t\t\t\t<div class=\"flex max-w-[20rem] flex-col items-center self-center py-24 text-center\">\n\t\t\t\t\t<p-illustration variant=\"empty-state-search\" class=\"mb-6\" />\n\t\t\t\t\t<p class=\"text-storm-default font-semibold\">\n\t\t\t\t\t\t{this.emptyStateFilteredHeader()}\n\t\t\t\t\t</p>\n\t\t\t\t\t<p class=\"mb-14 text-sm text-storm-medium\">\n\t\t\t\t\t\t{this.emptyStateFilteredContent()}\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclass={`flex max-w-[20rem] flex-col items-center self-center py-24 text-center ${\n\t\t\t\t\tthis.enableEmptyStateAction && 'cursor-pointer'\n\t\t\t\t}`}\n\t\t\t\tonClick={() =>\n\t\t\t\t\tthis.enableEmptyStateAction &&\n\t\t\t\t\tthis.emptyStateActionClick.emit(null)\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<p-illustration variant=\"empty-state-add\" class=\"mb-6\" />\n\t\t\t\t<p class=\"text-storm-default font-semibold\">\n\t\t\t\t\t{this.emptyStateHeader()}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"mb-6 text-sm text-storm-medium\">\n\t\t\t\t\t{this.emptyStateContent()}\n\t\t\t\t</p>\n\t\t\t\t{this.enableEmptyStateAction && (\n\t\t\t\t\t<p-button variant=\"secondary\" icon=\"plus\" size=\"small\">\n\t\t\t\t\t\t{this.emptyStateAction()}\n\t\t\t\t\t</p-button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n\n\tprivate _selectAllChange($event: any, forceValue?: boolean) {\n\t\tif (!this.enableRowSelection) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst value =\n\t\t\tforceValue === undefined\n\t\t\t\t? this._getCheckedValue($event.target)\n\t\t\t\t: forceValue;\n\t\tif (value) {\n\t\t\tconst toAdd = [];\n\t\t\tfor (let i = 0; i < this._items.length; i++) {\n\t\t\t\tconst row = this._items[i];\n\t\t\t\tif (this.canSelectKey && !row[this.canSelectKey]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (this._selectionContains(row, i)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\ttoAdd.push(row);\n\t\t\t\tthis.rowSelected.emit(row);\n\t\t\t}\n\n\t\t\tthis.selectedRows = [...this.selectedRows, ...toAdd];\n\t\t\tthis.selectedRowsChange.emit(this.selectedRows);\n\t\t\tif (this.enableFloatingMenu && !this._floatingMenuShown) {\n\t\t\t\tthis._floatingMenuShown = true;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < this.selectedRows.length; i++) {\n\t\t\tconst value = this.selectedRows[i];\n\t\t\tconst row = this._items.find(\n\t\t\t\t(d) =>\n\t\t\t\t\tthis._getSelectionValue(d, i) ===\n\t\t\t\t\tthis._getSelectionValue(value, i)\n\t\t\t);\n\n\t\t\tif (!row) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthis.rowDeselected.emit(row);\n\t\t}\n\n\t\tthis.selectedRows = [];\n\t\tthis.selectedRowsChange.emit(this.selectedRows);\n\t}\n\n\tprivate _checkboxChange(target: any, index: number) {\n\t\tif (!this.enableRowSelection) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst row = this._items[index];\n\n\t\tif (this.canSelectKey && !row[this.canSelectKey]) {\n\t\t\ttarget.checked = false;\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = this._getCheckedValue(target);\n\t\tif (value) {\n\t\t\tthis.selectedRows = [...this.selectedRows, row];\n\t\t\tthis.selectedRowsChange.emit(this.selectedRows);\n\t\t\tthis.rowSelected.emit(row);\n\n\t\t\tif (this.enableFloatingMenu && !this._floatingMenuShown) {\n\t\t\t\tthis._floatingMenuShown = true;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst indexOfToRemove = this._selectionContains(row, index, true);\n\n\t\t// we need to do this, because splice does not trigger the selection setter.\n\t\tconst selection = [...this.selectedRows];\n\t\tselection.splice(indexOfToRemove, 1);\n\t\tthis.selectedRows = selection;\n\t\tthis.selectedRowsChange.emit(this.selectedRows);\n\t\tthis.rowDeselected.emit(row);\n\t}\n\n\tprivate _getCheckedValue(target: any) {\n\t\treturn target?.checked;\n\t}\n\n\tprivate _getSelectionValue(row: any, index: number) {\n\t\treturn this.selectionKey ? row?.[this.selectionKey] || index : index;\n\t}\n\n\tprivate _selectionContains(row, index, returnIndex = false): any {\n\t\tconst returnValue = this.selectedRows.findIndex(\n\t\t\t(item) =>\n\t\t\t\tthis._getSelectionValue(row, index) ===\n\t\t\t\tthis._getSelectionValue(item, index)\n\t\t);\n\t\treturn !returnIndex ? returnValue >= 0 : returnValue;\n\t}\n\n\tprivate _selectionContainsAll() {\n\t\tlet returnValue = true;\n\t\tif (!this._items?.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (let i = 0; i < this._items?.length; i++) {\n\t\t\tconst item = this._items[i];\n\t\t\tconst contains = this._selectionContains(item, i);\n\n\t\t\tif (!contains) {\n\t\t\t\treturnValue = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn returnValue;\n\t}\n\n\tprivate _selectionIndeterminate() {\n\t\tif (!this._items?.length || !this.selectedRows?.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet containsCount = 0;\n\t\tfor (let i = 0; i < this._items?.length; i++) {\n\t\t\tconst item = this._items[i];\n\t\t\tconst contains = this._selectionContains(item, i);\n\n\t\t\tif (contains) {\n\t\t\t\tcontainsCount++;\n\t\t\t}\n\t\t}\n\n\t\treturn containsCount > 0 && containsCount !== this._items.length;\n\t}\n\n\tprivate _rowClick($event, index) {\n\t\tconst target = $event.target;\n\n\t\tif (\n\t\t\ttarget.tagName.toLowerCase() === 'input' ||\n\t\t\ttarget.type === 'checkbox'\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst row = this._findRow($event.target);\n\t\tconst action = this._findRowAction($event.target);\n\n\t\tif (action) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.enableRowClick) {\n\t\t\tconst item = this._items[index];\n\t\t\tthis.rowClick.emit({\n\t\t\t\titem,\n\t\t\t\tctrlDown: this._ctrlDown,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.enableRowSelection) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst checkbox = row?.querySelector('input[type=\"checkbox\"]');\n\n\t\tif (!checkbox) {\n\t\t\treturn;\n\t\t}\n\n\t\tcheckbox.checked = !checkbox.checked;\n\t\tthis._checkboxChange(checkbox, index);\n\t}\n\n\tprivate _findRow(el: HTMLElement) {\n\t\tif (!el) {\n\t\t\treturn el;\n\t\t}\n\n\t\tif (el?.tagName?.toLowerCase() === 'p-table-row') {\n\t\t\treturn el;\n\t\t}\n\n\t\treturn this._findRow(el?.parentElement);\n\t}\n\n\tprivate _findRowAction(el: HTMLElement) {\n\t\tif (!el) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (\n\t\t\tel.getAttribute('data-is-action') !== null &&\n\t\t\tel.getAttribute('data-is-action') !== 'false'\n\t\t) {\n\t\t\treturn el;\n\t\t}\n\n\t\tif (el?.tagName?.toLowerCase() === 'p-table-row') {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this._findRowAction(el?.parentElement);\n\t}\n}\n"],"mappings":"sJAAA,MAAMA,EAAoB,gtG,MC6BbC,EAAK,M,ojBAyUTC,KAAAC,UAAY,MACZD,KAAAE,qBAAuB,MACvBF,KAAAG,sBAAwB,MACxBH,KAAAI,mBAAqB,M,kCAnUF,M,mBAKM,M,mBAKA,M,yBAKK,E,wBAKA,K,oBAKJ,K,kBAKJ,G,wBAKQ,K,wCAMrCC,I,UAEA,OAAAC,GACCC,EAACF,IAAW,GACTG,EAAAR,KAAKS,SAASC,iBAAa,MAAAF,SAAA,SAAAA,EAAEG,iBAC7BC,EAAAZ,KAAKS,SAASC,iBAAa,MAAAE,SAAA,SAAAA,EAAEC,0BAC/B,MAAAN,SAAA,SAAAA,EAAEO,QAAQ,aAAcT,GACzB,E,0EAyD8B,K,kBAKM,G,6DAUN,K,uCAUA,K,2FAeA,M,yBAKO,M,yBAKA,M,sBAKC,S,sFAiDR,K,oBAKE,K,sBAKE,K,kBAKJ,K,UAKuB,E,mCAkB5BU,E,qBAKSC,E,sBAqBA,K,sBAGK,SAAAR,EACxC,OAAAF,GAAkBE,EAAAR,KAAKS,SAASQ,eAAW,MAAAT,SAAA,SAAAA,EAAEU,UAAUC,OAAO,E,uBACrB,SAAAX,EACzC,OAAAF,GAAkBE,EAAAR,KAAKS,SAASQ,eAAW,MAAAT,SAAA,SAAAA,EAAEU,UAAUE,QAAQ,E,sBACvB,SAAAZ,EACxC,OAAAF,GAAkBE,EAAAR,KAAKS,SAASQ,eAAW,MAAAT,SAAA,SAAAA,EAAEU,UAAUG,OAAO,E,4BAIrB,K,8BAEO,IAChDf,EAAkBN,KAAKS,SAASQ,YAAYK,SAASH,Q,+BACJ,IACjDb,EAAkBN,KAAKS,SAASQ,YAAYK,SAASF,S,YAa5B,K,cAYO,G,cAEE,G,YACF,E,CAOjC,iBAAAG,GACCvB,KAAKE,uBAAyBF,KAAKwB,IAAIC,cACtC,mCAEDzB,KAAKG,wBAA0BH,KAAKwB,IAAIE,iBACvC,wCACCC,OAEF3B,KAAK4B,cACL5B,KAAK6B,YAAY7B,KAAK8B,OACtB9B,KAAK+B,kB,CAGN,kBAAAC,GACChC,KAAKiC,YAAYC,M,CAGlB,MAAAC,G,UACC,OACCC,EAACC,EAAI,CAACC,MAAM,WACXF,EAAA,qBAAmBG,OAAQvC,KAAKuC,QAC9BvC,KAAKwC,cACLJ,EAAA,kBAECK,aAAczC,KAAKyC,aACnBC,4BACC1C,KAAK0C,4BAENC,cAAe,EAAGC,YACjB5C,KAAK6C,YAAYX,KAAKU,GAGvBE,aAAc9C,KAAK8C,aACnBC,MAAO/C,KAAK+C,MACZC,cAAe,EAAGJ,YACjB5C,KAAKiD,YAAYf,KAAKU,GAGvBM,aAAclD,KAAKkD,aACnBC,sBAAuBnD,KAAKmD,sBAC5BC,qBAAsBpD,KAAKoD,qBAC3BC,SAAU,IAAMrD,KAAKsD,OAAOpB,OAE5BqB,aAAcvD,KAAKuD,aACnBC,WAAYxD,KAAKyD,iBACjBC,WAAY1D,KAAK2D,iBACjBC,cAAe5D,KAAK6D,oBACpBC,aAAc9D,KAAK+D,oBACnBC,qBAAsBhE,KAAKgE,qBAC3BC,SAAU,IAAMjE,KAAKqB,OAAOa,OAC5BgC,qBAAqB1D,EAAAR,KAAKmE,gBAAY,MAAA3D,SAAA,SAAAA,EAAEmB,OAExCyC,QAASpE,KAAKqE,eAEbrE,KAAKE,sBACLkC,EAAA,QACCkC,KAAK,gBACLC,KAAK,mBAMRvE,KAAKwE,aACNpC,EAAA,OAAKE,MAAM,wBAAwBtC,KAAKyE,YAEvCzE,KAAK0E,cACLtC,EAAA,kBAECuC,iBAAkB3E,KAAK2E,iBAEvBC,eAAgB5E,KAAK4E,eACrBC,SAAU7E,KAAK6E,SACfC,gBAAiB9E,KAAK8E,gBACtBC,iBAAkB,EAAGnC,YACpB5C,KAAKgF,eAAe9C,KAAKU,GAG1BqC,iBAAkBjF,KAAKiF,iBACvBC,KAAMlF,KAAKkF,KACXC,MAAOnF,KAAKmF,MACZC,aAAc,EAAGxC,YAChB5C,KAAKqF,WAAWnD,KAAKU,GAGtB0C,aAActF,KAAKsF,aACnBC,SAAU,IAAMvF,KAAKwF,OAAOtD,OAE5BkC,QAASpE,KAAKyF,gBAIfzF,KAAK0F,oBAAsB1F,KAAK2F,mBAChCvD,EAAA,6BACCwD,YAAa,KACbtD,MAAO,KACN1B,EAAAZ,KAAKmE,gBAAY,MAAAvD,SAAA,SAAAA,EAAEe,QAAS,GAAK,cAC9B3B,KAAKI,mBAAqB,QAAU,MAExCgC,EAAA,wBACCyD,MAAO,MACPtB,KAAK,qBACLjC,MACCtC,KAAKG,sBACF,cACA,IAGHH,KAAK8F,oCACLvF,EAAAP,KAAKmE,gBAAY,MAAA5D,SAAA,SAAAA,EAAEoB,SAGrBS,EAAA,aACCE,MAAO,mBACNtC,KAAKG,sBACF,cACA,KAEJ4F,QAAQ,WACRxB,KAAK,uBAELvE,KAAKG,uBACLiC,EAAA,QAAMkC,KAAK,uBAEXtE,KAAKG,uBACLiC,EAAA,aACCE,MAAM,kBACNyD,QAAQ,WACRxB,KAAK,uBAGPnC,EAAA,wBACCmC,KAAK,qBACLyB,QAAS,IACRhG,KAAKiG,iBAAiB,KAAM,QAG7B7D,EAAA,UAAQ2D,QAAQ,eAEU,I,CAUzB,iBAAMnE,GACb5B,KAAKS,eAAiByF,EAA0BlG,KAAKwB,I,CAItD,wBAAA2E,GACCnG,KAAK+B,kB,CAIN,OAAAqE,EAAQC,IAAEA,IACT,GAAIA,IAAQ,WAAarG,KAAKC,YAAc,KAAM,CACjD,M,CAGDD,KAAKC,UAAY,I,CAIlB,KAAAqG,EAAMD,IAAEA,IACP,GAAIA,IAAQ,WAAarG,KAAKC,YAAc,MAAO,CAClD,M,CAGDD,KAAKC,UAAY,K,CAIlB,gBAAAsG,GACC,GAAIC,SAASC,kBAAoB,UAAYzG,KAAKC,YAAc,MAAO,CACtE,M,CAGDD,KAAKC,UAAY,K,CAIV,WAAA4B,CAAYC,GACnB,IAAKA,EAAO,CACX9B,KAAK0G,OAAS,GACd,M,CAGD,GAAIC,MAAMC,QAAQ9E,GAAQ,CACzB9B,KAAK0G,OAAS5E,EACd,M,CAGD9B,KAAK0G,OAASG,KAAKC,MAAMhF,E,CAGlB,gBAAAC,GACP,MAAMgF,EAAc/G,KAAKwB,IAAIE,iBAAiB,kBAC9C,MAAMsF,EAAmBL,MAAMM,KAAKF,GAEpCC,EAAiBA,EAAiBrF,OAAS,GAAG,UAAY,KAE1D3B,KAAKkH,SAAWF,C,CAGT,UAAAxC,GACP,OACCpC,EAAA,eAAa2D,QAAQ,UACnB/F,KAAKkH,SAASC,KAAI,CAACC,EAAkBC,IACrCjF,EAAA,gBACCkF,WAAYF,EACZG,MAAOH,EAAI9C,KACXyB,QAAQ,SACRyB,SACCH,IAAU,GAAKD,EAAIK,YAChBzH,KAAK0H,aACL,KACA1H,KAAKoE,QAAU,UAAY,UAE3B,KAEJiD,MAAOA,M,CAOJ,QAAA5C,GACP,GAAIzE,KAAKoE,QAAS,CACjB,OAAOuC,MAAMM,KACZ,CACCtF,OAAQ3B,KAAK2H,sBAEd,CAACC,EAAGC,IACHzF,EAAA,eACC0F,YACC9H,KAAK2F,oBAAsB3F,KAAK+H,gBAGhC/H,KAAKgI,mBAAmBH,K,CAM7B,IAAK7H,KAAK0G,OAAO/E,OAAQ,CACxB,OAAO3B,KAAKiI,gB,CAGb,OAAOjI,KAAK0G,OAAOS,KAAI,CAACe,EAAMb,IAC7BjF,EAAA,eACC0F,YAAa9H,KAAK2F,oBAAsB3F,KAAK+H,eAC7C/B,QAAUmC,GAAOnI,KAAKoI,UAAUD,EAAId,IAEnCrH,KAAKqI,eAAeH,EAAMb,K,CAKtB,cAAAgB,CAAeH,EAAMb,GAC5B,OAAOrH,KAAKkH,SAASC,KAAI,CAACC,EAAkBkB,IAE1ClG,EAAA,gBACCkF,WAAYF,EACZc,KAAMA,EACNV,SACCc,IAAa,GAAKlB,EAAIK,YACnBzH,KAAK0H,aAAaL,GAClB,KAEJA,MAAOiB,EACPC,SAAUlB,K,CAMN,kBAAAW,CAAmBX,GAC1B,OAAOrH,KAAKkH,SAASC,KAAI,CAACC,EAAkBkB,IAE1ClG,EAAA,gBACCkF,WAAYF,EACZrB,QAAQ,UACRyB,SACCc,IAAa,GAAKlB,EAAIK,YACnBzH,KAAK0H,aAAaL,EAAO,WACzB,KAEJA,MAAOiB,EACPC,SAAUlB,K,CAMN,YAAAK,CACPa,EACAxC,EAA4C,WAE5C,IAAK/F,KAAK2F,qBAAuB3F,KAAKwI,aAAc,CACnD,M,CAGD,GAAIzC,IAAY,UAAW,CAC1B,OAAO3D,EAAA,YAAU2D,QAAQ,QAAQzD,MAAM,mB,CAGxC,GAAIyD,IAAY,SAAU,CACzB,OACC3D,EAAA,SACCE,MAAM,UACNmG,KAAK,WACLC,SAAWP,GAAOnI,KAAKiG,iBAAiBkC,GACxCQ,QAAS3I,KAAK4I,wBACdC,cAAe7I,KAAK8I,2B,CAKvB,MAAMZ,EAAOlI,KAAK0G,OAAO6B,GAEzB,OACCnG,EAAA,SACCE,MAAM,UACNmG,KAAK,WACLC,SAAWP,GAAOnI,KAAK+I,gBAAgBZ,IAAE,MAAFA,SAAE,SAAFA,EAAIa,OAAQT,GACnDU,SAAUjJ,KAAKkJ,eAAiBhB,EAAKlI,KAAKkJ,cAC1CP,QAAS3I,KAAKmJ,mBAAmBjB,EAAMK,I,CAKlC,cAAAN,G,MACP,KAAIzH,EAAAR,KAAK+C,SAAK,MAAAvC,SAAA,SAAAA,EAAEmB,SAAU3B,KAAKmD,sBAAuB,CACrD,OACCf,EAAA,OAAKE,MAAM,0EACVF,EAAA,kBAAgB2D,QAAQ,qBAAqBzD,MAAM,SACnDF,EAAA,KAAGE,MAAM,oCACPtC,KAAKoJ,4BAEPhH,EAAA,KAAGE,MAAM,mCACPtC,KAAKqJ,6B,CAMV,OACCjH,EAAA,OACCE,MAAO,0EACNtC,KAAKsJ,wBAA0B,mBAEhCtD,QAAS,IACRhG,KAAKsJ,wBACLtJ,KAAKuJ,sBAAsBrH,KAAK,OAGjCE,EAAA,kBAAgB2D,QAAQ,kBAAkBzD,MAAM,SAChDF,EAAA,KAAGE,MAAM,oCACPtC,KAAKwJ,oBAEPpH,EAAA,KAAGE,MAAM,kCACPtC,KAAKyJ,qBAENzJ,KAAKsJ,wBACLlH,EAAA,YAAU2D,QAAQ,YAAY2D,KAAK,OAAOC,KAAK,SAC7C3J,KAAK4J,oB,CAOH,gBAAA3D,CAAiB4D,EAAaC,GACrC,IAAK9J,KAAK2F,mBAAoB,CAC7B,M,CAGD,MAAM4B,EACLuC,IAAeC,UACZ/J,KAAKgK,iBAAiBH,EAAOb,QAC7Bc,EACJ,GAAIvC,EAAO,CACV,MAAM0C,EAAQ,GACd,IAAK,IAAIpC,EAAI,EAAGA,EAAI7H,KAAK0G,OAAO/E,OAAQkG,IAAK,CAC5C,MAAMqC,EAAMlK,KAAK0G,OAAOmB,GACxB,GAAI7H,KAAKkJ,eAAiBgB,EAAIlK,KAAKkJ,cAAe,CACjD,Q,CAGD,GAAIlJ,KAAKmJ,mBAAmBe,EAAKrC,GAAI,CACpC,Q,CAGDoC,EAAME,KAAKD,GACXlK,KAAKoK,YAAYlI,KAAKgI,E,CAGvBlK,KAAKmE,aAAe,IAAInE,KAAKmE,gBAAiB8F,GAC9CjK,KAAKqK,mBAAmBnI,KAAKlC,KAAKmE,cAClC,GAAInE,KAAK0F,qBAAuB1F,KAAKI,mBAAoB,CACxDJ,KAAKI,mBAAqB,I,CAG3B,M,CAGD,IAAK,IAAIyH,EAAI,EAAGA,EAAI7H,KAAKmE,aAAaxC,OAAQkG,IAAK,CAClD,MAAMN,EAAQvH,KAAKmE,aAAa0D,GAChC,MAAMqC,EAAMlK,KAAK0G,OAAO4D,MACtBC,GACAvK,KAAKwK,mBAAmBD,EAAG1C,KAC3B7H,KAAKwK,mBAAmBjD,EAAOM,KAGjC,IAAKqC,EAAK,CACT,Q,CAGDlK,KAAKyK,cAAcvI,KAAKgI,E,CAGzBlK,KAAKmE,aAAe,GACpBnE,KAAKqK,mBAAmBnI,KAAKlC,KAAKmE,a,CAG3B,eAAA4E,CAAgBC,EAAa3B,GACpC,IAAKrH,KAAK2F,mBAAoB,CAC7B,M,CAGD,MAAMuE,EAAMlK,KAAK0G,OAAOW,GAExB,GAAIrH,KAAKkJ,eAAiBgB,EAAIlK,KAAKkJ,cAAe,CACjDF,EAAOL,QAAU,MACjB,M,CAGD,MAAMpB,EAAQvH,KAAKgK,iBAAiBhB,GACpC,GAAIzB,EAAO,CACVvH,KAAKmE,aAAe,IAAInE,KAAKmE,aAAc+F,GAC3ClK,KAAKqK,mBAAmBnI,KAAKlC,KAAKmE,cAClCnE,KAAKoK,YAAYlI,KAAKgI,GAEtB,GAAIlK,KAAK0F,qBAAuB1F,KAAKI,mBAAoB,CACxDJ,KAAKI,mBAAqB,I,CAG3B,M,CAGD,MAAMsK,EAAkB1K,KAAKmJ,mBAAmBe,EAAK7C,EAAO,MAG5D,MAAMsD,EAAY,IAAI3K,KAAKmE,cAC3BwG,EAAUC,OAAOF,EAAiB,GAClC1K,KAAKmE,aAAewG,EACpB3K,KAAKqK,mBAAmBnI,KAAKlC,KAAKmE,cAClCnE,KAAKyK,cAAcvI,KAAKgI,E,CAGjB,gBAAAF,CAAiBhB,GACxB,OAAOA,IAAM,MAANA,SAAM,SAANA,EAAQL,O,CAGR,kBAAA6B,CAAmBN,EAAU7C,GACpC,OAAOrH,KAAKwI,cAAe0B,IAAG,MAAHA,SAAG,SAAHA,EAAMlK,KAAKwI,gBAAiBnB,EAAQA,C,CAGxD,kBAAA8B,CAAmBe,EAAK7C,EAAOwD,EAAc,OACpD,MAAMC,EAAc9K,KAAKmE,aAAa4G,WACpC7C,GACAlI,KAAKwK,mBAAmBN,EAAK7C,KAC7BrH,KAAKwK,mBAAmBtC,EAAMb,KAEhC,OAAQwD,EAAcC,GAAe,EAAIA,C,CAGlC,qBAAAlC,G,QACP,IAAIkC,EAAc,KAClB,MAAKtK,EAAAR,KAAK0G,UAAM,MAAAlG,SAAA,SAAAA,EAAEmB,QAAQ,CACzB,OAAO,K,CAGR,IAAK,IAAIkG,EAAI,EAAGA,IAAIjH,EAAAZ,KAAK0G,UAAM,MAAA9F,SAAA,SAAAA,EAAEe,QAAQkG,IAAK,CAC7C,MAAMK,EAAOlI,KAAK0G,OAAOmB,GACzB,MAAMmD,EAAWhL,KAAKmJ,mBAAmBjB,EAAML,GAE/C,IAAKmD,EAAU,CACdF,EAAc,MACd,K,EAIF,OAAOA,C,CAGA,uBAAAhC,G,UACP,MAAKtI,EAAAR,KAAK0G,UAAM,MAAAlG,SAAA,SAAAA,EAAEmB,YAAWf,EAAAZ,KAAKmE,gBAAY,MAAAvD,SAAA,SAAAA,EAAEe,QAAQ,CACvD,OAAO,K,CAGR,IAAIsJ,EAAgB,EACpB,IAAK,IAAIpD,EAAI,EAAGA,IAAItH,EAAAP,KAAK0G,UAAM,MAAAnG,SAAA,SAAAA,EAAEoB,QAAQkG,IAAK,CAC7C,MAAMK,EAAOlI,KAAK0G,OAAOmB,GACzB,MAAMmD,EAAWhL,KAAKmJ,mBAAmBjB,EAAML,GAE/C,GAAImD,EAAU,CACbC,G,EAIF,OAAOA,EAAgB,GAAKA,IAAkBjL,KAAK0G,OAAO/E,M,CAGnD,SAAAyG,CAAUyB,EAAQxC,GACzB,MAAM2B,EAASa,EAAOb,OAEtB,GACCA,EAAOkC,QAAQC,gBAAkB,SACjCnC,EAAOP,OAAS,WACf,CACD,M,CAGD,MAAMyB,EAAMlK,KAAKoL,SAASvB,EAAOb,QACjC,MAAM3H,EAASrB,KAAKqL,eAAexB,EAAOb,QAE1C,GAAI3H,EAAQ,CACX,M,CAGD,GAAIrB,KAAK+H,eAAgB,CACxB,MAAMG,EAAOlI,KAAK0G,OAAOW,GACzBrH,KAAKsL,SAASpJ,KAAK,CAClBgG,OACAqD,SAAUvL,KAAKC,YAEhB,M,CAGD,IAAKD,KAAK2F,mBAAoB,CAC7B,M,CAGD,MAAM6B,EAAW0C,IAAG,MAAHA,SAAG,SAAHA,EAAKzI,cAAc,0BAEpC,IAAK+F,EAAU,CACd,M,CAGDA,EAASmB,SAAWnB,EAASmB,QAC7B3I,KAAK+I,gBAAgBvB,EAAUH,E,CAGxB,QAAA+D,CAASI,G,MAChB,IAAKA,EAAI,CACR,OAAOA,C,CAGR,KAAIhL,EAAAgL,IAAE,MAAFA,SAAE,SAAFA,EAAIN,WAAO,MAAA1K,SAAA,SAAAA,EAAE2K,iBAAkB,cAAe,CACjD,OAAOK,C,CAGR,OAAOxL,KAAKoL,SAASI,IAAE,MAAFA,SAAE,SAAFA,EAAIC,c,CAGlB,cAAAJ,CAAeG,G,MACtB,IAAKA,EAAI,CACR,OAAO,I,CAGR,GACCA,EAAGE,aAAa,oBAAsB,MACtCF,EAAGE,aAAa,oBAAsB,QACrC,CACD,OAAOF,C,CAGR,KAAIhL,EAAAgL,IAAE,MAAFA,SAAE,SAAFA,EAAIN,WAAO,MAAA1K,SAAA,SAAAA,EAAE2K,iBAAkB,cAAe,CACjD,OAAO,I,CAGR,OAAOnL,KAAKqL,eAAeG,IAAE,MAAFA,SAAE,SAAFA,EAAIC,c"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["tableComponentCss","Table","this","_ctrlDown","_hasCustomFilterSlot","_hasFloatingMenuItems","_floatingMenuShown","amount","formatTranslation","_c","_a","_locales","floating_menu","amount_selected","_b","amount_selected_plural","replace","defaultSize","defaultSizeOptions","empty_state","no_filter","header","content","action","filtered","componentWillLoad","_el","querySelector","querySelectorAll","length","_setLocales","_parseItems","items","_generateColumns","componentDidRender","hasRendered","emit","render","h","Host","class","shadow","enableHeader","quickFilters","activeQuickFilterIdentifier","onQuickFilter","detail","quickFilter","enableSearch","query","onQueryChange","queryChange","enableFilter","selectedFiltersAmount","filterButtonTemplate","onFilter","filter","enableAction","actionIcon","actionButtonIcon","actionText","actionButtonText","actionLoading","actionButtonLoading","canUseAction","actionButtonEnabled","actionButtonTemplate","onAction","itemsSelectedAmount","selectedRows","loading","headerLoading","name","slot","_getHeader","_getRows","enableFooter","hideOnSinglePage","enablePageSize","pageSize","pageSizeOptions","onPageSizeChange","pageSizeChange","enablePagination","page","total","onPageChange","pageChange","enableExport","onExport","export","footerLoading","enableFloatingMenu","enableRowSelection","usedInTable","hover","floatingMenuAmountSelectedTemplate","variant","onClick","_selectAllChange","getLocaleComponentStrings","onTableDefinitionUpdated","keyDown","key","keyUp","visibilityChange","document","visibilityState","_items","Array","isArray","JSON","parse","definitions","definitionsArray","from","_columns","map","col","index","definition","value","checkbox","hasCheckbox","_getCheckbox","amountOfLoadingRows","_","i","enableHover","enableRowClick","_getLoadingColumns","_getEmptyState","item","ev","_rowClick","_getRowColumns","colIndex","rowIndex","selectionKey","type","onChange","checked","_selectionContainsAll","indeterminate","_selectionIndeterminate","_checkboxChange","target","disabled","canSelectKey","_selectionContains","emptyStateFilteredHeader","emptyStateFilteredContent","enableEmptyStateAction","emptyStateActionClick","emptyStateHeader","emptyStateContent","icon","size","emptyStateAction","$event","forceValue","undefined","_getCheckedValue","toAdd","row","push","rowSelected","selectedRowsChange","find","d","_getSelectionValue","rowDeselected","indexOfToRemove","selection","splice","returnIndex","returnValue","findIndex","contains","containsCount","tagName","toLowerCase","_findRow","_findRowAction","rowClick","ctrlDown","el","parentElement","getAttribute"],"sources":["src/components/organisms/table/table.component.scss?tag=p-table","src/components/organisms/table/table.component.tsx"],"sourcesContent":["p-table {\n\t@apply relative flex flex-col;\n\n\t.p-input[type='checkbox'] {\n\t\tflex-shrink: 0;\n\t}\n\n\tp-table-container {\n\t\t@apply relative;\n\n\t\tp-floating-menu-container {\n\t\t\t@apply fixed bottom-4 left-1/2 -translate-x-1/2 transform;\n\t\t\tanimation: forwards floatingMenuContainerIn 0.3s ease !important;\n\n\t\t\t@screen tablet {\n\t\t\t\t@apply absolute bottom-16;\n\t\t\t}\n\n\t\t\t&:not(.shown) {\n\t\t\t\t@apply hidden;\n\t\t\t}\n\n\t\t\t&.inactive {\n\t\t\t\tanimation: forwards floatingMenuContainerOut 0.3s ease !important;\n\t\t\t}\n\n\t\t\t.hide-mobile {\n\t\t\t\t@apply hidden tablet:block;\n\t\t\t}\n\t\t}\n\t}\n}\n\n@keyframes floatingMenuContainerOut {\n\t0% {\n\t\tdisplay: flex;\n\t\ttransform: translateY(0) translateX(-50%);\n\t\topacity: 100;\n\t}\n\t99% {\n\t\ttransform: translateY(100%) translateX(-50%);\n\t\topacity: 0;\n\t\tdisplay: flex;\n\t}\n\t100% {\n\t\ttransform: translateY(100%) translateX(-50%);\n\t\topacity: 0;\n\t\tdisplay: none;\n\t}\n}\n\n@keyframes floatingMenuContainerIn {\n\t0% {\n\t\ttransform: translateY(100%) translateX(-50%);\n\t\topacity: 0;\n\t\tdisplay: none;\n\t}\n\t1% {\n\t\ttransform: translateY(100%) translateX(-50%);\n\t\topacity: 0;\n\t\tdisplay: flex;\n\t}\n\t100% {\n\t\ttransform: translateY(0) translateX(-50%);\n\t\topacity: 100;\n\t\tdisplay: flex;\n\t}\n}\n","import {\n\tComponent,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tProp,\n\tState,\n\tWatch,\n} from '@stencil/core';\nimport { IconVariant } from '../../../components';\nimport { QuickFilter, RowClickEvent } from '../../../types/table';\nimport { formatTranslation, getLocaleComponentStrings } from '../../../utils';\nimport { TableColumn } from '../../helpers/table-column/table-column.component';\nimport {\n\tdefaultSize,\n\tdefaultSizeOptions,\n} from '../../molecules/page-size-select/constants';\nimport { buttonTemplateFunc } from '../../molecules/table-header/table-header.component';\n\nexport type templateFunc = () => string;\nexport type amountSelectedTemplateFunc = (amount: number) => string;\n\n@Component({\n\ttag: 'p-table',\n\tstyleUrl: 'table.component.scss',\n})\nexport class Table {\n\t/**\n\t * The items to be fed to the table\n\t */\n\t@Prop() items: string;\n\n\t/**\n\t * Wether data is loading\n\t */\n\t@Prop() loading: boolean = false;\n\n\t/**\n\t * Wether the header should show loading state\n\t */\n\t@Prop() headerLoading: boolean = false;\n\n\t/**\n\t * Wether the footer should show loading state\n\t */\n\t@Prop() footerLoading: boolean = false;\n\n\t/**\n\t * The amount of loading rows to show\n\t */\n\t@Prop() amountOfLoadingRows: number = 6;\n\n\t/**\n\t * Wether to enable selection\n\t */\n\t@Prop() enableRowSelection: boolean = true;\n\n\t/**\n\t * Wether to enable row clicking\n\t */\n\t@Prop() enableRowClick: boolean = true;\n\n\t/**\n\t * The current selection of items\n\t */\n\t@Prop() selectedRows: any[] = [];\n\n\t/**\n\t * Wether to enable the floating menu\n\t */\n\t@Prop() enableFloatingMenu: boolean = true;\n\n\t/**\n\t * The template for amount selected item in the floating menu\n\t */\n\t@Prop() floatingMenuAmountSelectedTemplate: amountSelectedTemplateFunc = (\n\t\tamount: number\n\t) =>\n\t\tformatTranslation(\n\t\t\t(amount === 1\n\t\t\t\t? this._locales.floating_menu?.amount_selected\n\t\t\t\t: this._locales.floating_menu?.amount_selected_plural\n\t\t\t)?.replace('{{amount}}', amount)\n\t\t);\n\n\t/**\n\t * Event whenever the current selection changes\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\tselectedRowsChange: EventEmitter<any>;\n\n\t/**\n\t * The key to determine if a row is selected\n\t */\n\t@Prop() selectionKey: string;\n\n\t/**\n\t * A key to determine if a row can be selected\n\t */\n\t@Prop() canSelectKey: string;\n\n\t/**\n\t * Event whenever a row is clicked\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\trowClick: EventEmitter<RowClickEvent>;\n\n\t/**\n\t * Event whenever a row is selected\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\trowSelected: EventEmitter<any>;\n\n\t/**\n\t * Event whenever a row is deselected\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\trowDeselected: EventEmitter<any>;\n\n\t/**\n\t * Event when the table has rendered\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\thasRendered: EventEmitter<number>;\n\n\t/** START HEADER */\n\n\t/**\n\t * Wether to show the header\n\t */\n\t@Prop() enableHeader: boolean = true;\n\n\t/**\n\t * Quick filters to show\n\t */\n\t@Prop() quickFilters: QuickFilter[] = [];\n\n\t/**\n\t * Active quick filter identifier\n\t */\n\t@Prop() activeQuickFilterIdentifier: string;\n\n\t/**\n\t * Wether to show the search input\n\t */\n\t@Prop() enableSearch: boolean = true;\n\n\t/**\n\t * The query to show in the search bar\n\t */\n\t@Prop({ mutable: true }) query: string;\n\n\t/**\n\t * Wether to show the filter button\n\t */\n\t@Prop() enableFilter: boolean = true;\n\n\t/**\n\t * The amount of filters being selected\n\t */\n\t@Prop() selectedFiltersAmount: number;\n\n\t/**\n\t * The template for the filter button text\n\t */\n\t@Prop() filterButtonTemplate: templateFunc;\n\n\t/**\n\t * Wether to show the action button\n\t */\n\t@Prop() enableAction: boolean = false;\n\n\t/**\n\t * Wether the action button is loading\n\t */\n\t@Prop() actionButtonLoading: boolean = false;\n\n\t/**\n\t * Wether the action button is enabled\n\t */\n\t@Prop() actionButtonEnabled: boolean = false;\n\n\t/**\n\t * The action button icon\n\t */\n\t@Prop() actionButtonIcon: IconVariant = 'pencil';\n\n\t/**\n\t * The action button text if changed\n\t */\n\t@Prop() actionButtonText: string;\n\n\t/**\n\t * The template for the action button text\n\t */\n\t@Prop() actionButtonTemplate: buttonTemplateFunc;\n\n\t/**\n\t * Event when one of the quick filters is clicked\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\tquickFilter: EventEmitter<QuickFilter>;\n\n\t/**\n\t * Event when the query changes\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\tqueryChange: EventEmitter<string>;\n\n\t/**\n\t * Event when the filter button is clicked\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\tfilter: EventEmitter<null>;\n\n\t/**\n\t * Event when the action button is clicked\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\taction: EventEmitter<null>;\n\n\t/** START FOOTER */\n\n\t/**\n\t * Wether to show the header\n\t */\n\t@Prop() enableFooter: boolean = true;\n\n\t/**\n\t * Wether to enable page size select\n\t */\n\t@Prop() enablePageSize: boolean = true;\n\n\t/**\n\t * Wether to enable pagination\n\t */\n\t@Prop() enablePagination: boolean = true;\n\n\t/**\n\t * Wether to enable export\n\t */\n\t@Prop() enableExport: boolean = true;\n\n\t/**\n\t * The current page\n\t */\n\t@Prop({ mutable: true, reflect: true }) page: number = 1;\n\n\t/**\n\t * The total amount of items\n\t */\n\t@Prop() total!: number;\n\n\t/**\n\t * Event whenever the page changes\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\tpageChange: EventEmitter<number>;\n\n\t/**\n\t * The amount of items per page\n\t */\n\t@Prop() pageSize: number = defaultSize;\n\n\t/**\n\t * The options for the page size\n\t */\n\t@Prop() pageSizeOptions: number[] = defaultSizeOptions;\n\n\t/**\n\t * Event whenever the page changes\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\tpageSizeChange: EventEmitter<number>;\n\n\t/**\n\t * Event whenever the page changes\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\texport: EventEmitter<number>;\n\n\t/**\n\t * Wether to hide when there is only 1 page available\n\t */\n\t@Prop() hideOnSinglePage: boolean = true;\n\n\t/* Empty state start */\n\t@Prop() emptyStateHeader: templateFunc = () =>\n\t\tformatTranslation(this._locales.empty_state?.no_filter.header);\n\t@Prop() emptyStateContent: templateFunc = () =>\n\t\tformatTranslation(this._locales.empty_state?.no_filter.content);\n\t@Prop() emptyStateAction: templateFunc = () =>\n\t\tformatTranslation(this._locales.empty_state?.no_filter.action);\n\t/**\n\t * Wether to enable empty state action\n\t */\n\t@Prop() enableEmptyStateAction: boolean = true;\n\n\t@Prop() emptyStateFilteredHeader: templateFunc = () =>\n\t\tformatTranslation(this._locales.empty_state.filtered.header);\n\t@Prop() emptyStateFilteredContent: templateFunc = () =>\n\t\tformatTranslation(this._locales.empty_state.filtered.content);\n\n\t/**\n\t * Event whenever the empty state is clicked\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\temptyStateActionClick: EventEmitter<null>;\n\n\t/*\n\t * Wether to show the shadow or not\n\t */\n\t@Prop() shadow: boolean = true;\n\n\t/* Empty state end */\n\n\t/**\n\t * The host element\n\t */\n\t@Element() private _el: HTMLElement;\n\n\t/**\n\t * Locales used for this component\n\t */\n\t@State() private _locales: any = {};\n\n\t@State() private _columns: any[] = [];\n\t@State() private _items: any[] = [];\n\n\tprivate _ctrlDown = false;\n\tprivate _hasCustomFilterSlot = false;\n\tprivate _hasFloatingMenuItems = false;\n\tprivate _floatingMenuShown = false;\n\n\tcomponentWillLoad() {\n\t\tthis._hasCustomFilterSlot = !!this._el.querySelector(\n\t\t\t':scope > [slot=\"custom-filter\"]'\n\t\t);\n\t\tthis._hasFloatingMenuItems = !!this._el.querySelectorAll(\n\t\t\t':scope > [slot=\"floating-menu-item\"]'\n\t\t).length;\n\n\t\tthis._setLocales();\n\t\tthis._parseItems(this.items);\n\t\tthis._generateColumns();\n\t}\n\n\tcomponentDidRender() {\n\t\tthis.hasRendered.emit();\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host class=\"p-table\">\n\t\t\t\t<p-table-container shadow={this.shadow}>\n\t\t\t\t\t{this.enableHeader && (\n\t\t\t\t\t\t<p-table-header\n\t\t\t\t\t\t\t// quick filters\n\t\t\t\t\t\t\tquickFilters={this.quickFilters}\n\t\t\t\t\t\t\tactiveQuickFilterIdentifier={\n\t\t\t\t\t\t\t\tthis.activeQuickFilterIdentifier\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonQuickFilter={({ detail }) =>\n\t\t\t\t\t\t\t\tthis.quickFilter.emit(detail)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// search\n\t\t\t\t\t\t\tenableSearch={this.enableSearch}\n\t\t\t\t\t\t\tquery={this.query}\n\t\t\t\t\t\t\tonQueryChange={({ detail }) =>\n\t\t\t\t\t\t\t\tthis.queryChange.emit(detail)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// filter button\n\t\t\t\t\t\t\tenableFilter={this.enableFilter}\n\t\t\t\t\t\t\tselectedFiltersAmount={this.selectedFiltersAmount}\n\t\t\t\t\t\t\tfilterButtonTemplate={this.filterButtonTemplate}\n\t\t\t\t\t\t\tonFilter={() => this.filter.emit()}\n\t\t\t\t\t\t\t// action button\n\t\t\t\t\t\t\tenableAction={this.enableAction}\n\t\t\t\t\t\t\tactionIcon={this.actionButtonIcon}\n\t\t\t\t\t\t\tactionText={this.actionButtonText}\n\t\t\t\t\t\t\tactionLoading={this.actionButtonLoading}\n\t\t\t\t\t\t\tcanUseAction={this.actionButtonEnabled}\n\t\t\t\t\t\t\tactionButtonTemplate={this.actionButtonTemplate}\n\t\t\t\t\t\t\tonAction={() => this.action.emit()}\n\t\t\t\t\t\t\titemsSelectedAmount={this.selectedRows?.length}\n\t\t\t\t\t\t\t//loading\n\t\t\t\t\t\t\tloading={this.headerLoading}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{this._hasCustomFilterSlot && (\n\t\t\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\t\t\tname=\"custom-filter\"\n\t\t\t\t\t\t\t\t\tslot=\"custom-filter\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</p-table-header>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{this._getHeader()}\n\t\t\t\t\t<div class=\"flex flex-col flex-1\">{this._getRows()}</div>\n\n\t\t\t\t\t{this.enableFooter && (\n\t\t\t\t\t\t<p-table-footer\n\t\t\t\t\t\t\t// overall\n\t\t\t\t\t\t\thideOnSinglePage={this.hideOnSinglePage}\n\t\t\t\t\t\t\t// page size select\n\t\t\t\t\t\t\tenablePageSize={this.enablePageSize}\n\t\t\t\t\t\t\tpageSize={this.pageSize}\n\t\t\t\t\t\t\tpageSizeOptions={this.pageSizeOptions}\n\t\t\t\t\t\t\tonPageSizeChange={({ detail }) =>\n\t\t\t\t\t\t\t\tthis.pageSizeChange.emit(detail)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// pagination\n\t\t\t\t\t\t\tenablePagination={this.enablePagination}\n\t\t\t\t\t\t\tpage={this.page}\n\t\t\t\t\t\t\ttotal={this.total}\n\t\t\t\t\t\t\tonPageChange={({ detail }) =>\n\t\t\t\t\t\t\t\tthis.pageChange.emit(detail)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// export\n\t\t\t\t\t\t\tenableExport={this.enableExport}\n\t\t\t\t\t\t\tonExport={() => this.export.emit()}\n\t\t\t\t\t\t\t//loading\n\t\t\t\t\t\t\tloading={this.footerLoading}\n\t\t\t\t\t\t></p-table-footer>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{this.enableFloatingMenu && this.enableRowSelection ? (\n\t\t\t\t\t\t<p-floating-menu-container\n\t\t\t\t\t\t\tusedInTable={true}\n\t\t\t\t\t\t\tclass={`${\n\t\t\t\t\t\t\t\tthis.selectedRows?.length ? '' : 'inactive'\n\t\t\t\t\t\t\t} ${this._floatingMenuShown ? 'shown' : ''}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<p-floating-menu-item\n\t\t\t\t\t\t\t\thover={false}\n\t\t\t\t\t\t\t\tslot=\"floating-menu-item\"\n\t\t\t\t\t\t\t\tclass={\n\t\t\t\t\t\t\t\t\tthis._hasFloatingMenuItems\n\t\t\t\t\t\t\t\t\t\t? 'hide-mobile'\n\t\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\t{this.floatingMenuAmountSelectedTemplate(\n\t\t\t\t\t\t\t\t\tthis.selectedRows?.length\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</p-floating-menu-item>\n\t\t\t\t\t\t\t<p-divider\n\t\t\t\t\t\t\t\tclass={`mx-0 text-storm ${\n\t\t\t\t\t\t\t\t\tthis._hasFloatingMenuItems\n\t\t\t\t\t\t\t\t\t\t? 'hide-mobile'\n\t\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\tvariant=\"vertical\"\n\t\t\t\t\t\t\t\tslot=\"floating-menu-item\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{this._hasFloatingMenuItems && (\n\t\t\t\t\t\t\t\t<slot name=\"floating-menu-item\"></slot>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{this._hasFloatingMenuItems && (\n\t\t\t\t\t\t\t\t<p-divider\n\t\t\t\t\t\t\t\t\tclass=\"mx-0 text-storm\"\n\t\t\t\t\t\t\t\t\tvariant=\"vertical\"\n\t\t\t\t\t\t\t\t\tslot=\"floating-menu-item\"\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<p-floating-menu-item\n\t\t\t\t\t\t\t\tslot=\"floating-menu-item\"\n\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\tthis._selectAllChange(null, false)\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\t<p-icon variant=\"negative\" />\n\t\t\t\t\t\t\t</p-floating-menu-item>\n\t\t\t\t\t\t</p-floating-menu-container>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t''\n\t\t\t\t\t)}\n\t\t\t\t</p-table-container>\n\t\t\t</Host>\n\t\t);\n\t}\n\n\t@Listen('localeChanged', { target: 'body' })\n\tprivate async _setLocales(): Promise<void> {\n\t\tthis._locales = await getLocaleComponentStrings(this._el);\n\t}\n\n\t@Listen('tableDefinitionChanged', { target: 'body' })\n\tonTableDefinitionUpdated() {\n\t\tthis._generateColumns();\n\t}\n\n\t@Listen('keydown', { target: 'document' })\n\tkeyDown({ key }) {\n\t\tif (key !== 'Control' || this._ctrlDown === true) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._ctrlDown = true;\n\t}\n\n\t@Listen('keyup', { target: 'document' })\n\tkeyUp({ key }) {\n\t\tif (key !== 'Control' || this._ctrlDown === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._ctrlDown = false;\n\t}\n\n\t@Listen('visibilitychange', { target: 'document' })\n\tvisibilityChange() {\n\t\tif (document.visibilityState !== 'hidden' || this._ctrlDown === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._ctrlDown = false;\n\t}\n\n\t@Watch('items')\n\tprivate _parseItems(items: string) {\n\t\tif (!items) {\n\t\t\tthis._items = [];\n\t\t\treturn;\n\t\t}\n\n\t\tif (Array.isArray(items)) {\n\t\t\tthis._items = items;\n\t\t\treturn;\n\t\t}\n\n\t\tthis._items = JSON.parse(items);\n\t}\n\n\tprivate _generateColumns() {\n\t\tconst definitions = this._el.querySelectorAll('p-table-column');\n\t\tconst definitionsArray = Array.from(definitions);\n\n\t\tdefinitionsArray[definitionsArray.length - 1]['isLast'] = true;\n\n\t\tthis._columns = definitionsArray;\n\t}\n\n\tprivate _getHeader() {\n\t\treturn (\n\t\t\t<p-table-row variant=\"header\">\n\t\t\t\t{this._columns.map((col: TableColumn, index) => (\n\t\t\t\t\t<p-table-cell\n\t\t\t\t\t\tdefinition={col}\n\t\t\t\t\t\tvalue={col.name}\n\t\t\t\t\t\tvariant=\"header\"\n\t\t\t\t\t\tcheckbox={\n\t\t\t\t\t\t\tindex === 0 || col.hasCheckbox\n\t\t\t\t\t\t\t\t? this._getCheckbox(\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tthis.loading ? 'loading' : 'header'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t}\n\t\t\t\t\t\tindex={index}\n\t\t\t\t\t></p-table-cell>\n\t\t\t\t))}\n\t\t\t</p-table-row>\n\t\t);\n\t}\n\n\tprivate _getRows() {\n\t\tif (this.loading) {\n\t\t\treturn Array.from(\n\t\t\t\t{\n\t\t\t\t\tlength: this.amountOfLoadingRows,\n\t\t\t\t},\n\t\t\t\t(_, i) => (\n\t\t\t\t\t<p-table-row\n\t\t\t\t\t\tenableHover={\n\t\t\t\t\t\t\tthis.enableRowSelection || this.enableRowClick\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{this._getLoadingColumns(i)}\n\t\t\t\t\t</p-table-row>\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tif (!this._items.length) {\n\t\t\treturn this._getEmptyState();\n\t\t}\n\n\t\treturn this._items.map((item, index) => (\n\t\t\t<p-table-row\n\t\t\t\tenableHover={this.enableRowSelection || this.enableRowClick}\n\t\t\t\tonClick={(ev) => this._rowClick(ev, index)}\n\t\t\t>\n\t\t\t\t{this._getRowColumns(item, index)}\n\t\t\t</p-table-row>\n\t\t));\n\t}\n\n\tprivate _getRowColumns(item, index) {\n\t\treturn this._columns.map((col: TableColumn, colIndex) => {\n\t\t\treturn (\n\t\t\t\t<p-table-cell\n\t\t\t\t\tdefinition={col}\n\t\t\t\t\titem={item}\n\t\t\t\t\tcheckbox={\n\t\t\t\t\t\tcolIndex === 0 || col.hasCheckbox\n\t\t\t\t\t\t\t? this._getCheckbox(index)\n\t\t\t\t\t\t\t: null\n\t\t\t\t\t}\n\t\t\t\t\tindex={colIndex}\n\t\t\t\t\trowIndex={index}\n\t\t\t\t></p-table-cell>\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate _getLoadingColumns(index) {\n\t\treturn this._columns.map((col: TableColumn, colIndex) => {\n\t\t\treturn (\n\t\t\t\t<p-table-cell\n\t\t\t\t\tdefinition={col}\n\t\t\t\t\tvariant=\"loading\"\n\t\t\t\t\tcheckbox={\n\t\t\t\t\t\tcolIndex === 0 || col.hasCheckbox\n\t\t\t\t\t\t\t? this._getCheckbox(index, 'loading')\n\t\t\t\t\t\t\t: null\n\t\t\t\t\t}\n\t\t\t\t\tindex={colIndex}\n\t\t\t\t\trowIndex={index}\n\t\t\t\t></p-table-cell>\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate _getCheckbox(\n\t\trowIndex,\n\t\tvariant: 'header' | 'default' | 'loading' = 'default'\n\t) {\n\t\tif (!this.enableRowSelection || !this.selectionKey) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (variant === 'loading') {\n\t\t\treturn <p-loader variant=\"ghost\" class=\"h-6 w-6 rounded\" />;\n\t\t}\n\n\t\tif (variant === 'header') {\n\t\t\treturn (\n\t\t\t\t<input\n\t\t\t\t\tclass=\"p-input\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tonChange={(ev) => this._selectAllChange(ev)}\n\t\t\t\t\tchecked={this._selectionContainsAll()}\n\t\t\t\t\tindeterminate={this._selectionIndeterminate()}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tconst item = this._items[rowIndex];\n\n\t\treturn (\n\t\t\t<input\n\t\t\t\tclass=\"p-input\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tonChange={(ev) => this._checkboxChange(ev?.target, rowIndex)}\n\t\t\t\tdisabled={this.canSelectKey && !item[this.canSelectKey]}\n\t\t\t\tchecked={this._selectionContains(item, rowIndex)}\n\t\t\t/>\n\t\t);\n\t}\n\n\tprivate _getEmptyState() {\n\t\tif (this.query?.length || this.selectedFiltersAmount) {\n\t\t\treturn (\n\t\t\t\t<div class=\"flex max-w-[20rem] flex-col items-center self-center py-24 text-center\">\n\t\t\t\t\t<p-illustration variant=\"empty-state-search\" class=\"mb-6\" />\n\t\t\t\t\t<p class=\"text-storm-default font-semibold\">\n\t\t\t\t\t\t{this.emptyStateFilteredHeader()}\n\t\t\t\t\t</p>\n\t\t\t\t\t<p class=\"mb-14 text-sm text-storm-medium\">\n\t\t\t\t\t\t{this.emptyStateFilteredContent()}\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclass={`flex max-w-[20rem] flex-col items-center self-center py-24 text-center ${\n\t\t\t\t\tthis.enableEmptyStateAction && 'cursor-pointer'\n\t\t\t\t}`}\n\t\t\t\tonClick={() =>\n\t\t\t\t\tthis.enableEmptyStateAction &&\n\t\t\t\t\tthis.emptyStateActionClick.emit(null)\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<p-illustration variant=\"empty-state-add\" class=\"mb-6\" />\n\t\t\t\t<p class=\"text-storm-default font-semibold\">\n\t\t\t\t\t{this.emptyStateHeader()}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"mb-6 text-sm text-storm-medium\">\n\t\t\t\t\t{this.emptyStateContent()}\n\t\t\t\t</p>\n\t\t\t\t{this.enableEmptyStateAction && (\n\t\t\t\t\t<p-button variant=\"secondary\" icon=\"plus\" size=\"small\">\n\t\t\t\t\t\t{this.emptyStateAction()}\n\t\t\t\t\t</p-button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n\n\tprivate _selectAllChange($event: any, forceValue?: boolean) {\n\t\tif (!this.enableRowSelection) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst value =\n\t\t\tforceValue === undefined\n\t\t\t\t? this._getCheckedValue($event.target)\n\t\t\t\t: forceValue;\n\t\tif (value) {\n\t\t\tconst toAdd = [];\n\t\t\tfor (let i = 0; i < this._items.length; i++) {\n\t\t\t\tconst row = this._items[i];\n\t\t\t\tif (this.canSelectKey && !row[this.canSelectKey]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (this._selectionContains(row, i)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\ttoAdd.push(row);\n\t\t\t\tthis.rowSelected.emit(row);\n\t\t\t}\n\n\t\t\tthis.selectedRows = [...this.selectedRows, ...toAdd];\n\t\t\tthis.selectedRowsChange.emit(this.selectedRows);\n\t\t\tif (this.enableFloatingMenu && !this._floatingMenuShown) {\n\t\t\t\tthis._floatingMenuShown = true;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < this.selectedRows.length; i++) {\n\t\t\tconst value = this.selectedRows[i];\n\t\t\tconst row = this._items.find(\n\t\t\t\t(d) =>\n\t\t\t\t\tthis._getSelectionValue(d, i) ===\n\t\t\t\t\tthis._getSelectionValue(value, i)\n\t\t\t);\n\n\t\t\tif (!row) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthis.rowDeselected.emit(row);\n\t\t}\n\n\t\tthis.selectedRows = [];\n\t\tthis.selectedRowsChange.emit(this.selectedRows);\n\t}\n\n\tprivate _checkboxChange(target: any, index: number) {\n\t\tif (!this.enableRowSelection) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst row = this._items[index];\n\n\t\tif (this.canSelectKey && !row[this.canSelectKey]) {\n\t\t\ttarget.checked = false;\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = this._getCheckedValue(target);\n\t\tif (value) {\n\t\t\tthis.selectedRows = [...this.selectedRows, row];\n\t\t\tthis.selectedRowsChange.emit(this.selectedRows);\n\t\t\tthis.rowSelected.emit(row);\n\n\t\t\tif (this.enableFloatingMenu && !this._floatingMenuShown) {\n\t\t\t\tthis._floatingMenuShown = true;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst indexOfToRemove = this._selectionContains(row, index, true);\n\n\t\t// we need to do this, because splice does not trigger the selection setter.\n\t\tconst selection = [...this.selectedRows];\n\t\tselection.splice(indexOfToRemove, 1);\n\t\tthis.selectedRows = selection;\n\t\tthis.selectedRowsChange.emit(this.selectedRows);\n\t\tthis.rowDeselected.emit(row);\n\t}\n\n\tprivate _getCheckedValue(target: any) {\n\t\treturn target?.checked;\n\t}\n\n\tprivate _getSelectionValue(row: any, index: number) {\n\t\treturn this.selectionKey ? row?.[this.selectionKey] || index : index;\n\t}\n\n\tprivate _selectionContains(row, index, returnIndex = false): any {\n\t\tconst returnValue = this.selectedRows.findIndex(\n\t\t\t(item) =>\n\t\t\t\tthis._getSelectionValue(row, index) ===\n\t\t\t\tthis._getSelectionValue(item, index)\n\t\t);\n\t\treturn !returnIndex ? returnValue >= 0 : returnValue;\n\t}\n\n\tprivate _selectionContainsAll() {\n\t\tlet returnValue = true;\n\t\tif (!this._items?.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (let i = 0; i < this._items?.length; i++) {\n\t\t\tconst item = this._items[i];\n\t\t\tconst contains = this._selectionContains(item, i);\n\n\t\t\tif (!contains) {\n\t\t\t\treturnValue = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn returnValue;\n\t}\n\n\tprivate _selectionIndeterminate() {\n\t\tif (!this._items?.length || !this.selectedRows?.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet containsCount = 0;\n\t\tfor (let i = 0; i < this._items?.length; i++) {\n\t\t\tconst item = this._items[i];\n\t\t\tconst contains = this._selectionContains(item, i);\n\n\t\t\tif (contains) {\n\t\t\t\tcontainsCount++;\n\t\t\t}\n\t\t}\n\n\t\treturn containsCount > 0 && containsCount !== this._items.length;\n\t}\n\n\tprivate _rowClick($event, index) {\n\t\tconst target = $event.target;\n\n\t\tif (\n\t\t\ttarget.tagName.toLowerCase() === 'input' ||\n\t\t\ttarget.type === 'checkbox'\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst row = this._findRow($event.target);\n\t\tconst action = this._findRowAction($event.target);\n\n\t\tif (action) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.enableRowClick) {\n\t\t\tconst item = this._items[index];\n\t\t\tthis.rowClick.emit({\n\t\t\t\titem,\n\t\t\t\tctrlDown: this._ctrlDown,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.enableRowSelection) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst checkbox = row?.querySelector('input[type=\"checkbox\"]');\n\n\t\tif (!checkbox) {\n\t\t\treturn;\n\t\t}\n\n\t\tcheckbox.checked = !checkbox.checked;\n\t\tthis._checkboxChange(checkbox, index);\n\t}\n\n\tprivate _findRow(el: HTMLElement) {\n\t\tif (!el) {\n\t\t\treturn el;\n\t\t}\n\n\t\tif (el?.tagName?.toLowerCase() === 'p-table-row') {\n\t\t\treturn el;\n\t\t}\n\n\t\treturn this._findRow(el?.parentElement);\n\t}\n\n\tprivate _findRowAction(el: HTMLElement) {\n\t\tif (!el) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (\n\t\t\tel.getAttribute('data-is-action') !== null &&\n\t\t\tel.getAttribute('data-is-action') !== 'false'\n\t\t) {\n\t\t\treturn el;\n\t\t}\n\n\t\tif (el?.tagName?.toLowerCase() === 'p-table-row') {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this._findRowAction(el?.parentElement);\n\t}\n}\n"],"mappings":"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"}