apex-grid 3.3.0 → 3.5.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 (132) hide show
  1. package/CHANGELOG.md +143 -0
  2. package/README.md +74 -6
  3. package/components/cell.d.ts +2 -2
  4. package/components/cell.js +30 -2
  5. package/components/cell.js.map +1 -1
  6. package/components/filter-row.js +65 -6
  7. package/components/filter-row.js.map +1 -1
  8. package/components/grid.d.ts +132 -0
  9. package/components/grid.js +59 -2
  10. package/components/grid.js.map +1 -1
  11. package/components/header-row.js +8 -0
  12. package/components/header-row.js.map +1 -1
  13. package/components/header.js +85 -12
  14. package/components/header.js.map +1 -1
  15. package/components/row.js +32 -4
  16. package/components/row.js.map +1 -1
  17. package/components/virtualizer.d.ts +5 -1
  18. package/components/virtualizer.js +72 -2
  19. package/components/virtualizer.js.map +1 -1
  20. package/controllers/expansion.js +4 -4
  21. package/controllers/expansion.js.map +1 -1
  22. package/controllers/filter.js +11 -0
  23. package/controllers/filter.js.map +1 -1
  24. package/controllers/history.js +11 -4
  25. package/controllers/history.js.map +1 -1
  26. package/controllers/navigation.d.ts +35 -2
  27. package/controllers/navigation.js +102 -8
  28. package/controllers/navigation.js.map +1 -1
  29. package/controllers/pagination.js +1 -1
  30. package/controllers/pagination.js.map +1 -1
  31. package/controllers/reorder.js +4 -2
  32. package/controllers/reorder.js.map +1 -1
  33. package/controllers/row-pin.js +2 -2
  34. package/controllers/row-pin.js.map +1 -1
  35. package/controllers/row-reorder.js +6 -6
  36. package/controllers/row-reorder.js.map +1 -1
  37. package/controllers/selection.js +3 -3
  38. package/controllers/selection.js.map +1 -1
  39. package/controllers/sort.js +4 -2
  40. package/controllers/sort.js.map +1 -1
  41. package/controllers/state.d.ts +9 -3
  42. package/controllers/state.js +11 -1
  43. package/controllers/state.js.map +1 -1
  44. package/custom-elements.json +664 -190
  45. package/docs/assets/hierarchy.js +1 -1
  46. package/docs/assets/navigation.js +1 -1
  47. package/docs/assets/search.js +1 -1
  48. package/docs/classes/ApexGrid.html +586 -0
  49. package/docs/classes/ApexGridPaginator.html +36 -0
  50. package/docs/classes/ApexGridToolbar.html +67 -0
  51. package/docs/functions/localize.html +2 -2
  52. package/docs/functions/setup.html +1 -2
  53. package/docs/hierarchy.html +1 -1
  54. package/docs/index.html +94 -6
  55. package/docs/interfaces/ApexCellValidationFailedEvent.html +1 -1
  56. package/docs/interfaces/ApexCellValueChangedEvent.html +1 -1
  57. package/docs/interfaces/ApexCellValueChangingEvent.html +2 -2
  58. package/docs/interfaces/ApexColumnMovedEvent.html +2 -2
  59. package/docs/interfaces/ApexColumnMovingEvent.html +1 -1
  60. package/docs/interfaces/ApexDetailContext.html +2 -2
  61. package/docs/interfaces/ApexGridEventMap.html +5 -5
  62. package/docs/interfaces/ApexRowMovingEvent.html +1 -1
  63. package/docs/interfaces/ApexRowPinningEvent.html +1 -1
  64. package/docs/interfaces/BaseApexCellContext.html +1 -1
  65. package/docs/interfaces/BaseApexEditorContext.html +1 -1
  66. package/docs/interfaces/BaseColumnConfiguration.html +3 -3
  67. package/docs/interfaces/CSVExportOptions.html +2 -2
  68. package/docs/interfaces/DataPipelineConfiguration.html +2 -2
  69. package/docs/interfaces/EditingHistoryConfiguration.html +1 -1
  70. package/docs/interfaces/ExportFormat.html +2 -2
  71. package/docs/interfaces/ExportOptions.html +1 -1
  72. package/docs/interfaces/GridRowPinningConfiguration.html +1 -1
  73. package/docs/interfaces/GridRowReorderingConfiguration.html +2 -2
  74. package/docs/interfaces/PaginationConfiguration.html +1 -1
  75. package/docs/interfaces/PaginationState.html +1 -1
  76. package/docs/media/_tokens.scss +29 -8
  77. package/docs/media/package.json +4 -5
  78. package/docs/media/state-persistence.html +0 -10
  79. package/docs/modules.html +1 -1
  80. package/docs/types/DataPipelineParams.html +2 -2
  81. package/docs/types/EditMode.html +2 -2
  82. package/docs/types/GridLocaleText.html +1 -1
  83. package/docs/types/PaginationMode.html +1 -1
  84. package/docs/variables/EN_LOCALE.html +3 -3
  85. package/docs/variables/esLocale.html +1 -1
  86. package/i18n/en.d.ts +109 -1
  87. package/i18n/en.js +109 -1
  88. package/i18n/en.js.map +1 -1
  89. package/i18n/es.js +109 -1
  90. package/i18n/es.js.map +1 -1
  91. package/index.d.ts +2 -0
  92. package/index.js +2 -0
  93. package/index.js.map +1 -1
  94. package/internal/column-types.js +1 -1
  95. package/internal/column-types.js.map +1 -1
  96. package/internal/feature-module.d.ts +22 -0
  97. package/internal/feature-module.js +5 -0
  98. package/internal/feature-module.js.map +1 -1
  99. package/internal/index.d.ts +2 -2
  100. package/internal/index.js +1 -1
  101. package/internal/index.js.map +1 -1
  102. package/internal/utils.d.ts +14 -0
  103. package/internal/utils.js +5 -0
  104. package/internal/utils.js.map +1 -1
  105. package/package.json +1 -2
  106. package/setup.d.ts +12 -11
  107. package/setup.js +12 -4
  108. package/setup.js.map +1 -1
  109. package/styles/_common.css.js +1 -1
  110. package/styles/_common.css.js.map +1 -1
  111. package/styles/_tokens.css.js +1 -1
  112. package/styles/_tokens.css.js.map +1 -1
  113. package/styles/body-cell/body-cell.css.js +1 -1
  114. package/styles/body-cell/body-cell.css.js.map +1 -1
  115. package/styles/body-row/body-row.css.js +1 -1
  116. package/styles/body-row/body-row.css.js.map +1 -1
  117. package/styles/filter-row/filter-row.css.js +1 -1
  118. package/styles/filter-row/filter-row.css.js.map +1 -1
  119. package/styles/grid/_grid.base.css.js +1 -1
  120. package/styles/grid/_grid.base.css.js.map +1 -1
  121. package/styles/grid/grid.css.js +1 -1
  122. package/styles/grid/grid.css.js.map +1 -1
  123. package/styles/group-header-row/group-header-row.css.js +1 -1
  124. package/styles/group-header-row/group-header-row.css.js.map +1 -1
  125. package/styles/header-cell/header-cell.css.js +1 -1
  126. package/styles/header-cell/header-cell.css.js.map +1 -1
  127. package/styles/header-row/header-row.base.css.js +1 -1
  128. package/styles/header-row/header-row.base.css.js.map +1 -1
  129. package/styles/paginator/paginator.css.js +1 -1
  130. package/styles/paginator/paginator.css.js.map +1 -1
  131. package/styles/toolbar/toolbar.css.js +1 -1
  132. package/styles/toolbar/toolbar.css.js.map +1 -1
