apex-grid 1.0.0-rc.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 (211) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +16 -0
  3. package/dist/bundle.js +2069 -0
  4. package/dist/docs/.nojekyll +1 -0
  5. package/dist/docs/assets/highlight.css +22 -0
  6. package/dist/docs/assets/main.js +54 -0
  7. package/dist/docs/assets/search.js +1 -0
  8. package/dist/docs/assets/style.css +1257 -0
  9. package/dist/docs/classes/ApexGrid.html +240 -0
  10. package/dist/docs/index.html +79 -0
  11. package/dist/docs/interfaces/ApexCellContext.html +92 -0
  12. package/dist/docs/interfaces/ApexFilteringEvent.html +78 -0
  13. package/dist/docs/interfaces/ApexGridEventMap.html +101 -0
  14. package/dist/docs/interfaces/ApexHeaderContext.html +78 -0
  15. package/dist/docs/interfaces/ColumnConfiguration.html +168 -0
  16. package/dist/docs/interfaces/ColumnFilterConfiguration.html +76 -0
  17. package/dist/docs/interfaces/ColumnSortConfiguration.html +93 -0
  18. package/dist/docs/interfaces/FilterExpression.html +97 -0
  19. package/dist/docs/interfaces/GridRemoteConfig.html +78 -0
  20. package/dist/docs/interfaces/GridSortConfiguration.html +73 -0
  21. package/dist/docs/interfaces/SortExpression.html +111 -0
  22. package/dist/docs/modules.html +89 -0
  23. package/dist/docs/types/DataType.html +63 -0
  24. package/dist/docs/types/FilterCriteria.html +63 -0
  25. package/dist/docs/types/Keys.html +68 -0
  26. package/dist/docs/types/RemoteFilterHook.html +84 -0
  27. package/dist/docs/types/RemoteSortHook.html +84 -0
  28. package/dist/docs/types/SortState.html +68 -0
  29. package/dist/docs/types/SortingDirection.html +65 -0
  30. package/dist/docs/types/Values.html +68 -0
  31. package/dist/src/components/cell.d.ts +19 -0
  32. package/dist/src/components/cell.d.ts.map +1 -0
  33. package/dist/src/components/cell.js +45 -0
  34. package/dist/src/components/cell.js.map +1 -0
  35. package/dist/src/components/filter-row.d.ts +47 -0
  36. package/dist/src/components/filter-row.d.ts.map +1 -0
  37. package/dist/src/components/filter-row.js +307 -0
  38. package/dist/src/components/filter-row.js.map +1 -0
  39. package/dist/src/components/grid-body.d.ts +12 -0
  40. package/dist/src/components/grid-body.d.ts.map +1 -0
  41. package/dist/src/components/grid-body.js +27 -0
  42. package/dist/src/components/grid-body.js.map +1 -0
  43. package/dist/src/components/grid.d.ts +183 -0
  44. package/dist/src/components/grid.d.ts.map +1 -0
  45. package/dist/src/components/grid.js +303 -0
  46. package/dist/src/components/grid.js.map +1 -0
  47. package/dist/src/components/header-row.d.ts +23 -0
  48. package/dist/src/components/header-row.d.ts.map +1 -0
  49. package/dist/src/components/header-row.js +77 -0
  50. package/dist/src/components/header-row.js.map +1 -0
  51. package/dist/src/components/header.d.ts +23 -0
  52. package/dist/src/components/header.d.ts.map +1 -0
  53. package/dist/src/components/header.js +143 -0
  54. package/dist/src/components/header.js.map +1 -0
  55. package/dist/src/components/row.d.ts +21 -0
  56. package/dist/src/components/row.d.ts.map +1 -0
  57. package/dist/src/components/row.js +64 -0
  58. package/dist/src/components/row.js.map +1 -0
  59. package/dist/src/controllers/data-operation.d.ts +18 -0
  60. package/dist/src/controllers/data-operation.d.ts.map +1 -0
  61. package/dist/src/controllers/data-operation.js +37 -0
  62. package/dist/src/controllers/data-operation.js.map +1 -0
  63. package/dist/src/controllers/dom.d.ts +17 -0
  64. package/dist/src/controllers/dom.d.ts.map +1 -0
  65. package/dist/src/controllers/dom.js +31 -0
  66. package/dist/src/controllers/dom.js.map +1 -0
  67. package/dist/src/controllers/filter.d.ts +22 -0
  68. package/dist/src/controllers/filter.d.ts.map +1 -0
  69. package/dist/src/controllers/filter.js +79 -0
  70. package/dist/src/controllers/filter.js.map +1 -0
  71. package/dist/src/controllers/navigation.d.ts +31 -0
  72. package/dist/src/controllers/navigation.d.ts.map +1 -0
  73. package/dist/src/controllers/navigation.js +88 -0
  74. package/dist/src/controllers/navigation.js.map +1 -0
  75. package/dist/src/controllers/resize.d.ts +28 -0
  76. package/dist/src/controllers/resize.d.ts.map +1 -0
  77. package/dist/src/controllers/resize.js +70 -0
  78. package/dist/src/controllers/resize.js.map +1 -0
  79. package/dist/src/controllers/sort.d.ts +16 -0
  80. package/dist/src/controllers/sort.d.ts.map +1 -0
  81. package/dist/src/controllers/sort.js +90 -0
  82. package/dist/src/controllers/sort.js.map +1 -0
  83. package/dist/src/controllers/state.d.ts +22 -0
  84. package/dist/src/controllers/state.d.ts.map +1 -0
  85. package/dist/src/controllers/state.js +27 -0
  86. package/dist/src/controllers/state.js.map +1 -0
  87. package/dist/src/index.d.ts +12 -0
  88. package/dist/src/index.d.ts.map +1 -0
  89. package/dist/src/index.js +8 -0
  90. package/dist/src/index.js.map +1 -0
  91. package/dist/src/internal/constants.d.ts +9 -0
  92. package/dist/src/internal/constants.d.ts.map +1 -0
  93. package/dist/src/internal/constants.js +19 -0
  94. package/dist/src/internal/constants.js.map +1 -0
  95. package/dist/src/internal/icon-registry.d.ts +2 -0
  96. package/dist/src/internal/icon-registry.d.ts.map +1 -0
  97. package/dist/src/internal/icon-registry.js +29 -0
  98. package/dist/src/internal/icon-registry.js.map +1 -0
  99. package/dist/src/internal/is-defined.d.ts +2 -0
  100. package/dist/src/internal/is-defined.d.ts.map +1 -0
  101. package/dist/src/internal/is-defined.js +4 -0
  102. package/dist/src/internal/is-defined.js.map +1 -0
  103. package/dist/src/internal/mixins/event-emitter.d.ts +8 -0
  104. package/dist/src/internal/mixins/event-emitter.d.ts.map +1 -0
  105. package/dist/src/internal/mixins/event-emitter.js +18 -0
  106. package/dist/src/internal/mixins/event-emitter.js.map +1 -0
  107. package/dist/src/internal/normalize-case.d.ts +2 -0
  108. package/dist/src/internal/normalize-case.d.ts.map +1 -0
  109. package/dist/src/internal/normalize-case.js +4 -0
  110. package/dist/src/internal/normalize-case.js.map +1 -0
  111. package/dist/src/internal/part-map.d.ts +5 -0
  112. package/dist/src/internal/part-map.d.ts.map +1 -0
  113. package/dist/src/internal/part-map.js +6 -0
  114. package/dist/src/internal/part-map.js.map +1 -0
  115. package/dist/src/internal/tags.d.ts +8 -0
  116. package/dist/src/internal/tags.d.ts.map +1 -0
  117. package/dist/src/internal/tags.js +8 -0
  118. package/dist/src/internal/tags.js.map +1 -0
  119. package/dist/src/internal/types.d.ts +181 -0
  120. package/dist/src/internal/types.d.ts.map +1 -0
  121. package/dist/src/internal/types.js +2 -0
  122. package/dist/src/internal/types.js.map +1 -0
  123. package/dist/src/internal/utils.d.ts +10 -0
  124. package/dist/src/internal/utils.d.ts.map +1 -0
  125. package/dist/src/internal/utils.js +37 -0
  126. package/dist/src/internal/utils.js.map +1 -0
  127. package/dist/src/internal/watch.d.ts +6 -0
  128. package/dist/src/internal/watch.d.ts.map +1 -0
  129. package/dist/src/internal/watch.js +19 -0
  130. package/dist/src/internal/watch.js.map +1 -0
  131. package/dist/src/operations/base.d.ts +7 -0
  132. package/dist/src/operations/base.d.ts.map +1 -0
  133. package/dist/src/operations/base.js +11 -0
  134. package/dist/src/operations/base.js.map +1 -0
  135. package/dist/src/operations/filter/operands/base.d.ts +8 -0
  136. package/dist/src/operations/filter/operands/base.d.ts.map +1 -0
  137. package/dist/src/operations/filter/operands/base.js +15 -0
  138. package/dist/src/operations/filter/operands/base.js.map +1 -0
  139. package/dist/src/operations/filter/operands/boolean.d.ts +11 -0
  140. package/dist/src/operations/filter/operands/boolean.d.ts.map +1 -0
  141. package/dist/src/operations/filter/operands/boolean.js +36 -0
  142. package/dist/src/operations/filter/operands/boolean.js.map +1 -0
  143. package/dist/src/operations/filter/operands/number.d.ts +14 -0
  144. package/dist/src/operations/filter/operands/number.d.ts.map +1 -0
  145. package/dist/src/operations/filter/operands/number.js +51 -0
  146. package/dist/src/operations/filter/operands/number.js.map +1 -0
  147. package/dist/src/operations/filter/operands/string.d.ts +14 -0
  148. package/dist/src/operations/filter/operands/string.d.ts.map +1 -0
  149. package/dist/src/operations/filter/operands/string.js +52 -0
  150. package/dist/src/operations/filter/operands/string.js.map +1 -0
  151. package/dist/src/operations/filter/state.d.ts +17 -0
  152. package/dist/src/operations/filter/state.d.ts.map +1 -0
  153. package/dist/src/operations/filter/state.js +42 -0
  154. package/dist/src/operations/filter/state.js.map +1 -0
  155. package/dist/src/operations/filter/tree.d.ts +17 -0
  156. package/dist/src/operations/filter/tree.d.ts.map +1 -0
  157. package/dist/src/operations/filter/tree.js +44 -0
  158. package/dist/src/operations/filter/tree.js.map +1 -0
  159. package/dist/src/operations/filter/types.d.ts +44 -0
  160. package/dist/src/operations/filter/types.d.ts.map +1 -0
  161. package/dist/src/operations/filter/types.js +2 -0
  162. package/dist/src/operations/filter/types.js.map +1 -0
  163. package/dist/src/operations/filter.d.ts +9 -0
  164. package/dist/src/operations/filter.d.ts.map +1 -0
  165. package/dist/src/operations/filter.js +22 -0
  166. package/dist/src/operations/filter.js.map +1 -0
  167. package/dist/src/operations/sort/types.d.ts +38 -0
  168. package/dist/src/operations/sort/types.d.ts.map +1 -0
  169. package/dist/src/operations/sort/types.js +2 -0
  170. package/dist/src/operations/sort/types.js.map +1 -0
  171. package/dist/src/operations/sort.d.ts +10 -0
  172. package/dist/src/operations/sort.d.ts.map +1 -0
  173. package/dist/src/operations/sort.js +37 -0
  174. package/dist/src/operations/sort.js.map +1 -0
  175. package/dist/src/styles/body-cell/body-cell-styles.d.ts +3 -0
  176. package/dist/src/styles/body-cell/body-cell-styles.d.ts.map +1 -0
  177. package/dist/src/styles/body-cell/body-cell-styles.js +70 -0
  178. package/dist/src/styles/body-cell/body-cell-styles.js.map +1 -0
  179. package/dist/src/styles/body-row/body-row-styles.d.ts +3 -0
  180. package/dist/src/styles/body-row/body-row-styles.d.ts.map +1 -0
  181. package/dist/src/styles/body-row/body-row-styles.js +38 -0
  182. package/dist/src/styles/body-row/body-row-styles.js.map +1 -0
  183. package/dist/src/styles/filter-row/filter-row-styles.d.ts +3 -0
  184. package/dist/src/styles/filter-row/filter-row-styles.d.ts.map +1 -0
  185. package/dist/src/styles/filter-row/filter-row-styles.js +96 -0
  186. package/dist/src/styles/filter-row/filter-row-styles.js.map +1 -0
  187. package/dist/src/styles/grid/themes/light/grid.bootstrap-styles.d.ts +3 -0
  188. package/dist/src/styles/grid/themes/light/grid.bootstrap-styles.d.ts.map +1 -0
  189. package/dist/src/styles/grid/themes/light/grid.bootstrap-styles.js +82 -0
  190. package/dist/src/styles/grid/themes/light/grid.bootstrap-styles.js.map +1 -0
  191. package/dist/src/styles/grid/themes/light/grid.fluent-styles.d.ts +3 -0
  192. package/dist/src/styles/grid/themes/light/grid.fluent-styles.d.ts.map +1 -0
  193. package/dist/src/styles/grid/themes/light/grid.fluent-styles.js +82 -0
  194. package/dist/src/styles/grid/themes/light/grid.fluent-styles.js.map +1 -0
  195. package/dist/src/styles/grid/themes/light/grid.indigo-styles.d.ts +3 -0
  196. package/dist/src/styles/grid/themes/light/grid.indigo-styles.d.ts.map +1 -0
  197. package/dist/src/styles/grid/themes/light/grid.indigo-styles.js +82 -0
  198. package/dist/src/styles/grid/themes/light/grid.indigo-styles.js.map +1 -0
  199. package/dist/src/styles/grid/themes/light/grid.material-styles.d.ts +3 -0
  200. package/dist/src/styles/grid/themes/light/grid.material-styles.d.ts.map +1 -0
  201. package/dist/src/styles/grid/themes/light/grid.material-styles.js +82 -0
  202. package/dist/src/styles/grid/themes/light/grid.material-styles.js.map +1 -0
  203. package/dist/src/styles/header-cell/header-cell-styles.d.ts +3 -0
  204. package/dist/src/styles/header-cell/header-cell-styles.d.ts.map +1 -0
  205. package/dist/src/styles/header-cell/header-cell-styles.js +141 -0
  206. package/dist/src/styles/header-cell/header-cell-styles.js.map +1 -0
  207. package/dist/src/styles/header-row/header-row.base-styles.d.ts +3 -0
  208. package/dist/src/styles/header-row/header-row.base-styles.d.ts.map +1 -0
  209. package/dist/src/styles/header-row/header-row.base-styles.js +35 -0
  210. package/dist/src/styles/header-row/header-row.base-styles.js.map +1 -0
  211. package/package.json +93 -0
