@sme.up/ketchup 11.0.0-SNAPSHOT-20241204091728 → 11.0.0-SNAPSHOT-20241204093112
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.
- package/dist/cjs/{f-cell-99beffaa.js → f-cell-dbd52f82.js} +5 -1
- package/dist/cjs/f-cell-dbd52f82.js.map +1 -0
- package/dist/cjs/kup-autocomplete_28.cjs.entry.js +1 -1
- package/dist/cjs/kup-box.cjs.entry.js +1 -1
- package/dist/cjs/kup-cell.cjs.entry.js +1 -1
- package/dist/cjs/kup-image-list.cjs.entry.js +1 -1
- package/dist/cjs/kup-input-panel.cjs.entry.js +6 -4
- package/dist/cjs/kup-input-panel.cjs.entry.js.map +1 -1
- package/dist/collection/components/kup-input-panel/kup-input-panel.js +5 -3
- package/dist/collection/components/kup-input-panel/kup-input-panel.js.map +1 -1
- package/dist/collection/f-components/f-cell/f-cell.js +4 -0
- package/dist/collection/f-components/f-cell/f-cell.js.map +1 -1
- package/dist/components/kup-accordion.js +1 -1
- package/dist/components/kup-activity-timeline.js +1 -1
- package/dist/components/kup-autocomplete.js +1 -1
- package/dist/components/kup-badge.js +1 -1
- package/dist/components/kup-box.js +1 -1
- package/dist/components/kup-button-list.js +1 -1
- package/dist/components/kup-button.js +1 -1
- package/dist/components/kup-calendar.js +1 -1
- package/dist/components/kup-card-list.js +2 -2
- package/dist/components/kup-card.js +1 -1
- package/dist/components/kup-cell.js +1 -1
- package/dist/components/kup-chart.js +1 -1
- package/dist/components/kup-checkbox.js +1 -1
- package/dist/components/kup-chip.js +1 -1
- package/dist/components/kup-color-picker.js +1 -1
- package/dist/components/kup-combobox.js +1 -1
- package/dist/components/kup-dashboard.js +1 -1
- package/dist/components/kup-data-table.js +1 -1
- package/dist/components/kup-date-picker.js +1 -1
- package/dist/components/kup-dialog.js +1 -1
- package/dist/components/kup-drawer.js +1 -1
- package/dist/components/kup-dropdown-button.js +1 -1
- package/dist/components/kup-echart.js +1 -1
- package/dist/components/kup-editor.js +1 -1
- package/dist/components/kup-family-tree.js +2 -2
- package/dist/components/kup-form.js +1 -1
- package/dist/components/kup-gauge.js +1 -1
- package/dist/components/kup-grid.js +1 -1
- package/dist/components/kup-htm.js +1 -1
- package/dist/components/kup-iframe.js +1 -1
- package/dist/components/kup-image-list.js +1 -1
- package/dist/components/kup-image.js +1 -1
- package/dist/components/kup-input-panel.js +7 -5
- package/dist/components/kup-input-panel.js.map +1 -1
- package/dist/components/kup-lazy.js +1 -1
- package/dist/components/kup-list.js +1 -1
- package/dist/components/kup-magic-box.js +3 -3
- package/dist/components/kup-nav-bar.js +1 -1
- package/dist/components/kup-numeric-picker.js +1 -1
- package/dist/components/kup-pdf.js +1 -1
- package/dist/components/kup-photo-frame.js +1 -1
- package/dist/components/kup-planner.js +1 -1
- package/dist/components/kup-probe.js +1 -1
- package/dist/components/kup-progress-bar.js +1 -1
- package/dist/components/kup-qlik.js +1 -1
- package/dist/components/kup-radio.js +1 -1
- package/dist/components/kup-rating.js +1 -1
- package/dist/components/kup-snackbar.js +1 -1
- package/dist/components/kup-spinner.js +1 -1
- package/dist/components/kup-switch.js +1 -1
- package/dist/components/kup-tab-bar.js +1 -1
- package/dist/components/kup-text-field.js +1 -1
- package/dist/components/kup-time-picker.js +1 -1
- package/dist/components/kup-toolbar.js +1 -1
- package/dist/components/kup-tree.js +1 -1
- package/dist/components/kup-txt.js +1 -1
- package/dist/components/kup-typography-list.js +1 -1
- package/dist/components/kup-typography.js +1 -1
- package/dist/components/{p-305c601e.js → p-0707faea.js} +5 -1
- package/dist/components/p-0707faea.js.map +1 -0
- package/dist/components/{p-041b4e77.js → p-38548546.js} +2 -2
- package/dist/components/{p-041b4e77.js.map → p-38548546.js.map} +1 -1
- package/dist/components/{p-ca75f1f1.js → p-8d00db3c.js} +2 -2
- package/dist/components/{p-ca75f1f1.js.map → p-8d00db3c.js.map} +1 -1
- package/dist/components/{p-bec9b052.js → p-b3c9cd25.js} +2 -2
- package/dist/components/{p-bec9b052.js.map → p-b3c9cd25.js.map} +1 -1
- package/dist/components/{p-2f338b48.js → p-c85d72a8.js} +2 -2
- package/dist/components/{p-2f338b48.js.map → p-c85d72a8.js.map} +1 -1
- package/dist/esm/{f-cell-722848d6.js → f-cell-3992d1cd.js} +5 -1
- package/dist/esm/f-cell-3992d1cd.js.map +1 -0
- package/dist/esm/kup-autocomplete_28.entry.js +1 -1
- package/dist/esm/kup-box.entry.js +1 -1
- package/dist/esm/kup-cell.entry.js +1 -1
- package/dist/esm/kup-image-list.entry.js +1 -1
- package/dist/esm/kup-input-panel.entry.js +6 -4
- package/dist/esm/kup-input-panel.entry.js.map +1 -1
- package/dist/ketchup/ketchup.esm.js +1 -1
- package/dist/ketchup/{p-992ae993.entry.js → p-08a9e442.entry.js} +2 -2
- package/dist/ketchup/{p-b13bbd08.entry.js → p-0b87c294.entry.js} +2 -2
- package/dist/ketchup/{p-1b4b1e95.js → p-2b5455ee.js} +2 -2
- package/dist/ketchup/{p-1b4b1e95.js.map → p-2b5455ee.js.map} +1 -1
- package/dist/ketchup/{p-9c210f92.entry.js → p-780f18f5.entry.js} +2 -2
- package/dist/ketchup/{p-c88ab499.entry.js → p-98518099.entry.js} +2 -2
- package/dist/ketchup/p-98518099.entry.js.map +1 -0
- package/dist/ketchup/{p-3500f91c.entry.js → p-d50d7049.entry.js} +2 -2
- package/package.json +1 -1
- package/dist/cjs/f-cell-99beffaa.js.map +0 -1
- package/dist/components/p-305c601e.js.map +0 -1
- package/dist/esm/f-cell-722848d6.js.map +0 -1
- package/dist/ketchup/p-c88ab499.entry.js.map +0 -1
- /package/dist/ketchup/{p-992ae993.entry.js.map → p-08a9e442.entry.js.map} +0 -0
- /package/dist/ketchup/{p-b13bbd08.entry.js.map → p-0b87c294.entry.js.map} +0 -0
- /package/dist/ketchup/{p-9c210f92.entry.js.map → p-780f18f5.entry.js.map} +0 -0
- /package/dist/ketchup/{p-3500f91c.entry.js.map → p-d50d7049.entry.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, c as createEvent, f as forceUpdate, h, d as Host } from './p-68313086.js';
|
|
2
2
|
import { k as kupManagerInstance, a6 as identify, g as getProps, s as setProps, U as SortMode, E as getColumnByName, d as KupLanguageGeneric, c as KupThemeIconValues, r as KupDebugCategory, a3 as KupPointerEventTypes, ac as KupDragEffect, aq as kupDraggableAttr, ae as KupDropEventTypes, _ as KupLanguageSearch } from './p-34090dba.js';
|
|
3
|
-
import { G as filterRows, H as paginateRows, D as sortRows, I as pageChange, J as rowsPerPageChange, F as FImage, L as FCell, N as FChip, O as FTextFieldMDC, c as componentWrapperId, d as defineCustomElement$1, a as defineCustomElement$2, b as defineCustomElement$3, e as defineCustomElement$4, f as defineCustomElement$5, g as defineCustomElement$6, h as defineCustomElement$7, i as defineCustomElement$8, j as defineCustomElement$9, k as defineCustomElement$a, l as defineCustomElement$b, m as defineCustomElement$c, n as defineCustomElement$d, o as defineCustomElement$e, p as defineCustomElement$f, q as defineCustomElement$g, r as defineCustomElement$h, s as defineCustomElement$i, t as defineCustomElement$j, u as defineCustomElement$k, v as defineCustomElement$l, w as defineCustomElement$m, x as defineCustomElement$n, y as defineCustomElement$o, z as defineCustomElement$p, A as defineCustomElement$q, B as defineCustomElement$r, C as defineCustomElement$s, P as FPaginator } from './p-
|
|
3
|
+
import { G as filterRows, H as paginateRows, D as sortRows, I as pageChange, J as rowsPerPageChange, F as FImage, L as FCell, N as FChip, O as FTextFieldMDC, c as componentWrapperId, d as defineCustomElement$1, a as defineCustomElement$2, b as defineCustomElement$3, e as defineCustomElement$4, f as defineCustomElement$5, g as defineCustomElement$6, h as defineCustomElement$7, i as defineCustomElement$8, j as defineCustomElement$9, k as defineCustomElement$a, l as defineCustomElement$b, m as defineCustomElement$c, n as defineCustomElement$d, o as defineCustomElement$e, p as defineCustomElement$f, q as defineCustomElement$g, r as defineCustomElement$h, s as defineCustomElement$i, t as defineCustomElement$j, u as defineCustomElement$k, v as defineCustomElement$l, w as defineCustomElement$m, x as defineCustomElement$n, y as defineCustomElement$o, z as defineCustomElement$p, A as defineCustomElement$q, B as defineCustomElement$r, C as defineCustomElement$s, P as FPaginator } from './p-0707faea.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Props of the kup-box component.
|
|
@@ -1583,4 +1583,4 @@ function defineCustomElement() {
|
|
|
1583
1583
|
|
|
1584
1584
|
export { KupBox as K, defineCustomElement as d };
|
|
1585
1585
|
|
|
1586
|
-
//# sourceMappingURL=p-
|
|
1586
|
+
//# sourceMappingURL=p-c85d72a8.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-2f338b48.js","mappings":"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","names":[],"sources":["src/components/kup-box/kup-box-declarations.ts","src/components/kup-box/kup-box-state.ts","src/components/kup-box/kup-box.scss?tag=kup-box&encapsulation=shadow","src/components/kup-box/kup-box.tsx"],"sourcesContent":["import { KupBadge } from '../kup-badge/kup-badge';\nimport { KupEventPayload } from '../../types/GenericTypes';\nimport { FCellShapes } from '../../f-components/f-cell/f-cell-declarations';\nimport {\n KupDataCell,\n KupDataColumn,\n KupDataRow,\n KupDataRowAction,\n} from '../../managers/kup-data/kup-data-declarations';\nimport type { PointerEvent } from '@interactjs/types/index';\n/**\n * Props of the kup-box component.\n * Used to export every prop in an object.\n */\nexport enum KupBoxProps {\n cardData = \"Data of the card linked to the box when the latter's layout must be a premade template.\",\n columns = 'Number of columns.',\n customStyle = 'Custom style of the component.',\n data = 'Actual data of the box.',\n dragEnabled = 'Enable dragging.',\n dropEnabled = 'Enable dropping.',\n dropOnSection = 'Drop can be done in section.',\n enableRowActions = 'If enabled, a button to load / display the row actions will be displayed on the right of every box.',\n globalFilter = 'When set to true it activates the global filter.',\n globalFilterValue = 'The value of the global filter.',\n kanban = 'Displays the boxlist as a Kanban.',\n layout = 'How the field will be displayed. If not present, a default one will be created.',\n lazyLoadRows = 'When set to true, extra rows will be automatically loaded once the last row enters the viewport.',\n loadMoreLimit = 'Sets a maximum limit of new records which can be required by the load more functionality.',\n loadMoreMode = 'Establish the modality of how many new records will be downloaded. This property is regulated also by loadMoreStep.',\n loadMoreStep = 'The number of records which will be requested to be downloaded when clicking on the load more button. This property is regulated also by loadMoreMode.',\n multiSelection = 'Enable multi selection.',\n pageSelected = 'Current page number.',\n pagination = 'Enables pagination.',\n rowsPerPage = 'Number of current rows per page.',\n scrollOnHover = 'Activates the scroll on hover function.',\n selectBox = 'Automatically selects the box at the specified index.',\n selectedRowsState = 'Multiple selection.',\n showLoadMore = 'If set to true, displays the button to load more records.',\n showSelection = 'If enabled, highlights the selected box/boxes.',\n sortBy = 'If sorting is enabled, specifies which column to sort.',\n sortEnabled = 'Enable sorting.',\n stateId = '',\n store = '',\n swipeDisabled = 'Disable swipe.',\n}\n\n//---- *NEXT functionality AKA load more ----\nexport enum LoadMoreMode {\n CONSTANT = 'constant',\n CONSTANT_INCREMENT = 'constant_increment',\n PROGRESSIVE_THRESHOLD = 'progressive_threshold',\n}\nexport interface KupBoxData {\n columns?: KupDataColumn[];\n rows?: KupBoxRow[];\n}\nexport interface KupBoxRow extends KupDataRow {\n layout?: KupBoxLayout;\n badgeData?: KupBadge[];\n style?: { [index: string]: string };\n}\n\nexport interface KupBoxLayout {\n horizontal?: boolean;\n sections?: KupBoxSection[];\n}\n\nexport interface KupBoxSection {\n collapsible?: boolean;\n columns?: number;\n content?: KupBoxObject[];\n dim?: string;\n horizontal?: boolean;\n id?: string;\n sections?: KupBoxSection[];\n style?: { [index: string]: string };\n title?: string;\n}\n\nexport interface KupBoxObject {\n column?: string;\n value?: string;\n shape?: FCellShapes;\n config?: any;\n}\n\nexport interface CollapsedSectionsState {\n [index: string]: {\n [index: string]: boolean;\n };\n}\n/**\n * Interface for a kanban-displayed boxlist.\n */\nexport interface KupBoxKanban {\n columns: string[];\n isStacked?: boolean;\n labels?: Array<Array<string>>;\n size?: string;\n}\n/**\n * Contains all the data of an event.\n */\nexport interface KupBoxEventHandlerDetails {\n boxObject: HTMLElement;\n cell: KupDataCell;\n column: KupDataColumn;\n originalEvent: PointerEvent;\n row: KupBoxRow;\n}\n\nexport interface KupBoxClickEventPayload extends KupEventPayload {\n row: KupBoxRow;\n column?: string;\n}\n\nexport interface KupBoxSelectedEventPayload extends KupEventPayload {\n rows: KupBoxRow[];\n}\n\nexport interface KupBoxAutoSelectEventPayload extends KupEventPayload {\n row: KupBoxRow;\n}\n\nexport interface KupBoxRowActionClickEventPayload extends KupEventPayload {\n row: KupBoxRow;\n action: KupDataRowAction;\n index: number;\n}\nexport interface KupBoxContextMenuEventPayload extends KupEventPayload {\n details: KupBoxEventHandlerDetails;\n}\n\nexport interface KupBoxLoadMoreClickEventPayload extends KupEventPayload {\n loadItems: number;\n}\n","import { KupState } from '../kup-state/kup-state';\nexport class KupBoxState implements KupState {\n globalFilterValue: string = '';\n sortBy: string = '';\n selectedRowsState: string = '';\n pageSelected: number = 1;\n rowsPerPage: number = 0;\n load: boolean = false;\n loadMoreLimit: number = 1000;\n showLoadMore: boolean = false;\n\n /*Add attribute*/\n\n public toDebugString() {\n // TODO\n return 'box state';\n }\n}\n","@import 'styles/kup-box-main';\n@import 'styles/kup-box-classes';\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n forceUpdate,\n h,\n Host,\n Method,\n Prop,\n State,\n VNode,\n Watch,\n} from '@stencil/core';\nimport type { PointerEvent } from '@interactjs/types/index';\nimport {\n SortObject,\n SortMode,\n} from '../kup-data-table/kup-data-table-declarations';\nimport {\n KupBoxRow,\n KupBoxLayout,\n KupBoxSection,\n CollapsedSectionsState,\n KupBoxObject,\n KupBoxKanban,\n KupBoxProps,\n KupBoxClickEventPayload,\n KupBoxSelectedEventPayload,\n KupBoxAutoSelectEventPayload,\n KupBoxRowActionClickEventPayload,\n KupBoxContextMenuEventPayload,\n KupBoxData,\n KupBoxEventHandlerDetails,\n LoadMoreMode,\n KupBoxLoadMoreClickEventPayload,\n} from './kup-box-declarations';\nimport { getColumnByName } from '../../utils/cell-utils';\nimport {\n filterRows,\n sortRows,\n paginateRows,\n} from '../kup-data-table/kup-data-table-helper';\nimport { KupCardData } from '../kup-card/kup-card-declarations';\nimport {\n KupManager,\n kupManagerInstance,\n} from '../../managers/kup-manager/kup-manager';\nimport { KupBoxState } from './kup-box-state';\nimport { KupStore } from '../kup-state/kup-store';\nimport { getProps, identify, setProps } from '../../utils/utils';\nimport {\n GenericObject,\n KupComponent,\n KupEventPayload,\n} from '../../types/GenericTypes';\nimport { FImage } from '../../f-components/f-image/f-image';\nimport { FChip } from '../../f-components/f-chip/f-chip';\nimport { FChipsProps } from '../../f-components/f-chip/f-chip-declarations';\nimport { KupScrollOnHoverElement } from '../../managers/kup-scroll-on-hover/kup-scroll-on-hover-declarations';\nimport { KupDebugCategory } from '../../managers/kup-debug/kup-debug-declarations';\nimport {\n KupLanguageGeneric,\n KupLanguageSearch,\n} from '../../managers/kup-language/kup-language-declarations';\nimport { componentWrapperId } from '../../variables/GenericVariables';\nimport { KupThemeIconValues } from '../../managers/kup-theme/kup-theme-declarations';\nimport {\n KupDragDataTransferCallback,\n KupDragEffect,\n kupDraggableAttr,\n KupDropDataTransferCallback,\n KupDropEventTypes,\n KupPointerEventTypes,\n} from '../../managers/kup-interact/kup-interact-declarations';\nimport { FCell } from '../../f-components/f-cell/f-cell';\nimport { FCellProps } from '../../f-components/f-cell/f-cell-declarations';\nimport { FPaginator } from '../../f-components/f-paginator/f-paginator';\nimport { KupComboboxEventPayload } from '../kup-combobox/kup-combobox-declarations';\nimport { FPaginatorMode } from '../../f-components/f-paginator/f-paginator-declarations';\nimport {\n pageChange,\n rowsPerPageChange,\n} from '../../f-components/f-paginator/f-paginator-utils';\nimport {\n KupDataCell,\n KupDataColumn,\n KupDataRowAction,\n} from '../../managers/kup-data/kup-data-declarations';\nimport { FTextFieldMDC } from '../../f-components/f-text-field/f-text-field-mdc';\n\n@Component({\n tag: 'kup-box',\n styleUrl: 'kup-box.scss',\n shadow: true,\n})\nexport class KupBox {\n /**\n * References the root HTML element of the component (<kup-box>).\n */\n @Element() rootElement: HTMLElement;\n\n /*-------------------------------------------------*/\n /* S t a t e s */\n /*-------------------------------------------------*/\n\n @State()\n private collapsedSection: CollapsedSectionsState = {};\n\n @State()\n private selectedRows: Array<KupBoxRow> = [];\n\n /**\n * Row that has the row object menu open\n */\n @State()\n private rowActionMenuOpened: KupBoxRow;\n\n @State()\n private currentPage = 1;\n\n @State()\n private currentRowsPerPage = 10;\n\n state: KupBoxState = new KupBoxState();\n\n initWithPersistedState(): void {\n if (this.store && this.stateId) {\n const state = this.store.getState(this.stateId);\n if (state != null) {\n this.kupManager.debug.logMessage(\n this,\n 'Initialize with state for stateId ' +\n this.stateId +\n ': ' +\n state\n );\n // *** PROPS ***\n this.sortBy = this.state.sortBy;\n this.globalFilterValue = this.state.globalFilterValue;\n this.selectedRowsState = this.state.selectedRowsState;\n this.pageSelected = this.state.pageSelected;\n this.rowsPerPage = this.state.rowsPerPage;\n this.loadMoreLimit = state.loadMoreLimit;\n this.showLoadMore = state.showLoadMore;\n }\n }\n }\n\n persistState(): void {\n if (this.store && this.stateId) {\n let somethingChanged = false;\n if (\n !this.kupManager.objects.deepEqual(\n this.state.sortBy,\n this.sortBy\n )\n ) {\n this.state.sortBy = this.sortBy;\n somethingChanged = true;\n }\n\n if (\n !this.kupManager.objects.deepEqual(\n this.state.globalFilterValue,\n this.globalFilterValue\n )\n ) {\n this.state.globalFilterValue = this.globalFilterValue;\n somethingChanged = true;\n }\n\n if (\n !this.kupManager.objects.deepEqual(\n this.state.pageSelected,\n this.currentPage\n )\n ) {\n this.state.pageSelected = this.currentPage;\n somethingChanged = true;\n }\n\n if (\n !this.kupManager.objects.deepEqual(\n this.state.rowsPerPage,\n this.currentRowsPerPage\n )\n ) {\n this.state.rowsPerPage = this.currentRowsPerPage;\n somethingChanged = true;\n }\n\n const selectedRowsState = this.selectedRows.reduce(\n (accumulator, row, currentIndex) => {\n const prefix = currentIndex > 0 ? ';' : '';\n return accumulator + prefix + row.id;\n },\n ''\n );\n\n if (\n !this.kupManager.objects.deepEqual(\n this.state.selectedRowsState,\n selectedRowsState\n )\n ) {\n this.state.selectedRowsState = selectedRowsState;\n somethingChanged = true;\n }\n if (\n !this.kupManager.objects.deepEqual(\n this.state.loadMoreLimit,\n this.loadMoreLimit\n )\n ) {\n this.state.loadMoreLimit = this.loadMoreLimit;\n somethingChanged = true;\n }\n\n if (\n !this.kupManager.objects.deepEqual(\n this.state.showLoadMore,\n this.showLoadMore\n )\n ) {\n this.state.showLoadMore = this.showLoadMore;\n somethingChanged = true;\n }\n\n if (!this.state.load) {\n this.state.load = true;\n return;\n }\n\n if (somethingChanged) {\n this.kupManager.debug.logMessage(\n this,\n 'Persisting state for stateId ' +\n this.stateId +\n ': ' +\n this.state\n );\n this.store.persistState(this.stateId, this.state);\n }\n }\n }\n\n /*-------------------------------------------------*/\n /* P r o p s */\n /*-------------------------------------------------*/\n\n /**\n * Data of the card linked to the box when the latter's layout must be a premade template.\n * @default null\n */\n @Prop() cardData: GenericObject = null;\n /**\n * Number of columns\n * @default 1\n */\n @Prop() columns: number = 1;\n /**\n * Custom style of the component.\n * @default \"\"\n * @see https://smeup.github.io/ketchup/#/customization\n */\n @Prop() customStyle: string = '';\n /**\n * Actual data of the box.\n * @default null\n */\n @Prop() data: KupBoxData = null;\n /**\n * Enable dragging\n * @default false\n */\n @Prop() dragEnabled: boolean = false;\n /**\n * Enable dropping\n * @default false\n */\n @Prop() dropEnabled: boolean = false;\n /**\n * Drop can be done in section\n * @default false\n */\n @Prop() dropOnSection: boolean = false;\n /**\n * When set to true, editable cells will be rendered using input components.\n * @default false\n */\n @Prop() editableData: boolean = false;\n /**\n * If enabled, a button to load / display the row actions\n * will be displayed on the right of every box\n * @default false\n */\n @Prop() enableRowActions: boolean = false;\n /**\n * When set to true it activates the global filter.\n * @default false\n */\n @Prop() globalFilter: boolean = false;\n /**\n * The value of the global filter.\n * @default \"\"\n */\n @Prop({ reflect: true, mutable: true }) globalFilterValue = '';\n /**\n * Displays the boxlist as a Kanban.\n * @default null\n */\n @Prop() kanban: KupBoxKanban = null;\n /**\n * How the field will be displayed. If not present, a default one will be created.\n * @default undefined\n */\n @Prop() layout: KupBoxLayout;\n /**\n * When set to true, extra rows will be automatically loaded once the last row enters the viewport.\n */\n @Prop() lazyLoadRows: boolean = false;\n /**\n * Sets a maximum limit of new records which can be required by the load more functionality.\n */\n @Prop() loadMoreLimit: number = 1000;\n /**\n * Establish the modality of how many new records will be downloaded.\n *\n * This property is regulated also by loadMoreStep.\n * @see loadMoreStep\n * @see loadMoreLimit\n */\n @Prop() loadMoreMode: LoadMoreMode = LoadMoreMode.PROGRESSIVE_THRESHOLD;\n /**\n * The number of records which will be requested to be downloaded when clicking on the load more button.\n *\n * This property is regulated also by loadMoreMode.\n * @see loadMoreMode\n * @see loadMoreLimit\n */\n @Prop() loadMoreStep: number = 60;\n /**\n * Enable multi selection\n * @default false\n */\n @Prop() multiSelection: boolean = false;\n /**\n * Current page number\n * @default 1\n */\n @Prop() pageSelected: number = 1;\n /**\n * Enables pagination\n * @default false\n */\n @Prop() pagination: boolean = false;\n /**\n * Number of current rows per page\n * @default undefined\n */\n @Prop() rowsPerPage: number;\n /**\n * Activates the scroll on hover function.\n * @default false\n */\n @Prop() scrollOnHover: boolean = false;\n /**\n * Automatically selects the box at the specified index\n * @default undefined\n */\n @Prop() selectBox: number;\n /**\n * Multiple selection\n * @default undefined\n */\n @Prop({ mutable: true }) selectedRowsState: string;\n /**\n * If set to true, displays the button to load more records.\n */\n @Prop() showLoadMore: boolean = false;\n /**\n * If enabled, highlights the selected box/boxes\n * @default true\n */\n @Prop() showSelection: boolean = true;\n /**\n * If sorting is enabled, specifies which column to sort\n * @default undefined\n */\n @Prop({ mutable: true }) sortBy: string;\n /**\n * Enable sorting\n * @default false\n */\n @Prop() sortEnabled: boolean = false;\n @Prop() stateId: string = '';\n @Prop() store: KupStore;\n /**\n * Disable swipe\n * @default false\n */\n @Prop() swipeDisabled: boolean = false;\n\n /*-------------------------------------------------*/\n /* I n t e r n a l V a r i a b l e s */\n /*-------------------------------------------------*/\n\n /**\n * Instance of the KupManager class.\n */\n private kupManager: KupManager = kupManagerInstance();\n private boxLayout: KupBoxLayout;\n private visibleColumns: KupDataColumn[] = [];\n private rows: KupBoxRow[] = [];\n private filteredRows: KupBoxRow[] = [];\n private globalFilterTimeout: number;\n private boxContainer: KupScrollOnHoverElement;\n private sectionRef: HTMLElement = null;\n private rowsRefs: HTMLElement[] = [];\n private hold: boolean = false;\n private interactableDrag: HTMLElement[] = [];\n private interactableDrop: HTMLElement[] = [];\n private interactableTouch: HTMLElement[] = [];\n #intObserver: IntersectionObserver = undefined;\n #rowsRefs: HTMLElement[] = [];\n #navBarHeight: number = 0;\n\n #loadMoreEventCounter: number = 0;\n #loadMoreEventPreviousQuantity: number = 0;\n\n /*-------------------------------------------------*/\n /* E v e n t s */\n /*-------------------------------------------------*/\n\n /**\n * Triggered when a box is clicked\n */\n @Event({\n eventName: 'kup-box-click',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupBoxClick: EventEmitter<KupBoxClickEventPayload>;\n\n /**\n * Triggered when the multi selection checkbox changes value\n */\n @Event({\n eventName: 'kup-box-selected',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupBoxSelected: EventEmitter<KupBoxSelectedEventPayload>;\n\n /**\n * Triggered when a box is auto selected via selectBox prop\n */\n @Event({\n eventName: 'kup-box-autoselect',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupAutoBoxSelect: EventEmitter<KupBoxAutoSelectEventPayload>;\n\n /**\n * When the row menu action icon is click\n */\n @Event({\n eventName: 'kup-box-rowactionmenuclick',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupRowActionMenuClick: EventEmitter<KupBoxAutoSelectEventPayload>;\n\n /**\n * When the row menu action icon is click\n */\n @Event({\n eventName: 'kup-box-rowactionclick',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupRowActionClick: EventEmitter<KupBoxRowActionClickEventPayload>;\n\n @Event({\n eventName: 'kup-box-didload',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDidLoad: EventEmitter<KupEventPayload>;\n\n /**\n * Triggered when stop propagation event\n */\n @Event({\n eventName: 'kup-box-didunload',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDidUnload: EventEmitter<KupEventPayload>;\n /**\n * Generic right click event on box.\n */\n @Event({\n eventName: 'kup-box-contextmenu',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupBoxContextMenu: EventEmitter<KupBoxContextMenuEventPayload>;\n\n @Event({\n eventName: 'kup-box-loadmoreclick',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupLoadMoreClick: EventEmitter<KupBoxLoadMoreClickEventPayload>;\n\n /*-------------------------------------------------*/\n /* W a t c h e r s */\n /*-------------------------------------------------*/\n\n @Watch('rowsPerPage')\n rowsPerPageHandler(newValue: number) {\n this.currentRowsPerPage = newValue;\n }\n\n @Watch('globalFilterValue')\n @Watch('sortBy')\n @Watch('pagination')\n @Watch('rowsPerPage')\n @Watch('currentPage')\n @Watch('currentRowsPerPage')\n recalculateRows() {\n this.initRows();\n }\n\n @Watch('data')\n onDataChanged() {\n identify(this.getRows());\n this.initVisibleColumns();\n this.initRows();\n this.checkLayout();\n }\n\n @Watch('layout')\n onLayoutChanged() {\n this.checkLayout();\n }\n\n @Watch('selectBox')\n onSelectBoxChanged() {\n this.handleAutomaticBoxSelection();\n }\n\n /*-------------------------------------------------*/\n /* P u b l i c M e t h o d s */\n /*-------------------------------------------------*/\n\n /**\n * Used to retrieve component's props values.\n * @param {boolean} descriptions - When provided and true, the result will be the list of props with their description.\n * @returns {Promise<GenericObject>} List of props as object, each key will be a prop.\n */\n @Method()\n async getProps(descriptions?: boolean): Promise<GenericObject> {\n return getProps(this, KupBoxProps, descriptions);\n }\n\n @Method()\n async loadRowActions(row: KupBoxRow, actions: KupDataRowAction[]) {\n row.actions = actions;\n\n // show menu\n this.rowActionMenuOpened = row;\n }\n /**\n * This method is used to trigger a new render of the component.\n */\n @Method()\n async refresh(): Promise<void> {\n forceUpdate(this);\n }\n /**\n * Sets the props to the component.\n * @param {GenericObject} props - Object containing props that will be set to the component.\n */\n @Method()\n async setProps(props: GenericObject): Promise<void> {\n setProps(this, KupBoxProps, props);\n }\n\n /*-------------------------------------------------*/\n /* P r i v a t e M e t h o d s */\n /*-------------------------------------------------*/\n\n private getColumns(): Array<KupDataColumn> {\n return this.data && this.data.columns\n ? this.data.columns\n : [{ title: '', name: '', size: undefined }];\n }\n\n private initVisibleColumns(): void {\n this.visibleColumns = this.getColumns().filter((column) => {\n if (column.hasOwnProperty('visible')) {\n return column.visible;\n }\n\n return true;\n });\n }\n\n private getRows(): KupBoxRow[] {\n return this.data && this.data.rows ? this.data.rows : [];\n }\n\n private initRows(): void {\n this.filteredRows = this.getRows();\n\n if (this.globalFilter && this.globalFilterValue) {\n // filtering rows\n this.filteredRows = filterRows(\n this.filteredRows,\n null,\n this.globalFilterValue,\n this.visibleColumns\n );\n }\n\n this.rows = this.sortRows(this.filteredRows);\n\n if (this.pagination) {\n this.rows = paginateRows(\n this.rows,\n this.currentPage,\n this.currentRowsPerPage,\n false\n );\n }\n }\n\n private sortRows(rows: KupBoxRow[]): KupBoxRow[] {\n let sortedRows = rows;\n\n if (this.sortBy) {\n sortedRows = sortRows(sortedRows, this.toSortObjectList());\n }\n\n return sortedRows;\n }\n\n private toSortObjectList(): SortObject[] {\n const sortByArray = this.sortBy.split('|').map((col) => {\n const colNameAndSortMode = col.split(',');\n\n const sortObject: SortObject = {\n column: colNameAndSortMode[0],\n sortMode:\n colNameAndSortMode.length > 1\n ? SortMode[colNameAndSortMode[1]]\n : SortMode.A,\n };\n return sortObject;\n });\n return sortByArray;\n }\n\n private checkScrollOnHover() {\n if (this.boxContainer) {\n if (\n !this.kupManager.scrollOnHover.isRegistered(this.boxContainer)\n ) {\n if (this.scrollOnHover) {\n this.kupManager.scrollOnHover.register(this.boxContainer);\n }\n } else {\n if (!this.scrollOnHover) {\n this.kupManager.scrollOnHover.unregister(this.boxContainer);\n }\n }\n }\n }\n\n private checkLayout() {\n // check if there is a layout.\n // if not, create a default layout\n if (this.layout) {\n this.boxLayout = this.layout;\n return;\n }\n\n // only one section, containing all visible fields\n const section: KupBoxSection = {\n horizontal: false,\n sections: [],\n };\n\n // adding box objects to section\n const visibleColumns = this.visibleColumns;\n let size = visibleColumns.length;\n let content = [];\n\n let cnt = 0;\n\n while (size-- > 0) {\n content.push({\n column: visibleColumns[cnt++].name,\n });\n }\n\n section.content = content;\n\n // creating a new layout\n this.boxLayout = {\n sections: [section],\n };\n }\n\n private onSortChange(e: CustomEvent) {\n let column = getColumnByName(this.visibleColumns, e.detail.value);\n this.sortBy = column.name;\n }\n\n private onGlobalFilterChange({ detail }) {\n let value = '';\n if (detail && detail.value) {\n value = detail.value;\n }\n this.globalFilterValue = value;\n }\n\n private isSectionExpanded(row: KupBoxRow, section: KupBoxSection): boolean {\n if (!row.id || !section.id) {\n return false;\n }\n\n return (\n this.collapsedSection[section.id] &&\n this.collapsedSection[section.id][row.id]\n );\n }\n\n private handleAutomaticBoxSelection() {\n if (\n this.selectBox &&\n this.selectBox > 0 &&\n this.selectBox <= this.data.rows.length\n ) {\n this.selectedRows = [];\n\n for (let boxRow of this.data.rows) {\n if (boxRow.id === (this.selectBox - 1).toString()) {\n this.selectedRows.push(boxRow);\n break;\n }\n }\n this.kupAutoBoxSelect.emit({\n comp: this,\n id: this.rootElement.id,\n row: this.selectedRows[0],\n });\n }\n }\n\n private getEventDetails(\n path: HTMLElement[],\n e?: PointerEvent\n ): KupBoxEventHandlerDetails {\n let boxObject = null;\n let cell: KupDataCell = null;\n let row: KupBoxRow = null;\n let column: KupDataColumn = null;\n if (path) {\n for (let i = path.length - 1; i >= 0; i--) {\n let p = path[i];\n if (!p.tagName) {\n continue;\n }\n switch (p.tagName.toUpperCase()) {\n default: {\n if (p.classList.contains('box-object')) {\n boxObject = p;\n }\n if (!row && p['data-row']) {\n row = p['data-row'];\n }\n break;\n }\n }\n }\n }\n\n if (boxObject) {\n if (boxObject.classList.contains('f-cell')) {\n const props = boxObject['kup-get-cell-props']();\n cell = props.cell;\n column = props.column;\n row = props.row;\n } else {\n cell = boxObject['data-cell'];\n row = boxObject['data-row'];\n column = getColumnByName(\n this.visibleColumns,\n boxObject.dataset.column\n );\n }\n } else {\n }\n\n return {\n boxObject: boxObject ? boxObject : null,\n column: column ? column : null,\n cell: cell ? cell : null,\n originalEvent: e,\n row: row ? row : null,\n };\n }\n\n private clickHandler(e: PointerEvent): KupBoxEventHandlerDetails {\n const details = this.getEventDetails(\n this.kupManager.getEventPath(e.target, this.rootElement),\n e\n );\n if (details.row) {\n if (this.multiSelection) {\n this.onSelectionCheckChange(details.row);\n } else {\n this.selectedRows = [details.row];\n }\n }\n return details;\n }\n\n private contextMenuHandler(e: PointerEvent): KupBoxEventHandlerDetails {\n const details = this.getEventDetails(\n this.kupManager.getEventPath(e.target, this.rootElement),\n e\n );\n return details;\n }\n\n /**\n * Checks if the element is the svg that opens the \"row actions menu\"\n * @param element the element to check\n */\n private checkIfElementIsActionMenuIcon(element: any) {\n if (element.tagName && element.parentElement) {\n return (\n element.tagName === 'svg' &&\n element.parentElement.classList.contains('row-actions-toggler')\n );\n }\n\n return false;\n }\n\n private onSelectionCheckChange(row: KupBoxRow) {\n var index = -1;\n for (let i = 0; i < this.selectedRows.length; i++) {\n const select = this.selectedRows[i];\n if (select.id === row.id) {\n index = i;\n break;\n }\n }\n\n if (index >= 0) {\n // remove row\n this.selectedRows.splice(index, 1);\n this.selectedRows = [...this.selectedRows];\n } else {\n // add row\n this.selectedRows = [...this.selectedRows, row];\n }\n\n this.kupBoxSelected.emit({\n comp: this,\n id: this.rootElement.id,\n rows: this.selectedRows,\n });\n }\n\n private toggleSectionExpand(row: KupBoxRow, section: KupBoxSection) {\n // check if section / row has id\n if (!section.id) {\n // error\n console.error('cannot expand / collapse a section withoun an ID');\n return;\n }\n\n if (!row.id) {\n // error\n console.error(\n 'cannot expand / collapse a section of a row without ad id'\n );\n return;\n }\n\n // check if section already in collapsedSection\n if (!this.collapsedSection[section.id]) {\n // adding element and row, setting it to expanded\n this.collapsedSection[section.id] = {};\n this.collapsedSection[section.id][row.id] = true;\n } else {\n const s = this.collapsedSection[section.id];\n\n if (!s[row.id]) {\n s[row.id] = true;\n } else {\n s[row.id] = !s[row.id];\n }\n }\n\n // triggering rendering\n this.collapsedSection = { ...this.collapsedSection };\n }\n\n private onRowAction(row: KupBoxRow) {\n if (!row) {\n return;\n }\n\n if (row === this.rowActionMenuOpened) {\n // closing menu\n this.rowActionMenuOpened = null;\n return;\n }\n\n if (row.actions) {\n // actions already loaded -> show menu\n this.rowActionMenuOpened = row;\n } else {\n // no actions -> triggering event\n this.kupRowActionMenuClick.emit({\n comp: this,\n id: this.rootElement.id,\n row,\n });\n }\n }\n\n private onRowActionClick(\n row: KupBoxRow,\n action: KupDataRowAction,\n index: number\n ) {\n this.kupRowActionClick.emit({\n comp: this,\n id: this.rootElement.id,\n row,\n action,\n index,\n });\n }\n\n /**\n * see onDocumentClick in kup-combo\n */\n private clickFunction(event: UIEvent) {\n try {\n const targets = event.composedPath();\n\n for (let target of targets) {\n if (this.checkIfElementIsActionMenuIcon(target)) {\n return;\n }\n }\n } catch (err) {\n if (this.checkIfElementIsActionMenuIcon(event.target)) {\n return;\n }\n }\n\n this.rowActionMenuOpened = null;\n }\n\n private handlePageChange(pageNumber: number) {\n const newPage = pageChange(\n pageNumber,\n this.filteredRows.length,\n this.currentRowsPerPage\n );\n if (newPage) {\n this.currentPage = newPage;\n }\n }\n\n private handleRowsPerPageChange(rowsNumber: number) {\n const newRows = rowsPerPageChange(rowsNumber, this.filteredRows.length);\n if (newRows) {\n this.currentRowsPerPage = newRows;\n this.adjustPaginator();\n }\n }\n\n private adjustPaginator() {\n const numberOfRows = this.rows.length;\n\n // check if current page is valid\n const numberOfPages = Math.ceil(numberOfRows / this.currentRowsPerPage);\n if (this.currentPage > numberOfPages) {\n // reset page\n this.currentPage = 1;\n }\n }\n\n // render methods\n private renderSectionAsCard(row: KupBoxRow) {\n let skipPush: boolean = false;\n const cardData: KupCardData = {\n button: [],\n cell: [],\n columns: [],\n image: [],\n progressbar: [],\n text: [],\n };\n\n for (let index = 0; index < this.data.columns.length; index++) {\n const column = this.data.columns[index];\n if (column.visible !== false) {\n cardData.cell.push(row.cells[column.name]);\n cardData.columns.push(column);\n }\n }\n\n //First cycle sets specific binds between cardIDs and cells\n for (const key in row.cells) {\n if (row.cells.hasOwnProperty(key)) {\n const cell = row.cells[key];\n if (cell.cardID !== undefined && cell.obj) {\n switch (cell.obj.p) {\n case 'BTN':\n do {\n cardData.button.push({});\n } while (cardData.button.length < cell.cardID);\n cardData.button[cell.cardID] = {\n label: cell.value,\n };\n break;\n case 'IMG':\n do {\n cardData.image.push({});\n } while (cardData.image.length < cell.cardID);\n cardData.image[cell.cardID] = {\n resource: cell.value,\n };\n break;\n case 'PGB':\n do {\n cardData.progressbar.push({});\n } while (cardData.progressbar.length < cell.cardID);\n cardData.progressbar[cell.cardID] = {\n value: cell.value,\n };\n break;\n default:\n do {\n cardData.text.push('');\n } while (cardData.text.length < cell.cardID);\n cardData.text[cell.cardID] = cell.value;\n break;\n }\n }\n }\n }\n\n //Second cycle sets leftover binds automatically\n for (const key in row.cells) {\n if (row.cells.hasOwnProperty(key)) {\n const cell = row.cells[key];\n if (cell.cardID === undefined && cell.obj) {\n skipPush = false;\n switch (cell.obj.p) {\n case 'BTN':\n for (\n let index = 0;\n index < cardData.button.length;\n index++\n ) {\n //If there are empty elements, the first one will be used\n if (\n !Object.keys(cardData.button[index]).length\n ) {\n cardData.button[index] = {\n label: cell.value,\n };\n skipPush = true;\n break;\n }\n }\n //Otherwise a new element will be pushed\n if (!skipPush) {\n cardData.button.push({\n label: cell.value,\n });\n }\n break;\n case 'IMG':\n for (\n let index = 0;\n index < cardData.image.length;\n index++\n ) {\n //If there are empty elements, the first one will be used\n if (\n !Object.keys(cardData.image[index]).length\n ) {\n cardData.image[index] = {\n resource: cell.value,\n };\n skipPush = true;\n break;\n }\n }\n //Otherwise a new element will be pushed\n if (!skipPush) {\n cardData.image.push({\n resource: cell.value,\n });\n }\n break;\n case 'PGB':\n for (\n let index = 0;\n index < cardData.progressbar.length;\n index++\n ) {\n //If there are empty elements, the first one will be used\n if (\n !Object.keys(cardData.progressbar[index])\n .length\n ) {\n cardData.progressbar[index] = {\n value: cell.value,\n };\n skipPush = true;\n break;\n }\n }\n //Otherwise a new element will be pushed\n if (!skipPush) {\n cardData.progressbar.push({\n value: cell.value,\n });\n }\n break;\n default:\n for (\n let index = 0;\n index < cardData.text.length;\n index++\n ) {\n //If there are empty elements, the first one will be used\n if (cardData.text[index] === '') {\n cardData.text[index] = cell.value;\n skipPush = true;\n break;\n }\n }\n //Otherwise a new element will be pushed\n if (!skipPush) {\n cardData.text.push(cell.value);\n }\n break;\n }\n }\n }\n }\n return <kup-card data={cardData} {...this.cardData}></kup-card>;\n }\n\n private renderRow(row: KupBoxRow) {\n const visibleColumns = [...this.visibleColumns];\n\n let boxContent = null;\n\n // if layout in row, use that one\n let rowLayout = row.layout;\n if (!rowLayout) {\n // otherwise, use 'default' layout\n rowLayout = this.boxLayout;\n }\n\n let horizontal = false;\n if (rowLayout) {\n if (rowLayout.horizontal) {\n horizontal = true;\n }\n\n const sections = rowLayout.sections;\n let size = sections.length;\n\n let cnt = 0;\n if (size > 0) {\n boxContent = [];\n }\n\n // create fake parent section\n const parent: KupBoxSection = {\n horizontal: horizontal,\n };\n\n while (size-- > 0) {\n if (\n this.cardData !== null &&\n this.cardData !== undefined &&\n typeof this.cardData === 'object'\n ) {\n boxContent.push(this.renderSectionAsCard(row));\n } else {\n boxContent.push(\n this.renderSection(\n sections[cnt++],\n parent,\n row,\n visibleColumns\n )\n );\n }\n }\n }\n\n var isSelected = false;\n for (let select of this.selectedRows) {\n if (select.id === row.id) {\n isSelected = true;\n }\n }\n\n let multiSel = null;\n if (this.multiSelection) {\n multiSel = (\n <div class=\"box-selection\">\n <kup-checkbox checked={isSelected} />\n </div>\n );\n }\n\n let rowObject = null;\n if (this.enableRowActions && !this.swipeDisabled) {\n const menuClass = {\n 'row-action-menu': true,\n open: row === this.rowActionMenuOpened,\n };\n\n let rowActionMenuContent = null;\n if (row.actions) {\n const actionItems = row.actions.map((item, index) => {\n const iconClass = `icon ${item.icon}`;\n\n return (\n <li\n tabindex=\"0\"\n onClick={() =>\n this.onRowActionClick(row, item, index)\n }\n >\n <div class={iconClass} />\n <div class=\"text\">{item.text}</div>\n </li>\n );\n });\n\n rowActionMenuContent = <ul>{actionItems}</ul>;\n }\n\n rowObject = (\n <div class=\"row-actions-wrapper\">\n <div class=\"row-actions-toggler\">\n <svg\n version=\"1.1\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n onClick={() => this.onRowAction(row)}\n >\n <path d=\"M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z\" />\n </svg>\n <div class={menuClass}>{rowActionMenuContent}</div>\n </div>\n </div>\n );\n }\n\n let badges = null;\n if (row.badgeData && row.badgeData.length > 0) {\n badges = row.badgeData.map((badge) => (\n <kup-badge\n text={badge.text}\n class={\n badge['className']\n ? `centered ${badge['className']}`\n : 'centered'\n }\n imageData={badge.imageData}\n />\n ));\n }\n\n const boxClass = {\n box: true,\n draggable: this.dragEnabled,\n selected: this.showSelection && isSelected,\n column: !horizontal,\n };\n\n const rowStyle: any = row.style || {};\n\n return (\n <div\n class=\"box-wrapper\"\n style={rowStyle}\n ref={(el: HTMLElement) => {\n if (el) {\n this.#rowsRefs.push(el);\n }\n }}\n >\n <div\n class={boxClass}\n data-row={row}\n ref={(el: HTMLElement) => this.rowsRefs.push(el)}\n >\n {multiSel}\n {boxContent}\n {badges}\n </div>\n {rowObject}\n </div>\n );\n }\n\n private renderSection(\n section: KupBoxSection,\n parent: KupBoxSection,\n row: KupBoxRow,\n visibleColumns: KupDataColumn[]\n ) {\n let sectionContent = null;\n\n if (section.sections && section.sections.length > 0) {\n // rendering child\n const sections = section.sections;\n let size = sections.length;\n\n let cnt = 0;\n if (size > 0) {\n sectionContent = [];\n }\n\n while (size-- > 0) {\n sectionContent.push(\n this.renderSection(\n sections[cnt++],\n section,\n row,\n visibleColumns\n )\n );\n }\n } else if (section.content) {\n // rendering box objects\n const content = section.content;\n let size = content.length;\n\n let cnt = 0;\n if (size > 0) {\n sectionContent = [];\n }\n\n while (size-- > 0) {\n sectionContent.push(\n this.renderBoxObject(\n {\n boxObject: content[cnt++],\n row,\n visibleColumns,\n },\n true\n )\n );\n }\n } else if (visibleColumns.length > 0) {\n const column = visibleColumns[0];\n sectionContent = this.renderBoxObject({\n boxObject: { column: column.name },\n row,\n visibleColumns,\n });\n }\n\n const sectionExpanded = this.isSectionExpanded(row, section);\n\n const isGrid = !!section.columns;\n\n const sectionClass: { [index: string]: boolean } = {\n 'box-section': true,\n open: sectionExpanded,\n column: !isGrid && !section.horizontal,\n grid: isGrid,\n titled: !!section.title,\n 'last-child': !section.sections || section.sections.length === 0,\n };\n\n const sectionStyle: any = section.style || {};\n if (section.dim && parent) {\n sectionStyle.flex = `0 0 ${section.dim}`;\n sectionStyle.overflow = 'hidden';\n\n if (parent.horizontal) {\n sectionStyle.maxWidth = section.dim;\n } else {\n sectionStyle.maxHeight = section.dim;\n }\n }\n\n if (isGrid) {\n sectionStyle[\n 'grid-template-columns'\n ] = `repeat(${section.columns}, 1fr)`;\n }\n\n let sectionContainer = null;\n if (section.collapsible) {\n sectionClass['collapse-section'] = true;\n\n const contentClass = {\n content: true,\n };\n\n // TODO I18N\n let headerTitle = '';\n if (section.title) {\n headerTitle = section.title;\n } else if (sectionExpanded) {\n headerTitle = this.kupManager.language.translate(\n KupLanguageGeneric.COLLAPSE\n );\n } else {\n headerTitle = this.kupManager.language.translate(\n KupLanguageGeneric.EXPAND\n );\n }\n\n sectionContainer = (\n <div class={sectionClass} style={sectionStyle}>\n <div class={contentClass}>{sectionContent}</div>\n <div\n class=\"header\"\n role=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n this.toggleSectionExpand(row, section);\n }}\n >\n <div class=\"header-content\">\n <span>{headerTitle}</span>\n <FImage\n resource={`${KupThemeIconValues.DROPDOWN}`}\n sizeX=\"1.25em\"\n sizeY=\"1.25em\"\n wrapperClass={sectionExpanded ? 'toggled' : ''}\n />\n </div>\n </div>\n </div>\n );\n } else {\n const title = section.title ? <h3>{section.title}</h3> : null;\n\n sectionContainer = (\n <div class={sectionClass} style={sectionStyle}>\n {title}\n {sectionContent}\n </div>\n );\n }\n\n return sectionContainer;\n }\n\n private renderBoxObject(\n {\n boxObject,\n row,\n visibleColumns,\n }: {\n boxObject: KupBoxObject;\n row: KupBoxRow;\n visibleColumns: KupDataColumn[];\n },\n fromSection?: boolean\n ) {\n const classObj: Record<string, boolean> = {\n 'box-object': true,\n };\n const boStyle = {};\n let column: KupDataColumn = null;\n let index = -1;\n for (let i = 0; i < visibleColumns.length; i++) {\n const c = visibleColumns[i];\n\n if (c.name === boxObject.column) {\n index = i;\n break;\n }\n }\n if (index >= 0) {\n column = visibleColumns[index];\n visibleColumns.splice(index, 1);\n } else if (fromSection) {\n column = this.data.columns.find((x) => x.name === boxObject.column);\n }\n const cell = row.cells[boxObject.column];\n let title: string = undefined;\n if (cell && !this.kupManager.objects.isEmptyKupObj(cell.obj)) {\n classObj['is-obj'] = true;\n if (this.kupManager.debug.isDebug()) {\n title =\n cell.obj.t + '; ' + cell.obj.p + '; ' + cell.obj.k + ';';\n }\n }\n const cellProps: FCellProps = {\n cell: cell,\n column: column,\n component: this,\n editable: this.editableData,\n renderKup: true,\n row: row,\n setSizes: true,\n shape: boxObject.shape,\n };\n return (\n <div\n data-cell={cell}\n data-row={row}\n data-column={boxObject.column}\n class={classObj}\n style={boStyle}\n title={title}\n >\n {cell && column ? (\n <FCell {...cellProps} />\n ) : (\n <span>{boxObject.value}</span>\n )}\n </div>\n );\n }\n\n /**\n * Prepares the kanban sections by sorting the boxlist's data.\n * @returns {{jsx: VNode[], style: { [index: string]: string }}} jsx contains the virtual nodes of the Kanban sections, style contains the grid CSS settings.\n */\n kanbanMode(): { jsx: VNode[]; style: { [index: string]: string } } {\n // Testing whether there are columns to group by\n if (!this.kanban.columns || this.kanban.columns.length === 0) {\n this.kupManager.debug.logMessage(\n this,\n 'No columns to group by detected.',\n KupDebugCategory.ERROR\n );\n return {\n jsx: (\n <div id=\"empty-data-message\" class=\"box-wrapper\">\n <div\n ref={(el: HTMLElement) => this.rowsRefs.push(el)}\n ></div>\n {this.kupManager.language.translate(\n KupLanguageGeneric.EMPTY_DATA\n )}\n </div>\n ),\n style: { 'grid-template-columns': `repeat(1, 1fr)` },\n };\n }\n const kanbanSections: { labels: string[]; nodes: VNode[] }[] = [];\n\n // Creating empty sections from prop-defined labels\n if (this.kanban.labels) {\n for (let index = 0; index < this.kanban.labels.length; index++) {\n const key: Array<string> = this.kanban.labels[index];\n kanbanSections.push({ labels: key, nodes: [] });\n }\n }\n // Browsing all rows\n for (let index = 0; index < this.rows.length; index++) {\n let key: Array<string> = [];\n // Creating the key for the current row\n for (let j = 0; j < this.kanban.columns.length; j++) {\n try {\n key.push(\n this.rows[index].cells[this.kanban.columns[j]].value\n );\n } catch (error) {\n this.kupManager.debug.logMessage(\n this,\n error,\n KupDebugCategory.WARNING\n );\n }\n }\n const check: { found: boolean; index: number } = {\n found: false,\n index: null,\n };\n // Browsing key array to search whether the current key exists or not\n for (let j = 0; j < kanbanSections.length; j++) {\n let sortingKey = kanbanSections[j].labels;\n let found: boolean = true;\n for (let i = 0; i < sortingKey.length; i++) {\n if (key[i] !== sortingKey[i]) {\n found = false;\n break;\n }\n }\n if (found) {\n check.found = true;\n check.index = j;\n break;\n }\n }\n // If current key exists, box will be pushed into the existing array of virtual nodes\n if (check.found) {\n kanbanSections[check.index].nodes.push(\n this.renderRow(this.rows[index])\n );\n } else {\n // Otherwise, a new section will be defined starting with just the current virtal node\n kanbanSections.push({\n labels: key,\n nodes: [this.renderRow(this.rows[index])],\n });\n }\n }\n // Once the arrays are set, they need to be emptied into columns\n const kanbanJSX: VNode[] = [];\n for (let index = 0; index < kanbanSections.length; index++) {\n const sortingKey: Array<string> = kanbanSections[index].labels;\n const props: FChipsProps = {\n data: [],\n };\n for (let index = 0; index < sortingKey.length; index++) {\n props.data.push({\n value: sortingKey[index],\n id: sortingKey[index],\n });\n }\n kanbanJSX.push(\n <div class=\"kanban-section\">\n <FChip {...props} />\n {kanbanSections[index].nodes}\n </div>\n );\n }\n return {\n jsx: kanbanJSX,\n style: {\n 'grid-template-columns': this.kanban.isStacked\n ? 'repeat(1fr)'\n : this.kanban.size\n ? `repeat(${Object.keys(kanbanSections).length}, ${\n this.kanban.size\n })`\n : `repeat(${Object.keys(kanbanSections).length}, 1fr)`,\n },\n };\n }\n\n didLoadInteractables() {\n this.interactableTouch.push(this.boxContainer);\n const tapCb = (e: PointerEvent) => {\n if (this.hold) {\n this.hold = false;\n return;\n }\n switch (e.button) {\n // left click\n case 0:\n // Note: event must be cloned\n // otherwise inside setTimeout will be exiting the Shadow DOM scope(causing loss of information, including target).\n const clone: GenericObject = {};\n for (const key in e) {\n clone[key] = e[key];\n }\n const details = this.clickHandler(clone as PointerEvent);\n this.kupBoxClick.emit({\n comp: this,\n id: this.rootElement.id,\n row: details.row,\n column: details.column?.name,\n });\n break;\n case 2:\n this.kupBoxContextMenu.emit({\n comp: this,\n id: this.rootElement.id,\n details: this.contextMenuHandler(e),\n });\n break;\n }\n };\n const holdCb = (e: PointerEvent) => {\n if (e.pointerType === 'pen' || e.pointerType === 'touch') {\n this.hold = true;\n this.kupBoxContextMenu.emit({\n comp: this,\n id: this.rootElement.id,\n details: this.contextMenuHandler(e),\n });\n }\n };\n this.kupManager.interact.on(\n this.boxContainer,\n KupPointerEventTypes.TAP,\n tapCb\n );\n this.kupManager.interact.on(\n this.boxContainer,\n KupPointerEventTypes.HOLD,\n holdCb\n );\n }\n\n didRenderInteractables() {\n if (this.dragEnabled) {\n for (let index = 0; index < this.rowsRefs.length; index++) {\n const row = this.rowsRefs[index];\n const dataCb: KupDragDataTransferCallback = () => {\n const cellEl = this.rootElement.shadowRoot.querySelector(\n '.box-object:hover'\n ) as HTMLElement;\n return {\n cell: cellEl['data-cell'],\n column: getColumnByName(\n this.visibleColumns,\n cellEl.dataset.column\n ),\n id: this.rootElement.id,\n multiple: this.multiSelection,\n row: cellEl['data-row'],\n selectedRows: this.selectedRows,\n };\n };\n if (row && !this.interactableDrag.includes(row)) {\n this.interactableDrag.push(row);\n this.kupManager.interact.draggable(\n row,\n {\n allowFrom: '.box-object',\n cursorChecker() {\n return null;\n },\n },\n {\n callback: dataCb,\n },\n KupDragEffect.BADGE\n );\n }\n }\n }\n if (this.dropEnabled) {\n const dataCb: KupDropDataTransferCallback = () => {\n const cell =\n this.rootElement.shadowRoot.querySelector('.box:hover');\n if (!cell) {\n this.kupManager.debug.logMessage(\n this,\n \"Couldn't find cell hovered to retrieve dropzone informations!\",\n KupDebugCategory.WARNING\n );\n return;\n }\n const path = this.kupManager.getEventPath(\n cell,\n this.rootElement\n );\n const receivingDetails = this.getEventDetails(path);\n return {\n cell: receivingDetails.cell,\n column: receivingDetails.column,\n id: this.rootElement.id,\n row: receivingDetails.row,\n };\n };\n if (!this.interactableDrop.includes(this.sectionRef)) {\n this.interactableDrop.push(this.sectionRef);\n this.kupManager.interact.dropzone(\n this.sectionRef,\n {\n accept: `[${kupDraggableAttr}]`,\n },\n {\n dispatcher: this.rootElement,\n type: KupDropEventTypes.BOX,\n }\n );\n }\n for (let index = 0; index < this.rowsRefs.length; index++) {\n const row = this.rowsRefs[index];\n if (row && !this.interactableDrop.includes(row)) {\n this.interactableDrop.push(row);\n this.kupManager.interact.dropzone(\n row,\n {\n accept: `[${kupDraggableAttr}]`,\n },\n {\n callback: dataCb,\n dispatcher: this.rootElement,\n type: KupDropEventTypes.BOX,\n }\n );\n }\n }\n }\n }\n\n #didRenderObservers() {\n if (\n this.lazyLoadRows &&\n this.currentRowsPerPage < this.data.rows.length\n ) {\n this.#intObserver.observe(\n this.#rowsRefs[this.#rowsRefs.length - 1]\n );\n }\n }\n\n #setObserver() {\n const callback: IntersectionObserverCallback = (\n entries: IntersectionObserverEntry[]\n ) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n this.kupManager.debug.logMessage(\n this,\n 'Last row entering the viewport, loading more elements.'\n );\n const delta =\n this.data.rows.length - this.currentRowsPerPage;\n if (delta < this.loadMoreStep) {\n this.currentRowsPerPage += delta;\n } else {\n this.currentRowsPerPage += this.loadMoreStep;\n }\n entry.target.classList.remove('last-row');\n this.#intObserver.unobserve(entry.target);\n }\n });\n };\n const options: IntersectionObserverInit = {\n threshold: 0,\n rootMargin: '-' + this.#navBarHeight + 'px 0px 0px 0px',\n };\n this.#intObserver = new IntersectionObserver(callback, options);\n }\n\n // Handler for loadMore button is clicked.\n #onLoadMoreClick() {\n let loadItems: number = 0;\n\n switch (this.loadMoreMode) {\n case LoadMoreMode.CONSTANT:\n loadItems = this.loadMoreStep;\n break;\n case LoadMoreMode.CONSTANT_INCREMENT:\n loadItems =\n this.loadMoreStep * (this.#loadMoreEventCounter + 1);\n break;\n case LoadMoreMode.PROGRESSIVE_THRESHOLD:\n loadItems =\n Math.max(\n this.#loadMoreEventPreviousQuantity,\n this.loadMoreStep\n ) * Math.min(this.#loadMoreEventCounter + 1, 2);\n break;\n }\n\n if (loadItems > this.loadMoreLimit) {\n loadItems = this.loadMoreLimit;\n }\n\n this.kupLoadMoreClick.emit({\n comp: this,\n id: this.rootElement.id,\n loadItems: loadItems,\n });\n\n this.#loadMoreEventPreviousQuantity = loadItems;\n this.#loadMoreEventCounter++;\n }\n\n /*-------------------------------------------------*/\n /* L i f e c y c l e H o o k s */\n /*-------------------------------------------------*/\n\n componentWillLoad() {\n this.kupManager.debug.logLoad(this, false);\n if (this.rowsPerPage) {\n this.currentRowsPerPage = this.rowsPerPage;\n }\n if (\n this.data &&\n this.data.rows &&\n this.currentRowsPerPage > this.data.rows.length\n ) {\n this.currentRowsPerPage = this.data.rows.length;\n }\n this.kupManager.language.register(this);\n this.kupManager.theme.register(this);\n this.onDataChanged();\n this.adjustPaginator();\n if (document.querySelector('.header')) {\n this.#navBarHeight = document.querySelector('.header').clientHeight;\n } else {\n this.#navBarHeight = 0;\n }\n if (document.querySelector('.topbar')) {\n this.#navBarHeight +=\n document.querySelector('.topbar').clientHeight;\n }\n this.#setObserver();\n }\n\n componentDidLoad() {\n this.handleAutomaticBoxSelection();\n\n // When component is created, then the listener is set. @See clickFunction for more details\n document.addEventListener('click', this.clickFunction.bind(this));\n\n this.currentPage = this.pageSelected;\n\n if (this.multiSelection && this.selectedRowsState) {\n this.selectedRows = [];\n let selectedIds: Array<string> = this.selectedRowsState.split(';');\n this.selectedRows = this.data.rows.filter((r) => {\n return selectedIds.indexOf(r.id) >= 0;\n });\n }\n this.didLoadInteractables();\n this.kupDidLoad.emit({ comp: this, id: this.rootElement.id });\n this.kupManager.debug.logLoad(this, true);\n }\n\n componentWillRender() {\n this.kupManager.debug.logRender(this, false);\n }\n\n componentDidRender() {\n const root: ShadowRoot = this.rootElement.shadowRoot;\n if (root) {\n const fs: NodeListOf<HTMLElement> =\n root.querySelectorAll('.f-text-field');\n for (let index = 0; index < fs.length; index++) {\n FTextFieldMDC(fs[index]);\n }\n }\n this.checkScrollOnHover();\n this.persistState();\n this.didRenderInteractables();\n this.#didRenderObservers();\n this.kupManager.debug.logRender(this, true);\n }\n\n render() {\n this.#rowsRefs = [];\n const isKanban: boolean = !!(\n typeof this.kanban === 'object' && this.kanban !== null\n );\n let sortPanel = null;\n if (this.sortEnabled) {\n // creating items\n const visibleColumnsItems = this.visibleColumns.map((column) => {\n const item = {\n value: column.title,\n id: column.name,\n selected: column.name === this.sortBy,\n };\n return item;\n });\n const items = [{ value: '', id: '' }, ...visibleColumnsItems];\n let textfieldData = {\n label: this.kupManager.language.translate(\n KupLanguageGeneric.SORT_BY\n ),\n trailingIcon: true,\n };\n let listData = {\n data: items,\n selectable: true,\n };\n\n let data = {\n 'kup-text-field': textfieldData,\n 'kup-list': listData,\n };\n sortPanel = (\n <div id=\"sort-panel\">\n <kup-combobox\n data={data}\n initialValue={this.sortBy}\n onkup-combobox-itemclick={(e) => this.onSortChange(e)}\n />\n </div>\n );\n }\n\n let filterPanel = null;\n if (this.globalFilter) {\n filterPanel = (\n <div id=\"global-filter\">\n <kup-text-field\n fullWidth={true}\n label={this.kupManager.language.translate(\n KupLanguageSearch.SEARCH\n )}\n icon={KupThemeIconValues.SEARCH}\n initialValue={this.globalFilterValue}\n onkup-textfield-input={(event) => {\n window.clearTimeout(this.globalFilterTimeout);\n this.globalFilterTimeout = window.setTimeout(\n () => this.onGlobalFilterChange(event),\n 600\n );\n }}\n ></kup-text-field>\n </div>\n );\n }\n\n let paginator = null;\n // paginaltorPos prop not managed yet\n const top: boolean = true;\n if (this.showLoadMore || (!this.lazyLoadRows && this.pagination)) {\n paginator = (\n <FPaginator\n id={top ? 'top-paginator' : 'bottom-paginator'}\n currentPage={this.currentPage}\n max={this.filteredRows.length}\n // mode={FPaginatorMode.SIMPLE}\n perPage={\n this.currentRowsPerPage\n ? this.currentRowsPerPage\n : this.rowsPerPage\n }\n onLoadMore={\n this.showLoadMore\n ? () => {\n this.#onLoadMoreClick();\n }\n : null\n }\n onNextPage={() =>\n this.handlePageChange(this.currentPage + 1)\n }\n onPrevPage={() =>\n this.handlePageChange(this.currentPage - 1)\n }\n onPageChange={(e: CustomEvent<KupComboboxEventPayload>) =>\n this.handlePageChange(e.detail.value)\n }\n onRowsChange={(e: CustomEvent<KupComboboxEventPayload>) =>\n this.handleRowsPerPageChange(e.detail.value)\n }\n />\n );\n }\n\n let boxContent = null;\n\n let containerStyle = {};\n\n if (this.rows.length === 0) {\n boxContent = (\n <div id=\"empty-data-message\" class=\"box-wrapper\">\n <div\n class=\"box\"\n ref={(el: HTMLElement) => this.rowsRefs.push(el)}\n >\n {this.kupManager.language.translate(\n KupLanguageGeneric.EMPTY_DATA\n )}\n </div>\n </div>\n );\n containerStyle = { 'grid-template-columns': `repeat(1, 1fr)` };\n } else if (isKanban) {\n const kanban: {\n jsx: VNode[];\n style: {\n [index: string]: string;\n };\n } = this.kanbanMode();\n boxContent = kanban.jsx;\n containerStyle = kanban.style;\n } else {\n containerStyle = {\n 'grid-template-columns': `repeat(${this.columns}, 1fr)`,\n };\n const rows = this.rows;\n let size = rows.length;\n\n let cnt = 0;\n boxContent = [];\n\n while (size-- > 0) {\n boxContent.push(this.renderRow(rows[cnt++]));\n }\n }\n\n return (\n <Host>\n <style>\n {this.kupManager.theme.setKupStyle(\n this.rootElement as KupComponent\n )}\n </style>\n <div id={componentWrapperId}>\n <div\n class={'box-component'}\n ref={(el) => (this.sectionRef = el)}\n >\n {sortPanel}\n {filterPanel}\n {paginator}\n <div\n class={isKanban ? 'is-kanban' : ''}\n id={'box-container'}\n style={containerStyle}\n onContextMenu={(e: MouseEvent) => {\n e.preventDefault();\n }}\n ref={(el: HTMLElement) =>\n (this.boxContainer =\n el as KupScrollOnHoverElement)\n }\n >\n {boxContent}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n\n disconnectedCallback() {\n this.kupManager.interact.unregister(\n this.interactableDrag.concat(this.interactableDrop)\n );\n this.kupManager.language.unregister(this);\n this.kupManager.theme.unregister(this);\n if (this.scrollOnHover) {\n this.kupManager.scrollOnHover.unregister(this.boxContainer);\n }\n // When component is destroyed, then the listener is removed. @See clickFunction for more details\n document.removeEventListener('click', this.clickFunction.bind(this));\n this.kupDidUnload.emit({ comp: this, id: this.rootElement.id });\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"p-c85d72a8.js","mappings":"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","names":[],"sources":["src/components/kup-box/kup-box-declarations.ts","src/components/kup-box/kup-box-state.ts","src/components/kup-box/kup-box.scss?tag=kup-box&encapsulation=shadow","src/components/kup-box/kup-box.tsx"],"sourcesContent":["import { KupBadge } from '../kup-badge/kup-badge';\nimport { KupEventPayload } from '../../types/GenericTypes';\nimport { FCellShapes } from '../../f-components/f-cell/f-cell-declarations';\nimport {\n KupDataCell,\n KupDataColumn,\n KupDataRow,\n KupDataRowAction,\n} from '../../managers/kup-data/kup-data-declarations';\nimport type { PointerEvent } from '@interactjs/types/index';\n/**\n * Props of the kup-box component.\n * Used to export every prop in an object.\n */\nexport enum KupBoxProps {\n cardData = \"Data of the card linked to the box when the latter's layout must be a premade template.\",\n columns = 'Number of columns.',\n customStyle = 'Custom style of the component.',\n data = 'Actual data of the box.',\n dragEnabled = 'Enable dragging.',\n dropEnabled = 'Enable dropping.',\n dropOnSection = 'Drop can be done in section.',\n enableRowActions = 'If enabled, a button to load / display the row actions will be displayed on the right of every box.',\n globalFilter = 'When set to true it activates the global filter.',\n globalFilterValue = 'The value of the global filter.',\n kanban = 'Displays the boxlist as a Kanban.',\n layout = 'How the field will be displayed. If not present, a default one will be created.',\n lazyLoadRows = 'When set to true, extra rows will be automatically loaded once the last row enters the viewport.',\n loadMoreLimit = 'Sets a maximum limit of new records which can be required by the load more functionality.',\n loadMoreMode = 'Establish the modality of how many new records will be downloaded. This property is regulated also by loadMoreStep.',\n loadMoreStep = 'The number of records which will be requested to be downloaded when clicking on the load more button. This property is regulated also by loadMoreMode.',\n multiSelection = 'Enable multi selection.',\n pageSelected = 'Current page number.',\n pagination = 'Enables pagination.',\n rowsPerPage = 'Number of current rows per page.',\n scrollOnHover = 'Activates the scroll on hover function.',\n selectBox = 'Automatically selects the box at the specified index.',\n selectedRowsState = 'Multiple selection.',\n showLoadMore = 'If set to true, displays the button to load more records.',\n showSelection = 'If enabled, highlights the selected box/boxes.',\n sortBy = 'If sorting is enabled, specifies which column to sort.',\n sortEnabled = 'Enable sorting.',\n stateId = '',\n store = '',\n swipeDisabled = 'Disable swipe.',\n}\n\n//---- *NEXT functionality AKA load more ----\nexport enum LoadMoreMode {\n CONSTANT = 'constant',\n CONSTANT_INCREMENT = 'constant_increment',\n PROGRESSIVE_THRESHOLD = 'progressive_threshold',\n}\nexport interface KupBoxData {\n columns?: KupDataColumn[];\n rows?: KupBoxRow[];\n}\nexport interface KupBoxRow extends KupDataRow {\n layout?: KupBoxLayout;\n badgeData?: KupBadge[];\n style?: { [index: string]: string };\n}\n\nexport interface KupBoxLayout {\n horizontal?: boolean;\n sections?: KupBoxSection[];\n}\n\nexport interface KupBoxSection {\n collapsible?: boolean;\n columns?: number;\n content?: KupBoxObject[];\n dim?: string;\n horizontal?: boolean;\n id?: string;\n sections?: KupBoxSection[];\n style?: { [index: string]: string };\n title?: string;\n}\n\nexport interface KupBoxObject {\n column?: string;\n value?: string;\n shape?: FCellShapes;\n config?: any;\n}\n\nexport interface CollapsedSectionsState {\n [index: string]: {\n [index: string]: boolean;\n };\n}\n/**\n * Interface for a kanban-displayed boxlist.\n */\nexport interface KupBoxKanban {\n columns: string[];\n isStacked?: boolean;\n labels?: Array<Array<string>>;\n size?: string;\n}\n/**\n * Contains all the data of an event.\n */\nexport interface KupBoxEventHandlerDetails {\n boxObject: HTMLElement;\n cell: KupDataCell;\n column: KupDataColumn;\n originalEvent: PointerEvent;\n row: KupBoxRow;\n}\n\nexport interface KupBoxClickEventPayload extends KupEventPayload {\n row: KupBoxRow;\n column?: string;\n}\n\nexport interface KupBoxSelectedEventPayload extends KupEventPayload {\n rows: KupBoxRow[];\n}\n\nexport interface KupBoxAutoSelectEventPayload extends KupEventPayload {\n row: KupBoxRow;\n}\n\nexport interface KupBoxRowActionClickEventPayload extends KupEventPayload {\n row: KupBoxRow;\n action: KupDataRowAction;\n index: number;\n}\nexport interface KupBoxContextMenuEventPayload extends KupEventPayload {\n details: KupBoxEventHandlerDetails;\n}\n\nexport interface KupBoxLoadMoreClickEventPayload extends KupEventPayload {\n loadItems: number;\n}\n","import { KupState } from '../kup-state/kup-state';\nexport class KupBoxState implements KupState {\n globalFilterValue: string = '';\n sortBy: string = '';\n selectedRowsState: string = '';\n pageSelected: number = 1;\n rowsPerPage: number = 0;\n load: boolean = false;\n loadMoreLimit: number = 1000;\n showLoadMore: boolean = false;\n\n /*Add attribute*/\n\n public toDebugString() {\n // TODO\n return 'box state';\n }\n}\n","@import 'styles/kup-box-main';\n@import 'styles/kup-box-classes';\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n forceUpdate,\n h,\n Host,\n Method,\n Prop,\n State,\n VNode,\n Watch,\n} from '@stencil/core';\nimport type { PointerEvent } from '@interactjs/types/index';\nimport {\n SortObject,\n SortMode,\n} from '../kup-data-table/kup-data-table-declarations';\nimport {\n KupBoxRow,\n KupBoxLayout,\n KupBoxSection,\n CollapsedSectionsState,\n KupBoxObject,\n KupBoxKanban,\n KupBoxProps,\n KupBoxClickEventPayload,\n KupBoxSelectedEventPayload,\n KupBoxAutoSelectEventPayload,\n KupBoxRowActionClickEventPayload,\n KupBoxContextMenuEventPayload,\n KupBoxData,\n KupBoxEventHandlerDetails,\n LoadMoreMode,\n KupBoxLoadMoreClickEventPayload,\n} from './kup-box-declarations';\nimport { getColumnByName } from '../../utils/cell-utils';\nimport {\n filterRows,\n sortRows,\n paginateRows,\n} from '../kup-data-table/kup-data-table-helper';\nimport { KupCardData } from '../kup-card/kup-card-declarations';\nimport {\n KupManager,\n kupManagerInstance,\n} from '../../managers/kup-manager/kup-manager';\nimport { KupBoxState } from './kup-box-state';\nimport { KupStore } from '../kup-state/kup-store';\nimport { getProps, identify, setProps } from '../../utils/utils';\nimport {\n GenericObject,\n KupComponent,\n KupEventPayload,\n} from '../../types/GenericTypes';\nimport { FImage } from '../../f-components/f-image/f-image';\nimport { FChip } from '../../f-components/f-chip/f-chip';\nimport { FChipsProps } from '../../f-components/f-chip/f-chip-declarations';\nimport { KupScrollOnHoverElement } from '../../managers/kup-scroll-on-hover/kup-scroll-on-hover-declarations';\nimport { KupDebugCategory } from '../../managers/kup-debug/kup-debug-declarations';\nimport {\n KupLanguageGeneric,\n KupLanguageSearch,\n} from '../../managers/kup-language/kup-language-declarations';\nimport { componentWrapperId } from '../../variables/GenericVariables';\nimport { KupThemeIconValues } from '../../managers/kup-theme/kup-theme-declarations';\nimport {\n KupDragDataTransferCallback,\n KupDragEffect,\n kupDraggableAttr,\n KupDropDataTransferCallback,\n KupDropEventTypes,\n KupPointerEventTypes,\n} from '../../managers/kup-interact/kup-interact-declarations';\nimport { FCell } from '../../f-components/f-cell/f-cell';\nimport { FCellProps } from '../../f-components/f-cell/f-cell-declarations';\nimport { FPaginator } from '../../f-components/f-paginator/f-paginator';\nimport { KupComboboxEventPayload } from '../kup-combobox/kup-combobox-declarations';\nimport { FPaginatorMode } from '../../f-components/f-paginator/f-paginator-declarations';\nimport {\n pageChange,\n rowsPerPageChange,\n} from '../../f-components/f-paginator/f-paginator-utils';\nimport {\n KupDataCell,\n KupDataColumn,\n KupDataRowAction,\n} from '../../managers/kup-data/kup-data-declarations';\nimport { FTextFieldMDC } from '../../f-components/f-text-field/f-text-field-mdc';\n\n@Component({\n tag: 'kup-box',\n styleUrl: 'kup-box.scss',\n shadow: true,\n})\nexport class KupBox {\n /**\n * References the root HTML element of the component (<kup-box>).\n */\n @Element() rootElement: HTMLElement;\n\n /*-------------------------------------------------*/\n /* S t a t e s */\n /*-------------------------------------------------*/\n\n @State()\n private collapsedSection: CollapsedSectionsState = {};\n\n @State()\n private selectedRows: Array<KupBoxRow> = [];\n\n /**\n * Row that has the row object menu open\n */\n @State()\n private rowActionMenuOpened: KupBoxRow;\n\n @State()\n private currentPage = 1;\n\n @State()\n private currentRowsPerPage = 10;\n\n state: KupBoxState = new KupBoxState();\n\n initWithPersistedState(): void {\n if (this.store && this.stateId) {\n const state = this.store.getState(this.stateId);\n if (state != null) {\n this.kupManager.debug.logMessage(\n this,\n 'Initialize with state for stateId ' +\n this.stateId +\n ': ' +\n state\n );\n // *** PROPS ***\n this.sortBy = this.state.sortBy;\n this.globalFilterValue = this.state.globalFilterValue;\n this.selectedRowsState = this.state.selectedRowsState;\n this.pageSelected = this.state.pageSelected;\n this.rowsPerPage = this.state.rowsPerPage;\n this.loadMoreLimit = state.loadMoreLimit;\n this.showLoadMore = state.showLoadMore;\n }\n }\n }\n\n persistState(): void {\n if (this.store && this.stateId) {\n let somethingChanged = false;\n if (\n !this.kupManager.objects.deepEqual(\n this.state.sortBy,\n this.sortBy\n )\n ) {\n this.state.sortBy = this.sortBy;\n somethingChanged = true;\n }\n\n if (\n !this.kupManager.objects.deepEqual(\n this.state.globalFilterValue,\n this.globalFilterValue\n )\n ) {\n this.state.globalFilterValue = this.globalFilterValue;\n somethingChanged = true;\n }\n\n if (\n !this.kupManager.objects.deepEqual(\n this.state.pageSelected,\n this.currentPage\n )\n ) {\n this.state.pageSelected = this.currentPage;\n somethingChanged = true;\n }\n\n if (\n !this.kupManager.objects.deepEqual(\n this.state.rowsPerPage,\n this.currentRowsPerPage\n )\n ) {\n this.state.rowsPerPage = this.currentRowsPerPage;\n somethingChanged = true;\n }\n\n const selectedRowsState = this.selectedRows.reduce(\n (accumulator, row, currentIndex) => {\n const prefix = currentIndex > 0 ? ';' : '';\n return accumulator + prefix + row.id;\n },\n ''\n );\n\n if (\n !this.kupManager.objects.deepEqual(\n this.state.selectedRowsState,\n selectedRowsState\n )\n ) {\n this.state.selectedRowsState = selectedRowsState;\n somethingChanged = true;\n }\n if (\n !this.kupManager.objects.deepEqual(\n this.state.loadMoreLimit,\n this.loadMoreLimit\n )\n ) {\n this.state.loadMoreLimit = this.loadMoreLimit;\n somethingChanged = true;\n }\n\n if (\n !this.kupManager.objects.deepEqual(\n this.state.showLoadMore,\n this.showLoadMore\n )\n ) {\n this.state.showLoadMore = this.showLoadMore;\n somethingChanged = true;\n }\n\n if (!this.state.load) {\n this.state.load = true;\n return;\n }\n\n if (somethingChanged) {\n this.kupManager.debug.logMessage(\n this,\n 'Persisting state for stateId ' +\n this.stateId +\n ': ' +\n this.state\n );\n this.store.persistState(this.stateId, this.state);\n }\n }\n }\n\n /*-------------------------------------------------*/\n /* P r o p s */\n /*-------------------------------------------------*/\n\n /**\n * Data of the card linked to the box when the latter's layout must be a premade template.\n * @default null\n */\n @Prop() cardData: GenericObject = null;\n /**\n * Number of columns\n * @default 1\n */\n @Prop() columns: number = 1;\n /**\n * Custom style of the component.\n * @default \"\"\n * @see https://smeup.github.io/ketchup/#/customization\n */\n @Prop() customStyle: string = '';\n /**\n * Actual data of the box.\n * @default null\n */\n @Prop() data: KupBoxData = null;\n /**\n * Enable dragging\n * @default false\n */\n @Prop() dragEnabled: boolean = false;\n /**\n * Enable dropping\n * @default false\n */\n @Prop() dropEnabled: boolean = false;\n /**\n * Drop can be done in section\n * @default false\n */\n @Prop() dropOnSection: boolean = false;\n /**\n * When set to true, editable cells will be rendered using input components.\n * @default false\n */\n @Prop() editableData: boolean = false;\n /**\n * If enabled, a button to load / display the row actions\n * will be displayed on the right of every box\n * @default false\n */\n @Prop() enableRowActions: boolean = false;\n /**\n * When set to true it activates the global filter.\n * @default false\n */\n @Prop() globalFilter: boolean = false;\n /**\n * The value of the global filter.\n * @default \"\"\n */\n @Prop({ reflect: true, mutable: true }) globalFilterValue = '';\n /**\n * Displays the boxlist as a Kanban.\n * @default null\n */\n @Prop() kanban: KupBoxKanban = null;\n /**\n * How the field will be displayed. If not present, a default one will be created.\n * @default undefined\n */\n @Prop() layout: KupBoxLayout;\n /**\n * When set to true, extra rows will be automatically loaded once the last row enters the viewport.\n */\n @Prop() lazyLoadRows: boolean = false;\n /**\n * Sets a maximum limit of new records which can be required by the load more functionality.\n */\n @Prop() loadMoreLimit: number = 1000;\n /**\n * Establish the modality of how many new records will be downloaded.\n *\n * This property is regulated also by loadMoreStep.\n * @see loadMoreStep\n * @see loadMoreLimit\n */\n @Prop() loadMoreMode: LoadMoreMode = LoadMoreMode.PROGRESSIVE_THRESHOLD;\n /**\n * The number of records which will be requested to be downloaded when clicking on the load more button.\n *\n * This property is regulated also by loadMoreMode.\n * @see loadMoreMode\n * @see loadMoreLimit\n */\n @Prop() loadMoreStep: number = 60;\n /**\n * Enable multi selection\n * @default false\n */\n @Prop() multiSelection: boolean = false;\n /**\n * Current page number\n * @default 1\n */\n @Prop() pageSelected: number = 1;\n /**\n * Enables pagination\n * @default false\n */\n @Prop() pagination: boolean = false;\n /**\n * Number of current rows per page\n * @default undefined\n */\n @Prop() rowsPerPage: number;\n /**\n * Activates the scroll on hover function.\n * @default false\n */\n @Prop() scrollOnHover: boolean = false;\n /**\n * Automatically selects the box at the specified index\n * @default undefined\n */\n @Prop() selectBox: number;\n /**\n * Multiple selection\n * @default undefined\n */\n @Prop({ mutable: true }) selectedRowsState: string;\n /**\n * If set to true, displays the button to load more records.\n */\n @Prop() showLoadMore: boolean = false;\n /**\n * If enabled, highlights the selected box/boxes\n * @default true\n */\n @Prop() showSelection: boolean = true;\n /**\n * If sorting is enabled, specifies which column to sort\n * @default undefined\n */\n @Prop({ mutable: true }) sortBy: string;\n /**\n * Enable sorting\n * @default false\n */\n @Prop() sortEnabled: boolean = false;\n @Prop() stateId: string = '';\n @Prop() store: KupStore;\n /**\n * Disable swipe\n * @default false\n */\n @Prop() swipeDisabled: boolean = false;\n\n /*-------------------------------------------------*/\n /* I n t e r n a l V a r i a b l e s */\n /*-------------------------------------------------*/\n\n /**\n * Instance of the KupManager class.\n */\n private kupManager: KupManager = kupManagerInstance();\n private boxLayout: KupBoxLayout;\n private visibleColumns: KupDataColumn[] = [];\n private rows: KupBoxRow[] = [];\n private filteredRows: KupBoxRow[] = [];\n private globalFilterTimeout: number;\n private boxContainer: KupScrollOnHoverElement;\n private sectionRef: HTMLElement = null;\n private rowsRefs: HTMLElement[] = [];\n private hold: boolean = false;\n private interactableDrag: HTMLElement[] = [];\n private interactableDrop: HTMLElement[] = [];\n private interactableTouch: HTMLElement[] = [];\n #intObserver: IntersectionObserver = undefined;\n #rowsRefs: HTMLElement[] = [];\n #navBarHeight: number = 0;\n\n #loadMoreEventCounter: number = 0;\n #loadMoreEventPreviousQuantity: number = 0;\n\n /*-------------------------------------------------*/\n /* E v e n t s */\n /*-------------------------------------------------*/\n\n /**\n * Triggered when a box is clicked\n */\n @Event({\n eventName: 'kup-box-click',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupBoxClick: EventEmitter<KupBoxClickEventPayload>;\n\n /**\n * Triggered when the multi selection checkbox changes value\n */\n @Event({\n eventName: 'kup-box-selected',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupBoxSelected: EventEmitter<KupBoxSelectedEventPayload>;\n\n /**\n * Triggered when a box is auto selected via selectBox prop\n */\n @Event({\n eventName: 'kup-box-autoselect',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupAutoBoxSelect: EventEmitter<KupBoxAutoSelectEventPayload>;\n\n /**\n * When the row menu action icon is click\n */\n @Event({\n eventName: 'kup-box-rowactionmenuclick',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupRowActionMenuClick: EventEmitter<KupBoxAutoSelectEventPayload>;\n\n /**\n * When the row menu action icon is click\n */\n @Event({\n eventName: 'kup-box-rowactionclick',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupRowActionClick: EventEmitter<KupBoxRowActionClickEventPayload>;\n\n @Event({\n eventName: 'kup-box-didload',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDidLoad: EventEmitter<KupEventPayload>;\n\n /**\n * Triggered when stop propagation event\n */\n @Event({\n eventName: 'kup-box-didunload',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDidUnload: EventEmitter<KupEventPayload>;\n /**\n * Generic right click event on box.\n */\n @Event({\n eventName: 'kup-box-contextmenu',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupBoxContextMenu: EventEmitter<KupBoxContextMenuEventPayload>;\n\n @Event({\n eventName: 'kup-box-loadmoreclick',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupLoadMoreClick: EventEmitter<KupBoxLoadMoreClickEventPayload>;\n\n /*-------------------------------------------------*/\n /* W a t c h e r s */\n /*-------------------------------------------------*/\n\n @Watch('rowsPerPage')\n rowsPerPageHandler(newValue: number) {\n this.currentRowsPerPage = newValue;\n }\n\n @Watch('globalFilterValue')\n @Watch('sortBy')\n @Watch('pagination')\n @Watch('rowsPerPage')\n @Watch('currentPage')\n @Watch('currentRowsPerPage')\n recalculateRows() {\n this.initRows();\n }\n\n @Watch('data')\n onDataChanged() {\n identify(this.getRows());\n this.initVisibleColumns();\n this.initRows();\n this.checkLayout();\n }\n\n @Watch('layout')\n onLayoutChanged() {\n this.checkLayout();\n }\n\n @Watch('selectBox')\n onSelectBoxChanged() {\n this.handleAutomaticBoxSelection();\n }\n\n /*-------------------------------------------------*/\n /* P u b l i c M e t h o d s */\n /*-------------------------------------------------*/\n\n /**\n * Used to retrieve component's props values.\n * @param {boolean} descriptions - When provided and true, the result will be the list of props with their description.\n * @returns {Promise<GenericObject>} List of props as object, each key will be a prop.\n */\n @Method()\n async getProps(descriptions?: boolean): Promise<GenericObject> {\n return getProps(this, KupBoxProps, descriptions);\n }\n\n @Method()\n async loadRowActions(row: KupBoxRow, actions: KupDataRowAction[]) {\n row.actions = actions;\n\n // show menu\n this.rowActionMenuOpened = row;\n }\n /**\n * This method is used to trigger a new render of the component.\n */\n @Method()\n async refresh(): Promise<void> {\n forceUpdate(this);\n }\n /**\n * Sets the props to the component.\n * @param {GenericObject} props - Object containing props that will be set to the component.\n */\n @Method()\n async setProps(props: GenericObject): Promise<void> {\n setProps(this, KupBoxProps, props);\n }\n\n /*-------------------------------------------------*/\n /* P r i v a t e M e t h o d s */\n /*-------------------------------------------------*/\n\n private getColumns(): Array<KupDataColumn> {\n return this.data && this.data.columns\n ? this.data.columns\n : [{ title: '', name: '', size: undefined }];\n }\n\n private initVisibleColumns(): void {\n this.visibleColumns = this.getColumns().filter((column) => {\n if (column.hasOwnProperty('visible')) {\n return column.visible;\n }\n\n return true;\n });\n }\n\n private getRows(): KupBoxRow[] {\n return this.data && this.data.rows ? this.data.rows : [];\n }\n\n private initRows(): void {\n this.filteredRows = this.getRows();\n\n if (this.globalFilter && this.globalFilterValue) {\n // filtering rows\n this.filteredRows = filterRows(\n this.filteredRows,\n null,\n this.globalFilterValue,\n this.visibleColumns\n );\n }\n\n this.rows = this.sortRows(this.filteredRows);\n\n if (this.pagination) {\n this.rows = paginateRows(\n this.rows,\n this.currentPage,\n this.currentRowsPerPage,\n false\n );\n }\n }\n\n private sortRows(rows: KupBoxRow[]): KupBoxRow[] {\n let sortedRows = rows;\n\n if (this.sortBy) {\n sortedRows = sortRows(sortedRows, this.toSortObjectList());\n }\n\n return sortedRows;\n }\n\n private toSortObjectList(): SortObject[] {\n const sortByArray = this.sortBy.split('|').map((col) => {\n const colNameAndSortMode = col.split(',');\n\n const sortObject: SortObject = {\n column: colNameAndSortMode[0],\n sortMode:\n colNameAndSortMode.length > 1\n ? SortMode[colNameAndSortMode[1]]\n : SortMode.A,\n };\n return sortObject;\n });\n return sortByArray;\n }\n\n private checkScrollOnHover() {\n if (this.boxContainer) {\n if (\n !this.kupManager.scrollOnHover.isRegistered(this.boxContainer)\n ) {\n if (this.scrollOnHover) {\n this.kupManager.scrollOnHover.register(this.boxContainer);\n }\n } else {\n if (!this.scrollOnHover) {\n this.kupManager.scrollOnHover.unregister(this.boxContainer);\n }\n }\n }\n }\n\n private checkLayout() {\n // check if there is a layout.\n // if not, create a default layout\n if (this.layout) {\n this.boxLayout = this.layout;\n return;\n }\n\n // only one section, containing all visible fields\n const section: KupBoxSection = {\n horizontal: false,\n sections: [],\n };\n\n // adding box objects to section\n const visibleColumns = this.visibleColumns;\n let size = visibleColumns.length;\n let content = [];\n\n let cnt = 0;\n\n while (size-- > 0) {\n content.push({\n column: visibleColumns[cnt++].name,\n });\n }\n\n section.content = content;\n\n // creating a new layout\n this.boxLayout = {\n sections: [section],\n };\n }\n\n private onSortChange(e: CustomEvent) {\n let column = getColumnByName(this.visibleColumns, e.detail.value);\n this.sortBy = column.name;\n }\n\n private onGlobalFilterChange({ detail }) {\n let value = '';\n if (detail && detail.value) {\n value = detail.value;\n }\n this.globalFilterValue = value;\n }\n\n private isSectionExpanded(row: KupBoxRow, section: KupBoxSection): boolean {\n if (!row.id || !section.id) {\n return false;\n }\n\n return (\n this.collapsedSection[section.id] &&\n this.collapsedSection[section.id][row.id]\n );\n }\n\n private handleAutomaticBoxSelection() {\n if (\n this.selectBox &&\n this.selectBox > 0 &&\n this.selectBox <= this.data.rows.length\n ) {\n this.selectedRows = [];\n\n for (let boxRow of this.data.rows) {\n if (boxRow.id === (this.selectBox - 1).toString()) {\n this.selectedRows.push(boxRow);\n break;\n }\n }\n this.kupAutoBoxSelect.emit({\n comp: this,\n id: this.rootElement.id,\n row: this.selectedRows[0],\n });\n }\n }\n\n private getEventDetails(\n path: HTMLElement[],\n e?: PointerEvent\n ): KupBoxEventHandlerDetails {\n let boxObject = null;\n let cell: KupDataCell = null;\n let row: KupBoxRow = null;\n let column: KupDataColumn = null;\n if (path) {\n for (let i = path.length - 1; i >= 0; i--) {\n let p = path[i];\n if (!p.tagName) {\n continue;\n }\n switch (p.tagName.toUpperCase()) {\n default: {\n if (p.classList.contains('box-object')) {\n boxObject = p;\n }\n if (!row && p['data-row']) {\n row = p['data-row'];\n }\n break;\n }\n }\n }\n }\n\n if (boxObject) {\n if (boxObject.classList.contains('f-cell')) {\n const props = boxObject['kup-get-cell-props']();\n cell = props.cell;\n column = props.column;\n row = props.row;\n } else {\n cell = boxObject['data-cell'];\n row = boxObject['data-row'];\n column = getColumnByName(\n this.visibleColumns,\n boxObject.dataset.column\n );\n }\n } else {\n }\n\n return {\n boxObject: boxObject ? boxObject : null,\n column: column ? column : null,\n cell: cell ? cell : null,\n originalEvent: e,\n row: row ? row : null,\n };\n }\n\n private clickHandler(e: PointerEvent): KupBoxEventHandlerDetails {\n const details = this.getEventDetails(\n this.kupManager.getEventPath(e.target, this.rootElement),\n e\n );\n if (details.row) {\n if (this.multiSelection) {\n this.onSelectionCheckChange(details.row);\n } else {\n this.selectedRows = [details.row];\n }\n }\n return details;\n }\n\n private contextMenuHandler(e: PointerEvent): KupBoxEventHandlerDetails {\n const details = this.getEventDetails(\n this.kupManager.getEventPath(e.target, this.rootElement),\n e\n );\n return details;\n }\n\n /**\n * Checks if the element is the svg that opens the \"row actions menu\"\n * @param element the element to check\n */\n private checkIfElementIsActionMenuIcon(element: any) {\n if (element.tagName && element.parentElement) {\n return (\n element.tagName === 'svg' &&\n element.parentElement.classList.contains('row-actions-toggler')\n );\n }\n\n return false;\n }\n\n private onSelectionCheckChange(row: KupBoxRow) {\n var index = -1;\n for (let i = 0; i < this.selectedRows.length; i++) {\n const select = this.selectedRows[i];\n if (select.id === row.id) {\n index = i;\n break;\n }\n }\n\n if (index >= 0) {\n // remove row\n this.selectedRows.splice(index, 1);\n this.selectedRows = [...this.selectedRows];\n } else {\n // add row\n this.selectedRows = [...this.selectedRows, row];\n }\n\n this.kupBoxSelected.emit({\n comp: this,\n id: this.rootElement.id,\n rows: this.selectedRows,\n });\n }\n\n private toggleSectionExpand(row: KupBoxRow, section: KupBoxSection) {\n // check if section / row has id\n if (!section.id) {\n // error\n console.error('cannot expand / collapse a section withoun an ID');\n return;\n }\n\n if (!row.id) {\n // error\n console.error(\n 'cannot expand / collapse a section of a row without ad id'\n );\n return;\n }\n\n // check if section already in collapsedSection\n if (!this.collapsedSection[section.id]) {\n // adding element and row, setting it to expanded\n this.collapsedSection[section.id] = {};\n this.collapsedSection[section.id][row.id] = true;\n } else {\n const s = this.collapsedSection[section.id];\n\n if (!s[row.id]) {\n s[row.id] = true;\n } else {\n s[row.id] = !s[row.id];\n }\n }\n\n // triggering rendering\n this.collapsedSection = { ...this.collapsedSection };\n }\n\n private onRowAction(row: KupBoxRow) {\n if (!row) {\n return;\n }\n\n if (row === this.rowActionMenuOpened) {\n // closing menu\n this.rowActionMenuOpened = null;\n return;\n }\n\n if (row.actions) {\n // actions already loaded -> show menu\n this.rowActionMenuOpened = row;\n } else {\n // no actions -> triggering event\n this.kupRowActionMenuClick.emit({\n comp: this,\n id: this.rootElement.id,\n row,\n });\n }\n }\n\n private onRowActionClick(\n row: KupBoxRow,\n action: KupDataRowAction,\n index: number\n ) {\n this.kupRowActionClick.emit({\n comp: this,\n id: this.rootElement.id,\n row,\n action,\n index,\n });\n }\n\n /**\n * see onDocumentClick in kup-combo\n */\n private clickFunction(event: UIEvent) {\n try {\n const targets = event.composedPath();\n\n for (let target of targets) {\n if (this.checkIfElementIsActionMenuIcon(target)) {\n return;\n }\n }\n } catch (err) {\n if (this.checkIfElementIsActionMenuIcon(event.target)) {\n return;\n }\n }\n\n this.rowActionMenuOpened = null;\n }\n\n private handlePageChange(pageNumber: number) {\n const newPage = pageChange(\n pageNumber,\n this.filteredRows.length,\n this.currentRowsPerPage\n );\n if (newPage) {\n this.currentPage = newPage;\n }\n }\n\n private handleRowsPerPageChange(rowsNumber: number) {\n const newRows = rowsPerPageChange(rowsNumber, this.filteredRows.length);\n if (newRows) {\n this.currentRowsPerPage = newRows;\n this.adjustPaginator();\n }\n }\n\n private adjustPaginator() {\n const numberOfRows = this.rows.length;\n\n // check if current page is valid\n const numberOfPages = Math.ceil(numberOfRows / this.currentRowsPerPage);\n if (this.currentPage > numberOfPages) {\n // reset page\n this.currentPage = 1;\n }\n }\n\n // render methods\n private renderSectionAsCard(row: KupBoxRow) {\n let skipPush: boolean = false;\n const cardData: KupCardData = {\n button: [],\n cell: [],\n columns: [],\n image: [],\n progressbar: [],\n text: [],\n };\n\n for (let index = 0; index < this.data.columns.length; index++) {\n const column = this.data.columns[index];\n if (column.visible !== false) {\n cardData.cell.push(row.cells[column.name]);\n cardData.columns.push(column);\n }\n }\n\n //First cycle sets specific binds between cardIDs and cells\n for (const key in row.cells) {\n if (row.cells.hasOwnProperty(key)) {\n const cell = row.cells[key];\n if (cell.cardID !== undefined && cell.obj) {\n switch (cell.obj.p) {\n case 'BTN':\n do {\n cardData.button.push({});\n } while (cardData.button.length < cell.cardID);\n cardData.button[cell.cardID] = {\n label: cell.value,\n };\n break;\n case 'IMG':\n do {\n cardData.image.push({});\n } while (cardData.image.length < cell.cardID);\n cardData.image[cell.cardID] = {\n resource: cell.value,\n };\n break;\n case 'PGB':\n do {\n cardData.progressbar.push({});\n } while (cardData.progressbar.length < cell.cardID);\n cardData.progressbar[cell.cardID] = {\n value: cell.value,\n };\n break;\n default:\n do {\n cardData.text.push('');\n } while (cardData.text.length < cell.cardID);\n cardData.text[cell.cardID] = cell.value;\n break;\n }\n }\n }\n }\n\n //Second cycle sets leftover binds automatically\n for (const key in row.cells) {\n if (row.cells.hasOwnProperty(key)) {\n const cell = row.cells[key];\n if (cell.cardID === undefined && cell.obj) {\n skipPush = false;\n switch (cell.obj.p) {\n case 'BTN':\n for (\n let index = 0;\n index < cardData.button.length;\n index++\n ) {\n //If there are empty elements, the first one will be used\n if (\n !Object.keys(cardData.button[index]).length\n ) {\n cardData.button[index] = {\n label: cell.value,\n };\n skipPush = true;\n break;\n }\n }\n //Otherwise a new element will be pushed\n if (!skipPush) {\n cardData.button.push({\n label: cell.value,\n });\n }\n break;\n case 'IMG':\n for (\n let index = 0;\n index < cardData.image.length;\n index++\n ) {\n //If there are empty elements, the first one will be used\n if (\n !Object.keys(cardData.image[index]).length\n ) {\n cardData.image[index] = {\n resource: cell.value,\n };\n skipPush = true;\n break;\n }\n }\n //Otherwise a new element will be pushed\n if (!skipPush) {\n cardData.image.push({\n resource: cell.value,\n });\n }\n break;\n case 'PGB':\n for (\n let index = 0;\n index < cardData.progressbar.length;\n index++\n ) {\n //If there are empty elements, the first one will be used\n if (\n !Object.keys(cardData.progressbar[index])\n .length\n ) {\n cardData.progressbar[index] = {\n value: cell.value,\n };\n skipPush = true;\n break;\n }\n }\n //Otherwise a new element will be pushed\n if (!skipPush) {\n cardData.progressbar.push({\n value: cell.value,\n });\n }\n break;\n default:\n for (\n let index = 0;\n index < cardData.text.length;\n index++\n ) {\n //If there are empty elements, the first one will be used\n if (cardData.text[index] === '') {\n cardData.text[index] = cell.value;\n skipPush = true;\n break;\n }\n }\n //Otherwise a new element will be pushed\n if (!skipPush) {\n cardData.text.push(cell.value);\n }\n break;\n }\n }\n }\n }\n return <kup-card data={cardData} {...this.cardData}></kup-card>;\n }\n\n private renderRow(row: KupBoxRow) {\n const visibleColumns = [...this.visibleColumns];\n\n let boxContent = null;\n\n // if layout in row, use that one\n let rowLayout = row.layout;\n if (!rowLayout) {\n // otherwise, use 'default' layout\n rowLayout = this.boxLayout;\n }\n\n let horizontal = false;\n if (rowLayout) {\n if (rowLayout.horizontal) {\n horizontal = true;\n }\n\n const sections = rowLayout.sections;\n let size = sections.length;\n\n let cnt = 0;\n if (size > 0) {\n boxContent = [];\n }\n\n // create fake parent section\n const parent: KupBoxSection = {\n horizontal: horizontal,\n };\n\n while (size-- > 0) {\n if (\n this.cardData !== null &&\n this.cardData !== undefined &&\n typeof this.cardData === 'object'\n ) {\n boxContent.push(this.renderSectionAsCard(row));\n } else {\n boxContent.push(\n this.renderSection(\n sections[cnt++],\n parent,\n row,\n visibleColumns\n )\n );\n }\n }\n }\n\n var isSelected = false;\n for (let select of this.selectedRows) {\n if (select.id === row.id) {\n isSelected = true;\n }\n }\n\n let multiSel = null;\n if (this.multiSelection) {\n multiSel = (\n <div class=\"box-selection\">\n <kup-checkbox checked={isSelected} />\n </div>\n );\n }\n\n let rowObject = null;\n if (this.enableRowActions && !this.swipeDisabled) {\n const menuClass = {\n 'row-action-menu': true,\n open: row === this.rowActionMenuOpened,\n };\n\n let rowActionMenuContent = null;\n if (row.actions) {\n const actionItems = row.actions.map((item, index) => {\n const iconClass = `icon ${item.icon}`;\n\n return (\n <li\n tabindex=\"0\"\n onClick={() =>\n this.onRowActionClick(row, item, index)\n }\n >\n <div class={iconClass} />\n <div class=\"text\">{item.text}</div>\n </li>\n );\n });\n\n rowActionMenuContent = <ul>{actionItems}</ul>;\n }\n\n rowObject = (\n <div class=\"row-actions-wrapper\">\n <div class=\"row-actions-toggler\">\n <svg\n version=\"1.1\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n onClick={() => this.onRowAction(row)}\n >\n <path d=\"M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z\" />\n </svg>\n <div class={menuClass}>{rowActionMenuContent}</div>\n </div>\n </div>\n );\n }\n\n let badges = null;\n if (row.badgeData && row.badgeData.length > 0) {\n badges = row.badgeData.map((badge) => (\n <kup-badge\n text={badge.text}\n class={\n badge['className']\n ? `centered ${badge['className']}`\n : 'centered'\n }\n imageData={badge.imageData}\n />\n ));\n }\n\n const boxClass = {\n box: true,\n draggable: this.dragEnabled,\n selected: this.showSelection && isSelected,\n column: !horizontal,\n };\n\n const rowStyle: any = row.style || {};\n\n return (\n <div\n class=\"box-wrapper\"\n style={rowStyle}\n ref={(el: HTMLElement) => {\n if (el) {\n this.#rowsRefs.push(el);\n }\n }}\n >\n <div\n class={boxClass}\n data-row={row}\n ref={(el: HTMLElement) => this.rowsRefs.push(el)}\n >\n {multiSel}\n {boxContent}\n {badges}\n </div>\n {rowObject}\n </div>\n );\n }\n\n private renderSection(\n section: KupBoxSection,\n parent: KupBoxSection,\n row: KupBoxRow,\n visibleColumns: KupDataColumn[]\n ) {\n let sectionContent = null;\n\n if (section.sections && section.sections.length > 0) {\n // rendering child\n const sections = section.sections;\n let size = sections.length;\n\n let cnt = 0;\n if (size > 0) {\n sectionContent = [];\n }\n\n while (size-- > 0) {\n sectionContent.push(\n this.renderSection(\n sections[cnt++],\n section,\n row,\n visibleColumns\n )\n );\n }\n } else if (section.content) {\n // rendering box objects\n const content = section.content;\n let size = content.length;\n\n let cnt = 0;\n if (size > 0) {\n sectionContent = [];\n }\n\n while (size-- > 0) {\n sectionContent.push(\n this.renderBoxObject(\n {\n boxObject: content[cnt++],\n row,\n visibleColumns,\n },\n true\n )\n );\n }\n } else if (visibleColumns.length > 0) {\n const column = visibleColumns[0];\n sectionContent = this.renderBoxObject({\n boxObject: { column: column.name },\n row,\n visibleColumns,\n });\n }\n\n const sectionExpanded = this.isSectionExpanded(row, section);\n\n const isGrid = !!section.columns;\n\n const sectionClass: { [index: string]: boolean } = {\n 'box-section': true,\n open: sectionExpanded,\n column: !isGrid && !section.horizontal,\n grid: isGrid,\n titled: !!section.title,\n 'last-child': !section.sections || section.sections.length === 0,\n };\n\n const sectionStyle: any = section.style || {};\n if (section.dim && parent) {\n sectionStyle.flex = `0 0 ${section.dim}`;\n sectionStyle.overflow = 'hidden';\n\n if (parent.horizontal) {\n sectionStyle.maxWidth = section.dim;\n } else {\n sectionStyle.maxHeight = section.dim;\n }\n }\n\n if (isGrid) {\n sectionStyle[\n 'grid-template-columns'\n ] = `repeat(${section.columns}, 1fr)`;\n }\n\n let sectionContainer = null;\n if (section.collapsible) {\n sectionClass['collapse-section'] = true;\n\n const contentClass = {\n content: true,\n };\n\n // TODO I18N\n let headerTitle = '';\n if (section.title) {\n headerTitle = section.title;\n } else if (sectionExpanded) {\n headerTitle = this.kupManager.language.translate(\n KupLanguageGeneric.COLLAPSE\n );\n } else {\n headerTitle = this.kupManager.language.translate(\n KupLanguageGeneric.EXPAND\n );\n }\n\n sectionContainer = (\n <div class={sectionClass} style={sectionStyle}>\n <div class={contentClass}>{sectionContent}</div>\n <div\n class=\"header\"\n role=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n this.toggleSectionExpand(row, section);\n }}\n >\n <div class=\"header-content\">\n <span>{headerTitle}</span>\n <FImage\n resource={`${KupThemeIconValues.DROPDOWN}`}\n sizeX=\"1.25em\"\n sizeY=\"1.25em\"\n wrapperClass={sectionExpanded ? 'toggled' : ''}\n />\n </div>\n </div>\n </div>\n );\n } else {\n const title = section.title ? <h3>{section.title}</h3> : null;\n\n sectionContainer = (\n <div class={sectionClass} style={sectionStyle}>\n {title}\n {sectionContent}\n </div>\n );\n }\n\n return sectionContainer;\n }\n\n private renderBoxObject(\n {\n boxObject,\n row,\n visibleColumns,\n }: {\n boxObject: KupBoxObject;\n row: KupBoxRow;\n visibleColumns: KupDataColumn[];\n },\n fromSection?: boolean\n ) {\n const classObj: Record<string, boolean> = {\n 'box-object': true,\n };\n const boStyle = {};\n let column: KupDataColumn = null;\n let index = -1;\n for (let i = 0; i < visibleColumns.length; i++) {\n const c = visibleColumns[i];\n\n if (c.name === boxObject.column) {\n index = i;\n break;\n }\n }\n if (index >= 0) {\n column = visibleColumns[index];\n visibleColumns.splice(index, 1);\n } else if (fromSection) {\n column = this.data.columns.find((x) => x.name === boxObject.column);\n }\n const cell = row.cells[boxObject.column];\n let title: string = undefined;\n if (cell && !this.kupManager.objects.isEmptyKupObj(cell.obj)) {\n classObj['is-obj'] = true;\n if (this.kupManager.debug.isDebug()) {\n title =\n cell.obj.t + '; ' + cell.obj.p + '; ' + cell.obj.k + ';';\n }\n }\n const cellProps: FCellProps = {\n cell: cell,\n column: column,\n component: this,\n editable: this.editableData,\n renderKup: true,\n row: row,\n setSizes: true,\n shape: boxObject.shape,\n };\n return (\n <div\n data-cell={cell}\n data-row={row}\n data-column={boxObject.column}\n class={classObj}\n style={boStyle}\n title={title}\n >\n {cell && column ? (\n <FCell {...cellProps} />\n ) : (\n <span>{boxObject.value}</span>\n )}\n </div>\n );\n }\n\n /**\n * Prepares the kanban sections by sorting the boxlist's data.\n * @returns {{jsx: VNode[], style: { [index: string]: string }}} jsx contains the virtual nodes of the Kanban sections, style contains the grid CSS settings.\n */\n kanbanMode(): { jsx: VNode[]; style: { [index: string]: string } } {\n // Testing whether there are columns to group by\n if (!this.kanban.columns || this.kanban.columns.length === 0) {\n this.kupManager.debug.logMessage(\n this,\n 'No columns to group by detected.',\n KupDebugCategory.ERROR\n );\n return {\n jsx: (\n <div id=\"empty-data-message\" class=\"box-wrapper\">\n <div\n ref={(el: HTMLElement) => this.rowsRefs.push(el)}\n ></div>\n {this.kupManager.language.translate(\n KupLanguageGeneric.EMPTY_DATA\n )}\n </div>\n ),\n style: { 'grid-template-columns': `repeat(1, 1fr)` },\n };\n }\n const kanbanSections: { labels: string[]; nodes: VNode[] }[] = [];\n\n // Creating empty sections from prop-defined labels\n if (this.kanban.labels) {\n for (let index = 0; index < this.kanban.labels.length; index++) {\n const key: Array<string> = this.kanban.labels[index];\n kanbanSections.push({ labels: key, nodes: [] });\n }\n }\n // Browsing all rows\n for (let index = 0; index < this.rows.length; index++) {\n let key: Array<string> = [];\n // Creating the key for the current row\n for (let j = 0; j < this.kanban.columns.length; j++) {\n try {\n key.push(\n this.rows[index].cells[this.kanban.columns[j]].value\n );\n } catch (error) {\n this.kupManager.debug.logMessage(\n this,\n error,\n KupDebugCategory.WARNING\n );\n }\n }\n const check: { found: boolean; index: number } = {\n found: false,\n index: null,\n };\n // Browsing key array to search whether the current key exists or not\n for (let j = 0; j < kanbanSections.length; j++) {\n let sortingKey = kanbanSections[j].labels;\n let found: boolean = true;\n for (let i = 0; i < sortingKey.length; i++) {\n if (key[i] !== sortingKey[i]) {\n found = false;\n break;\n }\n }\n if (found) {\n check.found = true;\n check.index = j;\n break;\n }\n }\n // If current key exists, box will be pushed into the existing array of virtual nodes\n if (check.found) {\n kanbanSections[check.index].nodes.push(\n this.renderRow(this.rows[index])\n );\n } else {\n // Otherwise, a new section will be defined starting with just the current virtal node\n kanbanSections.push({\n labels: key,\n nodes: [this.renderRow(this.rows[index])],\n });\n }\n }\n // Once the arrays are set, they need to be emptied into columns\n const kanbanJSX: VNode[] = [];\n for (let index = 0; index < kanbanSections.length; index++) {\n const sortingKey: Array<string> = kanbanSections[index].labels;\n const props: FChipsProps = {\n data: [],\n };\n for (let index = 0; index < sortingKey.length; index++) {\n props.data.push({\n value: sortingKey[index],\n id: sortingKey[index],\n });\n }\n kanbanJSX.push(\n <div class=\"kanban-section\">\n <FChip {...props} />\n {kanbanSections[index].nodes}\n </div>\n );\n }\n return {\n jsx: kanbanJSX,\n style: {\n 'grid-template-columns': this.kanban.isStacked\n ? 'repeat(1fr)'\n : this.kanban.size\n ? `repeat(${Object.keys(kanbanSections).length}, ${\n this.kanban.size\n })`\n : `repeat(${Object.keys(kanbanSections).length}, 1fr)`,\n },\n };\n }\n\n didLoadInteractables() {\n this.interactableTouch.push(this.boxContainer);\n const tapCb = (e: PointerEvent) => {\n if (this.hold) {\n this.hold = false;\n return;\n }\n switch (e.button) {\n // left click\n case 0:\n // Note: event must be cloned\n // otherwise inside setTimeout will be exiting the Shadow DOM scope(causing loss of information, including target).\n const clone: GenericObject = {};\n for (const key in e) {\n clone[key] = e[key];\n }\n const details = this.clickHandler(clone as PointerEvent);\n this.kupBoxClick.emit({\n comp: this,\n id: this.rootElement.id,\n row: details.row,\n column: details.column?.name,\n });\n break;\n case 2:\n this.kupBoxContextMenu.emit({\n comp: this,\n id: this.rootElement.id,\n details: this.contextMenuHandler(e),\n });\n break;\n }\n };\n const holdCb = (e: PointerEvent) => {\n if (e.pointerType === 'pen' || e.pointerType === 'touch') {\n this.hold = true;\n this.kupBoxContextMenu.emit({\n comp: this,\n id: this.rootElement.id,\n details: this.contextMenuHandler(e),\n });\n }\n };\n this.kupManager.interact.on(\n this.boxContainer,\n KupPointerEventTypes.TAP,\n tapCb\n );\n this.kupManager.interact.on(\n this.boxContainer,\n KupPointerEventTypes.HOLD,\n holdCb\n );\n }\n\n didRenderInteractables() {\n if (this.dragEnabled) {\n for (let index = 0; index < this.rowsRefs.length; index++) {\n const row = this.rowsRefs[index];\n const dataCb: KupDragDataTransferCallback = () => {\n const cellEl = this.rootElement.shadowRoot.querySelector(\n '.box-object:hover'\n ) as HTMLElement;\n return {\n cell: cellEl['data-cell'],\n column: getColumnByName(\n this.visibleColumns,\n cellEl.dataset.column\n ),\n id: this.rootElement.id,\n multiple: this.multiSelection,\n row: cellEl['data-row'],\n selectedRows: this.selectedRows,\n };\n };\n if (row && !this.interactableDrag.includes(row)) {\n this.interactableDrag.push(row);\n this.kupManager.interact.draggable(\n row,\n {\n allowFrom: '.box-object',\n cursorChecker() {\n return null;\n },\n },\n {\n callback: dataCb,\n },\n KupDragEffect.BADGE\n );\n }\n }\n }\n if (this.dropEnabled) {\n const dataCb: KupDropDataTransferCallback = () => {\n const cell =\n this.rootElement.shadowRoot.querySelector('.box:hover');\n if (!cell) {\n this.kupManager.debug.logMessage(\n this,\n \"Couldn't find cell hovered to retrieve dropzone informations!\",\n KupDebugCategory.WARNING\n );\n return;\n }\n const path = this.kupManager.getEventPath(\n cell,\n this.rootElement\n );\n const receivingDetails = this.getEventDetails(path);\n return {\n cell: receivingDetails.cell,\n column: receivingDetails.column,\n id: this.rootElement.id,\n row: receivingDetails.row,\n };\n };\n if (!this.interactableDrop.includes(this.sectionRef)) {\n this.interactableDrop.push(this.sectionRef);\n this.kupManager.interact.dropzone(\n this.sectionRef,\n {\n accept: `[${kupDraggableAttr}]`,\n },\n {\n dispatcher: this.rootElement,\n type: KupDropEventTypes.BOX,\n }\n );\n }\n for (let index = 0; index < this.rowsRefs.length; index++) {\n const row = this.rowsRefs[index];\n if (row && !this.interactableDrop.includes(row)) {\n this.interactableDrop.push(row);\n this.kupManager.interact.dropzone(\n row,\n {\n accept: `[${kupDraggableAttr}]`,\n },\n {\n callback: dataCb,\n dispatcher: this.rootElement,\n type: KupDropEventTypes.BOX,\n }\n );\n }\n }\n }\n }\n\n #didRenderObservers() {\n if (\n this.lazyLoadRows &&\n this.currentRowsPerPage < this.data.rows.length\n ) {\n this.#intObserver.observe(\n this.#rowsRefs[this.#rowsRefs.length - 1]\n );\n }\n }\n\n #setObserver() {\n const callback: IntersectionObserverCallback = (\n entries: IntersectionObserverEntry[]\n ) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n this.kupManager.debug.logMessage(\n this,\n 'Last row entering the viewport, loading more elements.'\n );\n const delta =\n this.data.rows.length - this.currentRowsPerPage;\n if (delta < this.loadMoreStep) {\n this.currentRowsPerPage += delta;\n } else {\n this.currentRowsPerPage += this.loadMoreStep;\n }\n entry.target.classList.remove('last-row');\n this.#intObserver.unobserve(entry.target);\n }\n });\n };\n const options: IntersectionObserverInit = {\n threshold: 0,\n rootMargin: '-' + this.#navBarHeight + 'px 0px 0px 0px',\n };\n this.#intObserver = new IntersectionObserver(callback, options);\n }\n\n // Handler for loadMore button is clicked.\n #onLoadMoreClick() {\n let loadItems: number = 0;\n\n switch (this.loadMoreMode) {\n case LoadMoreMode.CONSTANT:\n loadItems = this.loadMoreStep;\n break;\n case LoadMoreMode.CONSTANT_INCREMENT:\n loadItems =\n this.loadMoreStep * (this.#loadMoreEventCounter + 1);\n break;\n case LoadMoreMode.PROGRESSIVE_THRESHOLD:\n loadItems =\n Math.max(\n this.#loadMoreEventPreviousQuantity,\n this.loadMoreStep\n ) * Math.min(this.#loadMoreEventCounter + 1, 2);\n break;\n }\n\n if (loadItems > this.loadMoreLimit) {\n loadItems = this.loadMoreLimit;\n }\n\n this.kupLoadMoreClick.emit({\n comp: this,\n id: this.rootElement.id,\n loadItems: loadItems,\n });\n\n this.#loadMoreEventPreviousQuantity = loadItems;\n this.#loadMoreEventCounter++;\n }\n\n /*-------------------------------------------------*/\n /* L i f e c y c l e H o o k s */\n /*-------------------------------------------------*/\n\n componentWillLoad() {\n this.kupManager.debug.logLoad(this, false);\n if (this.rowsPerPage) {\n this.currentRowsPerPage = this.rowsPerPage;\n }\n if (\n this.data &&\n this.data.rows &&\n this.currentRowsPerPage > this.data.rows.length\n ) {\n this.currentRowsPerPage = this.data.rows.length;\n }\n this.kupManager.language.register(this);\n this.kupManager.theme.register(this);\n this.onDataChanged();\n this.adjustPaginator();\n if (document.querySelector('.header')) {\n this.#navBarHeight = document.querySelector('.header').clientHeight;\n } else {\n this.#navBarHeight = 0;\n }\n if (document.querySelector('.topbar')) {\n this.#navBarHeight +=\n document.querySelector('.topbar').clientHeight;\n }\n this.#setObserver();\n }\n\n componentDidLoad() {\n this.handleAutomaticBoxSelection();\n\n // When component is created, then the listener is set. @See clickFunction for more details\n document.addEventListener('click', this.clickFunction.bind(this));\n\n this.currentPage = this.pageSelected;\n\n if (this.multiSelection && this.selectedRowsState) {\n this.selectedRows = [];\n let selectedIds: Array<string> = this.selectedRowsState.split(';');\n this.selectedRows = this.data.rows.filter((r) => {\n return selectedIds.indexOf(r.id) >= 0;\n });\n }\n this.didLoadInteractables();\n this.kupDidLoad.emit({ comp: this, id: this.rootElement.id });\n this.kupManager.debug.logLoad(this, true);\n }\n\n componentWillRender() {\n this.kupManager.debug.logRender(this, false);\n }\n\n componentDidRender() {\n const root: ShadowRoot = this.rootElement.shadowRoot;\n if (root) {\n const fs: NodeListOf<HTMLElement> =\n root.querySelectorAll('.f-text-field');\n for (let index = 0; index < fs.length; index++) {\n FTextFieldMDC(fs[index]);\n }\n }\n this.checkScrollOnHover();\n this.persistState();\n this.didRenderInteractables();\n this.#didRenderObservers();\n this.kupManager.debug.logRender(this, true);\n }\n\n render() {\n this.#rowsRefs = [];\n const isKanban: boolean = !!(\n typeof this.kanban === 'object' && this.kanban !== null\n );\n let sortPanel = null;\n if (this.sortEnabled) {\n // creating items\n const visibleColumnsItems = this.visibleColumns.map((column) => {\n const item = {\n value: column.title,\n id: column.name,\n selected: column.name === this.sortBy,\n };\n return item;\n });\n const items = [{ value: '', id: '' }, ...visibleColumnsItems];\n let textfieldData = {\n label: this.kupManager.language.translate(\n KupLanguageGeneric.SORT_BY\n ),\n trailingIcon: true,\n };\n let listData = {\n data: items,\n selectable: true,\n };\n\n let data = {\n 'kup-text-field': textfieldData,\n 'kup-list': listData,\n };\n sortPanel = (\n <div id=\"sort-panel\">\n <kup-combobox\n data={data}\n initialValue={this.sortBy}\n onkup-combobox-itemclick={(e) => this.onSortChange(e)}\n />\n </div>\n );\n }\n\n let filterPanel = null;\n if (this.globalFilter) {\n filterPanel = (\n <div id=\"global-filter\">\n <kup-text-field\n fullWidth={true}\n label={this.kupManager.language.translate(\n KupLanguageSearch.SEARCH\n )}\n icon={KupThemeIconValues.SEARCH}\n initialValue={this.globalFilterValue}\n onkup-textfield-input={(event) => {\n window.clearTimeout(this.globalFilterTimeout);\n this.globalFilterTimeout = window.setTimeout(\n () => this.onGlobalFilterChange(event),\n 600\n );\n }}\n ></kup-text-field>\n </div>\n );\n }\n\n let paginator = null;\n // paginaltorPos prop not managed yet\n const top: boolean = true;\n if (this.showLoadMore || (!this.lazyLoadRows && this.pagination)) {\n paginator = (\n <FPaginator\n id={top ? 'top-paginator' : 'bottom-paginator'}\n currentPage={this.currentPage}\n max={this.filteredRows.length}\n // mode={FPaginatorMode.SIMPLE}\n perPage={\n this.currentRowsPerPage\n ? this.currentRowsPerPage\n : this.rowsPerPage\n }\n onLoadMore={\n this.showLoadMore\n ? () => {\n this.#onLoadMoreClick();\n }\n : null\n }\n onNextPage={() =>\n this.handlePageChange(this.currentPage + 1)\n }\n onPrevPage={() =>\n this.handlePageChange(this.currentPage - 1)\n }\n onPageChange={(e: CustomEvent<KupComboboxEventPayload>) =>\n this.handlePageChange(e.detail.value)\n }\n onRowsChange={(e: CustomEvent<KupComboboxEventPayload>) =>\n this.handleRowsPerPageChange(e.detail.value)\n }\n />\n );\n }\n\n let boxContent = null;\n\n let containerStyle = {};\n\n if (this.rows.length === 0) {\n boxContent = (\n <div id=\"empty-data-message\" class=\"box-wrapper\">\n <div\n class=\"box\"\n ref={(el: HTMLElement) => this.rowsRefs.push(el)}\n >\n {this.kupManager.language.translate(\n KupLanguageGeneric.EMPTY_DATA\n )}\n </div>\n </div>\n );\n containerStyle = { 'grid-template-columns': `repeat(1, 1fr)` };\n } else if (isKanban) {\n const kanban: {\n jsx: VNode[];\n style: {\n [index: string]: string;\n };\n } = this.kanbanMode();\n boxContent = kanban.jsx;\n containerStyle = kanban.style;\n } else {\n containerStyle = {\n 'grid-template-columns': `repeat(${this.columns}, 1fr)`,\n };\n const rows = this.rows;\n let size = rows.length;\n\n let cnt = 0;\n boxContent = [];\n\n while (size-- > 0) {\n boxContent.push(this.renderRow(rows[cnt++]));\n }\n }\n\n return (\n <Host>\n <style>\n {this.kupManager.theme.setKupStyle(\n this.rootElement as KupComponent\n )}\n </style>\n <div id={componentWrapperId}>\n <div\n class={'box-component'}\n ref={(el) => (this.sectionRef = el)}\n >\n {sortPanel}\n {filterPanel}\n {paginator}\n <div\n class={isKanban ? 'is-kanban' : ''}\n id={'box-container'}\n style={containerStyle}\n onContextMenu={(e: MouseEvent) => {\n e.preventDefault();\n }}\n ref={(el: HTMLElement) =>\n (this.boxContainer =\n el as KupScrollOnHoverElement)\n }\n >\n {boxContent}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n\n disconnectedCallback() {\n this.kupManager.interact.unregister(\n this.interactableDrag.concat(this.interactableDrop)\n );\n this.kupManager.language.unregister(this);\n this.kupManager.theme.unregister(this);\n if (this.scrollOnHover) {\n this.kupManager.scrollOnHover.unregister(this.boxContainer);\n }\n // When component is destroyed, then the listener is removed. @See clickFunction for more details\n document.removeEventListener('click', this.clickFunction.bind(this));\n this.kupDidUnload.emit({ comp: this, id: this.rootElement.id });\n }\n}\n"],"version":3}
|