@@ -2,10 +2,10 @@
2
2
  </div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">GridRowReorderingConfiguration</span> <span class="tsd-signature-symbol">{</span><br/>    <a class="tsd-kind-property" href="#applytodata">applyToData</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#enabled">enabled</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#handle">handle</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="#applytodata" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>apply<wbr/>To<wbr/>Data?</span></a>
3
3
  <a href="#enabled" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>enabled</span></a>
4
4
  <a href="#handle" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>handle?</span></a>
5
- </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Properties</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="applytodata"><code class="tsd-tag">Optional</code><span>apply<wbr/>To<wbr/>Data</span><a href="#applytodata" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">applyToData</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span></div><div class="tsd-comment tsd-typography"><p>When <code>true</code>, a reorder also splices ApexGrid.data in place so the
5
+ </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Properties</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="applytodata"><code class="tsd-tag">Optional</code><span>apply<wbr/>To<wbr/>Data</span><a href="#applytodata" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">applyToData</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span></div><div class="tsd-comment tsd-typography"><p>When <code>true</code>, a reorder also splices <a href="../classes/ApexGrid.html#data" class="tsd-kind-property">ApexGrid.data</a> in place so the
6
6
  source array reflects the new order. Defaults to <code>false</code>: the order lives in
7
7
  the grid and the app persists it via the <code>rowMoved</code> event.</p>
