igniteui-grid-lite 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/README.md +233 -8
  2. package/components/cell.d.ts +1 -1
  3. package/components/cell.js +2 -3
  4. package/components/cell.js.map +1 -1
  5. package/components/column.d.ts +39 -0
  6. package/components/column.js +77 -0
  7. package/components/column.js.map +1 -0
  8. package/components/filter-row.d.ts +1 -1
  9. package/components/filter-row.js +45 -33
  10. package/components/filter-row.js.map +1 -1
  11. package/components/grid.d.ts +35 -35
  12. package/components/grid.js +147 -107
  13. package/components/grid.js.map +1 -1
  14. package/components/header-row.d.ts +5 -8
  15. package/components/header-row.js +18 -28
  16. package/components/header-row.js.map +1 -1
  17. package/components/header.d.ts +2 -1
  18. package/components/header.js +13 -11
  19. package/components/header.js.map +1 -1
  20. package/components/row.d.ts +3 -5
  21. package/components/row.js +6 -12
  22. package/components/row.js.map +1 -1
  23. package/components/virtualizer.d.ts +0 -1
  24. package/components/virtualizer.js +0 -5
  25. package/components/virtualizer.js.map +1 -1
  26. package/controllers/data-operation.d.ts +4 -1
  27. package/controllers/data-operation.js +5 -1
  28. package/controllers/data-operation.js.map +1 -1
  29. package/controllers/dom.d.ts +9 -10
  30. package/controllers/dom.js +20 -34
  31. package/controllers/dom.js.map +1 -1
  32. package/controllers/filter.d.ts +7 -4
  33. package/controllers/filter.js +8 -5
  34. package/controllers/filter.js.map +1 -1
  35. package/controllers/navigation.d.ts +8 -8
  36. package/controllers/navigation.js +28 -28
  37. package/controllers/navigation.js.map +1 -1
  38. package/controllers/sort.d.ts +4 -4
  39. package/controllers/sort.js +2 -2
  40. package/controllers/sort.js.map +1 -1
  41. package/controllers/state.d.ts +32 -15
  42. package/controllers/state.js +54 -17
  43. package/controllers/state.js.map +1 -1
  44. package/custom-elements.json +924 -190
  45. package/docs/assets/hierarchy.js +1 -1
  46. package/docs/assets/highlight.css +27 -13
  47. package/docs/assets/main.js +2 -2
  48. package/docs/assets/navigation.js +1 -1
  49. package/docs/assets/search.js +1 -1
  50. package/docs/assets/style.css +3 -3
  51. package/docs/classes/IgcGridLite.html +24 -26
  52. package/docs/classes/IgcGridLiteColumn.html +38 -0
  53. package/docs/hierarchy.html +1 -1
  54. package/docs/index.html +193 -11
  55. package/docs/interfaces/BaseColumnConfiguration.html +11 -11
  56. package/docs/interfaces/BaseColumnSortConfiguration.html +4 -4
  57. package/docs/interfaces/BaseFilterExpression.html +6 -6
  58. package/docs/interfaces/BaseIgcCellContext.html +6 -6
  59. package/docs/interfaces/BaseSortingExpression.html +12 -0
  60. package/docs/interfaces/ColumnFilterConfiguration.html +3 -3
  61. package/docs/interfaces/DataPipelineConfiguration.html +4 -4
  62. package/docs/interfaces/GridLiteSortingOptions.html +4 -0
  63. package/docs/interfaces/IgcFilteredEvent.html +4 -4
  64. package/docs/interfaces/IgcFilteringEvent.html +5 -5
  65. package/docs/interfaces/IgcGridLiteEventMap.html +6 -6
  66. package/docs/interfaces/IgcHeaderContext.html +4 -4
  67. package/docs/media/LICENSE +9 -0
  68. package/docs/modules.html +1 -1
  69. package/docs/types/BasePropertyType.html +2 -2
  70. package/docs/types/BaseSortComparer.html +2 -2
  71. package/docs/types/ColumnConfiguration.html +2 -2
  72. package/docs/types/ColumnSortConfiguration.html +2 -2
  73. package/docs/types/DataPipelineHook.html +2 -2
  74. package/docs/types/DataPipelineParams.html +5 -5
  75. package/docs/types/DataType.html +2 -2
  76. package/docs/types/FilterCriteria.html +2 -2
  77. package/docs/types/FilterExpression.html +2 -2
  78. package/docs/types/IgcCellContext.html +2 -2
  79. package/docs/types/Keys.html +2 -2
  80. package/docs/types/PropertyType.html +2 -2
  81. package/docs/types/SortComparer.html +2 -2
  82. package/docs/types/SortState.html +2 -2
  83. package/docs/types/SortingDirection.html +2 -2
  84. package/docs/types/SortingExpression.html +2 -0
  85. package/index.d.ts +3 -2
  86. package/index.js +1 -0
  87. package/index.js.map +1 -1
  88. package/internal/constants.js +5 -1
  89. package/internal/constants.js.map +1 -1
  90. package/internal/context.d.ts +9 -0
  91. package/internal/context.js +7 -0
  92. package/internal/context.js.map +1 -0
  93. package/internal/element-from-event-path.d.ts +2 -0
  94. package/internal/element-from-event-path.js +12 -0
  95. package/internal/element-from-event-path.js.map +1 -0
  96. package/internal/part-map.d.ts +16 -3
  97. package/internal/part-map.js +44 -4
  98. package/internal/part-map.js.map +1 -1
  99. package/internal/tags.d.ts +1 -0
  100. package/internal/tags.js +1 -0
  101. package/internal/tags.js.map +1 -1
  102. package/internal/theming.js +5 -7
  103. package/internal/theming.js.map +1 -1
  104. package/internal/types.d.ts +3 -7
  105. package/internal/types.js.map +1 -1
  106. package/internal/utils.d.ts +6 -2
  107. package/internal/utils.js +43 -14
  108. package/internal/utils.js.map +1 -1
  109. package/operations/filter/tree.d.ts +1 -1
  110. package/operations/sort/types.d.ts +4 -4
  111. package/operations/sort/types.js.map +1 -1
  112. package/operations/sort.d.ts +2 -2
  113. package/operations/sort.js.map +1 -1
  114. package/package.json +2 -2
  115. package/styles/_common.css.js +1 -1
  116. package/styles/_common.css.js.map +1 -1
  117. package/styles/body-cell/body-cell.css.js +1 -1
  118. package/styles/body-cell/body-cell.css.js.map +1 -1
  119. package/styles/body-row/body-row.css.js +1 -1
  120. package/styles/body-row/body-row.css.js.map +1 -1
  121. package/styles/filter-row/filter-row.css.js +1 -1
  122. package/styles/filter-row/filter-row.css.js.map +1 -1
  123. package/styles/header-cell/header-cell.css.js +1 -1
  124. package/styles/header-cell/header-cell.css.js.map +1 -1
  125. package/styles/header-row/header-row.base.css.js +1 -1
  126. package/styles/header-row/header-row.base.css.js.map +1 -1
  127. package/styles/themes/dark/_themes.css.js +3 -0
  128. package/styles/themes/dark/_themes.css.js.map +1 -0
  129. package/styles/themes/dark/grid.bootstrap.css.js +3 -0
  130. package/styles/themes/dark/grid.bootstrap.css.js.map +1 -0
  131. package/styles/themes/dark/grid.fluent.css.js +3 -0
  132. package/styles/themes/dark/grid.fluent.css.js.map +1 -0
  133. package/styles/themes/dark/grid.indigo.css.js +3 -0
  134. package/styles/themes/dark/grid.indigo.css.js.map +1 -0
  135. package/styles/themes/dark/grid.material.css.js +3 -0
  136. package/styles/themes/dark/grid.material.css.js.map +1 -0
  137. package/styles/themes/grid-header-themes.d.ts +2 -0
  138. package/styles/themes/grid-header-themes.js +21 -0
  139. package/styles/themes/grid-header-themes.js.map +1 -0
  140. package/styles/themes/grid-themes.d.ts +2 -0
  141. package/styles/{grid/themes/themes.js → themes/grid-themes.js} +17 -9
  142. package/styles/themes/grid-themes.js.map +1 -0
  143. package/styles/themes/grid.base.css.js +3 -0
  144. package/styles/themes/grid.base.css.js.map +1 -0
  145. package/styles/themes/light/_themes.css.js +3 -0
  146. package/styles/themes/light/_themes.css.js.map +1 -0
  147. package/styles/themes/light/grid.bootstrap.css.js +3 -0
  148. package/styles/themes/light/grid.bootstrap.css.js.map +1 -0
  149. package/styles/themes/light/grid.fluent.css.js +3 -0
  150. package/styles/themes/light/grid.fluent.css.js.map +1 -0
  151. package/styles/themes/light/grid.indigo.css.d.ts +1 -0
  152. package/styles/themes/light/grid.indigo.css.js +3 -0
  153. package/styles/themes/light/grid.indigo.css.js.map +1 -0
  154. package/styles/themes/light/grid.material.css.d.ts +1 -0
  155. package/styles/themes/light/grid.material.css.js +3 -0
  156. package/styles/themes/light/grid.material.css.js.map +1 -0
  157. package/styles/themes/light/grid.shared.css.d.ts +1 -0
  158. package/styles/themes/light/grid.shared.css.js +3 -0
  159. package/styles/themes/light/grid.shared.css.js.map +1 -0
  160. package/styles/themes/shared/grid.common.css.d.ts +1 -0
  161. package/styles/themes/shared/grid.common.css.js +3 -0
  162. package/styles/themes/shared/grid.common.css.js.map +1 -0
  163. package/styles/themes/shared/header.bootstrap.css.d.ts +1 -0
  164. package/styles/themes/shared/header.bootstrap.css.js +3 -0
  165. package/styles/themes/shared/header.bootstrap.css.js.map +1 -0
  166. package/styles/themes/shared/header.fluent.css.d.ts +1 -0
  167. package/styles/themes/shared/header.fluent.css.js +3 -0
  168. package/styles/themes/shared/header.fluent.css.js.map +1 -0
  169. package/docs/interfaces/BaseSortExpression.html +0 -12
  170. package/docs/interfaces/GridSortConfiguration.html +0 -6
  171. package/docs/types/SortExpression.html +0 -2
  172. package/styles/grid/themes/dark/grid.bootstrap.css.js +0 -3
  173. package/styles/grid/themes/dark/grid.bootstrap.css.js.map +0 -1
  174. package/styles/grid/themes/dark/grid.fluent.css.js +0 -3
  175. package/styles/grid/themes/dark/grid.fluent.css.js.map +0 -1
  176. package/styles/grid/themes/dark/grid.indigo.css.js +0 -3
  177. package/styles/grid/themes/dark/grid.indigo.css.js.map +0 -1
  178. package/styles/grid/themes/dark/grid.material.css.js +0 -3
  179. package/styles/grid/themes/dark/grid.material.css.js.map +0 -1
  180. package/styles/grid/themes/grid.base.css.js +0 -3
  181. package/styles/grid/themes/grid.base.css.js.map +0 -1
  182. package/styles/grid/themes/light/grid.bootstrap.css.js +0 -3
  183. package/styles/grid/themes/light/grid.bootstrap.css.js.map +0 -1
  184. package/styles/grid/themes/light/grid.fluent.css.js +0 -3
  185. package/styles/grid/themes/light/grid.fluent.css.js.map +0 -1
  186. package/styles/grid/themes/light/grid.indigo.css.js +0 -3
  187. package/styles/grid/themes/light/grid.indigo.css.js.map +0 -1
  188. package/styles/grid/themes/light/grid.material.css.js +0 -3
  189. package/styles/grid/themes/light/grid.material.css.js.map +0 -1
  190. package/styles/grid/themes/themes.d.ts +0 -2
  191. package/styles/grid/themes/themes.js.map +0 -1
  192. /package/styles/{grid/themes/dark/grid.bootstrap.css.d.ts → themes/dark/_themes.css.d.ts} +0 -0
  193. /package/styles/{grid/themes/light → themes/dark}/grid.bootstrap.css.d.ts +0 -0
  194. /package/styles/{grid/themes → themes}/dark/grid.fluent.css.d.ts +0 -0
  195. /package/styles/{grid/themes → themes}/dark/grid.indigo.css.d.ts +0 -0
  196. /package/styles/{grid/themes → themes}/dark/grid.material.css.d.ts +0 -0
  197. /package/styles/{grid/themes → themes}/grid.base.css.d.ts +0 -0
  198. /package/styles/{grid/themes/light/grid.fluent.css.d.ts → themes/light/_themes.css.d.ts} +0 -0
  199. /package/styles/{grid/themes/light/grid.indigo.css.d.ts → themes/light/grid.bootstrap.css.d.ts} +0 -0
  200. /package/styles/{grid/themes/light/grid.material.css.d.ts → themes/light/grid.fluent.css.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"filter-row.js","sourceRoot":"","sources":["../../src/components/filter-row.ts"],"names":[],"mappings":"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","sourcesContent":["import { consume } from '@lit/context';\nimport {\n IgcDropdownComponent,\n type IgcDropdownItemComponent,\n type IgcIconComponent,\n IgcInputComponent,\n} from 'igniteui-webcomponents';\nimport { html, LitElement, nothing } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { gridStateContext, type StateController } from '../controllers/state.js';\nimport { DEFAULT_COLUMN_CONFIG } from '../internal/constants.js';\nimport { registerComponent } from '../internal/register.js';\nimport { GRID_FILTER_ROW_TAG } from '../internal/tags.js';\nimport type { ColumnConfiguration } from '../internal/types.js';\nimport { getFilterOperandsFor } from '../internal/utils.js';\nimport { watch } from '../internal/watch.js';\nimport type { FilterExpressionTree } from '../operations/filter/tree.js';\nimport type { FilterExpression, FilterOperation, OperandKeys } from '../operations/filter/types.js';\nimport { styles } from '../styles/filter-row/filter-row.css.js';\n\ntype ExpressionChipProps<T> = {\n expression: FilterExpression<T>;\n selected: boolean;\n onRemove: (e: Event) => Promise<void>;\n onSelect: (e: Event) => Promise<void>;\n};\n\nfunction prefixedIcon(icon?: string) {\n return html`<igc-icon\n slot=\"prefix\"\n name=${ifDefined(icon)}\n collection=\"internal\"\n ></igc-icon>`;\n}\n\nexport default class IgcFilterRow<T extends object> extends LitElement {\n public static get tagName() {\n return GRID_FILTER_ROW_TAG;\n }\n\n public static override styles = styles;\n\n public static register() {\n registerComponent(IgcFilterRow);\n }\n\n @consume({ context: gridStateContext, subscribe: true })\n @property({ attribute: false })\n public state!: StateController<T>;\n\n protected get isNumeric() {\n return this.column.type === 'number';\n }\n\n protected get filterController() {\n return this.state.filtering;\n }\n\n protected get condition() {\n return this.expression.condition as FilterOperation<T>;\n }\n\n @property({ attribute: false })\n public active = false;\n\n @query(IgcInputComponent.tagName)\n public input!: IgcInputComponent;\n\n @query('#condition')\n public conditionElement!: IgcIconComponent;\n\n @query(IgcDropdownComponent.tagName)\n public dropdown!: IgcDropdownComponent;\n\n @property({ attribute: false })\n public column: ColumnConfiguration<T> = DEFAULT_COLUMN_CONFIG as ColumnConfiguration<T>;\n\n @property({ attribute: false })\n public expression!: FilterExpression<T>;\n\n #setDefaultExpression() {\n this.expression = this.filterController.getDefaultExpression(this.column);\n }\n\n #removeExpression(expression: FilterExpression<T>) {\n this.filterController.removeExpression(expression);\n }\n\n async #show() {\n this.active = true;\n\n await this.updateComplete;\n this.input?.select();\n }\n\n #handleConditionChanged(event: CustomEvent<IgcDropdownItemComponent>) {\n event.stopPropagation();\n const key = event.detail.value as OperandKeys<T[typeof this.column.key]>;\n\n // XXX: Types\n this.expression.condition = (getFilterOperandsFor(this.column) as any)[key] as FilterOperation<\n T[keyof T]\n >;\n\n if (this.input.value || this.expression.condition.unary) {\n this.filterController.filterWithEvent(this.expression, 'modify');\n }\n\n this.requestUpdate();\n }\n\n #handleInput(event: CustomEvent<string>) {\n event.stopPropagation();\n\n const value = this.isNumeric ? Number.parseFloat(event.detail) : event.detail;\n const shouldUpdate = this.isNumeric ? !Number.isNaN(value as number) : !!value;\n const type = this.filterController.get(this.expression.key)?.has(this.expression)\n ? 'modify'\n : 'add';\n\n if (shouldUpdate) {\n this.expression.searchTerm = value as any;\n\n this.filterController.filterWithEvent(this.expression, type);\n } else {\n this.#removeExpression(this.expression);\n }\n\n this.requestUpdate();\n }\n\n #handleKeydown(event: KeyboardEvent) {\n event.stopPropagation();\n\n switch (event.key) {\n case 'Enter':\n this.input.value = '';\n this.#setDefaultExpression();\n return;\n case 'Escape':\n this.active = false;\n return;\n default:\n return;\n }\n }\n\n #handleResetClick() {\n this.filterController.removeAllExpressions(this.column.key);\n this.requestUpdate();\n }\n\n #openDropdownList() {\n this.dropdown.toggle(this.input);\n }\n\n @watch('active', { waitUntilFirstUpdate: true })\n protected activeChanged() {\n this.style.display = this.active ? 'flex' : '';\n\n if (!this.active) {\n this.column = DEFAULT_COLUMN_CONFIG as ColumnConfiguration<T>;\n }\n\n this.state.host.requestUpdate();\n }\n\n #chipCriteriaFor(expression: FilterExpression<T>) {\n return async (e: Event) => {\n e.stopPropagation();\n\n expression.criteria = expression.criteria === 'and' ? 'or' : 'and';\n this.filterController.filterWithEvent(expression, 'modify');\n this.requestUpdate();\n };\n }\n\n #chipSelectFor(expression: FilterExpression<T>) {\n return async (e: Event) => {\n e.stopPropagation();\n this.expression = expression;\n await this.updateComplete;\n this.input?.select();\n };\n }\n\n #chipRemoveFor(expression: FilterExpression<T>) {\n return async (e: Event) => {\n e.stopPropagation();\n this.#removeExpression(expression);\n\n if (this.active && this.expression === expression) {\n this.#setDefaultExpression();\n await this.updateComplete;\n this.input.focus();\n }\n\n this.requestUpdate();\n };\n }\n\n protected renderCriteriaButton(expr: FilterExpression<T>, index: number) {\n return index\n ? html`<igc-button\n variant=\"flat\"\n @click=${this.#chipCriteriaFor(expr)}\n >\n ${expr.criteria}\n </igc-button>`\n : nothing;\n }\n\n protected renderExpressionChip(props: ExpressionChipProps<T>) {\n const { name, unary } = props.expression.condition as FilterOperation<T>;\n const { searchTerm: term } = props.expression;\n\n const prefix = html`<span slot=\"select\"></span>${prefixedIcon(name)}`;\n\n return html`<igc-chip\n selectable\n removable\n ?selected=${props.selected}\n @igcRemove=${props.onRemove}\n @igcSelect=${props.onSelect}\n >\n ${prefix}${unary ? name : term}\n </igc-chip>`;\n }\n\n protected renderActiveChips() {\n const state = this.filterController.get(this.column.key);\n\n return !state\n ? nothing\n : Array.from(state).map((expression, idx) => {\n const props: ExpressionChipProps<T> = {\n expression,\n selected: this.expression === expression,\n onRemove: this.#chipRemoveFor(expression),\n onSelect: this.#chipSelectFor(expression),\n };\n\n return html`${this.renderCriteriaButton(expression, idx)}${this.renderExpressionChip(\n props\n )}`;\n });\n }\n\n protected renderFilterActions() {\n return html`\n <igc-button\n id=\"reset\"\n variant=\"flat\"\n @click=${this.#handleResetClick}\n >\n ${prefixedIcon('refresh')} Reset\n </igc-button>\n <igc-button\n id=\"close\"\n variant=\"flat\"\n @click=${() => {\n this.active = false;\n }}\n >\n ${prefixedIcon('close')} Close\n </igc-button>\n `;\n }\n\n protected renderDropdown() {\n return html`<igc-dropdown\n flip\n same-width\n @igcChange=${this.#handleConditionChanged}\n >\n ${Object.entries(getFilterOperandsFor(this.column)).map(\n ([key, operand]) => html`\n <igc-dropdown-item\n .value=${key}\n ?selected=${this.condition.name === key}\n >\n ${prefixedIcon(key)}${operand?.label ?? key}\n </igc-dropdown-item>\n `\n )}\n </igc-dropdown>`;\n }\n\n protected renderDropdownTarget() {\n return html`<igc-icon\n id=\"condition\"\n slot=\"prefix\"\n collection=\"internal\"\n .name=${this.condition.name}\n @click=${this.#openDropdownList}\n >\n </igc-icon>`;\n }\n\n protected renderInputArea() {\n return html`<igc-input\n outlined\n value=${ifDefined(this.expression.searchTerm)}\n placeholder=\"Add filter value\"\n ?readonly=${this.condition.unary}\n @igcInput=${this.#handleInput}\n @keydown=${this.#handleKeydown}\n >\n ${this.renderDropdownTarget()}\n </igc-input>\n ${this.renderDropdown()}`;\n }\n\n protected renderActiveState() {\n return html`<div part=\"active-state\">\n <div part=\"filter-row-input\">${this.renderInputArea()}</div>\n <div part=\"filter-row-filters\">${this.renderActiveChips()}</div>\n <div part=\"filter-row-actions\">${this.renderFilterActions()}</div>\n </div> `;\n }\n\n protected renderInactiveChips(column: ColumnConfiguration<T>, state: FilterExpressionTree<T>) {\n return Array.from(state).map((expression, idx) => {\n const props: ExpressionChipProps<T> = {\n expression,\n selected: false,\n onRemove: this.#chipRemoveFor(expression),\n onSelect: async (e: Event) => {\n e.stopPropagation();\n this.column = column;\n this.expression = expression;\n this.#show();\n },\n };\n\n return html`${this.renderCriteriaButton(expression, idx)}${this.renderExpressionChip(props)}`;\n });\n }\n\n protected renderFilterState(column: ColumnConfiguration<T>) {\n const state = this.filterController.get(column.key);\n\n const partial = state && state.length < 3;\n const hidden = state && state.length >= 3;\n\n const open = () => {\n this.column = column;\n this.#setDefaultExpression();\n this.#show();\n };\n\n const count = hidden ? html`<span slot=\"suffix\">${state.length}</span>` : nothing;\n const chip = html`<igc-chip\n data-column=${column.key}\n @click=${open}\n >${prefixedIcon('filter')}Filter${count}</igc-chip\n >`;\n\n return partial ? this.renderInactiveChips(column, state) : chip;\n }\n\n protected renderInactiveState() {\n return this.state.host.columns.map((column) =>\n column.hidden\n ? nothing\n : html`<div part=\"filter-row-preview\">\n ${column.filter ? this.renderFilterState(column) : nothing}\n </div>`\n );\n }\n\n protected override render() {\n return html`${this.active ? this.renderActiveState() : this.renderInactiveState()}`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [IgcFilterRow.tagName]: IgcFilterRow<object>;\n }\n}\n"]}
