apex-grid 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/custom-elements.json +958 -906
  2. package/dist/bundle.js +6 -3
  3. package/dist/docs/assets/main.js +3 -3
  4. package/dist/docs/assets/search.js +1 -1
  5. package/dist/docs/assets/style.css +447 -362
  6. package/dist/docs/classes/ApexGrid.html +138 -112
  7. package/dist/docs/index.html +51 -57
  8. package/dist/docs/interfaces/ApexFilteredEvent.html +53 -27
  9. package/dist/docs/interfaces/ApexFilteringEvent.html +57 -31
  10. package/dist/docs/interfaces/ApexGridEventMap.html +61 -35
  11. package/dist/docs/interfaces/ApexHeaderContext.html +53 -27
  12. package/dist/docs/interfaces/BaseApexCellContext.html +62 -36
  13. package/dist/docs/interfaces/BaseColumnConfiguration.html +92 -66
  14. package/dist/docs/interfaces/BaseColumnSortConfiguration.html +54 -28
  15. package/dist/docs/interfaces/BaseFilterExpression.html +66 -40
  16. package/dist/docs/interfaces/BaseSortExpression.html +62 -36
  17. package/dist/docs/interfaces/ColumnFilterConfiguration.html +46 -20
  18. package/dist/docs/interfaces/DataPipelineConfiguration.html +53 -27
  19. package/dist/docs/interfaces/GridSortConfiguration.html +50 -24
  20. package/dist/docs/modules.html +69 -74
  21. package/dist/docs/types/ApexCellContext.html +46 -51
  22. package/dist/docs/types/BasePropertyType.html +45 -50
  23. package/dist/docs/types/BaseSortComparer.html +49 -54
  24. package/dist/docs/types/ColumnConfiguration.html +46 -51
  25. package/dist/docs/types/ColumnSortConfiguration.html +46 -51
  26. package/dist/docs/types/DataPipelineHook.html +48 -53
  27. package/dist/docs/types/DataPipelineParams.html +48 -53
  28. package/dist/docs/types/DataType.html +41 -46
  29. package/dist/docs/types/FilterCriteria.html +41 -46
  30. package/dist/docs/types/FilterExpression.html +46 -51
  31. package/dist/docs/types/Keys.html +44 -49
  32. package/dist/docs/types/PropertyType.html +45 -50
  33. package/dist/docs/types/SortComparer.html +46 -51
  34. package/dist/docs/types/SortExpression.html +46 -51
  35. package/dist/docs/types/SortState.html +44 -49
  36. package/dist/docs/types/SortingDirection.html +41 -46
  37. package/dist/src/components/cell.js +2 -1
  38. package/dist/src/components/cell.js.map +1 -1
  39. package/dist/src/components/filter-row.d.ts +1 -1
  40. package/dist/src/components/filter-row.d.ts.map +1 -1
  41. package/dist/src/components/filter-row.js +2 -1
  42. package/dist/src/components/filter-row.js.map +1 -1
  43. package/dist/src/components/grid.d.ts +1 -1
  44. package/dist/src/components/grid.d.ts.map +1 -1
  45. package/dist/src/components/grid.js +4 -1
  46. package/dist/src/components/grid.js.map +1 -1
  47. package/dist/src/components/header-row.js +2 -1
  48. package/dist/src/components/header-row.js.map +1 -1
  49. package/dist/src/components/header.d.ts +1 -1
  50. package/dist/src/components/header.d.ts.map +1 -1
  51. package/dist/src/components/header.js +2 -1
  52. package/dist/src/components/header.js.map +1 -1
  53. package/dist/src/components/row.js +2 -1
  54. package/dist/src/components/row.js.map +1 -1
  55. package/dist/src/controllers/dom.d.ts +1 -1
  56. package/dist/src/controllers/dom.d.ts.map +1 -1
  57. package/dist/src/controllers/filter.d.ts +3 -3
  58. package/dist/src/controllers/filter.d.ts.map +1 -1
  59. package/dist/src/controllers/filter.js +1 -1
  60. package/dist/src/controllers/filter.js.map +1 -1
  61. package/dist/src/controllers/navigation.d.ts +1 -1
  62. package/dist/src/controllers/navigation.d.ts.map +1 -1
  63. package/dist/src/controllers/resize.js +1 -1
  64. package/dist/src/controllers/resize.js.map +1 -1
  65. package/dist/src/controllers/sort.js +1 -1
  66. package/dist/src/controllers/sort.js.map +1 -1
  67. package/dist/src/controllers/state.d.ts +2 -2
  68. package/dist/src/controllers/state.d.ts.map +1 -1
  69. package/dist/src/internal/constants.d.ts +2 -2
  70. package/dist/src/internal/constants.d.ts.map +1 -1
  71. package/dist/src/internal/utils.d.ts +1 -1
  72. package/dist/src/internal/utils.d.ts.map +1 -1
  73. package/dist/src/operations/filter/tree.d.ts +5 -5
  74. package/dist/src/operations/filter/tree.d.ts.map +1 -1
  75. package/package.json +28 -28