8
- </div></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="enabled"><span>enabled</span><a href="#enabled" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">enabled</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><div class="tsd-comment tsd-typography"><p>Whether rows can be reordered by drag, keyboard, or ApexGrid.moveRow.
8
+ </div></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="enabled"><span>enabled</span><a href="#enabled" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">enabled</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><div class="tsd-comment tsd-typography"><p>Whether rows can be reordered by drag, keyboard, or <a href="../classes/ApexGrid.html#moverow" class="tsd-kind-method">ApexGrid.moveRow</a>.
9
9
  A manual order, once set, is mutually exclusive with column sorting
10
10
  (applying a sort clears it). Disabled when omitted.</p>
11
11
  </div></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="handle"><code class="tsd-tag">Optional</code><span>handle</span><a href="#handle" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">handle</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span></div><div class="tsd-comment tsd-typography"><p>Controls how a pointer drag is initiated.</p>
@@ -7,7 +7,7 @@
7
7
  <a href="#totalitems" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>total<wbr/>Items?</span></a>
8
8
  </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Properties</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="enabled"><code class="tsd-tag">Optional</code><span>enabled</span><a href="#enabled" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">enabled</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span></div><div class="tsd-comment tsd-typography"><p>Whether pagination is enabled.</p>
9
9
  </div><div class="tsd-comment tsd-typography"><div class="tsd-tag-remarks"><h4 class="tsd-anchor-link" id="remarks">Remarks<a href="#remarks" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><p>When <code>false</code>, the grid renders no paginator and applies no slicing — the full
10
- ApexGrid.dataView is virtualized as usual.</p>
10
+ <a href="../classes/ApexGrid.html#dataview" class="tsd-kind-accessor">ApexGrid.dataView</a> is virtualized as usual.</p>
11
11
  </div></div></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="mode"><code class="tsd-tag">Optional</code><span>mode</span><a href="#mode" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">mode</span><span class="tsd-signature-symbol">?:</span> <a href="../types/PaginationMode.html" class="tsd-signature-type tsd-kind-type-alias">PaginationMode</a></div><div class="tsd-comment tsd-typography"><p>The pagination mode. Defaults to <code>'local'</code>.</p>
12
12
  </div></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="page"><code class="tsd-tag">Optional</code><span>page</span><a href="#page" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">page</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">number</span></div><div class="tsd-comment tsd-typography"><p>The current page (zero-based). Defaults to <code>0</code>.</p>
13
13
  </div></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="pagesize"><code class="tsd-tag">Optional</code><span>page<wbr/>Size</span><a href="#pagesize" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">pageSize</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">number</span></div><div class="tsd-comment tsd-typography"><p>The number of records per page. Defaults to <code>25</code>.</p>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>PaginationState | apex-grid</title><meta name="description" content="Documentation for apex-grid"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">apex-grid</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">PaginationState</a></li></ul><h1>Interface PaginationState</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Resolved pagination state passed to controllers and event payloads.</p>
