@paperless/core 1.14.0 → 1.16.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.
Files changed (101) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/assets/i18n/table.i18n.en.json +4 -0
  3. package/dist/assets/i18n/table.i18n.nl.json +4 -0
  4. package/dist/build/p-2327d2ad.entry.js +2 -0
  5. package/dist/build/p-2327d2ad.entry.js.map +1 -0
  6. package/dist/build/{p-502ff028.entry.js → p-4ea9ac89.entry.js} +2 -2
  7. package/dist/build/p-4ea9ac89.entry.js.map +1 -0
  8. package/dist/build/p-a2b552f9.entry.js +2 -0
  9. package/dist/build/p-a2b552f9.entry.js.map +1 -0
  10. package/dist/build/paperless.esm.js +1 -1
  11. package/dist/build/paperless.esm.js.map +1 -1
  12. package/dist/cjs/index-1fde8b14.js +2 -2
  13. package/dist/cjs/loader.cjs.js +1 -1
  14. package/dist/cjs/p-divider.cjs.entry.js +2 -1
  15. package/dist/cjs/p-divider.cjs.entry.js.map +1 -1
  16. package/dist/cjs/{p-illustration_6.cjs.entry.js → p-floating-menu-container_8.cjs.entry.js} +42 -14
  17. package/dist/cjs/p-floating-menu-container_8.cjs.entry.js.map +1 -0
  18. package/dist/cjs/p-table.cjs.entry.js +33 -14
  19. package/dist/cjs/p-table.cjs.entry.js.map +1 -1
  20. package/dist/cjs/paperless.cjs.js +1 -1
  21. package/dist/collection/collection-manifest.json +2 -0
  22. package/dist/collection/components/atoms/divider/divider.component.css +1 -1
  23. package/dist/collection/components/atoms/divider/divider.component.js +25 -0
  24. package/dist/collection/components/atoms/divider/divider.component.js.map +1 -1
  25. package/dist/collection/components/atoms/floating-menu-container/floating-menu-container.component.css +1 -0
  26. package/dist/collection/components/atoms/floating-menu-container/floating-menu-container.component.js +44 -0
  27. package/dist/collection/components/atoms/floating-menu-container/floating-menu-container.component.js.map +1 -0
  28. package/dist/collection/components/atoms/floating-menu-container/test/floating-menu-container.component.e2e.js +26 -0
  29. package/dist/collection/components/atoms/floating-menu-container/test/floating-menu-container.component.e2e.js.map +1 -0
  30. package/dist/collection/components/atoms/floating-menu-container/test/floating-menu-container.component.spec.js +17 -0
  31. package/dist/collection/components/atoms/floating-menu-container/test/floating-menu-container.component.spec.js.map +1 -0
  32. package/dist/collection/components/atoms/floating-menu-item/floating-menu-item.component.css +1 -0
  33. package/dist/collection/components/atoms/floating-menu-item/floating-menu-item.component.js +44 -0
  34. package/dist/collection/components/atoms/floating-menu-item/floating-menu-item.component.js.map +1 -0
  35. package/dist/collection/components/atoms/floating-menu-item/test/floating-menu-container.component.e2e.js +26 -0
  36. package/dist/collection/components/atoms/floating-menu-item/test/floating-menu-container.component.e2e.js.map +1 -0
  37. package/dist/collection/components/atoms/floating-menu-item/test/floating-menu-container.component.spec.js +17 -0
  38. package/dist/collection/components/atoms/floating-menu-item/test/floating-menu-container.component.spec.js.map +1 -0
  39. package/dist/collection/components/molecules/table-header/table-header.component.js +33 -33
  40. package/dist/collection/components/molecules/table-header/table-header.component.js.map +1 -1
  41. package/dist/collection/components/organisms/table/table.component.css +1 -1
  42. package/dist/collection/components/organisms/table/table.component.js +107 -30
  43. package/dist/collection/components/organisms/table/table.component.js.map +1 -1
  44. package/dist/collection/tailwind/z-index.js +1 -0
  45. package/dist/components/divider.component.js +5 -2
  46. package/dist/components/divider.component.js.map +1 -1
  47. package/dist/components/floating-menu-container.component.js +35 -0
  48. package/dist/components/floating-menu-container.component.js.map +1 -0
  49. package/dist/components/floating-menu-item.component.js +35 -0
  50. package/dist/components/floating-menu-item.component.js.map +1 -0
  51. package/dist/components/p-floating-menu-container.d.ts +11 -0
  52. package/dist/components/p-floating-menu-container.js +8 -0
  53. package/dist/components/p-floating-menu-container.js.map +1 -0
  54. package/dist/components/p-floating-menu-item.d.ts +11 -0
  55. package/dist/components/p-floating-menu-item.js +8 -0
  56. package/dist/components/p-floating-menu-item.js.map +1 -0
  57. package/dist/components/p-table.js +63 -29
  58. package/dist/components/p-table.js.map +1 -1
  59. package/dist/components/table-header.component.js +19 -19
  60. package/dist/components/table-header.component.js.map +1 -1
  61. package/dist/esm/index-7b917f6b.js +2 -2
  62. package/dist/esm/loader.js +1 -1
  63. package/dist/esm/p-divider.entry.js +2 -1
  64. package/dist/esm/p-divider.entry.js.map +1 -1
  65. package/dist/esm/{p-illustration_6.entry.js → p-floating-menu-container_8.entry.js} +41 -15
  66. package/dist/esm/p-floating-menu-container_8.entry.js.map +1 -0
  67. package/dist/esm/p-table.entry.js +33 -14
  68. package/dist/esm/p-table.entry.js.map +1 -1
  69. package/dist/esm/paperless.js +1 -1
  70. package/dist/index.html +1 -1
  71. package/dist/paperless/p-2327d2ad.entry.js +2 -0
  72. package/dist/paperless/p-2327d2ad.entry.js.map +1 -0
  73. package/dist/paperless/{p-502ff028.entry.js → p-4ea9ac89.entry.js} +2 -2
  74. package/dist/paperless/p-4ea9ac89.entry.js.map +1 -0
  75. package/dist/paperless/p-a2b552f9.entry.js +2 -0
  76. package/dist/paperless/p-a2b552f9.entry.js.map +1 -0
  77. package/dist/paperless/paperless.esm.js +1 -1
  78. package/dist/paperless/paperless.esm.js.map +1 -1
  79. package/dist/sw.js +1 -1
  80. package/dist/sw.js.map +1 -1
  81. package/dist/tailwind/z-index.js +1 -0
  82. package/dist/types/components/atoms/divider/divider.component.d.ts +4 -0
  83. package/dist/types/components/atoms/floating-menu-container/floating-menu-container.component.d.ts +7 -0
  84. package/dist/types/components/atoms/floating-menu-item/floating-menu-item.component.d.ts +7 -0
  85. package/dist/types/components/molecules/table-header/table-header.component.d.ts +15 -15
  86. package/dist/types/components/organisms/table/table.component.d.ts +26 -12
  87. package/dist/types/components.d.ts +140 -66
  88. package/hydrate/index.js +114 -41
  89. package/package.json +1 -1
  90. package/dist/build/p-0dcf23cd.entry.js +0 -2
  91. package/dist/build/p-0dcf23cd.entry.js.map +0 -1
  92. package/dist/build/p-502ff028.entry.js.map +0 -1
  93. package/dist/build/p-b59e29d7.entry.js +0 -2
  94. package/dist/build/p-b59e29d7.entry.js.map +0 -1
  95. package/dist/cjs/p-illustration_6.cjs.entry.js.map +0 -1
  96. package/dist/esm/p-illustration_6.entry.js.map +0 -1
  97. package/dist/paperless/p-0dcf23cd.entry.js +0 -2
  98. package/dist/paperless/p-0dcf23cd.entry.js.map +0 -1
  99. package/dist/paperless/p-502ff028.entry.js.map +0 -1
  100. package/dist/paperless/p-b59e29d7.entry.js +0 -2
  101. package/dist/paperless/p-b59e29d7.entry.js.map +0 -1
@@ -1,11 +1,13 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
2
  import { f as formatTranslation, g as getLocaleComponentStrings } from './localization.js';
3
3
  import { a as defaultSize, b as defaultSizeOptions, d as defineCustomElement$c } from './page-size-select.component.js';
4
- import { d as defineCustomElement$o } from './button.component.js';
5
- import { d as defineCustomElement$n } from './divider.component.js';
6
- import { d as defineCustomElement$m } from './dropdown.component.js';
7
- import { d as defineCustomElement$l } from './dropdown-menu-container.component.js';
8
- import { d as defineCustomElement$k } from './dropdown-menu-item.component.js';
4
+ import { d as defineCustomElement$q } from './button.component.js';
5
+ import { d as defineCustomElement$p } from './divider.component.js';
6
+ import { d as defineCustomElement$o } from './dropdown.component.js';
7
+ import { d as defineCustomElement$n } from './dropdown-menu-container.component.js';
8
+ import { d as defineCustomElement$m } from './dropdown-menu-item.component.js';
9
+ import { d as defineCustomElement$l } from './floating-menu-container.component.js';
10
+ import { d as defineCustomElement$k } from './floating-menu-item.component.js';
9
11
  import { d as defineCustomElement$j } from './helper.component.js';