1
+ {"version":3,"file":"filter-row.js","sourceRoot":"","sources":["../../src/components/filter-row.ts"],"names":[],"mappings":"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","sourcesContent":["import { consume } from '@lit/context';\nimport {\n IgcDropdownComponent,\n type IgcDropdownItemComponent,\n type IgcIconComponent,\n IgcInputComponent,\n} from 'igniteui-webcomponents';\nimport { html, LitElement, nothing } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport type { StateController } from '../controllers/state.js';\nimport { DEFAULT_COLUMN_CONFIG } from '../internal/constants.js';\nimport { GRID_STATE_CONTEXT } from '../internal/context.js';\nimport { registerComponent } from '../internal/register.js';\nimport { GRID_FILTER_ROW_TAG } from '../internal/tags.js';\nimport type { ColumnConfiguration } from '../internal/types.js';\nimport { getFilterOperandsFor } from '../internal/utils.js';\nimport { watch } from '../internal/watch.js';\nimport type { FilterExpressionTree } from '../operations/filter/tree.js';\nimport type { FilterExpression, FilterOperation, OperandKeys } from '../operations/filter/types.js';\nimport { styles } from '../styles/filter-row/filter-row.css.js';\n\ntype ExpressionChipProps<T> = {\n expression: FilterExpression<T>;\n selected: boolean;\n onRemove: (e: Event) => Promise<void>;\n onSelect: (e: Event) => Promise<void>;\n};\n\nfunction prefixedIcon(icon?: string) {\n return html`\n <igc-icon\n slot=\"prefix\"\n name=${ifDefined(icon)}\n collection=\"internal\"\n ></igc-icon>\n `;\n}\n\nexport default class IgcFilterRow<T extends object> extends LitElement {\n public static get tagName() {\n return GRID_FILTER_ROW_TAG;\n }\n\n public static override styles = styles;\n\n public static register() {\n registerComponent(IgcFilterRow);\n }\n\n @consume({ context: GRID_STATE_CONTEXT, subscribe: true })\n @property({ attribute: false })\n public state!: StateController<T>;\n\n protected get isNumeric() {\n return this.column.type === 'number';\n }\n\n protected get filterController() {\n return this.state.filtering;\n }\n\n protected get condition() {\n return this.expression.condition as FilterOperation<T>;\n }\n\n @property({ attribute: false })\n public active = false;\n\n @query(IgcInputComponent.tagName)\n public input!: IgcInputComponent;\n\n @query('#condition')\n public conditionElement!: IgcIconComponent;\n\n @query(IgcDropdownComponent.tagName)\n public dropdown!: IgcDropdownComponent;\n\n @property({ attribute: false })\n public column: ColumnConfiguration<T> = DEFAULT_COLUMN_CONFIG as ColumnConfiguration<T>;\n\n @property({ attribute: false })\n public expression!: FilterExpression<T>;\n\n #setDefaultExpression() {\n this.expression = this.filterController.getDefaultExpression(this.column);\n }\n\n #removeExpression(expression: FilterExpression<T>) {\n this.filterController.removeExpression(expression);\n }\n\n async #show() {\n this.active = true;\n\n await this.updateComplete;\n this.input?.select();\n }\n\n #handleConditionChanged(event: CustomEvent<IgcDropdownItemComponent>) {\n event.stopPropagation();\n const key = event.detail.value as OperandKeys<T[typeof this.column.key]>;\n\n // XXX: Types\n this.expression.condition = (getFilterOperandsFor(this.column) as any)[key] as FilterOperation<\n T[keyof T]\n >;\n\n if (this.input.value || this.expression.condition.unary) {\n this.filterController.filterWithEvent(this.expression, 'modify');\n }\n\n this.requestUpdate();\n }\n\n #handleInput(event: CustomEvent<string>) {\n event.stopPropagation();\n\n const value = this.isNumeric ? Number.parseFloat(event.detail) : event.detail;\n const shouldUpdate = this.isNumeric ? !Number.isNaN(value as number) : !!value;\n const type = this.filterController.get(this.expression.key)?.has(this.expression)\n ? 'modify'\n : 'add';\n\n if (shouldUpdate) {\n this.expression.searchTerm = value as any;\n\n this.filterController.filterWithEvent(this.expression, type);\n } else {\n this.#removeExpression(this.expression);\n }\n\n this.requestUpdate();\n }\n\n #handleKeydown(event: KeyboardEvent) {\n event.stopPropagation();\n\n switch (event.key) {\n case 'Enter':\n this.input.value = '';\n this.#setDefaultExpression();\n return;\n case 'Escape':\n this.active = false;\n return;\n default:\n return;\n }\n }\n\n #handleResetClick() {\n this.filterController.removeAllExpressions(this.column.key);\n this.requestUpdate();\n }\n\n #openDropdownList() {\n this.dropdown.toggle(this.input);\n }\n\n @watch('active', { waitUntilFirstUpdate: true })\n protected activeChanged() {\n this.style.display = this.active ? 'flex' : '';\n\n if (!this.active) {\n this.column = DEFAULT_COLUMN_CONFIG as ColumnConfiguration<T>;\n }\n\n this.state.host.requestUpdate();\n }\n\n #chipCriteriaFor(expression: FilterExpression<T>) {\n return async (e: Event) => {\n e.stopPropagation();\n\n expression.criteria = expression.criteria === 'and' ? 'or' : 'and';\n this.filterController.filterWithEvent(expression, 'modify');\n this.requestUpdate();\n };\n }\n\n #chipSelectFor(expression: FilterExpression<T>) {\n return async (e: Event) => {\n e.stopPropagation();\n this.expression = expression;\n await this.updateComplete;\n this.input?.select();\n };\n }\n\n #chipRemoveFor(expression: FilterExpression<T>) {\n return async (e: Event) => {\n e.stopPropagation();\n this.#removeExpression(expression);\n\n if (this.active && this.expression === expression) {\n this.#setDefaultExpression();\n await this.updateComplete;\n this.input.focus();\n }\n\n this.requestUpdate();\n };\n }\n\n protected renderCriteriaButton(expr: FilterExpression<T>, index: number) {\n return index\n ? html`\n <igc-button\n variant=\"flat\"\n @click=${this.#chipCriteriaFor(expr)}\n >\n ${expr.criteria}\n </igc-button>\n `\n : nothing;\n }\n\n protected renderExpressionChip(props: ExpressionChipProps<T>) {\n const { name, unary } = props.expression.condition as FilterOperation<T>;\n const { searchTerm: term } = props.expression;\n\n const prefix = html`<span slot=\"select\"></span>${prefixedIcon(name)}`;\n\n return html`\n <igc-chip\n selectable\n removable\n ?selected=${props.selected}\n @igcRemove=${props.onRemove}\n @igcSelect=${props.onSelect}\n >\n ${prefix}${unary ? name : term}\n </igc-chip>\n `;\n }\n\n protected renderActiveChips() {\n const state = this.filterController.get(this.column.key);\n\n return !state\n ? nothing\n : Array.from(state).map((expression, idx) => {\n const props: ExpressionChipProps<T> = {\n expression,\n selected: this.expression === expression,\n onRemove: this.#chipRemoveFor(expression),\n onSelect: this.#chipSelectFor(expression),\n };\n\n return html`${this.renderCriteriaButton(expression, idx)}${this.renderExpressionChip(\n props\n )}`;\n });\n }\n\n protected renderFilterActions() {\n return html`\n <igc-button\n id=\"reset\"\n variant=\"flat\"\n @click=${this.#handleResetClick}\n >\n ${prefixedIcon('refresh')} Reset\n </igc-button>\n <igc-button\n id=\"close\"\n variant=\"flat\"\n @click=${() => {\n this.active = false;\n }}\n >\n ${prefixedIcon('close')} Close\n </igc-button>\n `;\n }\n\n protected renderDropdown() {\n return html`<igc-dropdown\n flip\n same-width\n @igcChange=${this.#handleConditionChanged}\n >\n ${Object.entries(getFilterOperandsFor(this.column)).map(\n ([key, operand]) => html`\n <igc-dropdown-item\n .value=${key}\n ?selected=${this.condition.name === key}\n >\n ${prefixedIcon(key)}${operand?.label ?? key}\n </igc-dropdown-item>\n `\n )}\n </igc-dropdown>`;\n }\n\n protected renderDropdownTarget() {\n return html`<igc-icon\n id=\"condition\"\n slot=\"prefix\"\n collection=\"internal\"\n .name=${this.condition.name}\n @click=${this.#openDropdownList}\n >\n </igc-icon>`;\n }\n\n protected renderInputArea() {\n return html`\n <igc-input\n outlined\n value=${ifDefined(this.expression.searchTerm)}\n placeholder=\"Add filter value\"\n ?readonly=${this.condition.unary}\n @igcInput=${this.#handleInput}\n @keydown=${this.#handleKeydown}\n >\n ${this.renderDropdownTarget()}\n </igc-input>\n ${this.renderDropdown()}\n `;\n }\n\n protected renderActiveState() {\n return html`\n <div part=\"active-state\">\n <div part=\"filter-row-input\">${this.renderInputArea()}</div>\n <div part=\"filter-row-filters\">${this.renderActiveChips()}</div>\n <div part=\"filter-row-actions\">${this.renderFilterActions()}</div>\n </div>\n `;\n }\n\n protected renderInactiveChips(column: ColumnConfiguration<T>, state: FilterExpressionTree<T>) {\n return Array.from(state).map((expression, idx) => {\n const props: ExpressionChipProps<T> = {\n expression,\n selected: false,\n onRemove: this.#chipRemoveFor(expression),\n onSelect: async (e: Event) => {\n e.stopPropagation();\n this.column = column;\n this.expression = expression;\n this.#show();\n },\n };\n\n return html`${this.renderCriteriaButton(expression, idx)}${this.renderExpressionChip(props)}`;\n });\n }\n\n protected renderFilterState(column: ColumnConfiguration<T>) {\n const state = this.filterController.get(column.key);\n\n const partial = state && state.length < 3;\n const hidden = state && state.length >= 3;\n\n const open = () => {\n this.column = column;\n this.#setDefaultExpression();\n this.#show();\n };\n\n const count = hidden ? html`<span slot=\"suffix\">${state.length}</span>` : nothing;\n const chip = html`<igc-chip\n data-column=${column.key}\n @click=${open}\n >${prefixedIcon('filter')}Filter${count}</igc-chip\n >`;\n\n return partial ? this.renderInactiveChips(column, state) : chip;\n }\n\n protected renderInactiveState() {\n return this.state.columns.map((column) =>\n column.hidden\n ? nothing\n : html`\n <div part=\"filter-row-preview\">\n ${column.filter ? this.renderFilterState(column) : nothing}\n </div>\n `\n );\n }\n\n protected override render() {\n return html`${this.active ? this.renderActiveState() : this.renderInactiveState()}`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [IgcFilterRow.tagName]: IgcFilterRow<object>;\n }\n}\n"]}
@@ -1,16 +1,10 @@
1
1
  import { ContextProvider } from '@lit/context';