2
- </div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">PaginationState</span> <span class="tsd-signature-symbol">{</span><br/>    <a class="tsd-kind-property" href="#page">page</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#pagecount">pageCount</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#pagesize">pageSize</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#totalitems">totalItems</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div><section class="tsd-panel tsd-hierarchy" data-refl="939"><h4>Hierarchy (<a href="../hierarchy.html#PaginationState">View Summary</a>)</h4><ul class="tsd-hierarchy"><li class="tsd-hierarchy-item"><span class="tsd-hierarchy-target">PaginationState</span><ul class="tsd-hierarchy"><li class="tsd-hierarchy-item"><a href="ApexPageChangedEvent.html" class="tsd-signature-type tsd-kind-interface">ApexPageChangedEvent</a></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="#page" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>page</span></a>
2
+ </div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">PaginationState</span> <span class="tsd-signature-symbol">{</span><br/>    <a class="tsd-kind-property" href="#page">page</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#pagecount">pageCount</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#pagesize">pageSize</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#totalitems">totalItems</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div><section class="tsd-panel tsd-hierarchy" data-refl="1172"><h4>Hierarchy (<a href="../hierarchy.html#PaginationState">View Summary</a>)</h4><ul class="tsd-hierarchy"><li class="tsd-hierarchy-item"><span class="tsd-hierarchy-target">PaginationState</span><ul class="tsd-hierarchy"><li class="tsd-hierarchy-item"><a href="ApexPageChangedEvent.html" class="tsd-signature-type tsd-kind-interface">ApexPageChangedEvent</a></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="#page" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>page</span></a>
3
3
  <a href="#pagecount" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>page<wbr/>Count</span></a>
4
4
  <a href="#pagesize" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>page<wbr/>Size</span></a>
5
5
  <a href="#totalitems" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>total<wbr/>Items</span></a>
@@ -7,16 +7,18 @@
7
7
  // This is the single rebrand surface: override ~12 values on `apex-grid` and
8
8
  // the whole grid re-skins. Values fall back to self-contained literals, so a
9
9
  // grid mounted with zero consumer CSS already looks premium; the brand tokens
10
- // additionally re-tint from the igniteui palette when it is present.
10
+ // additionally re-tint from an Ignite UI palette when one is present.
11
11
  // No `!important`, no downstream hardcoded numerics — every rule resolves here.
12
12
  // ─────────────────────────────────────────────────────────────────────────
13
13
 