10
12
  import { d as defineCustomElement$i } from './icon.component.js';
11
13
  import { d as defineCustomElement$h } from './illustration.component.js';
@@ -24,7 +26,7 @@ import { d as defineCustomElement$4 } from './table-header.component.js';
24
26
  import { d as defineCustomElement$3 } from './table-row.component.js';
25
27
  import { d as defineCustomElement$2 } from './tooltip.component.js';
26
28
 
27
- const tableComponentCss = ".flex{display:flex!important}.flex-shrink{flex-shrink:1!important}*{box-sizing:border-box}p-table{display:flex;flex-direction:column}p-table .p-input[type=checkbox]{flex-shrink:0}.static{position:static!important}.mb-14{margin-bottom:3.5rem!important}.mb-6{margin-bottom:1.5rem!important}.table{display:table!important}.hidden{display:none!important}.h-6{height:1.5rem!important}.w-6{width:1.5rem!important}.max-w-\\[20rem\\]{max-width:20rem!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-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}";
29
+ 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.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%{opacity:1;transform:translateY(0) translateX(-50%)}to{opacity:0;transform:translateY(100%) translateX(-50%)}}@keyframes floatingMenuContainerIn{0%{opacity:0;transform:translateY(100%) translateX(-50%)}to{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}.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}";
28
30
 