@@ -0,0 +1,23 @@
1
+ import { LitElement, nothing } from 'lit';
2
+ import type { ColumnConfiguration, ApexHeaderContext } from '../internal/types.js';
3
+ import { StateController } from '../controllers/state.js';
4
+ export default class ApexGridHeader<T extends object> extends LitElement {
5
+ #private;
6
+ static get is(): "apex-grid-header";
7
+ static styles: import("lit").CSSResult;
8
+ protected get context(): ApexHeaderContext<T>;
9
+ protected get isSortable(): boolean;
10
+ protected get resizeController(): import("../controllers/resize").ResizeController<T>;
11
+ state: StateController<T>;
12
+ column: ColumnConfiguration<T>;
13
+ protected renderSortPart(): typeof nothing | import("lit-html").TemplateResult<1>;
14
+ protected renderContentPart(): import("lit-html").TemplateResult<1>;
15
+ protected renderResizePart(): typeof nothing | import("lit-html").TemplateResult<1>;
16
+ protected render(): import("lit-html").TemplateResult<1>;
17
+ }
18
+ declare global {
19
+ interface HTMLElementTagNameMap {
20
+ [ApexGridHeader.is]: ApexGridHeader<object>;
21
+ }
22
+ }
23
+ //# sourceMappingURL=header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/components/header.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAUhD,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAoB,MAAM,yBAAyB,CAAC;AAI5E,MAAM,CAAC,OAAO,OAAO,cAAc,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,UAAU;;IACtE,WAAkB,EAAE,uBAEnB;IAED,OAAuB,MAAM,0BAAU;IAEvC,SAAS,KAAK,OAAO,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAK5C;IAED,SAAS,KAAK,UAAU,YAEvB;IAED,SAAS,KAAK,gBAAgB,wDAE7B;IAIM,KAAK,EAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IAG3B,MAAM,EAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;IA+CvC,SAAS,CAAC,cAAc;IA6BxB,SAAS,CAAC,iBAAiB;IAW3B,SAAS,CAAC,gBAAgB;cAUP,MAAM;CAe1B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;KAC7C;CACF"}
@@ -0,0 +1,143 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _ApexGridHeader_instances, _ApexGridHeader_addResizeEventHandlers, _ApexGridHeader_handleClick, _ApexGridHeader_handleResize, _ApexGridHeader_handleResizeStart, _ApexGridHeader_handlePointerLost, _ApexGridHeader_handleAutosize;
13
+ import { html, LitElement, nothing } from 'lit';
14
+ import { customElement, property } from 'lit/decorators.js';
15
+ import { contextProvided } from '@lit-labs/context';
16
+ import { partNameMap } from '../internal/part-map.js';
17
+ import { GRID_HEADER_TAG } from '../internal/tags.js';
18
+ import { MIN_COL_RESIZE_WIDTH, SORT_ICON_ASCENDING, SORT_ICON_DESCENDING, } from '../internal/constants.js';
19
+ import { gridStateContext } from '../controllers/state.js';
20
+ import styles from '../styles/header-cell/header-cell-styles.js';
21
+ let ApexGridHeader = class ApexGridHeader extends LitElement {
22
+ constructor() {
23
+ super(...arguments);
24
+ _ApexGridHeader_instances.add(this);
25
+ _ApexGridHeader_handleResize.set(this, ({ clientX }) => {
26
+ const { left } = this.getBoundingClientRect();
27
+ const width = Math.max(clientX - left, MIN_COL_RESIZE_WIDTH);
28
+ const x = this.offsetLeft + width;
29
+ this.resizeController.resize(this.column, width, x);
30
+ });
31
+ _ApexGridHeader_handlePointerLost.set(this, () => {
32
+ this.resizeController.indicatorActive = false;
33
+ this.removeEventListener('pointermove', __classPrivateFieldGet(this, _ApexGridHeader_handleResize, "f"));
34
+ this.resizeController.stop();
35
+ });
36
+ _ApexGridHeader_handleAutosize.set(this, () => this.resizeController.autosize(this.column, this));
37
+ }
38
+ static get is() {
39
+ return GRID_HEADER_TAG;
40
+ }
41
+ get context() {
42
+ return {
43
+ parent: this,
44
+ column: this.column,
45
+ };
46
+ }
47
+ get isSortable() {
48
+ return Boolean(this.column.sort);
49
+ }
50
+ get resizeController() {
51
+ return this.state.resizing;
52
+ }
53
+ renderSortPart() {
54
+ const state = this.state.sorting.state.get(this.column.key);
55
+ const idx = Array.from(this.state.sorting.state.values()).indexOf(state);
56
+ const attr = this.state.host.sortConfiguration.multiple
57
+ ? idx > -1
58
+ ? idx + 1
59
+ : nothing
60
+ : nothing;
61
+ const icon = state
62
+ ? state.direction === 'ascending'
63
+ ? SORT_ICON_ASCENDING
64
+ : SORT_ICON_DESCENDING
65
+ : SORT_ICON_ASCENDING;
66
+ return state || this.isSortable
67
+ ? html `<span
68
+ part=${partNameMap({ action: true, sorted: !!(state === null || state === void 0 ? void 0 : state.direction) })}
69
+ @click=${this.isSortable ? __classPrivateFieldGet(this, _ApexGridHeader_instances, "m", _ApexGridHeader_handleClick) : nothing}
70
+ >
71
+ <igc-icon
72
+ part=${partNameMap({ 'sorting-action': !!state })}
73
+ data-sortIndex=${attr}
74
+ name=${icon}
75
+ collection="internal"
76
+ ></igc-icon>
77
+ </span>`
78
+ : nothing;
79
+ }
80
+ renderContentPart() {
81
+ var _a;
82
+ const defaultContent = (_a = this.column.headerText) !== null && _a !== void 0 ? _a : this.column.key;
83
+ const template = this.column.headerTemplate;
84
+ return html `
85
+ <span part="title">
86
+ <span>${template ? template(this.context) : html `${defaultContent}`}</span>
87
+ </span>
88
+ `;
89
+ }
90
+ renderResizePart() {
91
+ return this.column.resizable
92
+ ? html `<span
93
+ part="resizable"
94
+ @dblclick=${__classPrivateFieldGet(this, _ApexGridHeader_handleAutosize, "f")}
95
+ @pointerdown=${__classPrivateFieldGet(this, _ApexGridHeader_instances, "m", _ApexGridHeader_handleResizeStart)}
96
+ ></span>`
97
+ : nothing;
98
+ }
99
+ render() {
100
+ return html `
101
+ <div
102
+ part=${partNameMap({
103
+ content: true,
104
+ sortable: this.isSortable,
105
+ resizing: this.resizeController.indicatorActive,
106
+ })}
107
+ >
108
+ ${this.renderContentPart()}
109
+ <div part="actions">${this.renderSortPart()}</div>
110
+ </div>
111
+ ${this.renderResizePart()}
112
+ `;
113
+ }
114
+ };
115
+ _ApexGridHeader_handleResize = new WeakMap(), _ApexGridHeader_handlePointerLost = new WeakMap(), _ApexGridHeader_handleAutosize = new WeakMap(), _ApexGridHeader_instances = new WeakSet(), _ApexGridHeader_addResizeEventHandlers = function _ApexGridHeader_addResizeEventHandlers() {
116
+ const config = { once: true };
117
+ this.addEventListener('gotpointercapture', () => (this.resizeController.indicatorActive = true), config);
118
+ this.addEventListener('lostpointercapture', __classPrivateFieldGet(this, _ApexGridHeader_handlePointerLost, "f"), config);
119
+ this.addEventListener('pointerup', e => this.releasePointerCapture(e.pointerId), config);
120
+ this.addEventListener('pointermove', __classPrivateFieldGet(this, _ApexGridHeader_handleResize, "f"));
121
+ }, _ApexGridHeader_handleClick = function _ApexGridHeader_handleClick(e) {
122
+ e.stopPropagation();
123
+ this.state.sorting.sortFromHeaderClick(this.column);
124
+ }, _ApexGridHeader_handleResizeStart = function _ApexGridHeader_handleResizeStart(ev) {
125
+ const { target, pointerId } = ev;
126
+ ev.preventDefault();
127
+ __classPrivateFieldGet(this, _ApexGridHeader_instances, "m", _ApexGridHeader_addResizeEventHandlers).call(this);
128
+ this.resizeController.start(this);
129
+ target.setPointerCapture(pointerId);
130
+ };
131
+ ApexGridHeader.styles = styles;
132
+ __decorate([
133
+ contextProvided({ context: gridStateContext, subscribe: true }),
134
+ property({ attribute: false })
135
+ ], ApexGridHeader.prototype, "state", void 0);
136
+ __decorate([
137
+ property({ attribute: false })
138
+ ], ApexGridHeader.prototype, "column", void 0);
139
+ ApexGridHeader = __decorate([
140
+ customElement(GRID_HEADER_TAG)
141
+ ], ApexGridHeader);
142
+ export default ApexGridHeader;
143
+ //# sourceMappingURL=header.js.map
@@ -0,0 +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 { customElement, property } from 'lit/decorators.js';\nimport { contextProvided } from '@lit-labs/context';\nimport { partNameMap } from '../internal/part-map.js';\nimport { GRID_HEADER_TAG } from '../internal/tags.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.js';\n\n@customElement(GRID_HEADER_TAG)\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 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 @contextProvided({ 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"]}
@@ -0,0 +1,21 @@
1
+ import { LitElement } from 'lit';
2
+ import type { ActiveNode, ColumnConfiguration } from '../internal/types.js';
3
+ import ApexGridCell from './cell.js';
4
+ export default class ApexGridRow<T extends object> extends LitElement {
5
+ static get is(): "apex-grid-row";
6
+ static styles: import("lit").CSSResult;
7
+ protected _cells: NodeListOf<ApexGridCell<T>>;
8
+ data: T;
9
+ columns: Array<ColumnConfiguration<T>>;
10
+ get cells(): ApexGridCell<T>[];
11
+ activeNode: ActiveNode<T>;
12
+ index: number;
13
+ connectedCallback(): void;
14
+ protected render(): import("lit-html").TemplateResult<1>;
15
+ }
16
+ declare global {
17
+ interface HTMLElementTagNameMap {
18
+ [ApexGridRow.is]: ApexGridRow<object>;
19
+ }
20
+ }
21
+ //# sourceMappingURL=row.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row.d.ts","sourceRoot":"","sources":["../../../src/components/row.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAW,MAAM,KAAK,CAAC;AAIhD,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,YAAY,MAAM,WAAW,CAAC;AAIrC,MAAM,CAAC,OAAO,OAAO,WAAW,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,UAAU;IACnE,WAAkB,EAAE,oBAEnB;IACD,OAAuB,MAAM,0BAAU;IAGvC,SAAS,CAAC,MAAM,EAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAGxC,IAAI,EAAG,CAAC,CAAC;IAGT,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAM;IAEnD,IAAW,KAAK,sBAEf;IAGM,UAAU,EAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAG3B,KAAK,SAAM;IAEF,iBAAiB,IAAI,IAAI;cAKtB,MAAM;CAiB1B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;KACvC;CACF"}
@@ -0,0 +1,64 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { html, LitElement, nothing } from 'lit';
8
+ import { customElement, property, queryAll } from 'lit/decorators.js';
9
+ import { map } from 'lit/directives/map.js';
10
+ import { GRID_ROW_TAG } from '../internal/tags.js';
11
+ import ApexGridCell from './cell.js';
12
+ import styles from '../styles/body-row/body-row-styles.js';
13
+ let ApexGridRow = class ApexGridRow extends LitElement {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.columns = [];
17
+ this.index = -1;
18
+ }
19
+ static get is() {
20
+ return GRID_ROW_TAG;
21
+ }
22
+ get cells() {
23
+ return Array.from(this._cells);
24
+ }
25
+ connectedCallback() {
26
+ super.connectedCallback();
27
+ this.setAttribute('exportparts', 'cell');
28
+ }
29
+ render() {
30
+ const { column: key, row: index } = this.activeNode;
31
+ return html `
32
+ ${map(this.columns, column => column.hidden
33
+ ? nothing
34
+ : html `<apex-grid-cell
35
+ part="cell"
36
+ .active=${key === column.key && index === this.index}
37
+ .column=${column}
38
+ .row=${this}
39
+ .value=${this.data[column.key]}
40
+ ></apex-grid-cell>`)}
41
+ `;
42
+ }
43
+ };
44
+ ApexGridRow.styles = styles;
45
+ __decorate([
46
+ queryAll(ApexGridCell.is)
47
+ ], ApexGridRow.prototype, "_cells", void 0);
48
+ __decorate([
49
+ property({ attribute: false })
50
+ ], ApexGridRow.prototype, "data", void 0);
51
+ __decorate([
52
+ property({ attribute: false })
53
+ ], ApexGridRow.prototype, "columns", void 0);
54
+ __decorate([
55
+ property({ attribute: false })
56
+ ], ApexGridRow.prototype, "activeNode", void 0);
57
+ __decorate([
58
+ property({ attribute: false, type: Number })
59
+ ], ApexGridRow.prototype, "index", void 0);
60
+ ApexGridRow = __decorate([
61
+ customElement(GRID_ROW_TAG)
62
+ ], ApexGridRow);
63
+ export default ApexGridRow;
64
+ //# sourceMappingURL=row.js.map
@@ -0,0 +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,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,YAAY,MAAM,WAAW,CAAC;AACrC,OAAO,MAAM,MAAM,uCAAuC,CAAC;AAG5C,IAAM,WAAW,GAAjB,MAAM,WAA8B,SAAQ,UAAU;IAAtD;;QAaN,YAAO,GAAkC,EAAE,CAAC;QAU5C,UAAK,GAAG,CAAC,CAAC,CAAC;IAwBpB,CAAC;IA9CQ,MAAM,KAAK,EAAE;QAClB,OAAO,YAAY,CAAC;IACtB,CAAC;IAYD,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;;AA1CsB,kBAAM,GAAG,MAAM,CAAC;AAGvC;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;AAvBC,WAAW;IAD/B,aAAa,CAAC,YAAY,CAAC;GACP,WAAW,CA+C/B;eA/CoB,WAAW","sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { customElement, property, queryAll } from 'lit/decorators.js';\nimport { map } from 'lit/directives/map.js';\nimport { GRID_ROW_TAG } from '../internal/tags.js';\nimport type { ActiveNode, ColumnConfiguration } from '../internal/types.js';\nimport ApexGridCell from './cell.js';\nimport styles from '../styles/body-row/body-row-styles.js';\n\n@customElement(GRID_ROW_TAG)\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 @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"]}
@@ -0,0 +1,18 @@
1
+ import { ReactiveController } from 'lit';
2
+ import SortDataOperation from '../operations/sort.js';
3
+ import FilterDataOperation from '../operations/filter.js';
4
+ import type { GridHost } from '../internal/types.js';
5
+ import type { StateController } from './state.js';
6
+ export declare class DataOperationsController<T extends object> implements ReactiveController {
7
+ protected host: GridHost<T>;
8
+ protected sorting: SortDataOperation<T>;
9
+ protected filtering: FilterDataOperation<T>;
10
+ constructor(host: GridHost<T>);
11
+ hostConnected(): void;
12
+ protected get hasRemoteSort(): boolean;
13
+ protected get hasRemoteFilter(): boolean;
14
+ protected get remoteFilter(): import("../internal/types.js").RemoteFilterHook<T>;
15
+ protected get remoteSort(): import("../internal/types.js").RemoteSortHook<T>;
16
+ apply(data: T[], state: StateController<T>): Promise<T[]>;
17
+ }
18
+ //# sourceMappingURL=data-operation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-operation.d.ts","sourceRoot":"","sources":["../../../src/controllers/data-operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,iBAAiB,MAAM,uBAAuB,CAAC;AACtD,OAAO,mBAAmB,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,qBAAa,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,kBAAkB;IAIvE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAHvC,SAAS,CAAC,OAAO,uBAA8B;IAC/C,SAAS,CAAC,SAAS,yBAAgC;gBAE7B,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAIhC,aAAa;IAEpB,SAAS,KAAK,aAAa,YAE1B;IAED,SAAS,KAAK,eAAe,YAE5B;IAED,SAAS,KAAK,YAAY,uDAEzB;IAED,SAAS,KAAK,UAAU,qDAEvB;IAEY,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;CAaxD"}
@@ -0,0 +1,37 @@
1
+ import SortDataOperation from '../operations/sort.js';
2
+ import FilterDataOperation from '../operations/filter.js';
3
+ import { isDefined } from '../internal/is-defined.js';
4
+ export class DataOperationsController {
5
+ constructor(host) {
6
+ this.host = host;
7
+ this.sorting = new SortDataOperation();
8
+ this.filtering = new FilterDataOperation();
9
+ this.host.addController(this);
10
+ }
11
+ hostConnected() { }
12
+ get hasRemoteSort() {
13
+ var _a;
14
+ return isDefined((_a = this.host.remoteConfiguration) === null || _a === void 0 ? void 0 : _a.sort);
15
+ }
16
+ get hasRemoteFilter() {
17
+ var _a;
18
+ return isDefined((_a = this.host.remoteConfiguration) === null || _a === void 0 ? void 0 : _a.filter);
19
+ }
20
+ get remoteFilter() {
21
+ return this.host.remoteConfiguration.filter;
22
+ }
23
+ get remoteSort() {
24
+ return this.host.remoteConfiguration.sort;
25
+ }
26
+ async apply(data, state) {
27
+ const { filtering, sorting } = state;
28
+ data = this.hasRemoteFilter
29
+ ? await this.remoteFilter(data, filtering.state)
30
+ : this.filtering.apply(data, filtering.state);
31
+ data = this.hasRemoteSort
32
+ ? await this.remoteSort(data, sorting.state)
33
+ : this.sorting.apply(data, sorting.state);
34
+ return data;
35
+ }
36
+ }
37
+ //# sourceMappingURL=data-operation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-operation.js","sourceRoot":"","sources":["../../../src/controllers/data-operation.ts"],"names":[],"mappings":"AACA,OAAO,iBAAiB,MAAM,uBAAuB,CAAC;AACtD,OAAO,mBAAmB,MAAM,yBAAyB,CAAC;AAG1D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,MAAM,OAAO,wBAAwB;IAInC,YAAsB,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;QAH7B,YAAO,GAAG,IAAI,iBAAiB,EAAK,CAAC;QACrC,cAAS,GAAG,IAAI,mBAAmB,EAAK,CAAC;QAGjD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAEM,aAAa,KAAI,CAAC;IAEzB,IAAc,aAAa;;QACzB,OAAO,SAAS,CAAC,MAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,0CAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,IAAc,eAAe;;QAC3B,OAAO,SAAS,CAAC,MAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,0CAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,IAAc,YAAY;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAoB,CAAC,MAAO,CAAC;IAChD,CAAC;IAED,IAAc,UAAU;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAoB,CAAC,IAAK,CAAC;IAC9C,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAS,EAAE,KAAyB;QACrD,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;QAErC,IAAI,GAAG,IAAI,CAAC,eAAe;YACzB,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC;YAChD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAEhD,IAAI,GAAG,IAAI,CAAC,aAAa;YACvB,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAE5C,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["import { ReactiveController } from 'lit';\nimport SortDataOperation from '../operations/sort.js';\nimport FilterDataOperation from '../operations/filter.js';\nimport type { GridHost } from '../internal/types.js';\nimport type { StateController } from './state.js';\nimport { isDefined } from '../internal/is-defined.js';\n\nexport class DataOperationsController<T extends object> implements ReactiveController {\n protected sorting = new SortDataOperation<T>();\n protected filtering = new FilterDataOperation<T>();\n\n constructor(protected host: GridHost<T>) {\n this.host.addController(this);\n }\n\n public hostConnected() {}\n\n protected get hasRemoteSort() {\n return isDefined(this.host.remoteConfiguration?.sort);\n }\n\n protected get hasRemoteFilter() {\n return isDefined(this.host.remoteConfiguration?.filter);\n }\n\n protected get remoteFilter() {\n return this.host.remoteConfiguration!.filter!;\n }\n\n protected get remoteSort() {\n return this.host.remoteConfiguration!.sort!;\n }\n\n public async apply(data: T[], state: StateController<T>) {\n const { filtering, sorting } = state;\n\n data = this.hasRemoteFilter\n ? await this.remoteFilter(data, filtering.state)\n : this.filtering.apply(data, filtering.state);\n\n data = this.hasRemoteSort\n ? await this.remoteSort(data, sorting.state)\n : this.sorting.apply(data, sorting.state);\n\n return data;\n }\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import { ReactiveController } from 'lit';
2
+ import { StyleInfo } from 'lit/directives/style-map.js';
3
+ import { StateController } from './state.js';
4
+ import type { GridHost } from '../internal/types.js';
5
+ export declare class GridDOMController<T extends object> implements ReactiveController {
6
+ protected host: GridHost<T>;
7
+ protected state: StateController<T>;
8
+ constructor(host: GridHost<T>, state: StateController<T>);
9
+ get virtualBody(): import("../components/grid-body").default;
10
+ columnSizes: StyleInfo;
11
+ hostConnected(): void;
12
+ hostUpdate(): void;
13
+ setScrollOffset(): void;
14
+ protected setGridColumnSizes(): void;
15
+ getActiveRowStyles(index: number): StyleInfo;
16
+ }
17
+ //# sourceMappingURL=dom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/controllers/dom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,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;IAI5E,IAAW,WAAW,8CAGrB;IAEM,WAAW,EAAE,SAAS,CAAM;IAE5B,aAAa,IAAI,IAAI;IAIrB,UAAU,IAAI,IAAI;IAKlB,eAAe;IAKtB,SAAS,CAAC,kBAAkB;IAIrB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;CAGpD"}
@@ -0,0 +1,31 @@
1
+ import { applyColumnWidths } from '../internal/utils.js';
2
+ export class GridDOMController {
3
+ constructor(host, state) {
4
+ this.host = host;
5
+ this.state = state;
6
+ this.columnSizes = {};
7
+ this.host.addController(this);
8
+ }
9
+ get virtualBody() {
10
+ // @ts-expect-error: protected member access
11
+ return this.host.bodyElement;
12
+ }
13
+ hostConnected() {
14
+ this.setGridColumnSizes();
15
+ }
16
+ hostUpdate() {
17
+ this.setScrollOffset();
18
+ this.setGridColumnSizes();
19
+ }
20
+ setScrollOffset() {
21
+ const size = this.virtualBody ? this.virtualBody.offsetWidth - this.virtualBody.clientWidth : 0;
22
+ this.host.style.setProperty('--scrollbar-offset', `${size}px`);
23
+ }
24
+ setGridColumnSizes() {
25
+ this.columnSizes = applyColumnWidths(this.host.columns);
26
+ }
27
+ getActiveRowStyles(index) {
28
+ return this.state.active.row === index ? { 'z-index': '3' } : {};
29
+ }
30
+ }
31
+ //# sourceMappingURL=dom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../src/controllers/dom.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,MAAM,OAAO,iBAAiB;IAC5B,YAAsB,IAAiB,EAAY,KAAyB;QAAtD,SAAI,GAAJ,IAAI,CAAa;QAAY,UAAK,GAAL,KAAK,CAAoB;QASrE,gBAAW,GAAc,EAAE,CAAC;QARjC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,IAAW,WAAW;QACpB,4CAA4C;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAC/B,CAAC;IAIM,aAAa;QAClB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAEM,UAAU;QACf,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAEM,eAAe;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;IACjE,CAAC;IAES,kBAAkB;QAC1B,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAEM,kBAAkB,CAAC,KAAa;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,CAAC;CACF","sourcesContent":["import { ReactiveController } from 'lit';\nimport { StyleInfo } from 'lit/directives/style-map.js';\nimport { StateController } from './state.js';\nimport { applyColumnWidths } from '../internal/utils.js';\nimport type { GridHost } from '../internal/types.js';\n\nexport class GridDOMController<T extends object> implements ReactiveController {\n constructor(protected host: GridHost<T>, protected state: StateController<T>) {\n this.host.addController(this);\n }\n\n public get virtualBody() {\n // @ts-expect-error: protected member access\n return this.host.bodyElement;\n }\n\n public columnSizes: StyleInfo = {};\n\n public hostConnected(): void {\n this.setGridColumnSizes();\n }\n\n public hostUpdate(): void {\n this.setScrollOffset();\n this.setGridColumnSizes();\n }\n\n public setScrollOffset() {\n const size = this.virtualBody ? this.virtualBody.offsetWidth - this.virtualBody.clientWidth : 0;\n this.host.style.setProperty('--scrollbar-offset', `${size}px`);\n }\n\n protected setGridColumnSizes() {\n this.columnSizes = applyColumnWidths(this.host.columns);\n }\n\n public getActiveRowStyles(index: number): StyleInfo {\n return this.state.active.row === index ? { 'z-index': '3' } : {};\n }\n}\n"]}
@@ -0,0 +1,22 @@
1
+ import { ReactiveController } from 'lit';
2
+ import { FilterState } from '../operations/filter/state.js';
3
+ import type { FilterExpressionTree } from '../operations/filter/tree.js';
4
+ import type { ColumnConfiguration, GridHost, Keys } from '../internal/types.js';
5
+ import type { FilterExpression } from '../operations/filter/types.js';
6
+ export declare class FilterController<T extends object> implements ReactiveController {
7
+ #private;
8
+ protected host: GridHost<T>;
9
+ constructor(host: GridHost<T>);
10
+ state: FilterState<T>;
11
+ get filterRow(): import("../components/filter-row").default<T>;
12
+ protected _filter(expression: FilterExpression<T> | FilterExpression<T>[]): void;
13
+ hostConnected(): void;
14
+ get(key: Keys<T>): FilterExpressionTree<T> | undefined;
15
+ reset(key?: Keys<T>): void;
16
+ setActiveColumn(column?: ColumnConfiguration<T>): void;
17
+ getDefaultExpression(column: ColumnConfiguration<T>): FilterExpression<T>;
18
+ removeExpression(expression: FilterExpression<T>): void;
19
+ filterWithEvent(expression: FilterExpression<T>): Promise<void>;
20
+ filter(expression: FilterExpression<T> | FilterExpression<T>[]): void;
21
+ }
22
+ //# sourceMappingURL=filter.d.ts.map
@@ -0,0 +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,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,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;IAgBD,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE;IAKlE,aAAa;IAEb,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,GAAG,gBAAgB,CAAC,CAAC,CAAC;IAUzE,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAU1C,eAAe,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAWrD,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE;CAOtE"}
@@ -0,0 +1,79 @@
1
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
+ };
6
+ var _FilterController_instances, _FilterController_emitFilteringEvent, _FilterController_emitFilteredEvent;
7
+ import { PIPELINE } from '../internal/constants.js';
8
+ import { asArray, getFilterOperandsFor } from '../internal/utils.js';
9
+ import { FilterState } from '../operations/filter/state.js';
10
+ export class FilterController {
11
+ constructor(host) {
12
+ this.host = host;
13
+ _FilterController_instances.add(this);
14
+ this.state = new FilterState();
15
+ this.host.addController(this);
16
+ }
17
+ get filterRow() {
18
+ // @ts-expect-error - protected access
19
+ return this.host.filterRow;
20
+ }
21
+ _filter(expression) {
22
+ asArray(expression).forEach(expr => this.state.set(expr));
23
+ this.host.requestUpdate(PIPELINE);
24
+ }
25
+ hostConnected() { }
26
+ get(key) {
27
+ return this.state.get(key);
28
+ }
29
+ reset(key) {
30
+ key ? this.state.delete(key) : this.state.clear();
31
+ }
32
+ setActiveColumn(column) {
33
+ var _a;
34
+ if ((column === null || column === void 0 ? void 0 : column.filter) && ((_a = this.filterRow) === null || _a === void 0 ? void 0 : _a.active)) {
35
+ this.filterRow.column = column;
36
+ this.filterRow.expression = this.getDefaultExpression(column);
37
+ this.host.requestUpdate();
38
+ }
39
+ }
40
+ getDefaultExpression(column) {
41
+ var _a;
42
+ const caseSensitive = typeof column.filter === 'boolean' ? false : Boolean((_a = column.filter) === null || _a === void 0 ? void 0 : _a.caseSensitive);
43
+ return {
44
+ key: column.key,
45
+ condition: getFilterOperandsFor(column).default,
46
+ caseSensitive,
47
+ };
48
+ }
49
+ removeExpression(expression) {
50
+ const state = this.get(expression.key);
51
+ state === null || state === void 0 ? void 0 : state.remove(expression);
52
+ if (state === null || state === void 0 ? void 0 : state.empty) {
53
+ this.reset(state.key);
54
+ }
55
+ }
56
+ async filterWithEvent(expression) {
57
+ if (!__classPrivateFieldGet(this, _FilterController_instances, "m", _FilterController_emitFilteringEvent).call(this, expression)) {
58
+ return;
59
+ }
60
+ this._filter(expression);
61
+ await this.host.updateComplete;
62
+ __classPrivateFieldGet(this, _FilterController_instances, "m", _FilterController_emitFilteredEvent).call(this, this.get(expression.key));
63
+ }
64
+ filter(expression) {
65
+ this._filter(asArray(expression).map(expr => Object.assign(this.getDefaultExpression(this.host.getColumn(expr.key)), expr)));
66
+ }
67
+ }
68
+ _FilterController_instances = new WeakSet(), _FilterController_emitFilteringEvent = function _FilterController_emitFilteringEvent(expression) {
69
+ return this.host.emitEvent('filtering', {
70
+ detail: {
71
+ expression,
72
+ state: this.get(expression.key),
73
+ },
74
+ cancelable: true,
75
+ });
76
+ }, _FilterController_emitFilteredEvent = function _FilterController_emitFilteredEvent(detail) {
77
+ return this.host.emitEvent('filtered', { detail });
78
+ };
79
+ //# sourceMappingURL=filter.js.map
@@ -0,0 +1 @@
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 { FilterExpressionTree } from '../operations/filter/tree.js';\nimport type { ColumnConfiguration, GridHost, Keys } from '../internal/types.js';\nimport type { FilterExpression } from '../operations/filter/types.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 #emitFilteringEvent(expression: FilterExpression<T>) {\n return this.host.emitEvent('filtering', {\n detail: {\n expression,\n state: this.get(expression.key)!,\n },\n cancelable: true,\n });\n }\n\n #emitFilteredEvent(detail: FilterExpressionTree<T>) {\n return this.host.emitEvent('filtered', { detail });\n }\n\n protected _filter(expression: FilterExpression<T> | FilterExpression<T>[]) {\n asArray(expression).forEach(expr => this.state.set(expr));\n this.host.requestUpdate(PIPELINE);\n }\n\n public hostConnected() {}\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>): FilterExpression<T> {\n const caseSensitive =\n typeof column.filter === 'boolean' ? false : Boolean(column.filter?.caseSensitive);\n return {\n key: column.key,\n condition: getFilterOperandsFor(column).default,\n caseSensitive,\n };\n }\n\n public removeExpression(expression: FilterExpression<T>) {\n const state = this.get(expression.key);\n\n state?.remove(expression);\n\n if (state?.empty) {\n this.reset(state.key);\n }\n }\n\n public async filterWithEvent(expression: FilterExpression<T>) {\n if (!this.#emitFilteringEvent(expression)) {\n return;\n }\n\n this._filter(expression);\n\n await this.host.updateComplete;\n this.#emitFilteredEvent(this.get(expression.key)!);\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"]}
@@ -0,0 +1,31 @@
1
+ import { ReactiveController } from 'lit';
2
+ import type ApexGridBody from '../components/grid-body.js';
3
+ import type { ActiveNode, GridHost, Keys } from '../internal/types.js';
4
+ export declare class NavigationController<T extends object> implements ReactiveController {
5
+ protected host: GridHost<T>;
6
+ protected handlers: Map<string, ((container: ApexGridBody) => void) | ((container: ApexGridBody) => void) | (() => void) | (() => void) | ((container: ApexGridBody) => void) | ((container: ApexGridBody) => void)>;
7
+ protected state: Map<import("../internal/types.js").NavigationState, ActiveNode<any>>;
8
+ protected _active: Readonly<ActiveNode<any>>;
9
+ protected get nextNode(): {
10
+ column: keyof T;
11
+ row: number;
12
+ };
13
+ protected get columns(): import("../internal/types.js").ColumnConfiguration<T>[];
14
+ protected get firstColumn(): keyof T;
15
+ protected getPreviousColumn(key: Keys<T>): keyof T;
16
+ protected getNextColumn(key: Keys<T>): keyof T;
17
+ get active(): ActiveNode<T>;
18
+ set active(node: ActiveNode<T>);
19
+ constructor(host: GridHost<T>);
20
+ protected isNotSentinel(node: ActiveNode<T>): boolean;
21
+ protected home(container: ApexGridBody): void;
22
+ protected end(container: ApexGridBody): void;
23
+ protected arrowDown(container: ApexGridBody): void;
24
+ protected arrowUp(container: ApexGridBody): void;
25
+ protected arrowLeft(): void;
26
+ protected arrowRight(): void;
27
+ hostConnected(): void;
28
+ hostDisconnected(): void;
29
+ navigate(event: KeyboardEvent, container: ApexGridBody): void;
30
+ }
31
+ //# sourceMappingURL=navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/controllers/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,KAAK,CAAC;AAEzC,OAAO,KAAK,YAAY,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAEvE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,kBAAkB;IAmDnE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAlDvC,SAAS,CAAC,QAAQ,2BAoEa,YAAY,0BASd,YAAY,wDAnBf,YAAY,0BAKb,YAAY,YAtDnC;IAEF,SAAS,CAAC,KAAK,uEAAoB;IACnC,SAAS,CAAC,OAAO,4BAAiB;IAElC,SAAS,KAAK,QAAQ;;;MAKrB;IAED,SAAS,KAAK,OAAO,4DAEpB;IAED,SAAS,KAAK,WAAW,YAExB;IAED,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAIxC,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAMpC,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,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAI3C,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY;IAKtC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY;IAKrC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY;IAS3C,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY;IAMzC,SAAS,CAAC,SAAS;IAKnB,SAAS,CAAC,UAAU;IAKb,aAAa;IAEb,gBAAgB;IAKhB,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY;CAM9D"}