2
- import { nothing } from 'lit';
3
- import { DataOperationsController } from '../controllers/data-operation.js';
4
- import { GridDOMController } from '../controllers/dom.js';
5
- import { StateController } from '../controllers/state.js';
2
+ import type { RenderItemFunction } from '@lit-labs/virtualizer/virtualize.js';
6
3
  import { EventEmitterBase } from '../internal/mixins/event-emitter.js';
7
- import type { ColumnConfiguration, DataPipelineConfiguration, GridSortConfiguration, Keys } from '../internal/types.js';
4
+ import type { ColumnConfiguration, DataPipelineConfiguration, GridLiteSortingOptions, Keys } from '../internal/types.js';
8
5
  import type { FilterExpression } from '../operations/filter/types.js';
9
- import type { SortExpression } from '../operations/sort/types.js';
10
- import IgcFilterRow from './filter-row.js';
11
- import IgcGridLiteHeaderRow from './header-row.js';
6
+ import type { SortingExpression } from '../operations/sort/types.js';
12
7
  import IgcGridLiteRow from './row.js';
13
- import IgcVirtualizer from './virtualizer.js';
14
8
  /**
15
9
  * Event object for the filtering event of the grid.
16
10
  */
@@ -61,14 +55,14 @@ export interface IgcGridLiteEventMap<T extends object> {
61
55
  *
62
56
  * @event
63
57
  */
64
- sorting: CustomEvent<SortExpression<T>>;
58
+ sorting: CustomEvent<SortingExpression<T>>;
65
59
  /**
66
60
  * Emitted when a sort operation initiated through the UI has completed.
67
61
  * Returns the sort expression used for the operation.
68
62
  *
69
63
  * @event
70
64
  */
71
- sorted: CustomEvent<SortExpression<T>>;
65
+ sorted: CustomEvent<SortingExpression<T>>;
72
66
  /**
73
67
  * Emitted when filtering is initiated through the UI.
74
68
  *
@@ -103,23 +97,24 @@ export interface IgcGridLiteEventMap<T extends object> {
103
97
  */
104
98
  export declare class IgcGridLite<T extends object> extends EventEmitterBase<IgcGridLiteEventMap<T>> {
105
99
  static get tagName(): "igc-grid-lite";
106
- static styles: import("lit").CSSResult;
100
+ static styles: import("lit").CSSResult[];
107
101
  static register(): void;
108
- protected stateController: StateController<T>;
109
- protected DOM: GridDOMController<T>;
110
- protected dataController: DataOperationsController<T>;
111
- protected stateProvider: ContextProvider<{
112
- __context__: StateController<any>;
102
+ protected readonly _stateController: import("../controllers/state.js").StateController<T>;
103
+ protected readonly _domController: import("../controllers/dom.js").GridDOMController<T>;
104
+ protected readonly _dataController: import("../controllers/data-operation.js").DataOperationsController<T>;
105
+ protected readonly _stateProvider: ContextProvider<{
106
+ __context__: import("../controllers/state.js").StateController<any>;
113
107
  }, this>;
114
- protected scrollContainer: IgcVirtualizer;
115
- protected headerRow: IgcGridLiteHeaderRow<T>;
116
- protected filterRow: IgcFilterRow<T>;
117
- protected dataState: Array<T>;
118
- protected _rows: NodeListOf<IgcGridLiteRow<T>>;
119
- /** Column configuration for the grid. */
120
- columns: Array<ColumnConfiguration<T>>;
108
+ protected readonly _columnUpdateProvider: ContextProvider<{
109
+ __context__: (config: import("../index.js").BaseColumnConfiguration<object>) => void;
110
+ }, this>;
111
+ private _initialSortExpressions;
112
+ private _initialFilterExpressions;
113
+ private _updateObservers;
114
+ private _updateConfiguration;
115
+ protected _dataState: T[];
121
116
  /** The data source for the grid. */
122
- data: Array<T>;
117
+ data: T[];
123
118
  /**
124
119
  * Whether the grid will try to "resolve" its column configuration based on the passed
125
120
  * data source.
@@ -146,7 +141,7 @@ export declare class IgcGridLite<T extends object> extends EventEmitterBase<IgcG
146
141
  */
147
142
  autoGenerate: boolean;
148
143
  /** Sort configuration property for the grid. */
149
- sortConfiguration: GridSortConfiguration;
144
+ sortingOptions: GridLiteSortingOptions;
150
145
  /**
151
146
  * Configuration object which controls remote data operations for the grid.
152
147
  */
@@ -154,11 +149,11 @@ export declare class IgcGridLite<T extends object> extends EventEmitterBase<IgcG
154
149
  /**
155
150
  * Set the sort state for the grid.
156
151
  */
157
- set sortExpressions(expressions: SortExpression<T>[]);
152
+ set sortingExpressions(expressions: SortingExpression<T>[]);
158
153
  /**
159
154
  * Get the sort state for the grid.
160
155
  */
161
- get sortExpressions(): SortExpression<T>[];
156
+ get sortingExpressions(): SortingExpression<T>[];
162
157
  /**
163
158
  * Set the filter state for the grid.
164
159
  */
@@ -167,6 +162,7 @@ export declare class IgcGridLite<T extends object> extends EventEmitterBase<IgcG
167
162
  * Get the filter state for the grid.
168
163
  */
169
164
  get filterExpressions(): FilterExpression<T>[];
165
+ get columns(): ColumnConfiguration<T>[];
170
166
  /**
171
167
  * Returns the collection of rendered row elements in the grid.
172
168
  *
@@ -184,10 +180,13 @@ export declare class IgcGridLite<T extends object> extends EventEmitterBase<IgcG
184
180
  * The total number of items in the {@link IgcGridLite.dataView} collection.
185
181
  */
186
182
  get totalItems(): number;
187
- protected watchColumns(_: ColumnConfiguration<T>[], newConfig?: ColumnConfiguration<T>[]): void;
188
183
  protected dataChanged(): void;
189
184
  protected pipeline(): Promise<void>;
190
185
  constructor();
186
+ protected createRenderRoot(): HTMLElement | DocumentFragment;
187
+ protected firstUpdated(): void;
188
+ private _hasAssignedColumns;
189
+ private _handleSlotChange;
191
190
  /**
192
191
  * Performs a filter operation in the grid based on the passed expression(s).
193
192
  */
@@ -195,7 +194,7 @@ export declare class IgcGridLite<T extends object> extends EventEmitterBase<IgcG
195
194
  /**
196
195
  * Performs a sort operation in the grid based on the passed expression(s).
197
196
  */
198
- sort(expressions: SortExpression<T> | SortExpression<T>[]): void;
197
+ sort(expressions: SortingExpression<T> | SortingExpression<T>[]): void;
199
198
  /**
200
199
  * Resets the current sort state of the control.
201
200
  */
@@ -212,11 +211,12 @@ export declare class IgcGridLite<T extends object> extends EventEmitterBase<IgcG
212
211
  * Updates the column configuration of the grid.
213
212
  */
214
213
  updateColumns(columns: ColumnConfiguration<T> | ColumnConfiguration<T>[]): void;
215
- protected bodyClickHandler(event: MouseEvent): void;
216
- protected bodyKeydownHandler(event: KeyboardEvent): void;
217
- protected renderHeaderRow(): import("lit-html").TemplateResult<1>;
218
- protected renderBody(): import("lit-html").TemplateResult<1>;
219
- protected renderFilterRow(): typeof nothing | import("lit-html").TemplateResult<1>;
214
+ protected _bodyClickHandler(event: PointerEvent): void;
215
+ protected _bodyKeydownHandler(event: KeyboardEvent): void;
216
+ protected _renderRow: RenderItemFunction<T>;
217
+ protected _renderHeaderRow(): import("lit-html").TemplateResult<1>;
218
+ protected _renderBody(): import("lit-html").TemplateResult<1>;
219
+ protected _renderFilterRow(): import("lit-html").TemplateResult<1>;
220
220
  protected render(): import("lit-html").TemplateResult<1>;
221
221
  }
222
222
  declare global {
@@ -7,21 +7,26 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { ContextProvider } from '@lit/context';
8
8
  import { IgcButtonComponent, IgcChipComponent, IgcDropdownComponent, IgcInputComponent, } from 'igniteui-webcomponents';
9
9
  import { html, nothing } from 'lit';
10
- import { eventOptions, property, query, queryAll, state } from 'lit/decorators.js';
10
+ import { eventOptions, property, state } from 'lit/decorators.js';
11
+ import { cache } from 'lit/directives/cache.js';
11
12
  import { styleMap } from 'lit/directives/style-map.js';
12
- import { DataOperationsController } from '../controllers/data-operation.js';
13
- import { GridDOMController } from '../controllers/dom.js';
14
- import { gridStateContext, StateController } from '../controllers/state.js';
15
- import { DEFAULT_COLUMN_CONFIG, PIPELINE } from '../internal/constants.js';
13
+ import { createDataOperationsController } from '../controllers/data-operation.js';
14
+ import { createDomController } from '../controllers/dom.js';
15
+ import { createStateController } from '../controllers/state.js';
16
+ import { PIPELINE } from '../internal/constants.js';
17
+ import { COLUMN_UPDATE_CONTEXT, GRID_STATE_CONTEXT } from '../internal/context.js';
18
+ import { getElementFromEventPath } from '../internal/element-from-event-path.js';
16
19
  import { EventEmitterBase } from '../internal/mixins/event-emitter.js';
17
20
  import { registerComponent } from '../internal/register.js';
18
21
  import { GRID_TAG } from '../internal/tags.js';
19
22
  import { addThemingController } from '../internal/theming.js';
20
- import { asArray, autoGenerateColumns, getFilterOperandsFor } from '../internal/utils.js';
23
+ import { asArray, getFilterOperandsFor, isNumber, isString } from '../internal/utils.js';
21
24
  import { watch } from '../internal/watch.js';
22
- import { styles } from '../styles/grid/themes/grid.base.css.js';
23
- import { all } from '../styles/grid/themes/themes.js';
25
+ import { styles } from '../styles/themes/grid.base.css.js';
26
+ import { all } from '../styles/themes/grid-themes.js';
27
+ import { styles as shared } from '../styles/themes/shared/grid.common.css.js';
24
28
  import IgcGridLiteCell from './cell.js';
29
+ import { IgcGridLiteColumn } from './column.js';
25
30
  import IgcFilterRow from './filter-row.js';
26
31
  import IgcGridLiteHeaderRow from './header-row.js';
27
32
  import IgcGridLiteRow from './row.js';
@@ -30,170 +35,208 @@ export class IgcGridLite extends EventEmitterBase {
30
35
  static get tagName() {
31
36
  return GRID_TAG;
32
37
  }
33
- static { this.styles = styles; }
38
+ static { this.styles = [styles, shared]; }
34
39
  static register() {
35
- registerComponent(IgcGridLite, IgcVirtualizer, IgcGridLiteRow, IgcGridLiteHeaderRow, IgcFilterRow, IgcButtonComponent, IgcChipComponent, IgcInputComponent, IgcDropdownComponent);
40
+ registerComponent(IgcGridLite, IgcGridLiteColumn, IgcVirtualizer, IgcGridLiteRow, IgcGridLiteHeaderRow, IgcFilterRow, IgcButtonComponent, IgcChipComponent, IgcInputComponent, IgcDropdownComponent);
36
41
  }
37
- set sortExpressions(expressions) {
38
- if (expressions.length) {
42
+ _updateObservers() {
43
+ this._stateProvider.updateObservers();
44
+ }
45
+ _updateConfiguration(config) {
46
+ this._stateController.updateColumnsConfiguration(asArray(config));
47
+ }
48
+ set sortingExpressions(expressions) {
49
+ if (this.hasUpdated && expressions.length) {
39
50
  this.sort(expressions);
40
51
  }
52
+ else {
53
+ this._initialSortExpressions = expressions;
54
+ }
41
55
  }
42
- get sortExpressions() {
43
- return Array.from(this.stateController.sorting.state.values());
56
+ get sortingExpressions() {
57
+ return Array.from(this._stateController.sorting.state.values());
44
58
  }
45
59
  set filterExpressions(expressions) {
46
- if (expressions.length) {
60
+ if (this.hasUpdated && expressions.length) {
47
61
  this.filter(expressions);
48
62
  }
63
+ else {
64
+ this._initialFilterExpressions = expressions;
65
+ }
49
66
  }
50
67
  get filterExpressions() {
51
- const expressions = [];
52
- for (const each of this.stateController.filtering.state.values) {
53
- expressions.push(...each.all);
54
- }
55
- return expressions;
68
+ return this._stateController.filtering.state.values.flatMap((each) => each.all);
69
+ }
70
+ get columns() {
71
+ return this._stateController.columns.map((col) => ({ ...col }));
56
72
  }
57
73
  get rows() {
58
- return Array.from(this._rows);
74
+ return this._stateController.rows;
59
75
  }
60
76
  get dataView() {
61
- return this.dataState;
77
+ return this._dataState;
62
78
  }
63
79
  get totalItems() {
64
- return this.dataState.length;
65
- }
66
- watchColumns(_, newConfig = []) {
67
- this.columns = newConfig.map((config) => ({ ...DEFAULT_COLUMN_CONFIG, ...config }));
80
+ return this._dataState.length;
68
81
  }
69
82
  dataChanged() {
70
- this.dataState = structuredClone(this.data);
71
- autoGenerateColumns(this);
83
+ this._dataState = [...this.data];
72
84
  if (this.hasUpdated) {
85
+ if (!this._hasAssignedColumns()) {
86
+ this._stateController.setAutoColumnConfiguration();
87
+ }
73
88
  this.pipeline();
74
89
  }
75
90
  }
76
91
  async pipeline() {
77
- this.dataState = await this.dataController.apply(structuredClone(this.data), this.stateController);
92
+ this._dataState = await this._dataController.apply([...this.data], this._stateController);
78
93
  }
79
94
  constructor() {
80
95
  super();
81
- this.stateController = new StateController(this);
82
- this.DOM = new GridDOMController(this, this.stateController);
83
- this.dataController = new DataOperationsController(this);
84
- this.stateProvider = new ContextProvider(this, {
85
- context: gridStateContext,
86
- initialValue: this.stateController,
96
+ this._stateController = createStateController(this, this._updateObservers);
97
+ this._domController = createDomController(this, this._stateController);
98
+ this._dataController = createDataOperationsController(this);
99
+ this._stateProvider = new ContextProvider(this, {
100
+ context: GRID_STATE_CONTEXT,
101
+ initialValue: this._stateController,
87
102
  });
88
- this.dataState = [];
89
- this.columns = [];
103
+ this._columnUpdateProvider = new ContextProvider(this, {
104
+ context: COLUMN_UPDATE_CONTEXT,
105
+ initialValue: ((config) => {
106
+ this._updateConfiguration(config);
107
+ }),
108
+ });
109
+ this._initialSortExpressions = [];
110
+ this._initialFilterExpressions = [];
111
+ this._dataState = [];
90
112
  this.data = [];
91
113
  this.autoGenerate = false;
92
- this.sortConfiguration = {
93
- multiple: true,
94
- triState: true,
114
+ this.sortingOptions = {
115
+ mode: 'multiple',
116
+ };
117
+ this._renderRow = (item, index) => {
118
+ const styles = {
119
+ ...this._domController.columnSizes,
120
+ ...this._domController.getActiveRowStyles(index),
121
+ };
122
+ const activeNode = this._stateController.active;
123
+ return html `
124
+ <igc-grid-lite-row
125
+ part="row"
126
+ exportparts="cell"
127
+ style=${styleMap(styles)}
128
+ .index=${index}
129
+ .activeNode=${activeNode}
130
+ .data=${item}
131
+ .columns=${this._stateController.columns}
132
+ ></igc-grid-lite-row>
133
+ `;
95
134
  };
96
135
  addThemingController(this, all);
97
136
  }
137
+ createRenderRoot() {
138
+ const root = super.createRenderRoot();
139
+ root.addEventListener('slotchange', this._handleSlotChange.bind(this));
140
+ return root;
141
+ }
142
+ firstUpdated() {
143
+ this.updateComplete.then(() => {
144
+ if (this.autoGenerate && !this._hasAssignedColumns()) {
145
+ this._stateController.setAutoColumnConfiguration();
146
+ }
147
+ if (this._initialFilterExpressions.length) {
148
+ this.filter(this._initialFilterExpressions);
149
+ }
150
+ if (this._initialSortExpressions.length) {
151
+ this.sort(this._initialSortExpressions);
152
+ }
153
+ });
154
+ }
155
+ _hasAssignedColumns() {
156
+ const slot = this.renderRoot.querySelector('slot');
157
+ const assignedNodes = slot
158
+ .assignedElements({ flatten: true })
159
+ .filter((element) => element.matches(IgcGridLiteColumn.tagName));
160
+ return assignedNodes.length > 0;
161
+ }
162
+ _handleSlotChange(event) {
163
+ const slot = event.target;
164
+ const assignedNodes = slot
165
+ .assignedElements({ flatten: true })
166
+ .filter((element) => element.matches(IgcGridLiteColumn.tagName));
167
+ this._stateController.setColumnConfiguration(assignedNodes);
168
+ }
98
169
  filter(config) {
99
- this.stateController.filtering.filter(asArray(config).map((each) => typeof each.condition === 'string'
100
- ?
101
- Object.assign(each, {
102
- condition: getFilterOperandsFor(this.getColumn(each.key))[each.condition],
103
- })
170
+ this._stateController.filtering.filter(asArray(config).map((each) => isString(each.condition)
171
+ ? Object.assign(each, {
172
+ condition: getFilterOperandsFor(this.getColumn(each.key))[each.condition],
173
+ })
104
174
  : each));
105
175
  }
106
176
  sort(expressions) {
107
- this.stateController.sorting.sort(expressions);
177
+ this._stateController.sorting.sort(expressions);
108
178
  }
109
179
  clearSort(key) {
110
- this.stateController.sorting.reset(key);
180
+ this._stateController.sorting.reset(key);
111
181
  this.requestUpdate(PIPELINE);
112
182
  }
113
183
  clearFilter(key) {
114
- this.stateController.filtering.reset(key);
184
+ this._stateController.filtering.reset(key);
115
185
  this.requestUpdate(PIPELINE);
116
186
  }
117
187
  getColumn(id) {
118
- return typeof id === 'number'
119
- ? this.columns.at(id)
120
- : this.columns.find(({ key }) => key === id);
188
+ return this._stateController.columns.find((column, index) => isNumber(id) ? index === id : column.key === id);
121
189
  }
122
190
  updateColumns(columns) {
123
- for (const column of asArray(columns)) {
124
- const instance = this.columns.find((curr) => curr.key === column.key);
125
- if (instance) {
126
- Object.assign(instance, column);
127
- }
128
- }
129
- this.requestUpdate(PIPELINE);
191
+ this._stateController.updateColumnsConfiguration(asArray(columns));
130
192
  }
131
- bodyClickHandler(event) {
132
- const target = event
133
- .composedPath()
134
- .find((el) => el instanceof IgcGridLiteCell);
193
+ _bodyClickHandler(event) {
194
+ const target = getElementFromEventPath(IgcGridLiteCell.tagName, event);
135
195
  if (target) {
136
- this.stateController.active = {
137
- column: target.column.key,
138
- row: target.row.index,
139
- };
196
+ this._stateController.active = { column: target.column.key, row: target.row.index };
140
197
  }
141
198
  }
142
- bodyKeydownHandler(event) {
143
- if (this.scrollContainer.isSameNode(event.target)) {
144
- this.stateController.navigation.navigate(event);
199
+ _bodyKeydownHandler(event) {
200
+ if (event.target === this._stateController.virtualizer) {
201
+ this._stateController.navigation.navigate(event);
145
202
  }
146
203
  }
147
- renderHeaderRow() {
204
+ _renderHeaderRow() {
148
205
  return html `
149
206
  <igc-grid-lite-header-row
150
- style=${styleMap(this.DOM.columnSizes)}
151
- .columns=${this.columns}
207
+ tabindex="0"
208
+ style=${styleMap(this._domController.columnSizes)}
209
+ .columns=${this._stateController.columns}
152
210
  ></igc-grid-lite-header-row>
153
211
  `;
154
212
  }
155
- renderBody() {
213
+ _renderBody() {
156
214
  return html `
157
215
  <igc-virtualizer
158
- .items=${this.dataState}
159
- .renderItem=${this.DOM.rowRenderer}
160
- @click=${this.bodyClickHandler}
161
- @keydown=${this.bodyKeydownHandler}
216
+ tabindex="0"
217
+ .items=${this._dataState}
218
+ .renderItem=${this._renderRow}
219
+ @click=${this._bodyClickHandler}
220
+ @keydown=${this._bodyKeydownHandler}
162
221
  ></igc-virtualizer>
163
222
  `;
164
223
  }
165
- renderFilterRow() {
166
- return this.columns.some((column) => column.filter)
167
- ? html `<igc-filter-row style=${styleMap(this.DOM.columnSizes)}></igc-filter-row>`
168
- : nothing;
224
+ _renderFilterRow() {
225
+ return html `${cache(this._stateController.columns.some((column) => column.filter)
226
+ ? html `<igc-filter-row style=${styleMap(this._domController.columnSizes)}></igc-filter-row>`
227
+ : nothing)}`;
169
228
  }
170
229
  render() {
171
230
  return html `
172
- ${this.stateController.resizing.renderIndicator()}
173
- ${this.renderHeaderRow()}
174
- ${this.renderFilterRow()}
175
- ${this.renderBody()}
231
+ <slot part="column-sink"></slot>
232
+ ${this._stateController.resizing.renderIndicator()} ${this._renderHeaderRow()}
233
+ ${this._renderFilterRow()} ${this._renderBody()}
176
234
  `;
177
235
  }
178
236
  }
179
- __decorate([
180
- query(IgcVirtualizer.tagName)
181
- ], IgcGridLite.prototype, "scrollContainer", void 0);
182
- __decorate([
183
- query(IgcGridLiteHeaderRow.tagName)
184
- ], IgcGridLite.prototype, "headerRow", void 0);
185
- __decorate([
186
- query(IgcFilterRow.tagName)
187
- ], IgcGridLite.prototype, "filterRow", void 0);
188
237
  __decorate([
189
238
  state()
190
- ], IgcGridLite.prototype, "dataState", void 0);
191
- __decorate([
192
- queryAll(IgcGridLiteRow.tagName)
193
- ], IgcGridLite.prototype, "_rows", void 0);
194
- __decorate([
195
- property({ attribute: false })
196
- ], IgcGridLite.prototype, "columns", void 0);
239
+ ], IgcGridLite.prototype, "_dataState", void 0);
197
240
  __decorate([
198
241
  property({ attribute: false })
199
242
  ], IgcGridLite.prototype, "data", void 0);
@@ -202,19 +245,16 @@ __decorate([
202
245
  ], IgcGridLite.prototype, "autoGenerate", void 0);
203
246
  __decorate([
204
247
  property({ attribute: false })
205
- ], IgcGridLite.prototype, "sortConfiguration", void 0);
248
+ ], IgcGridLite.prototype, "sortingOptions", void 0);
206
249
  __decorate([
207
250
  property({ attribute: false })
208
251
  ], IgcGridLite.prototype, "dataPipelineConfiguration", void 0);
209
252
  __decorate([
210
253
  property({ attribute: false })
211
- ], IgcGridLite.prototype, "sortExpressions", null);
254
+ ], IgcGridLite.prototype, "sortingExpressions", null);
212
255
  __decorate([
213
256
  property({ attribute: false })
214
257
  ], IgcGridLite.prototype, "filterExpressions", null);
215
- __decorate([
216
- watch('columns')
217
- ], IgcGridLite.prototype, "watchColumns", null);
218
258
  __decorate([
219
259
  watch('data')
220
260
  ], IgcGridLite.prototype, "dataChanged", null);
@@ -223,5 +263,5 @@ __decorate([
223
263
  ], IgcGridLite.prototype, "pipeline", null);
224
264
  __decorate([
225
265
  eventOptions({ capture: true })
226
- ], IgcGridLite.prototype, "bodyClickHandler", null);
266
+ ], IgcGridLite.prototype, "_bodyClickHandler", null);
227
267
  //# sourceMappingURL=grid.js.map