29
31
  const Table = /*@__PURE__*/ proxyCustomElement(class Table extends HTMLElement {
30
32
  constructor() {
@@ -38,13 +40,14 @@ const Table = /*@__PURE__*/ proxyCustomElement(class Table extends HTMLElement {
38
40
  this.quickFilter = createEvent(this, "quickFilter", 3);
39
41
  this.queryChange = createEvent(this, "queryChange", 3);
40
42
  this.filter = createEvent(this, "filter", 3);
41
- this.edit = createEvent(this, "edit", 3);
43
+ this.action = createEvent(this, "action", 3);
42
44
  this.pageChange = createEvent(this, "pageChange", 3);
43
45
  this.pageSizeChange = createEvent(this, "pageSizeChange", 3);
44
46
  this.export = createEvent(this, "export", 3);
45
47
  this.emptyStateActionClick = createEvent(this, "emptyStateActionClick", 3);
46
48
  this._ctrlDown = false;
47
49
  this._hasCustomFilterSlot = false;
50
+ this._hasFloatingMenuItems = false;
48
51
  this.items = undefined;
49
52
  this.loading = false;
50
53
  this.headerLoading = false;
@@ -53,6 +56,13 @@ const Table = /*@__PURE__*/ proxyCustomElement(class Table extends HTMLElement {
53
56
  this.enableRowSelection = true;
54
57
  this.enableRowClick = true;
55
58
  this.selectedRows = [];
59
+ this.enableFloatingMenu = true;
60
+ this.floatingMenuAmountSelectedTemplate = (amount) => {
61
+ var _a, _b, _c;
62
+ return formatTranslation((_c = (amount === 1
63
+ ? (_a = this._locales.floating_menu) === null || _a === void 0 ? void 0 : _a.amount_selected
64
+ : (_b = this._locales.floating_menu) === null || _b === void 0 ? void 0 : _b.amount_selected_plural)) === null || _c === void 0 ? void 0 : _c.replace('{{amount}}', amount));
65
+ };
56
66
  this.selectionKey = undefined;
57
67
  this.canSelectKey = undefined;
58
68
  this.enableHeader = true;
@@ -63,11 +73,12 @@ const Table = /*@__PURE__*/ proxyCustomElement(class Table extends HTMLElement {
63
73
  this.enableFilter = true;
64
74
  this.selectedFiltersAmount = undefined;
65
75
  this.filterButtonTemplate = undefined;
66
- this.enableEdit = true;
67
- this.editButtonLoading = false;
68
- this.editButtonIcon = 'pencil';
69
- this.editButtonText = undefined;
70
- this.editButtonTemplate = undefined;
76
+ this.enableAction = false;
77
+ this.actionButtonLoading = false;
78
+ this.actionButtonEnabled = false;
79
+ this.actionButtonIcon = 'pencil';
80
+ this.actionButtonText = undefined;
81
+ this.actionButtonTemplate = undefined;
71
82
  this.enableFooter = true;
72
83
  this.enablePageSize = true;
73
84
  this.enablePagination = true;
@@ -89,6 +100,10 @@ const Table = /*@__PURE__*/ proxyCustomElement(class Table extends HTMLElement {
89
100
  }
90
101
  componentWillLoad() {
91
102
  this._hasCustomFilterSlot = !!this._el.querySelector(':scope > [slot="custom-filter"]');
103
+ this._hasFloatingMenuItems = !!this._el.querySelectorAll(':scope > [slot="floating-menu-item"]').length;
104
+ if (this.enableRowSelection) {
105
+ console.log(this._hasFloatingMenuItems, this._el.querySelectorAll(':scope > [slot="floating-menu-item"]'));
106
+ }
92
107
  this._setLocales();
93
108
  this._parseItems(this.items);
94
109
  this._generateColumns();
@@ -97,7 +112,7 @@ const Table = /*@__PURE__*/ proxyCustomElement(class Table extends HTMLElement {
97
112
  this.hasRendered.emit();
98
113
  }
99
114
  render() {
100
- var _a, _b;
115
+ var _a, _b, _c;
101
116
  return (h(Host, { class: "p-table" }, h("p-table-container", null, this.enableHeader && (h("p-table-header", {
102
117
  // quick filters
103
118
  quickFilters: this.quickFilters, activeQuickFilterIdentifier: this.activeQuickFilterIdentifier, onQuickFilter: ({ detail }) => this.quickFilter.emit(detail),
@@ -105,8 +120,8 @@ const Table = /*@__PURE__*/ proxyCustomElement(class Table extends HTMLElement {
105
120
  enableSearch: this.enableSearch, query: this.query, onQueryChange: ({ detail }) => this.queryChange.emit(detail),
106
121
  // filter button
107
122
  enableFilter: this.enableFilter, selectedFiltersAmount: this.selectedFiltersAmount, filterButtonTemplate: this.filterButtonTemplate, onFilter: () => this.filter.emit(),
108
- // edit button
109
- enableEdit: this.enableEdit, editIcon: this.editButtonIcon, editText: this.editButtonText, editLoading: this.editButtonLoading, canEdit: !!((_a = this.selectedRows) === null || _a === void 0 ? void 0 : _a.length), editButtonTemplate: this.editButtonTemplate, onEdit: () => this.edit.emit(), itemsSelectedAmount: (_b = this.selectedRows) === null || _b === void 0 ? void 0 : _b.length,
123
+ // action button
124
+ enableAction: this.enableAction, actionIcon: this.actionButtonIcon, actionText: this.actionButtonText, actionLoading: this.actionButtonLoading, canUseAction: this.actionButtonEnabled, actionButtonTemplate: this.actionButtonTemplate, onAction: () => this.action.emit(), itemsSelectedAmount: (_a = this.selectedRows) === null || _a === void 0 ? void 0 : _a.length,
110
125
  //loading
111
126
  loading: this.headerLoading
112
127
  }, this._hasCustomFilterSlot && (h("slot", { name: "custom-filter", slot: "custom-filter" })))), this._getHeader(), h("div", { class: "flex flex-col" }, this._getRows()), this.enableFooter && (h("p-table-footer", {
@@ -120,7 +135,11 @@ const Table = /*@__PURE__*/ proxyCustomElement(class Table extends HTMLElement {
120
135
  enableExport: this.enableExport, onExport: () => this.export.emit(),
121
136
  //loading
122
137
  loading: this.footerLoading
123
- })))));
138
+ })), this.enableFloatingMenu ? (h("p-floating-menu-container", { usedInTable: true, class: ((_b = this.selectedRows) === null || _b === void 0 ? void 0 : _b.length) ? '' : 'inactive' }, h("p-floating-menu-item", { hover: false, slot: "floating-menu-item", class: this._hasFloatingMenuItems
139
+ ? 'hide-mobile'
140
+ : '' }, this.floatingMenuAmountSelectedTemplate((_c = this.selectedRows) === null || _c === void 0 ? void 0 : _c.length)), h("p-divider", { class: `mx-0 text-storm ${this._hasFloatingMenuItems
141
+ ? 'hide-mobile'
142
+ : ''}`, variant: "vertical", slot: "floating-menu-item" }), this._hasFloatingMenuItems && (h("slot", { name: "floating-menu-item" })), this._hasFloatingMenuItems && (h("p-divider", { class: "mx-0 text-storm", variant: "vertical", slot: "floating-menu-item" })), h("p-floating-menu-item", { slot: "floating-menu-item", onClick: () => this._selectAllChange(null, false) }, h("p-icon", { variant: "negative" })))) : (''))));
124
143
  }
125
144
  async _setLocales() {
126
145
  this._locales = await getLocaleComponentStrings(this._el);
@@ -165,7 +184,7 @@ const Table = /*@__PURE__*/ proxyCustomElement(class Table extends HTMLElement {
165
184
  }
166
185
  _getHeader() {
167
186
  return (h("p-table-row", { variant: "header" }, this._columns.map((col, index) => (h("p-table-cell", { definition: col, value: col.name, variant: "header", checkbox: index === 0 || col.hasCheckbox
168
- ? this._getCheckbox(null, 'loading')
187
+ ? this._getCheckbox(null, this.loading ? 'loading' : 'header')
169
188
  : null, index: index })))));
170
189
  }
171
190
  _getRows() {
@@ -214,11 +233,13 @@ const Table = /*@__PURE__*/ proxyCustomElement(class Table extends HTMLElement {
214
233
  return (h("div", { class: `flex max-w-[20rem] flex-col items-center self-center py-24 text-center ${this.enableEmptyStateAction && 'cursor-pointer'}`, onClick: () => this.enableEmptyStateAction &&
215
234
  this.emptyStateActionClick.emit(null) }, h("p-illustration", { variant: "empty-state-add", class: "mb-6" }), h("p", { class: "text-storm-default font-semibold" }, this.emptyStateHeader()), h("p", { class: "mb-6 text-sm text-storm-medium" }, this.emptyStateContent()), this.enableEmptyStateAction && (h("p-button", { variant: "secondary", icon: "plus", size: "small" }, this.emptyStateAction()))));
216
235
  }
217
- _selectAllChange($event) {
236
+ _selectAllChange($event, forceValue) {
218
237
  if (!this.enableRowSelection) {
219
238
  return;
220
239
  }
221
- const value = this._getCheckedValue($event.target);
240
+ const value = forceValue === undefined
241
+ ? this._getCheckedValue($event.target)
242
+ : forceValue;
222
243
  if (value) {
223
244
  const toAdd = [];
224
245
  for (let i = 0; i < this._items.length; i++) {
@@ -381,6 +402,8 @@ const Table = /*@__PURE__*/ proxyCustomElement(class Table extends HTMLElement {
381
402
  "enableRowSelection": [4, "enable-row-selection"],
382
403
  "enableRowClick": [4, "enable-row-click"],
383
404
  "selectedRows": [16],
405
+ "enableFloatingMenu": [4, "enable-floating-menu"],
406
+ "floatingMenuAmountSelectedTemplate": [16],
384
407
  "selectionKey": [1, "selection-key"],
385
408
  "canSelectKey": [1, "can-select-key"],
386
409
  "enableHeader": [4, "enable-header"],
@@ -391,11 +414,12 @@ const Table = /*@__PURE__*/ proxyCustomElement(class Table extends HTMLElement {
391
414
  "enableFilter": [4, "enable-filter"],
392
415
  "selectedFiltersAmount": [2, "selected-filters-amount"],
393
416
  "filterButtonTemplate": [16],
394
- "enableEdit": [4, "enable-edit"],
395
- "editButtonLoading": [4, "edit-button-loading"],
396
- "editButtonIcon": [1, "edit-button-icon"],
397
- "editButtonText": [1, "edit-button-text"],
398
- "editButtonTemplate": [16],
417
+ "enableAction": [4, "enable-action"],
418
+ "actionButtonLoading": [4, "action-button-loading"],
419
+ "actionButtonEnabled": [4, "action-button-enabled"],
420
+ "actionButtonIcon": [1, "action-button-icon"],
421
+ "actionButtonText": [1, "action-button-text"],
422
+ "actionButtonTemplate": [16],
399
423
  "enableFooter": [4, "enable-footer"],
400
424
  "enablePageSize": [4, "enable-page-size"],
401
425
  "enablePagination": [4, "enable-pagination"],
@@ -421,7 +445,7 @@ function defineCustomElement$1() {
421
445
  if (typeof customElements === "undefined") {
422
446
  return;
423
447
  }
424
- const components = ["p-table", "p-button", "p-divider", "p-dropdown", "p-dropdown-menu-container", "p-dropdown-menu-item", "p-helper", "p-icon", "p-illustration", "p-input-error", "p-input-group", "p-label", "p-loader", "p-page-size-select", "p-pagination", "p-pagination-item", "p-segment-container", "p-segment-item", "p-table-cell", "p-table-container", "p-table-footer", "p-table-header", "p-table-row", "p-tooltip"];
448
+ const components = ["p-table", "p-button", "p-divider", "p-dropdown", "p-dropdown-menu-container", "p-dropdown-menu-item", "p-floating-menu-container", "p-floating-menu-item", "p-helper", "p-icon", "p-illustration", "p-input-error", "p-input-group", "p-label", "p-loader", "p-page-size-select", "p-pagination", "p-pagination-item", "p-segment-container", "p-segment-item", "p-table-cell", "p-table-container", "p-table-footer", "p-table-header", "p-table-row", "p-tooltip"];
425
449
  components.forEach(tagName => { switch (tagName) {
426
450
  case "p-table":
427
451
  if (!customElements.get(tagName)) {
@@ -430,25 +454,35 @@ function defineCustomElement$1() {
430
454
  break;
431
455
  case "p-button":
432
456
  if (!customElements.get(tagName)) {
433
- defineCustomElement$o();
457
+ defineCustomElement$q();
434
458
  }
435
459
  break;
436
460
  case "p-divider":
437
461
  if (!customElements.get(tagName)) {
438
- defineCustomElement$n();
462
+ defineCustomElement$p();
439
463
  }
440
464
  break;
441
465
  case "p-dropdown":
442
466
  if (!customElements.get(tagName)) {
443
- defineCustomElement$m();
467
+ defineCustomElement$o();
444
468
  }
445
469
  break;
446
470
  case "p-dropdown-menu-container":
447
471
  if (!customElements.get(tagName)) {
448
- defineCustomElement$l();
472
+ defineCustomElement$n();
449
473
  }
450
474
  break;
451
475
  case "p-dropdown-menu-item":
476
+ if (!customElements.get(tagName)) {
477
+ defineCustomElement$m();
478
+ }
479
+ break;
480
+ case "p-floating-menu-container":
481
+ if (!customElements.get(tagName)) {
482
+ defineCustomElement$l();
483
+ }
484
+ break;
485
+ case "p-floating-menu-item":
452
486
  if (!customElements.get(tagName)) {
453
487
  defineCustomElement$k();
454
488
  }
@@ -1 +1 @@
1
- {"file":"p-table.js","mappings":"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","names":[],"sources":["src/components/organisms/table/table.component.scss?tag=p-table","src/components/organisms/table/table.component.tsx"],"sourcesContent":["p-table {\n @apply flex flex-col;\n\n .p-input[type='checkbox'] {\n flex-shrink: 0;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n Watch,\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 defaultSize,\n defaultSizeOptions,\n} from '../../molecules/page-size-select/constants';\nimport { buttonTemplateFunc } from '../../molecules/table-header/table-header.component';\n\nexport type templateFunc = () => string;\n\n@Component({\n tag: 'p-table',\n styleUrl: 'table.component.scss',\n})\nexport class Table {\n /**\n * The items to be fed to the table\n */\n @Prop() items: string;\n\n /**\n * Wether data is loading\n */\n @Prop() loading: boolean = false;\n\n /**\n * Wether the header should show loading state\n */\n @Prop() headerLoading: boolean = false;\n\n /**\n * Wether the footer should show loading state\n */\n @Prop() footerLoading: boolean = false;\n\n /**\n * The amount of loading rows to show\n */\n @Prop() amountOfLoadingRows: number = 6;\n\n /**\n * Wether to enable selection\n */\n @Prop() enableRowSelection: boolean = true;\n\n /**\n * Wether to enable row clicking\n */\n @Prop() enableRowClick: boolean = true;\n\n /**\n * The current selection of items\n */\n @Prop() selectedRows: any[] = [];\n\n /**\n * Event whenever the current selection changes\n */\n @Event({\n bubbles: false,\n })\n selectedRowsChange: EventEmitter<any>;\n\n /**\n * The key to determine if a row is selected\n */\n @Prop() selectionKey: string;\n\n /**\n * A key to determine if a row can be selected\n */\n @Prop() canSelectKey: string;\n\n /**\n * Event whenever a row is clicked\n */\n @Event({\n bubbles: false,\n })\n rowClick: EventEmitter<RowClickEvent>;\n\n /**\n * Event whenever a row is selected\n */\n @Event({\n bubbles: false,\n })\n rowSelected: EventEmitter<any>;\n\n /**\n * Event whenever a row is deselected\n */\n @Event({\n bubbles: false,\n })\n rowDeselected: EventEmitter<any>;\n\n /**\n * Event when the table has rendered\n */\n @Event({\n bubbles: false,\n })\n hasRendered: EventEmitter<number>;\n\n /** START HEADER */\n\n /**\n * Wether to show the header\n */\n @Prop() enableHeader: boolean = true;\n\n /**\n * Quick filters to show\n */\n @Prop() quickFilters: QuickFilter[] = [];\n\n /**\n * Active quick filter identifier\n */\n @Prop() activeQuickFilterIdentifier: string;\n\n /**\n * Wether to show the search input\n */\n @Prop() enableSearch: boolean = true;\n\n /**\n * The query to show in the search bar\n */\n @Prop({ mutable: true }) query: string;\n\n /**\n * Wether to show the filter button\n */\n @Prop() enableFilter: boolean = true;\n\n /**\n * The amount of filters being selected\n */\n @Prop() selectedFiltersAmount: number;\n\n /**\n * The template for the filter button text\n */\n @Prop() filterButtonTemplate: templateFunc;\n\n /**\n * Wether to show the edit button\n */\n @Prop() enableEdit: boolean = true;\n\n /**\n * Wether the edit button is loading\n */\n @Prop() editButtonLoading: boolean = false;\n\n /**\n * The edit button icon\n */\n @Prop() editButtonIcon: IconVariant = 'pencil';\n\n /**\n * The edit button text if changed\n */\n @Prop() editButtonText: string;\n\n /**\n * The template for the edit button text\n */\n @Prop() editButtonTemplate: buttonTemplateFunc;\n\n /**\n * Event when one of the quick filters is clicked\n */\n @Event({\n bubbles: false,\n })\n quickFilter: EventEmitter<QuickFilter>;\n\n /**\n * Event when the query changes\n */\n @Event({\n bubbles: false,\n })\n queryChange: EventEmitter<string>;\n\n /**\n * Event when the filter button is clicked\n */\n @Event({\n bubbles: false,\n })\n filter: EventEmitter<null>;\n\n /**\n * Event when the edit button is clicked\n */\n @Event({\n bubbles: false,\n })\n edit: EventEmitter<null>;\n\n /** START FOOTER */\n\n /**\n * Wether to show the header\n */\n @Prop() enableFooter: boolean = true;\n\n /**\n * Wether to enable page size select\n */\n @Prop() enablePageSize: boolean = true;\n\n /**\n * Wether to enable pagination\n */\n @Prop() enablePagination: boolean = true;\n\n /**\n * Wether to enable export\n */\n @Prop() enableExport: boolean = true;\n\n /**\n * The current page\n */\n @Prop({ mutable: true, reflect: true }) page: number = 1;\n\n /**\n * The total amount of items\n */\n @Prop() total!: number;\n\n /**\n * Event whenever the page changes\n */\n @Event({\n bubbles: false,\n })\n pageChange: EventEmitter<number>;\n\n /**\n * The amount of items per page\n */\n @Prop() pageSize: number = defaultSize;\n\n /**\n * The options for the page size\n */\n @Prop() pageSizeOptions: number[] = defaultSizeOptions;\n\n /**\n * Event whenever the page changes\n */\n @Event({\n bubbles: false,\n })\n pageSizeChange: EventEmitter<number>;\n\n /**\n * Event whenever the page changes\n */\n @Event({\n bubbles: false,\n })\n export: EventEmitter<number>;\n\n /**\n * Wether to hide when there is only 1 page available\n */\n @Prop() hideOnSinglePage: boolean = true;\n\n /* Empty state start */\n @Prop() emptyStateHeader: templateFunc = () =>\n formatTranslation(this._locales.empty_state?.no_filter.header);\n @Prop() emptyStateContent: templateFunc = () =>\n formatTranslation(this._locales.empty_state?.no_filter.content);\n @Prop() emptyStateAction: templateFunc = () =>\n formatTranslation(this._locales.empty_state?.no_filter.action);\n /**\n * Wether to enable empty state action\n */\n @Prop() enableEmptyStateAction: boolean = true;\n\n @Prop() emptyStateFilteredHeader: templateFunc = () =>\n formatTranslation(this._locales.empty_state.filtered.header);\n @Prop() emptyStateFilteredContent: templateFunc = () =>\n formatTranslation(this._locales.empty_state.filtered.content);\n\n /**\n * Event whenever the empty state is clicked\n */\n @Event({\n bubbles: false,\n })\n emptyStateActionClick: EventEmitter<null>;\n\n /* Empty state end */\n\n /**\n * The host element\n */\n @Element() private _el: HTMLElement;\n\n /**\n * Locales used for this component\n */\n @State() private _locales: any = {};\n\n @State() private _columns: any[] = [];\n @State() private _items: any[] = [];\n\n private _ctrlDown = false;\n private _hasCustomFilterSlot = false;\n\n componentWillLoad() {\n this._hasCustomFilterSlot = !!this._el.querySelector(\n ':scope > [slot=\"custom-filter\"]'\n );\n\n this._setLocales();\n this._parseItems(this.items);\n this._generateColumns();\n }\n\n componentDidRender() {\n this.hasRendered.emit();\n }\n\n render() {\n return (\n <Host class=\"p-table\">\n <p-table-container>\n {this.enableHeader && (\n <p-table-header\n // quick filters\n quickFilters={this.quickFilters}\n activeQuickFilterIdentifier={\n this.activeQuickFilterIdentifier\n }\n onQuickFilter={({ detail }) =>\n this.quickFilter.emit(detail)\n }\n // search\n enableSearch={this.enableSearch}\n query={this.query}\n onQueryChange={({ detail }) =>\n this.queryChange.emit(detail)\n }\n // filter button\n enableFilter={this.enableFilter}\n selectedFiltersAmount={this.selectedFiltersAmount}\n filterButtonTemplate={this.filterButtonTemplate}\n onFilter={() => this.filter.emit()}\n // edit button\n enableEdit={this.enableEdit}\n editIcon={this.editButtonIcon}\n editText={this.editButtonText}\n editLoading={this.editButtonLoading}\n canEdit={!!this.selectedRows?.length}\n editButtonTemplate={this.editButtonTemplate}\n onEdit={() => this.edit.emit()}\n itemsSelectedAmount={this.selectedRows?.length}\n //loading\n loading={this.headerLoading}\n >\n {this._hasCustomFilterSlot && (\n <slot\n name=\"custom-filter\"\n slot=\"custom-filter\"\n />\n )}\n </p-table-header>\n )}\n\n {this._getHeader()}\n <div class=\"flex flex-col\">{this._getRows()}</div>\n\n {this.enableFooter && (\n <p-table-footer\n // overall\n hideOnSinglePage={this.hideOnSinglePage}\n // page size select\n enablePageSize={this.enablePageSize}\n pageSize={this.pageSize}\n pageSizeOptions={this.pageSizeOptions}\n onPageSizeChange={({ detail }) =>\n this.pageSizeChange.emit(detail)\n }\n // pagination\n enablePagination={this.enablePagination}\n page={this.page}\n total={this.total}\n onPageChange={({ detail }) =>\n this.pageChange.emit(detail)\n }\n // export\n enableExport={this.enableExport}\n onExport={() => this.export.emit()}\n //loading\n loading={this.footerLoading}\n ></p-table-footer>\n )}\n </p-table-container>\n </Host>\n );\n }\n\n @Listen('localeChanged', { target: 'body' })\n private async _setLocales(): Promise<void> {\n this._locales = await getLocaleComponentStrings(this._el);\n }\n\n @Listen('tableDefinitionChanged', { target: 'body' })\n onTableDefinitionUpdated() {\n this._generateColumns();\n }\n\n @Listen('keydown', { target: 'document' })\n keyDown({ key }) {\n if (key !== 'Control' || this._ctrlDown === true) {\n return;\n }\n\n this._ctrlDown = true;\n }\n\n @Listen('keyup', { target: 'document' })\n keyUp({ key }) {\n if (key !== 'Control' || this._ctrlDown === false) {\n return;\n }\n\n this._ctrlDown = false;\n }\n\n @Listen('visibilitychange', { target: 'document' })\n visibilityChange() {\n if (document.visibilityState !== 'hidden' || this._ctrlDown === false) {\n return;\n }\n\n this._ctrlDown = false;\n }\n\n @Watch('items')\n private _parseItems(items: string) {\n if (!items) {\n this._items = [];\n return;\n }\n\n if (Array.isArray(items)) {\n this._items = items;\n return;\n }\n\n this._items = JSON.parse(items);\n }\n\n private _generateColumns() {\n const definitions = this._el.querySelectorAll('p-table-column');\n const definitionsArray = Array.from(definitions);\n\n definitionsArray[definitionsArray.length - 1]['isLast'] = true;\n\n this._columns = definitionsArray;\n }\n\n private _getHeader() {\n return (\n <p-table-row variant=\"header\">\n {this._columns.map((col: TableColumn, index) => (\n <p-table-cell\n definition={col}\n value={col.name}\n variant=\"header\"\n checkbox={\n index === 0 || col.hasCheckbox\n ? this._getCheckbox(null, 'loading')\n : null\n }\n index={index}\n ></p-table-cell>\n ))}\n </p-table-row>\n );\n }\n\n private _getRows() {\n if (this.loading) {\n return Array.from(\n {\n length: this.amountOfLoadingRows,\n },\n (_, i) => (\n <p-table-row\n enableHover={\n this.enableRowSelection || this.enableRowClick\n }\n >\n {this._getLoadingColumns(i)}\n </p-table-row>\n )\n );\n }\n\n if (!this._items.length) {\n return this._getEmptyState();\n }\n\n return this._items.map((item, index) => (\n <p-table-row\n enableHover={this.enableRowSelection || this.enableRowClick}\n onClick={(ev) => this._rowClick(ev, index)}\n >\n {this._getRowColumns(item, index)}\n </p-table-row>\n ));\n }\n\n private _getRowColumns(item, index) {\n return this._columns.map((col: TableColumn, colIndex) => {\n return (\n <p-table-cell\n definition={col}\n item={item}\n checkbox={\n colIndex === 0 || col.hasCheckbox\n ? this._getCheckbox(index)\n : null\n }\n index={colIndex}\n rowIndex={index}\n ></p-table-cell>\n );\n });\n }\n\n private _getLoadingColumns(index) {\n return this._columns.map((col: TableColumn, colIndex) => {\n return (\n <p-table-cell\n definition={col}\n variant=\"loading\"\n checkbox={\n colIndex === 0 || col.hasCheckbox\n ? this._getCheckbox(index, 'loading')\n : null\n }\n index={colIndex}\n rowIndex={index}\n ></p-table-cell>\n );\n });\n }\n\n private _getCheckbox(\n rowIndex,\n variant: 'header' | 'default' | 'loading' = 'default'\n ) {\n if (!this.enableRowSelection || !this.selectionKey) {\n return;\n }\n\n if (variant === 'loading') {\n return <p-loader variant=\"ghost\" class=\"h-6 w-6 rounded\" />;\n }\n\n if (variant === 'header') {\n return (\n <input\n class=\"p-input\"\n type=\"checkbox\"\n onChange={(ev) => this._selectAllChange(ev)}\n checked={this._selectionContainsAll()}\n indeterminate={this._selectionIndeterminate()}\n />\n );\n }\n\n const item = this._items[rowIndex];\n\n return (\n <input\n class=\"p-input\"\n type=\"checkbox\"\n onChange={(ev) => this._checkboxChange(ev?.target, rowIndex)}\n disabled={this.canSelectKey && !item[this.canSelectKey]}\n checked={this._selectionContains(item, rowIndex)}\n />\n );\n }\n\n private _getEmptyState() {\n if (this.query?.length || this.selectedFiltersAmount) {\n return (\n <div class=\"flex max-w-[20rem] flex-col items-center self-center py-24 text-center\">\n <p-illustration variant=\"empty-state-search\" class=\"mb-6\" />\n <p class=\"text-storm-default font-semibold\">\n {this.emptyStateFilteredHeader()}\n </p>\n <p class=\"mb-14 text-sm text-storm-medium\">\n {this.emptyStateFilteredContent()}\n </p>\n </div>\n );\n }\n\n return (\n <div\n class={`flex max-w-[20rem] flex-col items-center self-center py-24 text-center ${\n this.enableEmptyStateAction && 'cursor-pointer'\n }`}\n onClick={() =>\n this.enableEmptyStateAction &&\n this.emptyStateActionClick.emit(null)\n }\n >\n <p-illustration variant=\"empty-state-add\" class=\"mb-6\" />\n <p class=\"text-storm-default font-semibold\">\n {this.emptyStateHeader()}\n </p>\n <p class=\"mb-6 text-sm text-storm-medium\">\n {this.emptyStateContent()}\n </p>\n {this.enableEmptyStateAction && (\n <p-button variant=\"secondary\" icon=\"plus\" size=\"small\">\n {this.emptyStateAction()}\n </p-button>\n )}\n </div>\n );\n }\n\n private _selectAllChange($event: any) {\n if (!this.enableRowSelection) {\n return;\n }\n\n const value = this._getCheckedValue($event.target);\n if (value) {\n const toAdd = [];\n for (let i = 0; i < this._items.length; i++) {\n const row = this._items[i];\n if (this.canSelectKey && !row[this.canSelectKey]) {\n continue;\n }\n\n if (this._selectionContains(row, i)) {\n continue;\n }\n\n toAdd.push(row);\n this.rowSelected.emit(row);\n }\n\n this.selectedRows = [...this.selectedRows, ...toAdd];\n this.selectedRowsChange.emit(this.selectedRows);\n return;\n }\n\n for (let i = 0; i < this.selectedRows.length; i++) {\n const value = this.selectedRows[i];\n const row = this._items.find(\n (d) =>\n this._getSelectionValue(d, i) ===\n this._getSelectionValue(value, i)\n );\n\n if (!row) {\n continue;\n }\n\n this.rowDeselected.emit(row);\n }\n\n this.selectedRows = [];\n this.selectedRowsChange.emit(this.selectedRows);\n }\n\n private _checkboxChange(target: any, index: number) {\n if (!this.enableRowSelection) {\n return;\n }\n\n const row = this._items[index];\n\n if (this.canSelectKey && !row[this.canSelectKey]) {\n target.checked = false;\n return;\n }\n\n const value = this._getCheckedValue(target);\n if (value) {\n this.selectedRows = [...this.selectedRows, row];\n this.selectedRowsChange.emit(this.selectedRows);\n this.rowSelected.emit(row);\n return;\n }\n\n const indexOfToRemove = this._selectionContains(row, index, true);\n\n // we need to do this, because splice does not trigger the selection setter.\n const selection = [...this.selectedRows];\n selection.splice(indexOfToRemove, 1);\n this.selectedRows = selection;\n this.selectedRowsChange.emit(this.selectedRows);\n this.rowDeselected.emit(row);\n }\n\n private _getCheckedValue(target: any) {\n return target?.checked;\n }\n\n private _getSelectionValue(row: any, index: number) {\n return this.selectionKey ? row?.[this.selectionKey] || index : index;\n }\n\n private _selectionContains(row, index, returnIndex = false): any {\n const returnValue = this.selectedRows.findIndex(\n (item) =>\n this._getSelectionValue(row, index) ===\n this._getSelectionValue(item, index)\n );\n return !returnIndex ? returnValue >= 0 : returnValue;\n }\n\n private _selectionContainsAll() {\n let returnValue = true;\n if (!this._items?.length) {\n return false;\n }\n\n for (let i = 0; i < this._items?.length; i++) {\n const item = this._items[i];\n const contains = this._selectionContains(item, i);\n\n if (!contains) {\n returnValue = false;\n break;\n }\n }\n\n return returnValue;\n }\n\n private _selectionIndeterminate() {\n if (!this._items?.length || !this.selectedRows?.length) {\n return false;\n }\n\n let containsCount = 0;\n for (let i = 0; i < this._items?.length; i++) {\n const item = this._items[i];\n const contains = this._selectionContains(item, i);\n\n if (contains) {\n containsCount++;\n }\n }\n\n return containsCount > 0 && containsCount !== this._items.length;\n }\n\n private _rowClick($event, index) {\n const target = $event.target;\n\n if (\n target.tagName.toLowerCase() === 'input' ||\n target.type === 'checkbox'\n ) {\n return;\n }\n\n const row = this._findRow($event.target);\n const action = this._findRowAction($event.target);\n\n if (action) {\n return;\n }\n\n if (this.enableRowClick) {\n const item = this._items[index];\n this.rowClick.emit({\n item,\n ctrlDown: this._ctrlDown,\n });\n return;\n }\n\n if (!this.enableRowSelection) {\n return;\n }\n\n const checkbox = row?.querySelector('input[type=\"checkbox\"]');\n\n if (!checkbox) {\n return;\n }\n\n checkbox.checked = !checkbox.checked;\n this._checkboxChange(checkbox, index);\n }\n\n private _findRow(el: HTMLElement) {\n if (!el) {\n return el;\n }\n\n if (el?.tagName?.toLowerCase() === 'p-table-row') {\n return el;\n }\n\n return this._findRow(el?.parentElement);\n }\n\n private _findRowAction(el: HTMLElement) {\n if (!el) {\n return null;\n }\n\n if (\n el.getAttribute('data-is-action') !== null &&\n el.getAttribute('data-is-action') !== 'false'\n ) {\n return el;\n }\n\n if (el?.tagName?.toLowerCase() === 'p-table-row') {\n return null;\n }\n\n return this._findRowAction(el?.parentElement);\n }\n}\n"],"version":3}
1
+ {"file":"p-table.js","mappings":"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","names":[],"sources":["src/components/organisms/table/table.component.scss?tag=p-table","src/components/organisms/table/table.component.tsx"],"sourcesContent":["p-table {\n @apply relative flex flex-col;\n\n .p-input[type='checkbox'] {\n flex-shrink: 0;\n }\n\n p-table-container {\n @apply relative;\n\n p-floating-menu-container {\n @apply fixed bottom-4 left-1/2 -translate-x-1/2 transform;\n animation: forwards floatingMenuContainerIn 0.3s ease !important;\n\n @screen tablet {\n @apply absolute bottom-16;\n }\n\n &.inactive {\n animation: forwards floatingMenuContainerOut 0.3s ease !important;\n }\n\n .hide-mobile {\n @apply hidden tablet:block;\n }\n }\n }\n}\n\n@keyframes floatingMenuContainerOut {\n 0% {\n transform: translateY(0) translateX(-50%);\n opacity: 100;\n }\n 100% {\n transform: translateY(100%) translateX(-50%);\n opacity: 0;\n }\n}\n\n@keyframes floatingMenuContainerIn {\n 0% {\n transform: translateY(100%) translateX(-50%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0) translateX(-50%);\n opacity: 100;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n Watch,\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 defaultSize,\n defaultSizeOptions,\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 tag: 'p-table',\n styleUrl: 'table.component.scss',\n})\nexport class Table {\n /**\n * The items to be fed to the table\n */\n @Prop() items: string;\n\n /**\n * Wether data is loading\n */\n @Prop() loading: boolean = false;\n\n /**\n * Wether the header should show loading state\n */\n @Prop() headerLoading: boolean = false;\n\n /**\n * Wether the footer should show loading state\n */\n @Prop() footerLoading: boolean = false;\n\n /**\n * The amount of loading rows to show\n */\n @Prop() amountOfLoadingRows: number = 6;\n\n /**\n * Wether to enable selection\n */\n @Prop() enableRowSelection: boolean = true;\n\n /**\n * Wether to enable row clicking\n */\n @Prop() enableRowClick: boolean = true;\n\n /**\n * The current selection of items\n */\n @Prop() selectedRows: any[] = [];\n\n /**\n * Wether to enable the floating menu\n */\n @Prop() enableFloatingMenu: boolean = true;\n\n /**\n * The template for amount selected item in the floating menu\n */\n @Prop() floatingMenuAmountSelectedTemplate: amountSelectedTemplateFunc = (\n amount: number\n ) =>\n formatTranslation(\n (amount === 1\n ? this._locales.floating_menu?.amount_selected\n : this._locales.floating_menu?.amount_selected_plural\n )?.replace('{{amount}}', amount)\n );\n\n /**\n * Event whenever the current selection changes\n */\n @Event({\n bubbles: false,\n })\n selectedRowsChange: EventEmitter<any>;\n\n /**\n * The key to determine if a row is selected\n */\n @Prop() selectionKey: string;\n\n /**\n * A key to determine if a row can be selected\n */\n @Prop() canSelectKey: string;\n\n /**\n * Event whenever a row is clicked\n */\n @Event({\n bubbles: false,\n })\n rowClick: EventEmitter<RowClickEvent>;\n\n /**\n * Event whenever a row is selected\n */\n @Event({\n bubbles: false,\n })\n rowSelected: EventEmitter<any>;\n\n /**\n * Event whenever a row is deselected\n */\n @Event({\n bubbles: false,\n })\n rowDeselected: EventEmitter<any>;\n\n /**\n * Event when the table has rendered\n */\n @Event({\n bubbles: false,\n })\n hasRendered: EventEmitter<number>;\n\n /** START HEADER */\n\n /**\n * Wether to show the header\n */\n @Prop() enableHeader: boolean = true;\n\n /**\n * Quick filters to show\n */\n @Prop() quickFilters: QuickFilter[] = [];\n\n /**\n * Active quick filter identifier\n */\n @Prop() activeQuickFilterIdentifier: string;\n\n /**\n * Wether to show the search input\n */\n @Prop() enableSearch: boolean = true;\n\n /**\n * The query to show in the search bar\n */\n @Prop({ mutable: true }) query: string;\n\n /**\n * Wether to show the filter button\n */\n @Prop() enableFilter: boolean = true;\n\n /**\n * The amount of filters being selected\n */\n @Prop() selectedFiltersAmount: number;\n\n /**\n * The template for the filter button text\n */\n @Prop() filterButtonTemplate: templateFunc;\n\n /**\n * Wether to show the action button\n */\n @Prop() enableAction: boolean = false;\n\n /**\n * Wether the action button is loading\n */\n @Prop() actionButtonLoading: boolean = false;\n\n /**\n * Wether the action button is enabled\n */\n @Prop() actionButtonEnabled: boolean = false;\n\n /**\n * The action button icon\n */\n @Prop() actionButtonIcon: IconVariant = 'pencil';\n\n /**\n * The action button text if changed\n */\n @Prop() actionButtonText: string;\n\n /**\n * The template for the action button text\n */\n @Prop() actionButtonTemplate: buttonTemplateFunc;\n\n /**\n * Event when one of the quick filters is clicked\n */\n @Event({\n bubbles: false,\n })\n quickFilter: EventEmitter<QuickFilter>;\n\n /**\n * Event when the query changes\n */\n @Event({\n bubbles: false,\n })\n queryChange: EventEmitter<string>;\n\n /**\n * Event when the filter button is clicked\n */\n @Event({\n bubbles: false,\n })\n filter: EventEmitter<null>;\n\n /**\n * Event when the action button is clicked\n */\n @Event({\n bubbles: false,\n })\n action: EventEmitter<null>;\n\n /** START FOOTER */\n\n /**\n * Wether to show the header\n */\n @Prop() enableFooter: boolean = true;\n\n /**\n * Wether to enable page size select\n */\n @Prop() enablePageSize: boolean = true;\n\n /**\n * Wether to enable pagination\n */\n @Prop() enablePagination: boolean = true;\n\n /**\n * Wether to enable export\n */\n @Prop() enableExport: boolean = true;\n\n /**\n * The current page\n */\n @Prop({ mutable: true, reflect: true }) page: number = 1;\n\n /**\n * The total amount of items\n */\n @Prop() total!: number;\n\n /**\n * Event whenever the page changes\n */\n @Event({\n bubbles: false,\n })\n pageChange: EventEmitter<number>;\n\n /**\n * The amount of items per page\n */\n @Prop() pageSize: number = defaultSize;\n\n /**\n * The options for the page size\n */\n @Prop() pageSizeOptions: number[] = defaultSizeOptions;\n\n /**\n * Event whenever the page changes\n */\n @Event({\n bubbles: false,\n })\n pageSizeChange: EventEmitter<number>;\n\n /**\n * Event whenever the page changes\n */\n @Event({\n bubbles: false,\n })\n export: EventEmitter<number>;\n\n /**\n * Wether to hide when there is only 1 page available\n */\n @Prop() hideOnSinglePage: boolean = true;\n\n /* Empty state start */\n @Prop() emptyStateHeader: templateFunc = () =>\n formatTranslation(this._locales.empty_state?.no_filter.header);\n @Prop() emptyStateContent: templateFunc = () =>\n formatTranslation(this._locales.empty_state?.no_filter.content);\n @Prop() emptyStateAction: templateFunc = () =>\n formatTranslation(this._locales.empty_state?.no_filter.action);\n /**\n * Wether to enable empty state action\n */\n @Prop() enableEmptyStateAction: boolean = true;\n\n @Prop() emptyStateFilteredHeader: templateFunc = () =>\n formatTranslation(this._locales.empty_state.filtered.header);\n @Prop() emptyStateFilteredContent: templateFunc = () =>\n formatTranslation(this._locales.empty_state.filtered.content);\n\n /**\n * Event whenever the empty state is clicked\n */\n @Event({\n bubbles: false,\n })\n emptyStateActionClick: EventEmitter<null>;\n\n /* Empty state end */\n\n /**\n * The host element\n */\n @Element() private _el: HTMLElement;\n\n /**\n * Locales used for this component\n */\n @State() private _locales: any = {};\n\n @State() private _columns: any[] = [];\n @State() private _items: any[] = [];\n\n private _ctrlDown = false;\n private _hasCustomFilterSlot = false;\n private _hasFloatingMenuItems = false;\n\n componentWillLoad() {\n this._hasCustomFilterSlot = !!this._el.querySelector(\n ':scope > [slot=\"custom-filter\"]'\n );\n this._hasFloatingMenuItems = !!this._el.querySelectorAll(\n ':scope > [slot=\"floating-menu-item\"]'\n ).length;\n\n if (this.enableRowSelection) {\n console.log(\n this._hasFloatingMenuItems,\n this._el.querySelectorAll(\n ':scope > [slot=\"floating-menu-item\"]'\n )\n );\n }\n\n this._setLocales();\n this._parseItems(this.items);\n this._generateColumns();\n }\n\n componentDidRender() {\n this.hasRendered.emit();\n }\n\n render() {\n return (\n <Host class=\"p-table\">\n <p-table-container>\n {this.enableHeader && (\n <p-table-header\n // quick filters\n quickFilters={this.quickFilters}\n activeQuickFilterIdentifier={\n this.activeQuickFilterIdentifier\n }\n onQuickFilter={({ detail }) =>\n this.quickFilter.emit(detail)\n }\n // search\n enableSearch={this.enableSearch}\n query={this.query}\n onQueryChange={({ detail }) =>\n this.queryChange.emit(detail)\n }\n // filter button\n enableFilter={this.enableFilter}\n selectedFiltersAmount={this.selectedFiltersAmount}\n filterButtonTemplate={this.filterButtonTemplate}\n onFilter={() => this.filter.emit()}\n // action button\n enableAction={this.enableAction}\n actionIcon={this.actionButtonIcon}\n actionText={this.actionButtonText}\n actionLoading={this.actionButtonLoading}\n canUseAction={this.actionButtonEnabled}\n actionButtonTemplate={this.actionButtonTemplate}\n onAction={() => this.action.emit()}\n itemsSelectedAmount={this.selectedRows?.length}\n //loading\n loading={this.headerLoading}\n >\n {this._hasCustomFilterSlot && (\n <slot\n name=\"custom-filter\"\n slot=\"custom-filter\"\n />\n )}\n </p-table-header>\n )}\n\n {this._getHeader()}\n <div class=\"flex flex-col\">{this._getRows()}</div>\n\n {this.enableFooter && (\n <p-table-footer\n // overall\n hideOnSinglePage={this.hideOnSinglePage}\n // page size select\n enablePageSize={this.enablePageSize}\n pageSize={this.pageSize}\n pageSizeOptions={this.pageSizeOptions}\n onPageSizeChange={({ detail }) =>\n this.pageSizeChange.emit(detail)\n }\n // pagination\n enablePagination={this.enablePagination}\n page={this.page}\n total={this.total}\n onPageChange={({ detail }) =>\n this.pageChange.emit(detail)\n }\n // export\n enableExport={this.enableExport}\n onExport={() => this.export.emit()}\n //loading\n loading={this.footerLoading}\n ></p-table-footer>\n )}\n\n {this.enableFloatingMenu ? (\n <p-floating-menu-container\n usedInTable={true}\n class={this.selectedRows?.length ? '' : 'inactive'}\n >\n <p-floating-menu-item\n hover={false}\n slot=\"floating-menu-item\"\n class={\n this._hasFloatingMenuItems\n ? 'hide-mobile'\n : ''\n }\n >\n {this.floatingMenuAmountSelectedTemplate(\n this.selectedRows?.length\n )}\n </p-floating-menu-item>\n <p-divider\n class={`mx-0 text-storm ${\n this._hasFloatingMenuItems\n ? 'hide-mobile'\n : ''\n }`}\n variant=\"vertical\"\n slot=\"floating-menu-item\"\n />\n {this._hasFloatingMenuItems && (\n <slot name=\"floating-menu-item\"></slot>\n )}\n {this._hasFloatingMenuItems && (\n <p-divider\n class=\"mx-0 text-storm\"\n variant=\"vertical\"\n slot=\"floating-menu-item\"\n />\n )}\n <p-floating-menu-item\n slot=\"floating-menu-item\"\n onClick={() =>\n this._selectAllChange(null, false)\n }\n >\n <p-icon variant=\"negative\" />\n </p-floating-menu-item>\n </p-floating-menu-container>\n ) : (\n ''\n )}\n </p-table-container>\n </Host>\n );\n }\n\n @Listen('localeChanged', { target: 'body' })\n private async _setLocales(): Promise<void> {\n this._locales = await getLocaleComponentStrings(this._el);\n }\n\n @Listen('tableDefinitionChanged', { target: 'body' })\n onTableDefinitionUpdated() {\n this._generateColumns();\n }\n\n @Listen('keydown', { target: 'document' })\n keyDown({ key }) {\n if (key !== 'Control' || this._ctrlDown === true) {\n return;\n }\n\n this._ctrlDown = true;\n }\n\n @Listen('keyup', { target: 'document' })\n keyUp({ key }) {\n if (key !== 'Control' || this._ctrlDown === false) {\n return;\n }\n\n this._ctrlDown = false;\n }\n\n @Listen('visibilitychange', { target: 'document' })\n visibilityChange() {\n if (document.visibilityState !== 'hidden' || this._ctrlDown === false) {\n return;\n }\n\n this._ctrlDown = false;\n }\n\n @Watch('items')\n private _parseItems(items: string) {\n if (!items) {\n this._items = [];\n return;\n }\n\n if (Array.isArray(items)) {\n this._items = items;\n return;\n }\n\n this._items = JSON.parse(items);\n }\n\n private _generateColumns() {\n const definitions = this._el.querySelectorAll('p-table-column');\n const definitionsArray = Array.from(definitions);\n\n definitionsArray[definitionsArray.length - 1]['isLast'] = true;\n\n this._columns = definitionsArray;\n }\n\n private _getHeader() {\n return (\n <p-table-row variant=\"header\">\n {this._columns.map((col: TableColumn, index) => (\n <p-table-cell\n definition={col}\n value={col.name}\n variant=\"header\"\n checkbox={\n index === 0 || col.hasCheckbox\n ? this._getCheckbox(\n null,\n this.loading ? 'loading' : 'header'\n )\n : null\n }\n index={index}\n ></p-table-cell>\n ))}\n </p-table-row>\n );\n }\n\n private _getRows() {\n if (this.loading) {\n return Array.from(\n {\n length: this.amountOfLoadingRows,\n },\n (_, i) => (\n <p-table-row\n enableHover={\n this.enableRowSelection || this.enableRowClick\n }\n >\n {this._getLoadingColumns(i)}\n </p-table-row>\n )\n );\n }\n\n if (!this._items.length) {\n return this._getEmptyState();\n }\n\n return this._items.map((item, index) => (\n <p-table-row\n enableHover={this.enableRowSelection || this.enableRowClick}\n onClick={(ev) => this._rowClick(ev, index)}\n >\n {this._getRowColumns(item, index)}\n </p-table-row>\n ));\n }\n\n private _getRowColumns(item, index) {\n return this._columns.map((col: TableColumn, colIndex) => {\n return (\n <p-table-cell\n definition={col}\n item={item}\n checkbox={\n colIndex === 0 || col.hasCheckbox\n ? this._getCheckbox(index)\n : null\n }\n index={colIndex}\n rowIndex={index}\n ></p-table-cell>\n );\n });\n }\n\n private _getLoadingColumns(index) {\n return this._columns.map((col: TableColumn, colIndex) => {\n return (\n <p-table-cell\n definition={col}\n variant=\"loading\"\n checkbox={\n colIndex === 0 || col.hasCheckbox\n ? this._getCheckbox(index, 'loading')\n : null\n }\n index={colIndex}\n rowIndex={index}\n ></p-table-cell>\n );\n });\n }\n\n private _getCheckbox(\n rowIndex,\n variant: 'header' | 'default' | 'loading' = 'default'\n ) {\n if (!this.enableRowSelection || !this.selectionKey) {\n return;\n }\n\n if (variant === 'loading') {\n return <p-loader variant=\"ghost\" class=\"h-6 w-6 rounded\" />;\n }\n\n if (variant === 'header') {\n return (\n <input\n class=\"p-input\"\n type=\"checkbox\"\n onChange={(ev) => this._selectAllChange(ev)}\n checked={this._selectionContainsAll()}\n indeterminate={this._selectionIndeterminate()}\n />\n );\n }\n\n const item = this._items[rowIndex];\n\n return (\n <input\n class=\"p-input\"\n type=\"checkbox\"\n onChange={(ev) => this._checkboxChange(ev?.target, rowIndex)}\n disabled={this.canSelectKey && !item[this.canSelectKey]}\n checked={this._selectionContains(item, rowIndex)}\n />\n );\n }\n\n private _getEmptyState() {\n if (this.query?.length || this.selectedFiltersAmount) {\n return (\n <div class=\"flex max-w-[20rem] flex-col items-center self-center py-24 text-center\">\n <p-illustration variant=\"empty-state-search\" class=\"mb-6\" />\n <p class=\"text-storm-default font-semibold\">\n {this.emptyStateFilteredHeader()}\n </p>\n <p class=\"mb-14 text-sm text-storm-medium\">\n {this.emptyStateFilteredContent()}\n </p>\n </div>\n );\n }\n\n return (\n <div\n class={`flex max-w-[20rem] flex-col items-center self-center py-24 text-center ${\n this.enableEmptyStateAction && 'cursor-pointer'\n }`}\n onClick={() =>\n this.enableEmptyStateAction &&\n this.emptyStateActionClick.emit(null)\n }\n >\n <p-illustration variant=\"empty-state-add\" class=\"mb-6\" />\n <p class=\"text-storm-default font-semibold\">\n {this.emptyStateHeader()}\n </p>\n <p class=\"mb-6 text-sm text-storm-medium\">\n {this.emptyStateContent()}\n </p>\n {this.enableEmptyStateAction && (\n <p-button variant=\"secondary\" icon=\"plus\" size=\"small\">\n {this.emptyStateAction()}\n </p-button>\n )}\n </div>\n );\n }\n\n private _selectAllChange($event: any, forceValue?: boolean) {\n if (!this.enableRowSelection) {\n return;\n }\n\n const value =\n forceValue === undefined\n ? this._getCheckedValue($event.target)\n : forceValue;\n if (value) {\n const toAdd = [];\n for (let i = 0; i < this._items.length; i++) {\n const row = this._items[i];\n if (this.canSelectKey && !row[this.canSelectKey]) {\n continue;\n }\n\n if (this._selectionContains(row, i)) {\n continue;\n }\n\n toAdd.push(row);\n this.rowSelected.emit(row);\n }\n\n this.selectedRows = [...this.selectedRows, ...toAdd];\n this.selectedRowsChange.emit(this.selectedRows);\n return;\n }\n\n for (let i = 0; i < this.selectedRows.length; i++) {\n const value = this.selectedRows[i];\n const row = this._items.find(\n (d) =>\n this._getSelectionValue(d, i) ===\n this._getSelectionValue(value, i)\n );\n\n if (!row) {\n continue;\n }\n\n this.rowDeselected.emit(row);\n }\n\n this.selectedRows = [];\n this.selectedRowsChange.emit(this.selectedRows);\n }\n\n private _checkboxChange(target: any, index: number) {\n if (!this.enableRowSelection) {\n return;\n }\n\n const row = this._items[index];\n\n if (this.canSelectKey && !row[this.canSelectKey]) {\n target.checked = false;\n return;\n }\n\n const value = this._getCheckedValue(target);\n if (value) {\n this.selectedRows = [...this.selectedRows, row];\n this.selectedRowsChange.emit(this.selectedRows);\n this.rowSelected.emit(row);\n return;\n }\n\n const indexOfToRemove = this._selectionContains(row, index, true);\n\n // we need to do this, because splice does not trigger the selection setter.\n const selection = [...this.selectedRows];\n selection.splice(indexOfToRemove, 1);\n this.selectedRows = selection;\n this.selectedRowsChange.emit(this.selectedRows);\n this.rowDeselected.emit(row);\n }\n\n private _getCheckedValue(target: any) {\n return target?.checked;\n }\n\n private _getSelectionValue(row: any, index: number) {\n return this.selectionKey ? row?.[this.selectionKey] || index : index;\n }\n\n private _selectionContains(row, index, returnIndex = false): any {\n const returnValue = this.selectedRows.findIndex(\n (item) =>\n this._getSelectionValue(row, index) ===\n this._getSelectionValue(item, index)\n );\n return !returnIndex ? returnValue >= 0 : returnValue;\n }\n\n private _selectionContainsAll() {\n let returnValue = true;\n if (!this._items?.length) {\n return false;\n }\n\n for (let i = 0; i < this._items?.length; i++) {\n const item = this._items[i];\n const contains = this._selectionContains(item, i);\n\n if (!contains) {\n returnValue = false;\n break;\n }\n }\n\n return returnValue;\n }\n\n private _selectionIndeterminate() {\n if (!this._items?.length || !this.selectedRows?.length) {\n return false;\n }\n\n let containsCount = 0;\n for (let i = 0; i < this._items?.length; i++) {\n const item = this._items[i];\n const contains = this._selectionContains(item, i);\n\n if (contains) {\n containsCount++;\n }\n }\n\n return containsCount > 0 && containsCount !== this._items.length;\n }\n\n private _rowClick($event, index) {\n const target = $event.target;\n\n if (\n target.tagName.toLowerCase() === 'input' ||\n target.type === 'checkbox'\n ) {\n return;\n }\n\n const row = this._findRow($event.target);\n const action = this._findRowAction($event.target);\n\n if (action) {\n return;\n }\n\n if (this.enableRowClick) {\n const item = this._items[index];\n this.rowClick.emit({\n item,\n ctrlDown: this._ctrlDown,\n });\n return;\n }\n\n if (!this.enableRowSelection) {\n return;\n }\n\n const checkbox = row?.querySelector('input[type=\"checkbox\"]');\n\n if (!checkbox) {\n return;\n }\n\n checkbox.checked = !checkbox.checked;\n this._checkboxChange(checkbox, index);\n }\n\n private _findRow(el: HTMLElement) {\n if (!el) {\n return el;\n }\n\n if (el?.tagName?.toLowerCase() === 'p-table-row') {\n return el;\n }\n\n return this._findRow(el?.parentElement);\n }\n\n private _findRowAction(el: HTMLElement) {\n if (!el) {\n return null;\n }\n\n if (\n el.getAttribute('data-is-action') !== null &&\n el.getAttribute('data-is-action') !== 'false'\n ) {\n return el;\n }\n\n if (el?.tagName?.toLowerCase() === 'p-table-row') {\n return null;\n }\n\n return this._findRowAction(el?.parentElement);\n }\n}\n"],"version":3}
@@ -914,10 +914,10 @@ const TableHeader = /*@__PURE__*/ proxyCustomElement(class TableHeader extends H
914
914
  this.quickFilter = createEvent(this, "quickFilter", 3);
915
915
  this.queryChange = createEvent(this, "queryChange", 3);
916
916
  this.filter = createEvent(this, "filter", 3);
917
- this.edit = createEvent(this, "edit", 3);
917
+ this.action = createEvent(this, "action", 3);
918
918
  this._defaultFilterButtonTemplate = () => formatTranslation(this._locales.filter);
919
- this._defaultEditButtonTemplate = (amount) => this.editText
920
- ? this.editText
919
+ this._defaultActionButtonTemplate = (amount) => this.actionText
920
+ ? this.actionText
921
921
  : formatTranslation(amount === 0
922
922
  ? this._locales.edit
923
923
  : amount === 1
@@ -934,12 +934,12 @@ const TableHeader = /*@__PURE__*/ proxyCustomElement(class TableHeader extends H
934
934
  this.enableFilter = true;
935
935
  this.selectedFiltersAmount = undefined;
936
936
  this.filterButtonTemplate = this._defaultFilterButtonTemplate;
937
- this.enableEdit = true;
938
- this.editLoading = false;
939
- this.editIcon = 'pencil';
940
- this.editText = undefined;
941
- this.canEdit = false;
942
- this.editButtonTemplate = this._defaultEditButtonTemplate;
937
+ this.enableAction = true;
938
+ this.actionLoading = false;
939
+ this.actionIcon = 'pencil';
940
+ this.actionText = undefined;
941
+ this.canUseAction = false;
942
+ this.actionButtonTemplate = this._defaultActionButtonTemplate;
943
943
  this._locales = {};
944
944
  }
945
945
  componentWillLoad() {
@@ -966,15 +966,15 @@ const TableHeader = /*@__PURE__*/ proxyCustomElement(class TableHeader extends H
966
966
  ? this.filterButtonTemplate()
967
967
  : this._defaultFilterButtonTemplate(), this.selectedFiltersAmount &&
968
968
  this._getLabel(this.selectedFiltersAmount), mobileTotal > 0 &&
969
- this._getLabel(mobileTotal, 'mobile'))), this.enableEdit && this._buttonTemplate()), this.enableEdit && this.canEdit && (h("div", { class: "fixed bottom-0 left-0 block w-full border border-solid border-transparent border-t-mystic-dark bg-white p-4 desktop-xs:hidden" }, this._buttonTemplate(true)))));
969
+ this._getLabel(mobileTotal, 'mobile'))), this.enableAction && this._buttonTemplate()), this.enableAction && this.canUseAction && (h("div", { class: "fixed bottom-0 left-0 block w-full border border-solid border-transparent border-t-mystic-dark bg-white p-4 desktop-xs:hidden" }, this._buttonTemplate(true)))));
970
970
  }
971
971
  async _setLocales() {
972
972
  this._locales = await getLocaleComponentStrings(this._el);
973
973
  }
974
974
  _buttonTemplate(mobile = false) {
975
- return (h("p-button", { class: mobile ? 'w-full' : 'hidden desktop-xs:flex', icon: this.editIcon, size: "small", disabled: !this.canEdit, onClick: () => this.edit.emit(), loading: this.editLoading }, this.editButtonTemplate
976
- ? this.editButtonTemplate(mobile ? this.itemsSelectedAmount : 0)
977
- : this._defaultEditButtonTemplate(mobile ? this.itemsSelectedAmount : 0)));
975
+ return (h("p-button", { class: mobile ? 'w-full' : 'hidden desktop-xs:flex', icon: this.actionIcon, size: "small", disabled: !this.canUseAction, onClick: () => this.action.emit(), loading: this.actionLoading }, this.actionButtonTemplate
976
+ ? this.actionButtonTemplate(mobile ? this.itemsSelectedAmount : 0)
977
+ : this._defaultActionButtonTemplate(mobile ? this.itemsSelectedAmount : 0)));
978
978
  }
979
979
  _getLabel(amount, variant = 'default') {
980
980
  return (h("p-label", { size: "small", variant: "negative", behavior: "text", class: `ml-1 ${variant === 'default'
@@ -993,12 +993,12 @@ const TableHeader = /*@__PURE__*/ proxyCustomElement(class TableHeader extends H
993
993
  "enableFilter": [4, "enable-filter"],
994
994
  "selectedFiltersAmount": [2, "selected-filters-amount"],
995
995
  "filterButtonTemplate": [16],
996
- "enableEdit": [4, "enable-edit"],
997
- "editLoading": [4, "edit-loading"],
998
- "editIcon": [1, "edit-icon"],
999
- "editText": [1, "edit-text"],
1000
- "canEdit": [1028, "can-edit"],
1001
- "editButtonTemplate": [16],
996
+ "enableAction": [4, "enable-action"],
997
+ "actionLoading": [4, "action-loading"],
998
+ "actionIcon": [1, "action-icon"],
999
+ "actionText": [1, "action-text"],
1000
+ "canUseAction": [1028, "can-use-action"],
1001
+ "actionButtonTemplate": [16],
1002
1002
  "_locales": [32]
1003
1003
  }, [[16, "localeChanged", "_setLocales"]]]);
1004
1004
  function defineCustomElement() {