@@ -1 +1 @@
1
- {"version":3,"file":"header.js","sourceRoot":"","sources":["../../../src/components/header.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { consume } from '@lit-labs/context';\nimport { partNameMap } from '../internal/part-map.js';\nimport { GRID_HEADER_TAG } from '../internal/tags.js';\nimport { registerComponent } from '../internal/register.js';\nimport {\n MIN_COL_RESIZE_WIDTH,\n SORT_ICON_ASCENDING,\n SORT_ICON_DESCENDING,\n} from '../internal/constants.js';\nimport type { ColumnConfiguration, ApexHeaderContext } from '../internal/types.js';\nimport { StateController, gridStateContext } from '../controllers/state.js';\nimport { styles } from '../styles/header-cell/header-cell-styles.css.js';\n\nexport default class ApexGridHeader<T extends object> extends LitElement {\n public static get is() {\n return GRID_HEADER_TAG;\n }\n\n public static override styles = styles;\n\n public static register() {\n registerComponent(this);\n }\n\n protected get context(): ApexHeaderContext<T> {\n return {\n parent: this,\n column: this.column,\n };\n }\n\n protected get isSortable() {\n return Boolean(this.column.sort);\n }\n\n protected get resizeController() {\n return this.state.resizing;\n }\n\n @consume({ context: gridStateContext, subscribe: true })\n @property({ attribute: false })\n public state!: StateController<T>;\n\n @property({ attribute: false })\n public column!: ColumnConfiguration<T>;\n\n #addResizeEventHandlers() {\n const config: AddEventListenerOptions = { once: true };\n\n this.addEventListener(\n 'gotpointercapture',\n () => (this.resizeController.indicatorActive = true),\n config,\n );\n this.addEventListener('lostpointercapture', this.#handlePointerLost, config);\n this.addEventListener('pointerup', e => this.releasePointerCapture(e.pointerId), config);\n this.addEventListener('pointermove', this.#handleResize);\n }\n\n #handleClick(e: Event) {\n e.stopPropagation();\n this.state.sorting.sortFromHeaderClick(this.column);\n }\n\n #handleResize = ({ clientX }: PointerEvent) => {\n const { left } = this.getBoundingClientRect();\n const width = Math.max(clientX - left, MIN_COL_RESIZE_WIDTH);\n const x = this.offsetLeft + width;\n\n this.resizeController.resize(this.column, width, x);\n };\n\n #handleResizeStart(ev: PointerEvent) {\n const { target, pointerId } = ev;\n\n ev.preventDefault();\n\n this.#addResizeEventHandlers();\n this.resizeController.start(this);\n\n (target as HTMLElement).setPointerCapture(pointerId);\n }\n\n #handlePointerLost = () => {\n this.resizeController.indicatorActive = false;\n this.removeEventListener('pointermove', this.#handleResize);\n this.resizeController.stop();\n };\n\n #handleAutosize = () => this.resizeController.autosize(this.column, this);\n\n protected renderSortPart() {\n const state = this.state.sorting.state.get(this.column.key);\n const idx = Array.from(this.state.sorting.state.values()).indexOf(state!);\n const attr = this.state.host.sortConfiguration.multiple\n ? idx > -1\n ? idx + 1\n : nothing\n : nothing;\n const icon = state\n ? state.direction === 'ascending'\n ? SORT_ICON_ASCENDING\n : SORT_ICON_DESCENDING\n : SORT_ICON_ASCENDING;\n\n return state || this.isSortable\n ? html`<span\n part=${partNameMap({ action: true, sorted: !!state?.direction })}\n @click=${this.isSortable ? this.#handleClick : nothing}\n >\n <igc-icon\n part=${partNameMap({ 'sorting-action': !!state })}\n data-sortIndex=${attr}\n name=${icon}\n collection=\"internal\"\n ></igc-icon>\n </span>`\n : nothing;\n }\n\n protected renderContentPart() {\n const defaultContent = this.column.headerText ?? this.column.key;\n const template = this.column.headerTemplate;\n\n return html`\n <span part=\"title\">\n <span>${template ? template(this.context) : html`${defaultContent}`}</span>\n </span>\n `;\n }\n\n protected renderResizePart() {\n return this.column.resizable\n ? html`<span\n part=\"resizable\"\n @dblclick=${this.#handleAutosize}\n @pointerdown=${this.#handleResizeStart}\n ></span>`\n : nothing;\n }\n\n protected override render() {\n return html`\n <div\n part=${partNameMap({\n content: true,\n sortable: this.isSortable,\n resizing: this.resizeController.indicatorActive,\n })}\n >\n ${this.renderContentPart()}\n <div part=\"actions\">${this.renderSortPart()}</div>\n </div>\n ${this.renderResizePart()}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ApexGridHeader.is]: ApexGridHeader<object>;\n }\n}\n"]}
1
+ {"version":3,"file":"header.js","sourceRoot":"","sources":["../../../src/components/header.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { consume } from '@lit-labs/context';\nimport { partNameMap } from '../internal/part-map.js';\nimport { GRID_HEADER_TAG } from '../internal/tags.js';\nimport { registerComponent } from '../internal/register.js';\nimport {\n MIN_COL_RESIZE_WIDTH,\n SORT_ICON_ASCENDING,\n SORT_ICON_DESCENDING,\n} from '../internal/constants.js';\nimport type { ColumnConfiguration, ApexHeaderContext } from '../internal/types.js';\nimport { StateController, gridStateContext } from '../controllers/state.js';\nimport { styles } from '../styles/header-cell/header-cell-styles.css.js';\n\nexport default class ApexGridHeader<T extends object> extends LitElement {\n public static get is() {\n return GRID_HEADER_TAG;\n }\n\n public static override styles = styles;\n\n public static register() {\n registerComponent(this);\n }\n\n protected get context(): ApexHeaderContext<T> {\n return {\n parent: this,\n column: this.column,\n };\n }\n\n protected get isSortable() {\n return Boolean(this.column.sort);\n }\n\n protected get resizeController() {\n return this.state.resizing;\n }\n\n @consume({ context: gridStateContext, subscribe: true })\n @property({ attribute: false })\n public state!: StateController<T>;\n\n @property({ attribute: false })\n public column!: ColumnConfiguration<T>;\n\n #addResizeEventHandlers() {\n const config: AddEventListenerOptions = { once: true };\n\n this.addEventListener(\n 'gotpointercapture',\n () => (this.resizeController.indicatorActive = true),\n config,\n );\n this.addEventListener('lostpointercapture', this.#handlePointerLost, config);\n this.addEventListener('pointerup', e => this.releasePointerCapture(e.pointerId), config);\n this.addEventListener('pointermove', this.#handleResize);\n }\n\n #handleClick(e: Event) {\n e.stopPropagation();\n this.state.sorting.sortFromHeaderClick(this.column);\n }\n\n #handleResize = ({ clientX }: PointerEvent) => {\n const { left } = this.getBoundingClientRect();\n const width = Math.max(clientX - left, MIN_COL_RESIZE_WIDTH);\n const x = this.offsetLeft + width;\n\n this.resizeController.resize(this.column, width, x);\n };\n\n #handleResizeStart(ev: PointerEvent) {\n const { target, pointerId } = ev;\n\n ev.preventDefault();\n\n this.#addResizeEventHandlers();\n this.resizeController.start(this);\n\n (target as HTMLElement).setPointerCapture(pointerId);\n }\n\n #handlePointerLost = () => {\n this.resizeController.indicatorActive = false;\n this.removeEventListener('pointermove', this.#handleResize);\n this.resizeController.stop();\n };\n\n #handleAutosize = () => this.resizeController.autosize(this.column, this);\n\n protected renderSortPart() {\n const state = this.state.sorting.state.get(this.column.key);\n const idx = Array.from(this.state.sorting.state.values()).indexOf(state!);\n const attr = this.state.host.sortConfiguration.multiple\n ? idx > -1\n ? idx + 1\n : nothing\n : nothing;\n const icon = state\n ? state.direction === 'ascending'\n ? SORT_ICON_ASCENDING\n : SORT_ICON_DESCENDING\n : SORT_ICON_ASCENDING;\n\n return state || this.isSortable\n ? html`<span\n part=${partNameMap({ action: true, sorted: !!state?.direction })}\n @click=${this.isSortable ? this.#handleClick : nothing}\n >\n <igc-icon\n part=${partNameMap({ 'sorting-action': !!state })}\n data-sortIndex=${attr}\n name=${icon}\n collection=\"internal\"\n ></igc-icon>\n </span>`\n : nothing;\n }\n\n protected renderContentPart() {\n const defaultContent = this.column.headerText ?? this.column.key;\n const template = this.column.headerTemplate;\n\n return html`\n <span part=\"title\">\n <span>${template ? template(this.context) : html`${defaultContent}`}</span>\n </span>\n `;\n }\n\n protected renderResizePart() {\n return this.column.resizable\n ? html`<span\n part=\"resizable\"\n @dblclick=${this.#handleAutosize}\n @pointerdown=${this.#handleResizeStart}\n ></span>`\n : nothing;\n }\n\n protected override render() {\n return html`\n <div\n part=${partNameMap({\n content: true,\n sortable: this.isSortable,\n resizing: this.resizeController.indicatorActive,\n })}\n >\n ${this.renderContentPart()}\n <div part=\"actions\">${this.renderSortPart()}</div>\n </div>\n ${this.renderResizePart()}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ApexGridHeader.is]: ApexGridHeader<object>;\n }\n}\n"]}
@@ -14,7 +14,7 @@ import { styles } from '../styles/body-row/body-row-styles.css.js';
14
14
  /**
15
15
  * Component representing the DOM row in the Apex grid.
16
16
  */
