@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 +0,0 @@
1
- {"version":3,"names":["tableComponentCss","Table","this","_ctrlDown","_hasCustomFilterSlot","defaultSize","defaultSizeOptions","_a","formatTranslation","_locales","empty_state","no_filter","header","content","action","filtered","componentWillLoad","_el","querySelector","_setLocales","_parseItems","items","_generateColumns","componentDidRender","hasRendered","emit","render","h","Host","class","enableHeader","quickFilters","activeQuickFilterIdentifier","onQuickFilter","detail","quickFilter","enableSearch","query","onQueryChange","queryChange","enableFilter","selectedFiltersAmount","filterButtonTemplate","onFilter","filter","enableEdit","editIcon","editButtonIcon","editText","editButtonText","editLoading","editButtonLoading","canEdit","selectedRows","length","editButtonTemplate","onEdit","edit","itemsSelectedAmount","_b","loading","headerLoading","name","slot","_getHeader","_getRows","enableFooter","hideOnSinglePage","enablePageSize","pageSize","pageSizeOptions","onPageSizeChange","pageSizeChange","enablePagination","page","total","onPageChange","pageChange","enableExport","onExport","export","footerLoading","getLocaleComponentStrings","onTableDefinitionUpdated","keyDown","key","keyUp","visibilityChange","document","visibilityState","_items","Array","isArray","JSON","parse","definitions","querySelectorAll","definitionsArray","from","_columns","variant","map","col","index","definition","value","checkbox","hasCheckbox","_getCheckbox","amountOfLoadingRows","_","i","enableHover","enableRowSelection","enableRowClick","_getLoadingColumns","_getEmptyState","item","onClick","ev","_rowClick","_getRowColumns","colIndex","rowIndex","selectionKey","type","onChange","_selectAllChange","checked","_selectionContainsAll","indeterminate","_selectionIndeterminate","_checkboxChange","target","disabled","canSelectKey","_selectionContains","emptyStateFilteredHeader","emptyStateFilteredContent","enableEmptyStateAction","emptyStateActionClick","emptyStateHeader","emptyStateContent","icon","size","emptyStateAction","$event","_getCheckedValue","toAdd","row","push","rowSelected","selectedRowsChange","find","d","_getSelectionValue","rowDeselected","indexOfToRemove","selection","splice","returnIndex","returnValue","findIndex","contains","containsCount","_c","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 @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"],"mappings":"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"}