14
14
  :host {
15
15
  // ── Brand ────────────────────────────────────────────────────────────
16
- // Re-tints from the igniteui palette when its CSS is loaded (so the grid
17
- // auto-matches an igniteui host app), and falls back to the self-contained
18
- // premium blue otherwise. This igniteui hook used to live in the per-theme
19
- // files; folding it here keeps that integration without named themes.
16
+ // Re-tints from an Ignite UI palette when its CSS is loaded (so the grid
17
+ // auto-matches such a host app), and falls back to the self-contained
18
+ // premium blue otherwise. `--ig-primary-*` is the whole integration: it is
19
+ // what an Ignite UI theme actually defines, and reading it costs nothing
20
+ // when absent. This hook used to live in the per-theme files; folding it
21
+ // here keeps the integration without named themes.
20
22
  --ag-brand: var(--ig-primary-500, #0d6fd3); /* primary blue */
21
23
  --ag-brand-strong: var(--ig-primary-700, #0a56b8); /* hover / pressed */
22
24
 
@@ -111,14 +113,14 @@
111
113
  // Built-in dark theme. Opt in with `<apex-grid theme="dark">`.
112
114
  // Only color/surface tokens are flipped to a neutral slate palette; geometry,
113
115
  // typography, motion, and the brand hue (which still auto-tints from the
114
- // igniteui palette when present) are inherited from the light block above.
116
+ // Ignite UI palette when present) are inherited from the light block above.
115
117
  // `theme~='dark'` matches a space-separated word so `theme="dark compact"`
116
118
  // style stacking keeps working. These tokens inherit across the shadow
117
119
  // boundary to every child component, so the whole grid re-skins from here.
118
120
  // ─────────────────────────────────────────────────────────────────────────
119
121
  :host([theme~='dark']) {
120
122
  // ── Brand ── brighter fallbacks so the accent reads on a dark surface;
121
- // still re-tints from the igniteui palette first when it is present.
123
+ // still re-tints from an Ignite UI palette first when it is present.
122
124
  --ag-brand: var(--ig-primary-500, #3b82f6);
123
125
  --ag-brand-strong: var(--ig-primary-400, #60a5fa);
124
126
 
@@ -169,7 +171,7 @@
169
171
  // little brand into the surfaces/gridlines so the grid wears its brand even
170
172
  // at rest, a brand-tinted variant. Because every value is `color-mix(... var
171
173
  // (--ag-brand) ...)`, it follows whatever brand is in effect (including the
172
- // igniteui auto-tint) with no per-brand CSS.
174
+ // Ignite UI auto-tint) with no per-brand CSS.
173
175
  // The light variant mixes into the white neutrals; the dark variant (higher
174
176
  // specificity, so it wins under `theme="dark tinted"`) mixes the SAME token
175
177
  // set into the slate neutrals. Body row surface stays untinted for legibility.
@@ -191,3 +193,22 @@
191
193
  --ag-row-hover: color-mix(in srgb, var(--ag-brand) 12%, var(--ag-surface));
192
194
  --ag-text-muted: color-mix(in srgb, var(--ag-brand) 28%, #94a3b8);
193
195
  }
196
+
197
+ // ─────────────────────────────────────────────────────────────────────────
198
+ // Reduced motion. Every transition in the grid is declared with one of the
199
+ // three `--ag-dur-*` tokens (nothing hardcodes a duration, and there are no
200
+ // keyframe animations), so zeroing them here is the whole opt-out: hover
201
+ // washes, focus rings, chevron rotation and bar fills all become instant while
202
+ // the end states stay identical. `prefers-reduced-motion` is a user request,
203
+ // not a preference we can override, hence no `--ag-*` escape hatch.
204
+ // A consumer that adds its own transitions inside the grid should either use
205
+ // these tokens or guard them the same way. Row reorder / expansion animations
206
+ // live in JS and already bail out (`internal/flip.ts`).
207
+ // ─────────────────────────────────────────────────────────────────────────
208
+ @media (prefers-reduced-motion: reduce) {
209
+ :host {
210
+ --ag-dur-fast: 0ms;
211
+ --ag-dur-med: 0ms;
212
+ --ag-dur-slow: 0ms;
213
+ }
214
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apex-grid",
3
- "version": "3.3.0",
3
+ "version": "3.5.0",
4
4
  "description": "Web component data grid following open-wc recommendations",
5
5
  "keywords": [
6
6
  "lit",
@@ -30,7 +30,8 @@
30
30
  },
31
31
  "scripts": {
32
32
  "analyze": "cem analyze --litelement --globs \"src/**/*.{js,ts}\" --exclude \"src/styles/**/*\"",
33
- "build": "npm run analyze && node scripts/build.js && npm run typedoc",
33
+ "cem:check": "node scripts/check-cem-drift.js",
34
+ "build": "npm run analyze && npm run cem:check && node scripts/build.js && npm run typedoc",
34
35
  "build:tsc": "tsc",
35
36
  "dev:vite": "vite build",
36
37
  "format": "biome check --fix && npm run format:stylelint",
@@ -52,8 +53,6 @@
52
53
  "dependencies": {
53
54
  "@lit-labs/virtualizer": "^2.1.0",
54
55
  "@lit/context": "^1.1.5",
55
- "igniteui-theming": "~19.1.0",
56
- "igniteui-webcomponents": "~6.1.0",
57
56
  "lit": "^3.3.0"
58
57
  },
59
58
  "devDependencies": {
@@ -82,4 +81,4 @@
82
81
  "vite": "^7.0.2"
83
82
  },
84
83
  "customElements": "custom-elements.json"
85
- }
84
+ }
@@ -54,7 +54,6 @@
54
54
  }
55
55
  apex-grid {
56
56
  min-height: 420px;
57
- --ig-size: 2;
58
57
  }
59
58
  .snapshot {
60
59
  margin: 0;
@@ -79,15 +78,6 @@
79
78
  letter-spacing: 0.04em;
80
79
  }
81
80
  </style>
82
- <script type="module">
83
- try {
84
- const resp = await fetch('https://cdn.jsdelivr.net/npm/igniteui-webcomponents@5/themes/light/bootstrap.css');
85
- const css = await resp.text();
86
- const style = document.createElement('style');
87
- style.textContent = css.replaceAll(':root', 'apex-grid');
88
- document.head.appendChild(style);
89
- } catch (e) { /* theme is cosmetic */ }
90
- </script>
91
81
  </head>
92
82
  <body>
93
83
  <h2>State Persistence — getState / setState</h2>