17
- export default class ApexGridRow extends LitElement {
17
+ class ApexGridRow extends LitElement {
18
18
  constructor() {
19
19
  super(...arguments);
20
20
  this.columns = [];
@@ -64,4 +64,5 @@ __decorate([
64
64
  __decorate([
65
65
  property({ attribute: false, type: Number })
66
66
  ], ApexGridRow.prototype, "index", void 0);
67
+ export default ApexGridRow;
67
68
  //# sourceMappingURL=row.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"row.js","sourceRoot":"","sources":["../../../src/components/row.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,YAAY,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,WAA8B,SAAQ,UAAU;IAArE;;QAiBS,YAAO,GAAkC,EAAE,CAAC;QAU5C,UAAK,GAAG,CAAC,CAAC,CAAC;IAwBpB,CAAC;IAlDQ,MAAM,KAAK,EAAE;QAClB,OAAO,YAAY,CAAC;IACtB,CAAC;IAGM,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1C,CAAC;IAWD,IAAW,KAAK;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAQe,iBAAiB;QAC/B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAEkB,MAAM;QACvB,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QAEpD,OAAO,IAAI,CAAA;QACP,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAC3B,MAAM,CAAC,MAAM;YACX,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,IAAI,CAAA;;wBAEQ,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK;wBAC1C,MAAM;qBACT,IAAsB;uBACpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;+BACb,CACxB;KACF,CAAC;IACJ,CAAC;;AA9CsB,kBAAM,GAAG,MAAM,CAAC;AAOvC;IADC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;2CACqB;AAG/C;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;yCACf;AAGhB;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;4CACoB;AAOnD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;+CACG;AAGlC;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAC3B","sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property, queryAll } from 'lit/decorators.js';\nimport { map } from 'lit/directives/map.js';\nimport { GRID_ROW_TAG } from '../internal/tags.js';\nimport { registerComponent } from '../internal/register.js';\nimport type { ActiveNode, ColumnConfiguration } from '../internal/types.js';\nimport ApexGridCell from './cell.js';\nimport { styles } from '../styles/body-row/body-row-styles.css.js';\n\n/**\n * Component representing the DOM row in the Apex grid.\n */\nexport default class ApexGridRow<T extends object> extends LitElement {\n public static get is() {\n return GRID_ROW_TAG;\n }\n public static override styles = styles;\n\n public static register() {\n registerComponent(this, [ApexGridCell]);\n }\n\n @queryAll(ApexGridCell.is)\n protected _cells!: NodeListOf<ApexGridCell<T>>;\n\n @property({ attribute: false })\n public data!: T;\n\n @property({ attribute: false })\n public columns: Array<ColumnConfiguration<T>> = [];\n\n public get cells() {\n return Array.from(this._cells);\n }\n\n @property({ attribute: false })\n public activeNode!: ActiveNode<T>;\n\n @property({ attribute: false, type: Number })\n public index = -1;\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('exportparts', 'cell');\n }\n\n protected override render() {\n const { column: key, row: index } = this.activeNode;\n\n return html`\n ${map(this.columns, column =>\n column.hidden\n ? nothing\n : html`<apex-grid-cell\n part=\"cell\"\n .active=${key === column.key && index === this.index}\n .column=${column}\n .row=${this as ApexGridRow<T>}\n .value=${this.data[column.key]}\n ></apex-grid-cell>`,\n )}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ApexGridRow.is]: ApexGridRow<object>;\n }\n}\n"]}
1
+ {"version":3,"file":"row.js","sourceRoot":"","sources":["../../../src/components/row.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,YAAY,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE;;GAEG;AACH,MAAqB,WAA8B,SAAQ,UAAU;IAArE;;QAiBS,YAAO,GAAkC,EAAE,CAAC;QAU5C,UAAK,GAAG,CAAC,CAAC,CAAC;IAwBpB,CAAC;IAlDQ,MAAM,KAAK,EAAE;QAClB,OAAO,YAAY,CAAC;IACtB,CAAC;IAGM,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1C,CAAC;IAWD,IAAW,KAAK;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAQe,iBAAiB;QAC/B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAEkB,MAAM;QACvB,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QAEpD,OAAO,IAAI,CAAA;QACP,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAC3B,MAAM,CAAC,MAAM;YACX,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,IAAI,CAAA;;wBAEQ,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK;wBAC1C,MAAM;qBACT,IAAsB;uBACpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;+BACb,CACxB;KACF,CAAC;IACJ,CAAC;;AA9CsB,kBAAM,GAAG,MAAM,AAAT,CAAU;AAO7B;IADT,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;2CACqB;AAGxC;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;yCACf;AAGT;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;4CACoB;AAO5C;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;+CACG;AAG3B;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAC3B;eA3BC,WAAW","sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property, queryAll } from 'lit/decorators.js';\nimport { map } from 'lit/directives/map.js';\nimport { GRID_ROW_TAG } from '../internal/tags.js';\nimport { registerComponent } from '../internal/register.js';\nimport type { ActiveNode, ColumnConfiguration } from '../internal/types.js';\nimport ApexGridCell from './cell.js';\nimport { styles } from '../styles/body-row/body-row-styles.css.js';\n\n/**\n * Component representing the DOM row in the Apex grid.\n */\nexport default class ApexGridRow<T extends object> extends LitElement {\n public static get is() {\n return GRID_ROW_TAG;\n }\n public static override styles = styles;\n\n public static register() {\n registerComponent(this, [ApexGridCell]);\n }\n\n @queryAll(ApexGridCell.is)\n protected _cells!: NodeListOf<ApexGridCell<T>>;\n\n @property({ attribute: false })\n public data!: T;\n\n @property({ attribute: false })\n public columns: Array<ColumnConfiguration<T>> = [];\n\n public get cells() {\n return Array.from(this._cells);\n }\n\n @property({ attribute: false })\n public activeNode!: ActiveNode<T>;\n\n @property({ attribute: false, type: Number })\n public index = -1;\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('exportparts', 'cell');\n }\n\n protected override render() {\n const { column: key, row: index } = this.activeNode;\n\n return html`\n ${map(this.columns, column =>\n column.hidden\n ? nothing\n : html`<apex-grid-cell\n part=\"cell\"\n .active=${key === column.key && index === this.index}\n .column=${column}\n .row=${this as ApexGridRow<T>}\n .value=${this.data[column.key]}\n ></apex-grid-cell>`,\n )}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ApexGridRow.is]: ApexGridRow<object>;\n }\n}\n"]}
@@ -8,7 +8,7 @@ export declare class GridDOMController<T extends object> implements ReactiveCont
8
8
  protected host: GridHost<T>;
9
9
  protected state: StateController<T>;
10
10
  constructor(host: GridHost<T>, state: StateController<T>);
11
- get container(): import("../components/virtualizer").default;
11
+ get container(): import("../components/virtualizer.js").default;
12
12
  columnSizes: StyleInfo;
13
13
  rowRenderer: RenderItemFunction<T>;
14
14
  hostConnected(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/controllers/dom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,MAAM,KAAK,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAY,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,qBAAa,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,kBAAkB;;IAChE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAAE,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;gBAAtD,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAY,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;IAQ5E,IAAW,SAAS,gDAGnB;IAEM,WAAW,EAAE,SAAS,CAAM;IAE5B,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC,CASvC;IAEW,aAAa;IASnB,UAAU,IAAI,IAAI;IAKlB,eAAe;IAKtB,SAAS,CAAC,kBAAkB;IAIrB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;CAIpD"}
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/controllers/dom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,MAAM,KAAK,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAY,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,qBAAa,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,kBAAkB;;IAChE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAAE,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;gBAAtD,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAY,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;IAQ5E,IAAW,SAAS,mDAGnB;IAEM,WAAW,EAAE,SAAS,CAAM;IAE5B,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC,CASvC;IAEW,aAAa;IASnB,UAAU,IAAI,IAAI;IAKlB,eAAe;IAKtB,SAAS,CAAC,kBAAkB;IAIrB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;CAIpD"}
@@ -7,13 +7,13 @@ export declare class FilterController<T extends object> implements ReactiveContr
7
7
  protected host: GridHost<T>;
8
8
  constructor(host: GridHost<T>);
9
9
  state: FilterState<T>;
10
- get filterRow(): import("../components/filter-row").default<T>;
10
+ get filterRow(): import("../components/filter-row.js").default<T>;
11
11
  hostConnected(): void;
12
12
  hostUpdate(): void;
13
- get(key: Keys<T>): import("../operations/filter/tree").FilterExpressionTree<T> | undefined;
13
+ get(key: Keys<T>): import("../operations/filter/tree.js").FilterExpressionTree<T> | undefined;
14
14
  reset(key?: Keys<T>): void;
15
15
  setActiveColumn(column?: ColumnConfiguration<T>): void;
16
- getDefaultExpression(column: ColumnConfiguration<T>): FilterExpression<T, keyof T>;
16
+ getDefaultExpression(column: ColumnConfiguration<T>): FilterExpression<T>;
17
17
  removeAllExpressions(key: Keys<T>): Promise<void>;
18
18
  removeExpression(expression: FilterExpression<T>): Promise<void>;
19
19
  filterWithEvent(expression: FilterExpression<T>, type: 'add' | 'modify' | 'remove'): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/controllers/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,KAAK,CAAC;AAGzC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,qBAAa,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,kBAAkB;;IAC/D,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAAjB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAIhC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAqB;IAEjD,IAAW,SAAS,kDAGnB;IA8BM,aAAa;IAEb,UAAU,IAAI,IAAI;IAIlB,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAIhB,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAInB,eAAe,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAQ/C,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAc7C,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAuBjC,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAmBhD,eAAe,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ;IAWxF,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE;CAOtE"}
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/controllers/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,KAAK,CAAC;AAGzC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,qBAAa,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,kBAAkB;;IAC/D,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAAjB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAIhC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAqB;IAEjD,IAAW,SAAS,qDAGnB;IA8BM,aAAa;IAEb,UAAU,IAAI,IAAI;IAIlB,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAIhB,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAInB,eAAe,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAQ/C,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAc7C,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAuBjC,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAmBhD,eAAe,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ;IAWxF,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE;CAOtE"}
@@ -9,8 +9,8 @@ import { asArray, getFilterOperandsFor } from '../internal/utils.js';
9
9
  import { FilterState } from '../operations/filter/state.js';
10
10
  export class FilterController {
11
11
  constructor(host) {
12
- this.host = host;
13
12
  _FilterController_instances.add(this);
13
+ this.host = host;
14
14
  this.state = new FilterState();
15
15
  this.host.addController(this);
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/controllers/filter.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAM5D,MAAM,OAAO,gBAAgB;IAC3B,YAAsB,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;;QAIhC,UAAK,GAAmB,IAAI,WAAW,EAAE,CAAC;QAH/C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAID,IAAW,SAAS;QAClB,sCAAsC;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;IA8BM,aAAa,KAAI,CAAC;IAElB,UAAU;;QACf,MAAA,IAAI,CAAC,SAAS,0CAAE,aAAa,EAAE,CAAC;IAClC,CAAC;IAEM,GAAG,CAAC,GAAY;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,GAAa;QACxB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAEM,eAAe,CAAC,MAA+B;;QACpD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,MAAI,MAAA,IAAI,CAAC,SAAS,0CAAE,MAAM,CAAA,EAAE;YAC5C,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAC9D,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;SAC3B;IACH,CAAC;IAEM,oBAAoB,CAAC,MAA8B;;QACxD,MAAM,aAAa,GACjB,OAAO,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAA,MAAM,CAAC,MAAM,0CAAE,aAAa,CAAC,CAAC;QACrF,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAA4B,CAAC;QAE9D,aAAa;QACb,OAAO;YACL,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5B,aAAa;SACoB,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAAC,GAAY;;QAC5C,MAAM,KAAK,GAAG,MAAA,MAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,0CAAE,GAAG,mCAAI,EAAE,CAAC;QAEvC,IACE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YAChC,MAAM,EAAE;gBACN,GAAG;gBACH,WAAW,EAAE,KAAK;gBAClB,IAAI,EAAE,QAAQ;aACf;YACD,UAAU,EAAE,IAAI;SACjB,CAAC,EACF;YACA,OAAO;SACR;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChB,uBAAA,IAAI,6DAAQ,MAAZ,IAAI,EAAS,EAAE,CAAC,CAAC;QAEjB,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAC/B,uBAAA,IAAI,wEAAmB,MAAvB,IAAI,EAAoB,EAAE,GAAG,EAAE,KAAK,EAAE,MAAA,MAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,0CAAE,GAAG,mCAAI,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,UAA+B;;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAEvC,IAAI,CAAC,uBAAA,IAAI,yEAAoB,MAAxB,IAAI,EAAqB,UAAU,EAAE,QAAQ,CAAC,EAAE;YACnD,OAAO;SACR;QAED,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAE1B,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EAAE;YAChB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACvB;QAED,uBAAA,IAAI,6DAAQ,MAAZ,IAAI,EAAS,EAAE,CAAC,CAAC;QAEjB,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAC/B,uBAAA,IAAI,wEAAmB,MAAvB,IAAI,EAAoB,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,mCAAI,EAAE,EAAE,CAAC,CAAC;IAC5E,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,UAA+B,EAAE,IAAiC;;QAC7F,IAAI,CAAC,uBAAA,IAAI,yEAAoB,MAAxB,IAAI,EAAqB,UAAU,EAAE,IAAI,CAAC,EAAE;YAC/C,OAAO;SACR;QAED,uBAAA,IAAI,6DAAQ,MAAZ,IAAI,EAAS,UAAU,CAAC,CAAC;QAEzB,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAC/B,uBAAA,IAAI,wEAAmB,MAAvB,IAAI,EAAoB,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,MAAA,MAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,0CAAE,GAAG,mCAAI,EAAE,EAAE,CAAC,CAAC;IAC/F,CAAC;IAEM,MAAM,CAAC,UAAuD;QACnE,uBAAA,IAAI,6DAAQ,MAAZ,IAAI,EACF,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAE,CAAC,EAAE,IAAI,CAAC,CAC/E,CACF,CAAC;IACJ,CAAC;CACF;;IA3HG,sCAAsC;IACtC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACnC,CAAC,uFAEmB,UAA+B,EAAE,IAAiC;IACpF,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;QACtC,MAAM,EAAE;YACN,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,WAAW,EAAE,CAAC,UAAU,CAAC;YACzB,IAAI;SACL;QACD,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;AACL,CAAC,qFAEkB,MAA6B;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACrD,CAAC,+DAEO,UAAuD;;IAC7D,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,sGAAsG;IACtG,6GAA6G;IAC7G,MAAA,uBAAA,IAAI,sEAAa,0CAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC","sourcesContent":["import { ReactiveController } from 'lit';\nimport { PIPELINE } from '../internal/constants.js';\nimport { asArray, getFilterOperandsFor } from '../internal/utils.js';\nimport { FilterState } from '../operations/filter/state.js';\n\nimport type { ColumnConfiguration, GridHost, Keys } from '../internal/types.js';\nimport type { FilterExpression } from '../operations/filter/types.js';\nimport type { ApexFilteredEvent } from '../components/grid.js';\n\nexport class FilterController<T extends object> implements ReactiveController {\n constructor(protected host: GridHost<T>) {\n this.host.addController(this);\n }\n\n public state: FilterState<T> = new FilterState();\n\n public get filterRow() {\n // @ts-expect-error - protected access\n return this.host.filterRow;\n }\n\n get #virtualizer() {\n // @ts-expect-error - protected access\n return this.host.scrollContainer;\n }\n\n #emitFilteringEvent(expression: FilterExpression<T>, type: 'add' | 'modify' | 'remove') {\n return this.host.emitEvent('filtering', {\n detail: {\n key: expression.key,\n expressions: [expression],\n type,\n },\n cancelable: true,\n });\n }\n\n #emitFilteredEvent(detail?: ApexFilteredEvent<T>) {\n return this.host.emitEvent('filtered', { detail });\n }\n\n #filter(expression: FilterExpression<T> | FilterExpression<T>[]) {\n asArray(expression).forEach(expr => this.state.set(expr));\n // HACK: In the case where the scrollTop is a large and amount and a big chunk of data is filtered out\n // HACK: the virtualizer can't recalculate its scroll position correctly. Thus, we reset the scrollTop state.\n this.#virtualizer?.scrollTo({ top: 0 });\n this.host.requestUpdate(PIPELINE);\n }\n\n public hostConnected() {}\n\n public hostUpdate(): void {\n this.filterRow?.requestUpdate();\n }\n\n public get(key: Keys<T>) {\n return this.state.get(key);\n }\n\n public reset(key?: Keys<T>) {\n key ? this.state.delete(key) : this.state.clear();\n }\n\n public setActiveColumn(column?: ColumnConfiguration<T>) {\n if (column?.filter && this.filterRow?.active) {\n this.filterRow.column = column;\n this.filterRow.expression = this.getDefaultExpression(column);\n this.host.requestUpdate();\n }\n }\n\n public getDefaultExpression(column: ColumnConfiguration<T>) {\n const caseSensitive =\n typeof column.filter === 'boolean' ? false : Boolean(column.filter?.caseSensitive);\n const operands = getFilterOperandsFor(column);\n const keys = Object.keys(operands) as Keys<typeof operands>[];\n\n // XXX: Types\n return {\n key: column.key,\n condition: operands[keys[0]],\n caseSensitive,\n } as unknown as FilterExpression<T>;\n }\n\n public async removeAllExpressions(key: Keys<T>) {\n const state = this.get(key)?.all ?? [];\n\n if (\n !this.host.emitEvent('filtering', {\n detail: {\n key,\n expressions: state,\n type: 'remove',\n },\n cancelable: true,\n })\n ) {\n return;\n }\n\n this.reset(key);\n this.#filter([]);\n\n await this.host.updateComplete;\n this.#emitFilteredEvent({ key, state: this.get(key)?.all ?? [] });\n }\n\n public async removeExpression(expression: FilterExpression<T>) {\n const state = this.get(expression.key);\n\n if (!this.#emitFilteringEvent(expression, 'remove')) {\n return;\n }\n\n state?.remove(expression);\n\n if (state?.empty) {\n this.reset(state.key);\n }\n\n this.#filter([]);\n\n await this.host.updateComplete;\n this.#emitFilteredEvent({ key: expression.key, state: state?.all ?? [] });\n }\n\n public async filterWithEvent(expression: FilterExpression<T>, type: 'add' | 'modify' | 'remove') {\n if (!this.#emitFilteringEvent(expression, type)) {\n return;\n }\n\n this.#filter(expression);\n\n await this.host.updateComplete;\n this.#emitFilteredEvent({ key: expression.key, state: this.get(expression.key)?.all ?? [] });\n }\n\n public filter(expression: FilterExpression<T> | FilterExpression<T>[]) {\n this.#filter(\n asArray(expression).map(expr =>\n Object.assign(this.getDefaultExpression(this.host.getColumn(expr.key)!), expr),\n ),\n );\n }\n}\n"]}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/controllers/filter.ts"],"names":[],"mappings":"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","sourcesContent":["import { ReactiveController } from 'lit';\nimport { PIPELINE } from '../internal/constants.js';\nimport { asArray, getFilterOperandsFor } from '../internal/utils.js';\nimport { FilterState } from '../operations/filter/state.js';\n\nimport type { ColumnConfiguration, GridHost, Keys } from '../internal/types.js';\nimport type { FilterExpression } from '../operations/filter/types.js';\nimport type { ApexFilteredEvent } from '../components/grid.js';\n\nexport class FilterController<T extends object> implements ReactiveController {\n constructor(protected host: GridHost<T>) {\n this.host.addController(this);\n }\n\n public state: FilterState<T> = new FilterState();\n\n public get filterRow() {\n // @ts-expect-error - protected access\n return this.host.filterRow;\n }\n\n get #virtualizer() {\n // @ts-expect-error - protected access\n return this.host.scrollContainer;\n }\n\n #emitFilteringEvent(expression: FilterExpression<T>, type: 'add' | 'modify' | 'remove') {\n return this.host.emitEvent('filtering', {\n detail: {\n key: expression.key,\n expressions: [expression],\n type,\n },\n cancelable: true,\n });\n }\n\n #emitFilteredEvent(detail?: ApexFilteredEvent<T>) {\n return this.host.emitEvent('filtered', { detail });\n }\n\n #filter(expression: FilterExpression<T> | FilterExpression<T>[]) {\n asArray(expression).forEach(expr => this.state.set(expr));\n // HACK: In the case where the scrollTop is a large and amount and a big chunk of data is filtered out\n // HACK: the virtualizer can't recalculate its scroll position correctly. Thus, we reset the scrollTop state.\n this.#virtualizer?.scrollTo({ top: 0 });\n this.host.requestUpdate(PIPELINE);\n }\n\n public hostConnected() {}\n\n public hostUpdate(): void {\n this.filterRow?.requestUpdate();\n }\n\n public get(key: Keys<T>) {\n return this.state.get(key);\n }\n\n public reset(key?: Keys<T>) {\n key ? this.state.delete(key) : this.state.clear();\n }\n\n public setActiveColumn(column?: ColumnConfiguration<T>) {\n if (column?.filter && this.filterRow?.active) {\n this.filterRow.column = column;\n this.filterRow.expression = this.getDefaultExpression(column);\n this.host.requestUpdate();\n }\n }\n\n public getDefaultExpression(column: ColumnConfiguration<T>) {\n const caseSensitive =\n typeof column.filter === 'boolean' ? false : Boolean(column.filter?.caseSensitive);\n const operands = getFilterOperandsFor(column);\n const keys = Object.keys(operands) as Keys<typeof operands>[];\n\n // XXX: Types\n return {\n key: column.key,\n condition: operands[keys[0]],\n caseSensitive,\n } as unknown as FilterExpression<T>;\n }\n\n public async removeAllExpressions(key: Keys<T>) {\n const state = this.get(key)?.all ?? [];\n\n if (\n !this.host.emitEvent('filtering', {\n detail: {\n key,\n expressions: state,\n type: 'remove',\n },\n cancelable: true,\n })\n ) {\n return;\n }\n\n this.reset(key);\n this.#filter([]);\n\n await this.host.updateComplete;\n this.#emitFilteredEvent({ key, state: this.get(key)?.all ?? [] });\n }\n\n public async removeExpression(expression: FilterExpression<T>) {\n const state = this.get(expression.key);\n\n if (!this.#emitFilteringEvent(expression, 'remove')) {\n return;\n }\n\n state?.remove(expression);\n\n if (state?.empty) {\n this.reset(state.key);\n }\n\n this.#filter([]);\n\n await this.host.updateComplete;\n this.#emitFilteredEvent({ key: expression.key, state: state?.all ?? [] });\n }\n\n public async filterWithEvent(expression: FilterExpression<T>, type: 'add' | 'modify' | 'remove') {\n if (!this.#emitFilteringEvent(expression, type)) {\n return;\n }\n\n this.#filter(expression);\n\n await this.host.updateComplete;\n this.#emitFilteredEvent({ key: expression.key, state: this.get(expression.key)?.all ?? [] });\n }\n\n public filter(expression: FilterExpression<T> | FilterExpression<T>[]) {\n this.#filter(\n asArray(expression).map(expr =>\n Object.assign(this.getDefaultExpression(this.host.getColumn(expr.key)!), expr),\n ),\n );\n }\n}\n"]}
@@ -3,7 +3,7 @@ import type { ActiveNode, GridHost, Keys } from '../internal/types.js';
3
3
  export declare class NavigationController<T extends object> implements ReactiveController {
4
4
  protected host: GridHost<T>;
5
5
  protected handlers: Map<string, (() => void) | (() => void) | (() => void) | (() => void) | (() => void) | (() => void)>;
6
- protected get virtualizer(): import("../components/virtualizer").default;
6
+ protected get virtualizer(): import("../components/virtualizer.js").default;
7
7
  protected state: Map<import("../internal/types.js").NavigationState, ActiveNode<any>>;
8
8
  protected _active: Readonly<ActiveNode<any>>;
9
9
  protected get nextNode(): ActiveNode<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/controllers/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,KAAK,CAAC;AAGzC,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAEvE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,kBAAkB;IAkEnE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAjEvC,SAAS,CAAC,QAAQ,uGAShB;IAEF,SAAS,KAAK,WAAW,gDAGxB;IAED,SAAS,CAAC,KAAK,uEAAoB;IACnC,SAAS,CAAC,OAAO,4BAAiB;IAElC,SAAS,KAAK,QAAQ,kBAKrB;IAED,SAAS,KAAK,OAAO,qEAEpB;IAED,SAAS,KAAK,WAAW,iEAExB;IAED,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAIxC,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAMpC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAU1C,IAAW,MAAM,IAIO,UAAU,CAAC,CAAC,CAAC,CAFpC;IAED,IAAW,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAKpC;gBAEqB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAIvC,SAAS,CAAC,IAAI;IAKd,SAAS,CAAC,GAAG;IAKb,SAAS,CAAC,SAAS;IASnB,SAAS,CAAC,OAAO;IAMjB,SAAS,CAAC,SAAS;IAMnB,SAAS,CAAC,UAAU;IAMb,aAAa;IAEb,gBAAgB;IAKhB,QAAQ,CAAC,KAAK,EAAE,aAAa;CAMrC"}
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/controllers/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,KAAK,CAAC;AAGzC,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAEvE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,kBAAkB;IAkEnE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAjEvC,SAAS,CAAC,QAAQ,uGAShB;IAEF,SAAS,KAAK,WAAW,mDAGxB;IAED,SAAS,CAAC,KAAK,uEAAoB;IACnC,SAAS,CAAC,OAAO,4BAAiB;IAElC,SAAS,KAAK,QAAQ,kBAKrB;IAED,SAAS,KAAK,OAAO,qEAEpB;IAED,SAAS,KAAK,WAAW,iEAExB;IAED,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAIxC,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAMpC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAU1C,IAAW,MAAM,IAIO,UAAU,CAAC,CAAC,CAAC,CAFpC;IAED,IAAW,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAKpC;gBAEqB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAIvC,SAAS,CAAC,IAAI;IAKd,SAAS,CAAC,GAAG;IAKb,SAAS,CAAC,SAAS;IASnB,SAAS,CAAC,OAAO;IAMjB,SAAS,CAAC,SAAS;IAMnB,SAAS,CAAC,UAAU;IAMb,aAAa;IAEb,gBAAgB;IAKhB,QAAQ,CAAC,KAAK,EAAE,aAAa;CAMrC"}
@@ -9,8 +9,8 @@ import { styleMap } from 'lit/directives/style-map.js';
9
9
  import { MIN_COL_RESIZE_WIDTH } from '../internal/constants.js';
10
10
  export class ResizeController {
11
11
  constructor(host) {
12
- this.host = host;
13
12
  _ResizeController_instances.add(this);
13
+ this.host = host;
14
14
  this.indicatorActive = false;
15
15
  this.indicatorOffset = 0;
16
16
  this.host.addController(this);
@@ -1 +1 @@
1
- {"version":3,"file":"resize.js","sourceRoot":"","sources":["../../../src/controllers/resize.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAsB,MAAM,KAAK,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,MAAM,OAAO,gBAAgB;IAC3B,YAAsB,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;;QAIhC,oBAAe,GAAG,KAAK,CAAC;QACxB,oBAAe,GAAG,CAAC,CAAC;QAJzB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAaD;;;;OAIG;IACI,KAAK,CAAC,MAAyB;QACpC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,IAAI;QACT,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAEM,MAAM,CAAC,MAA8B,EAAE,KAAa,EAAE,WAAoB;QAC/E,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;SACpC;QAED,MAAM,CAAC,KAAK,GAAG,GAAG,KAAK,IAAI,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,MAA8B,EAAE,MAAyB;QAC7E,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC;QAE7B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAE/B,MAAM,CAAC,KAAK,GAAG,GAAG,uBAAA,IAAI,8DAAS,MAAb,IAAI,EAAU,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAEM,aAAa,KAAI,CAAC;IAEzB;;OAEG;IACI,eAAe;QACpB,OAAO,IAAI,CAAC,eAAe;YACzB,CAAC,CAAC,IAAI,CAAA;;kBAEM,QAAQ,CAAC;gBACf,SAAS,EAAE,cAAc,IAAI,CAAC,eAAe,KAAK;aACnD,CAAC;gBACI;YACV,CAAC,CAAC,OAAO,CAAC;IACd,CAAC;CACF;4GA7DU,GAAY,EAAE,WAAmB;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI;SACvB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,CAAE,CAAC;SAC5D,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAE3F,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;AAC/D,CAAC","sourcesContent":["import { html, nothing, ReactiveController } from 'lit';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport ApexGridHeader from '../components/header.js';\nimport { MIN_COL_RESIZE_WIDTH } from '../internal/constants.js';\nimport type { ColumnConfiguration, GridHost, Keys } from '../internal/types.js';\n\nexport class ResizeController<T extends object> implements ReactiveController {\n constructor(protected host: GridHost<T>) {\n this.host.addController(this);\n }\n\n public indicatorActive = false;\n public indicatorOffset = 0;\n\n #maxSize(key: Keys<T>, headerWidth: number) {\n const max = this.host.rows\n .map(row => row.cells.find(cell => cell.column.key === key)!)\n .reduce((prev, current) => (current.offsetWidth > prev ? current.offsetWidth : prev), 0);\n\n return Math.max(...[MIN_COL_RESIZE_WIDTH, max, headerWidth]);\n }\n\n /**\n * Begins resizing a column by showing and positioning the resize indicator in relation to the column.\n *\n * @param header the\n */\n public start(header: ApexGridHeader<T>) {\n this.indicatorActive = true;\n this.indicatorOffset = header.offsetLeft + header.offsetWidth;\n this.host.requestUpdate();\n }\n\n /**\n * Stops and resets the resizing state.\n */\n public stop() {\n this.indicatorActive = false;\n this.host.requestUpdate();\n }\n\n public resize(column: ColumnConfiguration<T>, width: number, sizerOffset?: number) {\n if (sizerOffset) {\n this.indicatorOffset = sizerOffset;\n }\n\n column.width = `${width}px`;\n this.host.requestUpdate();\n }\n\n public async autosize(column: ColumnConfiguration<T>, header: ApexGridHeader<T>) {\n column.width = `max-content`;\n\n this.host.requestUpdate();\n await this.host.updateComplete;\n\n column.width = `${this.#maxSize(column.key, header.offsetWidth)}px`;\n this.host.requestUpdate();\n }\n\n public hostConnected() {}\n\n /**\n * Renders the resize indicator in the grid.\n */\n public renderIndicator() {\n return this.indicatorActive\n ? html`<div\n part=\"resize-indicator\"\n style=${styleMap({\n transform: `translateX(${this.indicatorOffset}px)`,\n })}\n ></div>`\n : nothing;\n }\n}\n"]}
1
+ {"version":3,"file":"resize.js","sourceRoot":"","sources":["../../../src/controllers/resize.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAsB,MAAM,KAAK,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,MAAM,OAAO,gBAAgB;IAC3B,YAAsB,IAAiB;;QAAjB,SAAI,GAAJ,IAAI,CAAa;QAIhC,oBAAe,GAAG,KAAK,CAAC;QACxB,oBAAe,GAAG,CAAC,CAAC;QAJzB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAaD;;;;OAIG;IACI,KAAK,CAAC,MAAyB;QACpC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,IAAI;QACT,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAEM,MAAM,CAAC,MAA8B,EAAE,KAAa,EAAE,WAAoB;QAC/E,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;SACpC;QAED,MAAM,CAAC,KAAK,GAAG,GAAG,KAAK,IAAI,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,MAA8B,EAAE,MAAyB;QAC7E,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC;QAE7B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAE/B,MAAM,CAAC,KAAK,GAAG,GAAG,uBAAA,IAAI,8DAAS,MAAb,IAAI,EAAU,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAEM,aAAa,KAAI,CAAC;IAEzB;;OAEG;IACI,eAAe;QACpB,OAAO,IAAI,CAAC,eAAe;YACzB,CAAC,CAAC,IAAI,CAAA;;kBAEM,QAAQ,CAAC;gBACf,SAAS,EAAE,cAAc,IAAI,CAAC,eAAe,KAAK;aACnD,CAAC;gBACI;YACV,CAAC,CAAC,OAAO,CAAC;IACd,CAAC;CACF;4GA7DU,GAAY,EAAE,WAAmB;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI;SACvB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,CAAE,CAAC;SAC5D,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAE3F,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;AAC/D,CAAC","sourcesContent":["import { html, nothing, ReactiveController } from 'lit';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport ApexGridHeader from '../components/header.js';\nimport { MIN_COL_RESIZE_WIDTH } from '../internal/constants.js';\nimport type { ColumnConfiguration, GridHost, Keys } from '../internal/types.js';\n\nexport class ResizeController<T extends object> implements ReactiveController {\n constructor(protected host: GridHost<T>) {\n this.host.addController(this);\n }\n\n public indicatorActive = false;\n public indicatorOffset = 0;\n\n #maxSize(key: Keys<T>, headerWidth: number) {\n const max = this.host.rows\n .map(row => row.cells.find(cell => cell.column.key === key)!)\n .reduce((prev, current) => (current.offsetWidth > prev ? current.offsetWidth : prev), 0);\n\n return Math.max(...[MIN_COL_RESIZE_WIDTH, max, headerWidth]);\n }\n\n /**\n * Begins resizing a column by showing and positioning the resize indicator in relation to the column.\n *\n * @param header the\n */\n public start(header: ApexGridHeader<T>) {\n this.indicatorActive = true;\n this.indicatorOffset = header.offsetLeft + header.offsetWidth;\n this.host.requestUpdate();\n }\n\n /**\n * Stops and resets the resizing state.\n */\n public stop() {\n this.indicatorActive = false;\n this.host.requestUpdate();\n }\n\n public resize(column: ColumnConfiguration<T>, width: number, sizerOffset?: number) {\n if (sizerOffset) {\n this.indicatorOffset = sizerOffset;\n }\n\n column.width = `${width}px`;\n this.host.requestUpdate();\n }\n\n public async autosize(column: ColumnConfiguration<T>, header: ApexGridHeader<T>) {\n column.width = `max-content`;\n\n this.host.requestUpdate();\n await this.host.updateComplete;\n\n column.width = `${this.#maxSize(column.key, header.offsetWidth)}px`;\n this.host.requestUpdate();\n }\n\n public hostConnected() {}\n\n /**\n * Renders the resize indicator in the grid.\n */\n public renderIndicator() {\n return this.indicatorActive\n ? html`<div\n part=\"resize-indicator\"\n style=${styleMap({\n transform: `translateX(${this.indicatorOffset}px)`,\n })}\n ></div>`\n : nothing;\n }\n}\n"]}
@@ -8,8 +8,8 @@ import { PIPELINE } from '../internal/constants.js';
8
8
  import { asArray } from '../internal/utils.js';
9
9
  export class SortController {
10
10
  constructor(host) {
11
- this.host = host;
12
11
  _SortController_instances.add(this);
12
+ this.host = host;
13
13
  this.state = new Map();
14
14
  this.host.addController(this);
15
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sort.js","sourceRoot":"","sources":["../../../src/controllers/sort.ts"],"names":[],"mappings":"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","sourcesContent":["import { ReactiveController } from 'lit';\nimport { PIPELINE } from '../internal/constants.js';\nimport { asArray } from '../internal/utils.js';\nimport type {\n ColumnConfiguration,\n ColumnSortConfiguration,\n GridHost,\n Keys,\n} from '../internal/types.js';\nimport type { SortExpression, SortingDirection, SortState } from '../operations/sort/types.js';\n\nexport class SortController<T extends object> implements ReactiveController {\n constructor(protected host: GridHost<T>) {\n this.host.addController(this);\n }\n\n public state: SortState<T> = new Map();\n\n get #isMultipleSort() {\n return this.host.sortConfiguration.multiple;\n }\n\n get #isTriStateSort() {\n return this.host.sortConfiguration.triState;\n }\n\n #resolveSortOptions(options?: boolean | ColumnSortConfiguration<T>) {\n const expr: Pick<SortExpression<T>, 'caseSensitive' | 'comparer'> = {\n caseSensitive: false,\n comparer: undefined,\n };\n\n if (!options || typeof options === 'boolean') {\n return expr as Partial<SortExpression<T>>;\n }\n\n return Object.assign(expr, {\n caseSensitive: options.caseSensitive,\n comparer: options.comparer,\n }) as Partial<SortExpression<T>>;\n }\n\n #createDefaultExpression(key: Keys<T>) {\n const options = this.host.getColumn(key)?.sort;\n\n return {\n key,\n direction: 'ascending',\n ...this.#resolveSortOptions(options),\n } as SortExpression<T>;\n }\n\n #orderBy(dir?: SortingDirection): SortingDirection {\n return this.#isTriStateSort\n ? dir === 'ascending'\n ? 'descending'\n : dir === 'descending'\n ? 'none'\n : 'ascending'\n : dir === 'ascending'\n ? 'descending'\n : 'ascending';\n }\n\n #emitSortingEvent(detail: SortExpression<T>) {\n return this.host.emitEvent('sorting', { detail, cancelable: true });\n }\n\n #emitSortedEvent(detail: SortExpression<T>) {\n return this.host.emitEvent('sorted', { detail });\n }\n\n #setExpression(expression: SortExpression<T>) {\n expression.direction === 'none'\n ? this.reset(expression.key)\n : this.state.set(expression.key, { ...expression });\n }\n\n public async sortFromHeaderClick(column: ColumnConfiguration<T>) {\n const expression = this.prepareExpression(column);\n\n if (!this.#emitSortingEvent(expression)) {\n return;\n }\n\n if (!this.#isMultipleSort) {\n this.reset();\n }\n\n this._sort(expression);\n\n await this.host.updateComplete;\n this.#emitSortedEvent(expression);\n }\n\n public prepareExpression({ key, sort: options }: ColumnConfiguration<T>): SortExpression<T> {\n if (this.state.has(key)) {\n const expr = this.state.get(key)!;\n\n return Object.assign(expr, {\n direction: this.#orderBy(expr.direction),\n ...this.#resolveSortOptions(options),\n });\n }\n\n // Initial state\n return this.#createDefaultExpression(key);\n }\n\n public reset(key?: Keys<T>) {\n key ? this.state.delete(key) : this.state.clear();\n }\n\n protected _sort(expressions: SortExpression<T> | SortExpression<T>[]) {\n asArray(expressions).forEach(expr => this.#setExpression(expr));\n this.host.requestUpdate(PIPELINE);\n }\n\n public sort(expressions: SortExpression<T> | SortExpression<T>[]) {\n this._sort(\n asArray(expressions).map(expr =>\n Object.assign(this.state.get(expr.key) ?? this.#createDefaultExpression(expr.key), expr),\n ),\n );\n }\n\n public hostConnected() {}\n}\n"]}
1
+ {"version":3,"file":"sort.js","sourceRoot":"","sources":["../../../src/controllers/sort.ts"],"names":[],"mappings":"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","sourcesContent":["import { ReactiveController } from 'lit';\nimport { PIPELINE } from '../internal/constants.js';\nimport { asArray } from '../internal/utils.js';\nimport type {\n ColumnConfiguration,\n ColumnSortConfiguration,\n GridHost,\n Keys,\n} from '../internal/types.js';\nimport type { SortExpression, SortingDirection, SortState } from '../operations/sort/types.js';\n\nexport class SortController<T extends object> implements ReactiveController {\n constructor(protected host: GridHost<T>) {\n this.host.addController(this);\n }\n\n public state: SortState<T> = new Map();\n\n get #isMultipleSort() {\n return this.host.sortConfiguration.multiple;\n }\n\n get #isTriStateSort() {\n return this.host.sortConfiguration.triState;\n }\n\n #resolveSortOptions(options?: boolean | ColumnSortConfiguration<T>) {\n const expr: Pick<SortExpression<T>, 'caseSensitive' | 'comparer'> = {\n caseSensitive: false,\n comparer: undefined,\n };\n\n if (!options || typeof options === 'boolean') {\n return expr as Partial<SortExpression<T>>;\n }\n\n return Object.assign(expr, {\n caseSensitive: options.caseSensitive,\n comparer: options.comparer,\n }) as Partial<SortExpression<T>>;\n }\n\n #createDefaultExpression(key: Keys<T>) {\n const options = this.host.getColumn(key)?.sort;\n\n return {\n key,\n direction: 'ascending',\n ...this.#resolveSortOptions(options),\n } as SortExpression<T>;\n }\n\n #orderBy(dir?: SortingDirection): SortingDirection {\n return this.#isTriStateSort\n ? dir === 'ascending'\n ? 'descending'\n : dir === 'descending'\n ? 'none'\n : 'ascending'\n : dir === 'ascending'\n ? 'descending'\n : 'ascending';\n }\n\n #emitSortingEvent(detail: SortExpression<T>) {\n return this.host.emitEvent('sorting', { detail, cancelable: true });\n }\n\n #emitSortedEvent(detail: SortExpression<T>) {\n return this.host.emitEvent('sorted', { detail });\n }\n\n #setExpression(expression: SortExpression<T>) {\n expression.direction === 'none'\n ? this.reset(expression.key)\n : this.state.set(expression.key, { ...expression });\n }\n\n public async sortFromHeaderClick(column: ColumnConfiguration<T>) {\n const expression = this.prepareExpression(column);\n\n if (!this.#emitSortingEvent(expression)) {\n return;\n }\n\n if (!this.#isMultipleSort) {\n this.reset();\n }\n\n this._sort(expression);\n\n await this.host.updateComplete;\n this.#emitSortedEvent(expression);\n }\n\n public prepareExpression({ key, sort: options }: ColumnConfiguration<T>): SortExpression<T> {\n if (this.state.has(key)) {\n const expr = this.state.get(key)!;\n\n return Object.assign(expr, {\n direction: this.#orderBy(expr.direction),\n ...this.#resolveSortOptions(options),\n });\n }\n\n // Initial state\n return this.#createDefaultExpression(key);\n }\n\n public reset(key?: Keys<T>) {\n key ? this.state.delete(key) : this.state.clear();\n }\n\n protected _sort(expressions: SortExpression<T> | SortExpression<T>[]) {\n asArray(expressions).forEach(expr => this.#setExpression(expr));\n this.host.requestUpdate(PIPELINE);\n }\n\n public sort(expressions: SortExpression<T> | SortExpression<T>[]) {\n this._sort(\n asArray(expressions).map(expr =>\n Object.assign(this.state.get(expr.key) ?? this.#createDefaultExpression(expr.key), expr),\n ),\n );\n }\n\n public hostConnected() {}\n}\n"]}
@@ -12,8 +12,8 @@ export declare class StateController<T extends object> implements ReactiveContro
12
12
  resizing: ResizeController<T>;
13
13
  get active(): ActiveNode<T>;
14
14
  set active(node: ActiveNode<T>);
15
- get headerRow(): import("../components/header-row").default<T>;
16
- get scrollContainer(): import("../components/virtualizer").default;
15
+ get headerRow(): import("../components/header-row.js").default<T>;
16
+ get scrollContainer(): import("../components/virtualizer.js").default;
17
17
  constructor(host: GridHost<T>);
18
18
  protected init(): void;
19
19
  hostConnected(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/controllers/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,KAAK,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEjE,qBAAa,eAAe,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,kBAAkB;IAwBvD,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAvB7B,OAAO,EAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAC5B,SAAS,EAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAChC,UAAU,EAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACrC,QAAQ,EAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAEtC,IAAW,MAAM,IAIO,UAAU,CAAC,CAAC,CAAC,CAFpC;IAED,IAAW,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAEpC;IAED,IAAW,SAAS,kDAGnB;IAED,IAAW,eAAe,gDAGzB;gBAEkB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAKpC,SAAS,CAAC,IAAI;IAOP,aAAa;IAEb,UAAU,IAAI,IAAI;CAI1B;AAED,eAAO,MAAM,gBAAgB;;CAA6D,CAAC"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/controllers/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,KAAK,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEjE,qBAAa,eAAe,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,kBAAkB;IAwBvD,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAvB7B,OAAO,EAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAC5B,SAAS,EAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAChC,UAAU,EAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACrC,QAAQ,EAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAEtC,IAAW,MAAM,IAIO,UAAU,CAAC,CAAC,CAAC,CAFpC;IAED,IAAW,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAEpC;IAED,IAAW,SAAS,qDAGnB;IAED,IAAW,eAAe,mDAGzB;gBAEkB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAKpC,SAAS,CAAC,IAAI;IAOP,aAAa;IAEb,UAAU,IAAI,IAAI;CAI1B;AAED,eAAO,MAAM,gBAAgB;;CAA6D,CAAC"}
@@ -1,9 +1,9 @@
1
- import type { ActiveNode, NavigationState } from './types.js';
1
+ import type { ActiveNode, ColumnConfiguration, NavigationState } from './types.js';
2
2
  export declare const PIPELINE = "pipeline";
3
3
  export declare const SORT_ICON_ASCENDING: "arrow-upward";
4
4
  export declare const SORT_ICON_DESCENDING: "arrow-downward";
5
5
  export declare const MIN_COL_RESIZE_WIDTH = 80;
6
6
  export declare const SENTINEL_NODE: Readonly<ActiveNode<any>>;
7
- export declare const DEFAULT_COLUMN_CONFIG: Readonly<import("./types.js").BaseColumnConfiguration<any, string> | import("./types.js").BaseColumnConfiguration<any, number> | import("./types.js").BaseColumnConfiguration<any, symbol>>;
7
+ export declare const DEFAULT_COLUMN_CONFIG: Readonly<ColumnConfiguration<any>>;
8
8
  export declare const NAVIGATION_STATE: Map<NavigationState, ActiveNode<any>>;
9
9
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/internal/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAuB,eAAe,EAAE,MAAM,YAAY,CAAC;AAInF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,mBAAmB,gBAA0B,CAAC;AAC3D,eAAO,MAAM,oBAAoB,kBAA4B,CAAC;AAE9D,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAA0C,CAAC;AAC/F,eAAO,MAAM,qBAAqB,6LAOhC,CAAC;AACH,eAAO,MAAM,gBAAgB,EAAE,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,GAAG,CAAC,CAGjE,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/internal/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAInF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,mBAAmB,gBAA0B,CAAC;AAC3D,eAAO,MAAM,oBAAoB,kBAA4B,CAAC;AAE9D,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAA0C,CAAC;AAC/F,eAAO,MAAM,qBAAqB,oCAOhC,CAAC;AACH,eAAO,MAAM,gBAAgB,EAAE,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,GAAG,CAAC,CAGjE,CAAC"}
@@ -3,5 +3,5 @@ import type { ColumnConfiguration, GridHost } from './types.js';
3
3
  export declare function applyColumnWidths<T extends object>(columns: Array<ColumnConfiguration<T>>): StyleInfo;
4
4
  export declare function autoGenerateColumns<T extends object>(grid: GridHost<T>): void;
5
5
  export declare function asArray<T>(value: T | T[]): T[];
6
- export declare function getFilterOperandsFor<T extends object>(column: ColumnConfiguration<T>): Readonly<import("../operations/filter/types").FilterOperands<number, import("../operations/filter/operands/number.js").NumberKeys>> | Readonly<import("../operations/filter/types").FilterOperands<string, import("../operations/filter/operands/string.js").StringKeys>> | Readonly<import("../operations/filter/types").FilterOperands<boolean, import("../operations/filter/operands/boolean.js").BooleanKeys>>;
6
+ export declare function getFilterOperandsFor<T extends object>(column: ColumnConfiguration<T>): Readonly<import("../operations/filter/types.js").FilterOperands<number, import("../operations/filter/operands/number.js").NumberKeys>> | Readonly<import("../operations/filter/types.js").FilterOperands<string, import("../operations/filter/operands/string.js").StringKeys>> | Readonly<import("../operations/filter/types.js").FilterOperands<boolean, import("../operations/filter/operands/boolean.js").BooleanKeys>>;
7
7
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/internal/utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAY,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG1E,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GACrC,SAAS,CAOX;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,QAUtE;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,OAExC;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,sZAUpF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/internal/utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAY,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG1E,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GACrC,SAAS,CAOX;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,QAUtE;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,OAExC;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,+ZAUpF"}
@@ -6,13 +6,13 @@ export declare class FilterExpressionTree<T> {
6
6
  constructor(key: Keys<T>);
7
7
  get empty(): boolean;
8
8
  get length(): number;
9
- get all(): FilterExpression<T, keyof T>[];
10
- get ands(): FilterExpression<T, keyof T>[];
11
- get ors(): FilterExpression<T, keyof T>[];
9
+ get all(): FilterExpression<T>[];
10
+ get ands(): FilterExpression<T>[];
11
+ get ors(): FilterExpression<T>[];
12
12
  has(expression: FilterExpression<T>): boolean;
13
13
  add(expression: FilterExpression<T>): this;
14
14
  remove(expression: FilterExpression<T>): this;
15
- protected iterator(): Generator<FilterExpression<T, keyof T>, void, unknown>;
16
- [Symbol.iterator](): Generator<FilterExpression<T, keyof T>, void, unknown>;
15
+ protected iterator(): Generator<FilterExpression<T>, void, unknown>;
16
+ [Symbol.iterator](): Generator<FilterExpression<T>, void, unknown>;
17
17
  }
18
18
  //# sourceMappingURL=tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../../src/operations/filter/tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,qBAAa,oBAAoB,CAAC,CAAC;IAGd,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAF/B,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAM;gBAEjC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/B,IAAW,KAAK,YAEf;IAED,IAAW,MAAM,WAEhB;IAED,IAAW,GAAG,mCAEb;IAED,IAAW,IAAI,mCAEd;IAED,IAAW,GAAG,mCAEb;IAEM,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAInC,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAanC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAK7C,SAAS,CAAE,QAAQ;IAMZ,CAAC,MAAM,CAAC,QAAQ,CAAC;CAGzB"}
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../../src/operations/filter/tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,qBAAa,oBAAoB,CAAC,CAAC;IAGd,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAF/B,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAM;gBAEjC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/B,IAAW,KAAK,YAEf;IAED,IAAW,MAAM,WAEhB;IAED,IAAW,GAAG,0BAEb;IAED,IAAW,IAAI,0BAEd;IAED,IAAW,GAAG,0BAEb;IAEM,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAInC,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAanC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAK7C,SAAS,CAAE,QAAQ;IAMZ,CAAC,MAAM,CAAC,QAAQ,CAAC;CAGzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apex-grid",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Web component data grid following open-wc recommendations",
5
5
  "keywords": [
6
6
  "lit",
@@ -25,7 +25,7 @@
25
25
  "custom-elements.json"
26
26
  ],
27
27
  "engines": {
28
- "node": "^14.21.0 || >= 16.19.0"
28
+ "node": ">=16.0.0"
29
29
  },
30
30
  "scripts": {
31
31
  "analyze": "cem analyze --litelement --globs \"src/**/*.{js,ts}\" --exclude \"src/styles/**/*\"",
@@ -63,38 +63,38 @@
63
63
  ]
64
64
  },
65
65
  "dependencies": {
66
- "@lit-labs/context": "^0.2.0",
67
- "@lit-labs/virtualizer": "^1.0.1",
68
- "igniteui-theming": "^1.3.0",
69
- "igniteui-webcomponents": "^4.2.1",
70
- "lit": "^2.6.1"
66
+ "@lit-labs/context": "^0.3.1",
67
+ "@lit-labs/virtualizer": "^2.0.2",
68
+ "igniteui-theming": "^1.4.2",
69
+ "igniteui-webcomponents": "^4.2.3",
70
+ "lit": "^2.7.4"
71
71
  },
72
72
  "devDependencies": {
73
- "@blockquote/rollup-plugin-total-bundlesize": "^1.0.0",
73
+ "@blockquote/rollup-plugin-total-bundlesize": "^2.0.1",
74
74
  "@blockquote/sass-style-template": "3.0.0",
75
- "@blockquote/test-runner-mocha-style-reporter": "^1.4.1",
76
- "@custom-elements-manifest/analyzer": "^0.6.8",
77
- "@open-wc/eslint-config": "^9.2.2",
78
- "@open-wc/testing": "^3.1.7",
79
- "@typescript-eslint/eslint-plugin": "^5.51.0",
80
- "@typescript-eslint/parser": "^5.51.0",
81
- "@web/dev-server": "^0.1.35",
82
- "@web/test-runner": "^0.15.0",
83
- "@web/test-runner-playwright": "^0.9.0",
84
- "concurrently": "^7.6.0",
85
- "eslint": "^8.33.0",
86
- "eslint-config-prettier": "^8.6.0",
75
+ "@blockquote/test-runner-mocha-style-reporter": "^1.5.1",
76
+ "@custom-elements-manifest/analyzer": "^0.8.1",
77
+ "@open-wc/eslint-config": "^10.0.0",
78
+ "@open-wc/testing": "^3.1.8",
79
+ "@typescript-eslint/eslint-plugin": "^5.59.2",
80
+ "@typescript-eslint/parser": "^5.59.2",
81
+ "@web/dev-server": "^0.2.1",
82
+ "@web/test-runner": "^0.16.1",
83
+ "@web/test-runner-playwright": "^0.10.0",
84
+ "concurrently": "^8.0.1",
85
+ "eslint": "^8.39.0",
86
+ "eslint-config-prettier": "^8.8.0",
87
87
  "eslint-plugin-log-filenames": "^1.0.6",
88
88
  "husky": "^8.0.3",
89
- "lint-staged": "^13.1.1",
90
- "prettier": "^2.8.4",
91
- "sinon": "^15.0.1",
92
- "stylelint": "^14.16.1",
93
- "stylelint-config-standard-scss": "^6.1.0",
89
+ "lint-staged": "^13.2.2",
90
+ "prettier": "^2.8.8",
91
+ "sinon": "^15.0.4",
92
+ "stylelint": "^15.6.0",
93
+ "stylelint-config-standard-scss": "^9.0.0",
94
94
  "tslib": "^2.5.0",
95
- "typedoc": "^0.23.24",
96
- "typescript": "^4.9.5",
97
- "vite": "^4.1.1"
95
+ "typedoc": "^0.24.6",
96
+ "typescript": "^5.0.4",
97
+ "vite": "^4.3.4"
98
98
  },
99
99
  "customElements": "custom-elements.json"
100
100
  }