@simple-table/vue 4.0.0 → 4.0.2

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 (192) hide show
  1. package/dist/cjs/index.js +1 -1
  2. package/dist/index.es.js +1 -1
  3. package/dist/types/{vue/src/MountRegistry.d.ts → MountRegistry.d.ts} +15 -15
  4. package/dist/types/{vue/src/SimpleTable.d.ts → SimpleTable.d.ts} +4 -4
  5. package/dist/types/buildVanillaConfig.d.ts +6 -0
  6. package/dist/types/index.d.ts +5 -0
  7. package/dist/types/{vue/src/types.d.ts → types.d.ts} +71 -63
  8. package/dist/types/{vue/src/utils → utils}/wrapVueRenderer.d.ts +29 -29
  9. package/package.json +13 -7
  10. package/styles.css.d.ts +1 -0
  11. package/dist/types/core/src/consts/column-constraints.d.ts +0 -58
  12. package/dist/types/core/src/consts/general-consts.d.ts +0 -32
  13. package/dist/types/core/src/core/SimpleTableVanilla.d.ts +0 -369
  14. package/dist/types/core/src/core/api/TableAPIImpl.d.ts +0 -78
  15. package/dist/types/core/src/core/dom/DOMManager.d.ts +0 -52
  16. package/dist/types/core/src/core/initialization/TableInitializer.d.ts +0 -34
  17. package/dist/types/core/src/core/rendering/RenderOrchestrator.d.ts +0 -172
  18. package/dist/types/core/src/core/rendering/SectionRenderer.d.ts +0 -119
  19. package/dist/types/core/src/core/rendering/TableRenderer.d.ts +0 -120
  20. package/dist/types/core/src/hooks/ariaAnnouncements.d.ts +0 -37
  21. package/dist/types/core/src/hooks/contentHeight.d.ts +0 -29
  22. package/dist/types/core/src/hooks/expandedDepths.d.ts +0 -69
  23. package/dist/types/core/src/hooks/handleOutsideClick.d.ts +0 -50
  24. package/dist/types/core/src/hooks/previousValue.d.ts +0 -30
  25. package/dist/types/core/src/hooks/scrollbarVisibility.d.ts +0 -65
  26. package/dist/types/core/src/hooks/scrollbarWidth.d.ts +0 -52
  27. package/dist/types/core/src/hooks/useAggregatedRows.d.ts +0 -14
  28. package/dist/types/core/src/hooks/useQuickFilter.d.ts +0 -14
  29. package/dist/types/core/src/hooks/windowResize.d.ts +0 -31
  30. package/dist/types/core/src/icons/AngleDownIcon.d.ts +0 -1
  31. package/dist/types/core/src/icons/AngleLeftIcon.d.ts +0 -1
  32. package/dist/types/core/src/icons/AngleRightIcon.d.ts +0 -1
  33. package/dist/types/core/src/icons/AngleUpIcon.d.ts +0 -1
  34. package/dist/types/core/src/icons/AscIcon.d.ts +0 -1
  35. package/dist/types/core/src/icons/CheckIcon.d.ts +0 -1
  36. package/dist/types/core/src/icons/DescIcon.d.ts +0 -1
  37. package/dist/types/core/src/icons/DragIcon.d.ts +0 -1
  38. package/dist/types/core/src/icons/FilterIcon.d.ts +0 -1
  39. package/dist/types/core/src/icons/SelectIcon.d.ts +0 -1
  40. package/dist/types/core/src/icons/index.d.ts +0 -14
  41. package/dist/types/core/src/index.d.ts +0 -58
  42. package/dist/types/core/src/managers/AnimationCoordinator.d.ts +0 -356
  43. package/dist/types/core/src/managers/AutoScaleManager.d.ts +0 -33
  44. package/dist/types/core/src/managers/DimensionManager.d.ts +0 -84
  45. package/dist/types/core/src/managers/DragHandlerManager.d.ts +0 -44
  46. package/dist/types/core/src/managers/FilterManager.d.ts +0 -36
  47. package/dist/types/core/src/managers/PivotManager.d.ts +0 -35
  48. package/dist/types/core/src/managers/RowManager.d.ts +0 -56
  49. package/dist/types/core/src/managers/RowSelectionManager.d.ts +0 -72
  50. package/dist/types/core/src/managers/ScrollManager.d.ts +0 -38
  51. package/dist/types/core/src/managers/SectionScrollController.d.ts +0 -74
  52. package/dist/types/core/src/managers/SelectionManager/SelectionManager.d.ts +0 -251
  53. package/dist/types/core/src/managers/SelectionManager/index.d.ts +0 -2
  54. package/dist/types/core/src/managers/SelectionManager/keyboardUtils.d.ts +0 -7
  55. package/dist/types/core/src/managers/SelectionManager/mouseUtils.d.ts +0 -16
  56. package/dist/types/core/src/managers/SelectionManager/selectionRangeUtils.d.ts +0 -7
  57. package/dist/types/core/src/managers/SelectionManager/types.d.ts +0 -28
  58. package/dist/types/core/src/managers/SortManager.d.ts +0 -42
  59. package/dist/types/core/src/types/AggregationTypes.d.ts +0 -8
  60. package/dist/types/core/src/types/AnimationsConfig.d.ts +0 -16
  61. package/dist/types/core/src/types/BoundingBox.d.ts +0 -11
  62. package/dist/types/core/src/types/Cell.d.ts +0 -7
  63. package/dist/types/core/src/types/CellChangeProps.d.ts +0 -9
  64. package/dist/types/core/src/types/CellClickProps.d.ts +0 -11
  65. package/dist/types/core/src/types/CellRendererProps.d.ts +0 -32
  66. package/dist/types/core/src/types/CellValue.d.ts +0 -2
  67. package/dist/types/core/src/types/ColumnEditorConfig.d.ts +0 -42
  68. package/dist/types/core/src/types/ColumnEditorCustomRendererProps.d.ts +0 -14
  69. package/dist/types/core/src/types/ColumnEditorRowRendererProps.d.ts +0 -39
  70. package/dist/types/core/src/types/ColumnVisibilityTypes.d.ts +0 -4
  71. package/dist/types/core/src/types/CustomTheme.d.ts +0 -28
  72. package/dist/types/core/src/types/DragHandlerProps.d.ts +0 -14
  73. package/dist/types/core/src/types/EnumOption.d.ts +0 -5
  74. package/dist/types/core/src/types/FilterTypes.d.ts +0 -31
  75. package/dist/types/core/src/types/FlattenedHeader.d.ts +0 -10
  76. package/dist/types/core/src/types/FooterPosition.d.ts +0 -3
  77. package/dist/types/core/src/types/FooterRendererProps.d.ts +0 -17
  78. package/dist/types/core/src/types/GenerateRowIdParams.d.ts +0 -11
  79. package/dist/types/core/src/types/GetRowId.d.ts +0 -16
  80. package/dist/types/core/src/types/HandleResizeStartProps.d.ts +0 -25
  81. package/dist/types/core/src/types/HeaderDropdownProps.d.ts +0 -14
  82. package/dist/types/core/src/types/HeaderObject.d.ts +0 -133
  83. package/dist/types/core/src/types/HeaderRendererProps.d.ts +0 -17
  84. package/dist/types/core/src/types/IconsConfig.d.ts +0 -19
  85. package/dist/types/core/src/types/OnNextPage.d.ts +0 -2
  86. package/dist/types/core/src/types/OnRowGroupExpandProps.d.ts +0 -16
  87. package/dist/types/core/src/types/OnSortProps.d.ts +0 -3
  88. package/dist/types/core/src/types/PanelSection.d.ts +0 -1
  89. package/dist/types/core/src/types/Pinned.d.ts +0 -1
  90. package/dist/types/core/src/types/PinnedSectionsState.d.ts +0 -6
  91. package/dist/types/core/src/types/PivotTypes.d.ts +0 -37
  92. package/dist/types/core/src/types/QuickFilterTypes.d.ts +0 -21
  93. package/dist/types/core/src/types/Row.d.ts +0 -3
  94. package/dist/types/core/src/types/RowButton.d.ts +0 -6
  95. package/dist/types/core/src/types/RowId.d.ts +0 -1
  96. package/dist/types/core/src/types/RowSelectionChangeProps.d.ts +0 -7
  97. package/dist/types/core/src/types/RowSelectionMode.d.ts +0 -8
  98. package/dist/types/core/src/types/RowState.d.ts +0 -12
  99. package/dist/types/core/src/types/RowStateRendererProps.d.ts +0 -18
  100. package/dist/types/core/src/types/SharedTableProps.d.ts +0 -24
  101. package/dist/types/core/src/types/SimpleTableConfig.d.ts +0 -124
  102. package/dist/types/core/src/types/SimpleTableProps.d.ts +0 -125
  103. package/dist/types/core/src/types/SortColumn.d.ts +0 -8
  104. package/dist/types/core/src/types/TableAPI.d.ts +0 -82
  105. package/dist/types/core/src/types/TableHeaderProps.d.ts +0 -17
  106. package/dist/types/core/src/types/TableRow.d.ts +0 -39
  107. package/dist/types/core/src/types/TableRowProps.d.ts +0 -29
  108. package/dist/types/core/src/types/Theme.d.ts +0 -2
  109. package/dist/types/core/src/types/UpdateCellProps.d.ts +0 -8
  110. package/dist/types/core/src/utils/accordionAnimation.d.ts +0 -25
  111. package/dist/types/core/src/utils/aggregationUtils.d.ts +0 -7
  112. package/dist/types/core/src/utils/ariaRowOwnership.d.ts +0 -37
  113. package/dist/types/core/src/utils/asRows.d.ts +0 -7
  114. package/dist/types/core/src/utils/bodyCell/cellLiveRef.d.ts +0 -9
  115. package/dist/types/core/src/utils/bodyCell/content.d.ts +0 -5
  116. package/dist/types/core/src/utils/bodyCell/editing.d.ts +0 -4
  117. package/dist/types/core/src/utils/bodyCell/editors/booleanDropdown.d.ts +0 -2
  118. package/dist/types/core/src/utils/bodyCell/editors/datePicker.d.ts +0 -2
  119. package/dist/types/core/src/utils/bodyCell/editors/dropdown.d.ts +0 -18
  120. package/dist/types/core/src/utils/bodyCell/editors/enumDropdown.d.ts +0 -2
  121. package/dist/types/core/src/utils/bodyCell/eventTracking.d.ts +0 -3
  122. package/dist/types/core/src/utils/bodyCell/expansion.d.ts +0 -12
  123. package/dist/types/core/src/utils/bodyCell/selection.d.ts +0 -7
  124. package/dist/types/core/src/utils/bodyCell/styling.d.ts +0 -11
  125. package/dist/types/core/src/utils/bodyCell/types.d.ts +0 -170
  126. package/dist/types/core/src/utils/bodyCellRenderer.d.ts +0 -6
  127. package/dist/types/core/src/utils/cellClipboardUtils.d.ts +0 -25
  128. package/dist/types/core/src/utils/cellScrollUtils.d.ts +0 -10
  129. package/dist/types/core/src/utils/cellUtils.d.ts +0 -18
  130. package/dist/types/core/src/utils/charts/createBarChart.d.ts +0 -20
  131. package/dist/types/core/src/utils/charts/createLineAreaChart.d.ts +0 -25
  132. package/dist/types/core/src/utils/collapseUtils.d.ts +0 -31
  133. package/dist/types/core/src/utils/columnEditor/columnEditorUtils.d.ts +0 -27
  134. package/dist/types/core/src/utils/columnEditor/createCheckbox.d.ts +0 -21
  135. package/dist/types/core/src/utils/columnEditor/createColumnEditor.d.ts +0 -26
  136. package/dist/types/core/src/utils/columnEditor/createColumnEditorPopout.d.ts +0 -23
  137. package/dist/types/core/src/utils/columnEditor/createColumnEditorRow.d.ts +0 -41
  138. package/dist/types/core/src/utils/csvExportUtils.d.ts +0 -14
  139. package/dist/types/core/src/utils/dateUtils.d.ts +0 -18
  140. package/dist/types/core/src/utils/externalScroll.d.ts +0 -58
  141. package/dist/types/core/src/utils/filterUtils.d.ts +0 -5
  142. package/dist/types/core/src/utils/filters/createBooleanFilter.d.ts +0 -15
  143. package/dist/types/core/src/utils/filters/createCustomSelect.d.ts +0 -20
  144. package/dist/types/core/src/utils/filters/createDateFilter.d.ts +0 -15
  145. package/dist/types/core/src/utils/filters/createDatePicker.d.ts +0 -10
  146. package/dist/types/core/src/utils/filters/createDropdown.d.ts +0 -33
  147. package/dist/types/core/src/utils/filters/createEnumFilter.d.ts +0 -15
  148. package/dist/types/core/src/utils/filters/createFilterActions.d.ts +0 -12
  149. package/dist/types/core/src/utils/filters/createFilterDropdown.d.ts +0 -15
  150. package/dist/types/core/src/utils/filters/createFilterInput.d.ts +0 -16
  151. package/dist/types/core/src/utils/filters/createNumberFilter.d.ts +0 -15
  152. package/dist/types/core/src/utils/filters/createStringFilter.d.ts +0 -15
  153. package/dist/types/core/src/utils/footer/createTableFooter.d.ts +0 -21
  154. package/dist/types/core/src/utils/formatters.d.ts +0 -3
  155. package/dist/types/core/src/utils/generalUtils.d.ts +0 -4
  156. package/dist/types/core/src/utils/headerCell/collapsing.d.ts +0 -6
  157. package/dist/types/core/src/utils/headerCell/dragging.d.ts +0 -5
  158. package/dist/types/core/src/utils/headerCell/editing.d.ts +0 -4
  159. package/dist/types/core/src/utils/headerCell/eventTracking.d.ts +0 -28
  160. package/dist/types/core/src/utils/headerCell/filtering.d.ts +0 -3
  161. package/dist/types/core/src/utils/headerCell/resizing.d.ts +0 -3
  162. package/dist/types/core/src/utils/headerCell/selection.d.ts +0 -10
  163. package/dist/types/core/src/utils/headerCell/sorting.d.ts +0 -3
  164. package/dist/types/core/src/utils/headerCell/styling.d.ts +0 -7
  165. package/dist/types/core/src/utils/headerCell/types.d.ts +0 -110
  166. package/dist/types/core/src/utils/headerCellRenderer.d.ts +0 -4
  167. package/dist/types/core/src/utils/headerUtils.d.ts +0 -41
  168. package/dist/types/core/src/utils/headerWidthUtils.d.ts +0 -121
  169. package/dist/types/core/src/utils/horizontalScrollbarRenderer.d.ts +0 -27
  170. package/dist/types/core/src/utils/infiniteScrollUtils.d.ts +0 -145
  171. package/dist/types/core/src/utils/nestedGridRowRenderer.d.ts +0 -50
  172. package/dist/types/core/src/utils/pinnedColumnUtils.d.ts +0 -29
  173. package/dist/types/core/src/utils/pivot/pivotRows.d.ts +0 -16
  174. package/dist/types/core/src/utils/propSyncEqual.d.ts +0 -60
  175. package/dist/types/core/src/utils/quickFilterUtils.d.ts +0 -14
  176. package/dist/types/core/src/utils/resizeUtils/autoExpandResize.d.ts +0 -32
  177. package/dist/types/core/src/utils/resizeUtils/compensation.d.ts +0 -17
  178. package/dist/types/core/src/utils/resizeUtils/domUpdates.d.ts +0 -15
  179. package/dist/types/core/src/utils/resizeUtils/index.d.ts +0 -26
  180. package/dist/types/core/src/utils/resizeUtils/maxWidth.d.ts +0 -9
  181. package/dist/types/core/src/utils/resizeUtils/parentHeaderResize.d.ts +0 -11
  182. package/dist/types/core/src/utils/resizeUtils/sectionWidths.d.ts +0 -36
  183. package/dist/types/core/src/utils/rowFlattening.d.ts +0 -30
  184. package/dist/types/core/src/utils/rowProcessing.d.ts +0 -65
  185. package/dist/types/core/src/utils/rowSelectionUtils.d.ts +0 -62
  186. package/dist/types/core/src/utils/rowSeparatorRenderer.d.ts +0 -16
  187. package/dist/types/core/src/utils/rowUtils.d.ts +0 -187
  188. package/dist/types/core/src/utils/sortUtils.d.ts +0 -8
  189. package/dist/types/core/src/utils/stateRowRenderer.d.ts +0 -15
  190. package/dist/types/core/src/utils/stickyParentsRenderer.d.ts +0 -53
  191. package/dist/types/vue/src/buildVanillaConfig.d.ts +0 -4
  192. package/dist/types/vue/src/index.d.ts +0 -5
package/dist/cjs/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),r=require("simple-table-core");function t(e,r){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&r.indexOf(n)<0&&(t[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)r.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(t[n[o]]=e[n[o]])}return t}function n(r,t){return n=>{const o=document.createElement("div");return e.render(e.h(t,n),o),r.register(o,()=>e.render(null,o)),o}}function o(r,t,n,o){const s="cell"===n?r.cellRendererCache:r.headerRendererCache,c=s.get(t);if(c)return c.component=o,c.wrapped;const i={component:o,wrapped:null},d=t=>{const n=document.createElement("div");return e.render(e.h(i.component,t),n),r.register(n,()=>e.render(null,n)),n};return i.wrapped=d,s.set(t,i),d}function s(r,t){const n=document.createElement("div");return e.render(t,n),r.register(n,()=>e.render(null,n)),n}function c(r){const t=document.createElement("div");e.render(r,t);const n=t.innerHTML;return e.render(null,t),n}function i(e){return"object"==typeof e||"function"==typeof e}function d(e,r){const{cellRenderer:n,headerRenderer:s,children:c,nestedTable:i}=e,a=t(e,["cellRenderer","headerRenderer","children","nestedTable"]),u=String(e.accessor),f=Object.assign({},a);if(n&&(f.cellRenderer="object"==typeof n?o(r,u,"cell",n):n),s&&(f.headerRenderer="object"==typeof s?o(r,u,"header",s):s),c&&(f.children=c.map(e=>d(e,r))),i){const e=Object.assign(Object.assign({},i),{rows:[]});f.nestedTable=l(e,r)}return f}function l(e,o){const{defaultHeaders:l,rows:a,footerRenderer:u,emptyStateRenderer:f,errorStateRenderer:p,loadingStateRenderer:h,tableEmptyStateRenderer:b,headerDropdown:R,columnEditorConfig:m,icons:g,rowButtons:O}=e,y=t(e,["defaultHeaders","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","tableEmptyStateRenderer","headerDropdown","columnEditorConfig","icons","rowButtons"]);o.pruneRendererCaches(r.collectHeaderAccessors(l));const w=Object.assign(Object.assign({},y),{rows:a,defaultHeaders:l.map(e=>d(e,o)),onRendererHostDiscard:o.disposeHost});if(void 0!==u&&(w.footerRenderer="object"==typeof u?n(o,u):u),void 0!==f)if(i(f))w.emptyStateRenderer=n(o,f);else{const e=f;w.emptyStateRenderer=()=>s(o,e)}if(void 0!==p)if(i(p))w.errorStateRenderer=n(o,p);else{const e=p;w.errorStateRenderer=()=>s(o,e)}if(void 0!==h)if(i(h))w.loadingStateRenderer=n(o,h);else{const e=h;w.loadingStateRenderer=()=>s(o,e)}return void 0!==b&&(w.tableEmptyStateRenderer=null===b?null:b instanceof HTMLElement||"string"==typeof b?b:s(o,b)),void 0!==R&&(w.headerDropdown=n(o,R)),void 0!==m&&(w.columnEditorConfig=function(e,r){const{rowRenderer:o,customRenderer:s}=e,c=t(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},c),o?{rowRenderer:n(r,o)}:{}),s?{customRenderer:n(r,s)}:{})}(m,o)),void 0!==g&&(w.icons=function(e){const r={};for(const[t,n]of Object.entries(e))null!=n&&(r[t]="string"==typeof n||n instanceof HTMLElement||n instanceof SVGElement?n:c(n));return r}(g)),void 0!==O&&(w.rowButtons=O.map(e=>n(o,e))),w}"function"==typeof SuppressedError&&SuppressedError;const a="data-st-mount-id";class u{constructor(){this.entries=new Map,this.nextId=0,this.cellRendererCache=new Map,this.headerRendererCache=new Map,this.disposeHost=e=>{if("function"!=typeof e.getAttribute)return;const r=[],t=e.getAttribute(a);null!==t&&r.push(t),e.querySelectorAll(`[${a}]`).forEach(e=>{const t=e.getAttribute(a);null!==t&&r.push(t)});for(const e of r){const r=this.entries.get(e);r&&(this.entries.delete(e),r())}}}register(e,r){const t="st-mount-"+this.nextId++;e.setAttribute(a,t),this.entries.set(t,r)}clear(){this.cellRendererCache.clear(),this.headerRendererCache.clear();for(const e of this.entries.values())e();this.entries.clear()}pruneRendererCaches(e){for(const r of this.cellRendererCache.keys())e.has(r)||this.cellRendererCache.delete(r);for(const r of this.headerRendererCache.keys())e.has(r)||this.headerRendererCache.delete(r)}get size(){return this.entries.size}}function f(r){const t={};for(const n in r)t[e.camelize(n)]=""===r[n]||r[n];return t}const p=e.defineComponent({name:"SimpleTable",props:{},inheritAttrs:!1,setup(t,{attrs:n,expose:o}){const s=e.ref(null);let c=null;const i=new u;let d,a;return e.onMounted(()=>{if(!s.value)return;const e=f(n);c=new r.SimpleTableVanilla(s.value,l(e,i)),c.mount(),d=e.defaultHeaders,a=e.rows}),e.watch(n,function(){if(!c)return;const e=f(n),t=l(e,i),o=Object.assign({},t),s=r.headersStructurallyEqual(d,e.defaultHeaders);d=e.defaultHeaders,s&&delete o.defaultHeaders;const u=r.rowsShallowUnchanged(a,e.rows,e.getRowId);a=e.rows,u&&delete o.rows,c.update(o)},{deep:!0}),e.onUnmounted(()=>{null==c||c.destroy(),c=null,d=void 0,a=void 0,i.clear()}),o({getAPI:()=>{var e;return null!==(e=null==c?void 0:c.getAPI())&&void 0!==e?e:null}}),()=>e.h("div",{ref:s})}});Object.defineProperty(exports,"PIVOT_ACCESSOR_PREFIX",{enumerable:!0,get:function(){return r.PIVOT_ACCESSOR_PREFIX}}),Object.defineProperty(exports,"PIVOT_BLANK_LABEL",{enumerable:!0,get:function(){return r.PIVOT_BLANK_LABEL}}),Object.defineProperty(exports,"PIVOT_CHILDREN_KEY",{enumerable:!0,get:function(){return r.PIVOT_CHILDREN_KEY}}),Object.defineProperty(exports,"PIVOT_IS_TOTAL_KEY",{enumerable:!0,get:function(){return r.PIVOT_IS_TOTAL_KEY}}),Object.defineProperty(exports,"asRows",{enumerable:!0,get:function(){return r.asRows}}),Object.defineProperty(exports,"buildPivotAccessor",{enumerable:!0,get:function(){return r.buildPivotAccessor}}),Object.defineProperty(exports,"buildPivotRowTotalAccessor",{enumerable:!0,get:function(){return r.buildPivotRowTotalAccessor}}),Object.defineProperty(exports,"pivotRows",{enumerable:!0,get:function(){return r.pivotRows}}),exports.SimpleTable=p;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),r=require("simple-table-core");function n(e,r){var n={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&r.indexOf(t)<0&&(n[t]=e[t]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(t=Object.getOwnPropertySymbols(e);o<t.length;o++)r.indexOf(t[o])<0&&Object.prototype.propertyIsEnumerable.call(e,t[o])&&(n[t[o]]=e[t[o]])}return n}function t(r,n){return t=>{const o=document.createElement("div");return e.render(e.h(n,t),o),r.register(o,()=>e.render(null,o)),o}}function o(r,n,t,o){const s="cell"===t?r.cellRendererCache:r.headerRendererCache,d=s.get(n);if(d)return d.component=o,d.wrapped;const l={component:o,wrapped:null},i=n=>{const t=document.createElement("div");return e.render(e.h(l.component,n),t),r.register(t,()=>e.render(null,t)),t};return l.wrapped=i,s.set(n,l),i}function s(r,n){const t=document.createElement("div");return e.render(n,t),r.register(t,()=>e.render(null,t)),t}function d(r){const n=document.createElement("div");e.render(r,n);const t=n.innerHTML;return e.render(null,n),t}function l(e){return"object"==typeof e||"function"==typeof e}function i(e,r){const{cellRenderer:t,headerRenderer:s,children:d,nestedTable:l}=e,u=n(e,["cellRenderer","headerRenderer","children","nestedTable"]),a=String(e.accessor),p=Object.assign({},u);if(t&&(p.cellRenderer="object"==typeof t?o(r,a,"cell",t):t),s&&(p.headerRenderer="object"==typeof s?o(r,a,"header",s):s),d&&(p.children=d.map(e=>i(e,r))),l){const e=Object.assign(Object.assign({},l),{rows:[]});p.nestedTable=c(e,r)}return p}function u(e){var r;const n=null!==(r=e.columns)&&void 0!==r?r:e.defaultHeaders;if(!n)throw new Error("SimpleTable requires `columns` or `defaultHeaders`");return n}function c(e,o){const{rows:c,footerRenderer:a,emptyStateRenderer:p,errorStateRenderer:f,loadingStateRenderer:m,tableEmptyStateRenderer:R,headerDropdown:h,columnEditorConfig:b,icons:g,rowButtons:O,enableColumnEditor:w,editColumns:v,enableColumnEditorInitOpen:y,editColumnsInitOpen:E,enablePagination:C,shouldPaginate:S,onTableReady:P,onGridReady:j,hoverRowBackground:T,useHoverRowBackground:I,oddColumnBackground:B,useOddColumnBackground:A,oddEvenRowBackground:_,useOddEvenRowBackground:k}=e,H=n(e,["defaultHeaders","columns","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","tableEmptyStateRenderer","headerDropdown","columnEditorConfig","icons","rowButtons","enableColumnEditor","editColumns","enableColumnEditorInitOpen","editColumnsInitOpen","enablePagination","shouldPaginate","onTableReady","onGridReady","hoverRowBackground","useHoverRowBackground","oddColumnBackground","useOddColumnBackground","oddEvenRowBackground","useOddEvenRowBackground"]),x=u(e);o.pruneRendererCaches(r.collectHeaderAccessors(x));const L=Object.assign(Object.assign({},H),{rows:c,defaultHeaders:x.map(e=>i(e,o)),editColumns:null!=w?w:v,editColumnsInitOpen:null!=y?y:E,shouldPaginate:null!=C?C:S,onGridReady:null!=P?P:j,useHoverRowBackground:null!=T?T:I,useOddColumnBackground:null!=B?B:A,useOddEvenRowBackground:null!=_?_:k,onRendererHostDiscard:o.disposeHost});if(void 0!==a&&(L.footerRenderer="object"==typeof a?t(o,a):a),void 0!==p)if(l(p))L.emptyStateRenderer=t(o,p);else{const e=p;L.emptyStateRenderer=()=>s(o,e)}if(void 0!==f)if(l(f))L.errorStateRenderer=t(o,f);else{const e=f;L.errorStateRenderer=()=>s(o,e)}if(void 0!==m)if(l(m))L.loadingStateRenderer=t(o,m);else{const e=m;L.loadingStateRenderer=()=>s(o,e)}return void 0!==R&&(L.tableEmptyStateRenderer=null===R?null:R instanceof HTMLElement||"string"==typeof R?R:s(o,R)),void 0!==h&&(L.headerDropdown=t(o,h)),void 0!==b&&(L.columnEditorConfig=function(e,r){const{rowRenderer:o,customRenderer:s}=e,d=n(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},d),o?{rowRenderer:t(r,o)}:{}),s?{customRenderer:t(r,s)}:{})}(b,o)),void 0!==g&&(L.icons=function(e){const r={};for(const[n,t]of Object.entries(e))null!=t&&(r[n]="string"==typeof t||t instanceof HTMLElement||t instanceof SVGElement?t:d(t));return r}(g)),void 0!==O&&(L.rowButtons=O.map(e=>t(o,e))),L}"function"==typeof SuppressedError&&SuppressedError;const a="data-st-mount-id";class p{constructor(){this.entries=new Map,this.nextId=0,this.cellRendererCache=new Map,this.headerRendererCache=new Map,this.disposeHost=e=>{if("function"!=typeof e.getAttribute)return;const r=[],n=e.getAttribute(a);null!==n&&r.push(n),e.querySelectorAll(`[${a}]`).forEach(e=>{const n=e.getAttribute(a);null!==n&&r.push(n)});for(const e of r){const r=this.entries.get(e);r&&(this.entries.delete(e),r())}}}register(e,r){const n="st-mount-"+this.nextId++;e.setAttribute(a,n),this.entries.set(n,r)}clear(){this.cellRendererCache.clear(),this.headerRendererCache.clear();for(const e of this.entries.values())e();this.entries.clear()}pruneRendererCaches(e){for(const r of this.cellRendererCache.keys())e.has(r)||this.cellRendererCache.delete(r);for(const r of this.headerRendererCache.keys())e.has(r)||this.headerRendererCache.delete(r)}get size(){return this.entries.size}}function f(r){const n={};for(const t in r)n[e.camelize(t)]=""===r[t]||r[t];return n}const m=e.defineComponent({name:"SimpleTable",props:{},inheritAttrs:!1,setup(n,{attrs:t,expose:o}){const s=e.ref(null);let d=null;const l=new p;let i,a;return e.onMounted(()=>{if(!s.value)return;const e=f(t);d=new r.SimpleTableVanilla(s.value,c(e,l)),d.mount(),i=u(e),a=e.rows}),e.watch(t,function(){if(!d)return;const e=f(t),n=c(e,l),o=Object.assign({},n),s=u(e),p=r.headersStructurallyEqual(i,s);i=s,p&&delete o.defaultHeaders;const m=r.rowsShallowUnchanged(a,e.rows,e.getRowId);a=e.rows,m&&delete o.rows,d.update(o)},{deep:!0}),e.onUnmounted(()=>{null==d||d.destroy(),d=null,i=void 0,a=void 0,l.clear()}),o({getAPI:()=>{var e;return null!==(e=null==d?void 0:d.getAPI())&&void 0!==e?e:null}}),()=>e.h("div",{ref:s})}});Object.defineProperty(exports,"PIVOT_ACCESSOR_PREFIX",{enumerable:!0,get:function(){return r.PIVOT_ACCESSOR_PREFIX}}),Object.defineProperty(exports,"PIVOT_BLANK_LABEL",{enumerable:!0,get:function(){return r.PIVOT_BLANK_LABEL}}),Object.defineProperty(exports,"PIVOT_CHILDREN_KEY",{enumerable:!0,get:function(){return r.PIVOT_CHILDREN_KEY}}),Object.defineProperty(exports,"PIVOT_IS_TOTAL_KEY",{enumerable:!0,get:function(){return r.PIVOT_IS_TOTAL_KEY}}),Object.defineProperty(exports,"asRows",{enumerable:!0,get:function(){return r.asRows}}),Object.defineProperty(exports,"buildPivotAccessor",{enumerable:!0,get:function(){return r.buildPivotAccessor}}),Object.defineProperty(exports,"buildPivotRowTotalAccessor",{enumerable:!0,get:function(){return r.buildPivotRowTotalAccessor}}),Object.defineProperty(exports,"pivotRows",{enumerable:!0,get:function(){return r.pivotRows}}),exports.SimpleTable=m;
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.es.js CHANGED
@@ -1,2 +1,2 @@
1
- import{render as e,h as t,defineComponent as r,ref as n,onMounted as o,watch as s,onUnmounted as c,camelize as i}from"vue";import{collectHeaderAccessors as d,SimpleTableVanilla as l,headersStructurallyEqual as a,rowsShallowUnchanged as u}from"simple-table-core";export{PIVOT_ACCESSOR_PREFIX,PIVOT_BLANK_LABEL,PIVOT_CHILDREN_KEY,PIVOT_IS_TOTAL_KEY,asRows,buildPivotAccessor,buildPivotRowTotalAccessor,pivotRows}from"simple-table-core";function f(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r}function p(r,n){return o=>{const s=document.createElement("div");return e(t(n,o),s),r.register(s,()=>e(null,s)),s}}function h(r,n,o,s){const c="cell"===o?r.cellRendererCache:r.headerRendererCache,i=c.get(n);if(i)return i.component=s,i.wrapped;const d={component:s,wrapped:null},l=n=>{const o=document.createElement("div");return e(t(d.component,n),o),r.register(o,()=>e(null,o)),o};return d.wrapped=l,c.set(n,d),l}function R(t,r){const n=document.createElement("div");return e(r,n),t.register(n,()=>e(null,n)),n}function m(t){const r=document.createElement("div");e(t,r);const n=r.innerHTML;return e(null,r),n}function b(e){return"object"==typeof e||"function"==typeof e}function g(e,t){const{cellRenderer:r,headerRenderer:n,children:o,nestedTable:s}=e,c=f(e,["cellRenderer","headerRenderer","children","nestedTable"]),i=String(e.accessor),d=Object.assign({},c);if(r&&(d.cellRenderer="object"==typeof r?h(t,i,"cell",r):r),n&&(d.headerRenderer="object"==typeof n?h(t,i,"header",n):n),o&&(d.children=o.map(e=>g(e,t))),s){const e=Object.assign(Object.assign({},s),{rows:[]});d.nestedTable=w(e,t)}return d}function w(e,t){const{defaultHeaders:r,rows:n,footerRenderer:o,emptyStateRenderer:s,errorStateRenderer:c,loadingStateRenderer:i,tableEmptyStateRenderer:l,headerDropdown:a,columnEditorConfig:u,icons:h,rowButtons:w}=e,v=f(e,["defaultHeaders","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","tableEmptyStateRenderer","headerDropdown","columnEditorConfig","icons","rowButtons"]);t.pruneRendererCaches(d(r));const y=Object.assign(Object.assign({},v),{rows:n,defaultHeaders:r.map(e=>g(e,t)),onRendererHostDiscard:t.disposeHost});if(void 0!==o&&(y.footerRenderer="object"==typeof o?p(t,o):o),void 0!==s)if(b(s))y.emptyStateRenderer=p(t,s);else{const e=s;y.emptyStateRenderer=()=>R(t,e)}if(void 0!==c)if(b(c))y.errorStateRenderer=p(t,c);else{const e=c;y.errorStateRenderer=()=>R(t,e)}if(void 0!==i)if(b(i))y.loadingStateRenderer=p(t,i);else{const e=i;y.loadingStateRenderer=()=>R(t,e)}return void 0!==l&&(y.tableEmptyStateRenderer=null===l?null:l instanceof HTMLElement||"string"==typeof l?l:R(t,l)),void 0!==a&&(y.headerDropdown=p(t,a)),void 0!==u&&(y.columnEditorConfig=function(e,t){const{rowRenderer:r,customRenderer:n}=e,o=f(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},o),r?{rowRenderer:p(t,r)}:{}),n?{customRenderer:p(t,n)}:{})}(u,t)),void 0!==h&&(y.icons=function(e){const t={};for(const[r,n]of Object.entries(e))null!=n&&(t[r]="string"==typeof n||n instanceof HTMLElement||n instanceof SVGElement?n:m(n));return t}(h)),void 0!==w&&(y.rowButtons=w.map(e=>p(t,e))),y}"function"==typeof SuppressedError&&SuppressedError;const v="data-st-mount-id";class y{constructor(){this.entries=new Map,this.nextId=0,this.cellRendererCache=new Map,this.headerRendererCache=new Map,this.disposeHost=e=>{if("function"!=typeof e.getAttribute)return;const t=[],r=e.getAttribute(v);null!==r&&t.push(r),e.querySelectorAll(`[${v}]`).forEach(e=>{const r=e.getAttribute(v);null!==r&&t.push(r)});for(const e of t){const t=this.entries.get(e);t&&(this.entries.delete(e),t())}}}register(e,t){const r="st-mount-"+this.nextId++;e.setAttribute(v,r),this.entries.set(r,t)}clear(){this.cellRendererCache.clear(),this.headerRendererCache.clear();for(const e of this.entries.values())e();this.entries.clear()}pruneRendererCaches(e){for(const t of this.cellRendererCache.keys())e.has(t)||this.cellRendererCache.delete(t);for(const t of this.headerRendererCache.keys())e.has(t)||this.headerRendererCache.delete(t)}get size(){return this.entries.size}}function S(e){const t={};for(const r in e)t[i(r)]=""===e[r]||e[r];return t}const O=r({name:"SimpleTable",props:{},inheritAttrs:!1,setup(e,{attrs:r,expose:i}){const d=n(null);let f=null;const p=new y;let h,R;return o(()=>{if(!d.value)return;const e=S(r);f=new l(d.value,w(e,p)),f.mount(),h=e.defaultHeaders,R=e.rows}),s(r,function(){if(!f)return;const e=S(r),t=w(e,p),n=Object.assign({},t),o=a(h,e.defaultHeaders);h=e.defaultHeaders,o&&delete n.defaultHeaders;const s=u(R,e.rows,e.getRowId);R=e.rows,s&&delete n.rows,f.update(n)},{deep:!0}),c(()=>{null==f||f.destroy(),f=null,h=void 0,R=void 0,p.clear()}),i({getAPI:()=>{var e;return null!==(e=null==f?void 0:f.getAPI())&&void 0!==e?e:null}}),()=>t("div",{ref:d})}});export{O as SimpleTable};
1
+ import{render as e,h as n,defineComponent as t,ref as r,onMounted as o,watch as s,onUnmounted as d,camelize as l}from"vue";import{collectHeaderAccessors as i,SimpleTableVanilla as c,headersStructurallyEqual as a,rowsShallowUnchanged as u}from"simple-table-core";export{PIVOT_ACCESSOR_PREFIX,PIVOT_BLANK_LABEL,PIVOT_CHILDREN_KEY,PIVOT_IS_TOTAL_KEY,asRows,buildPivotAccessor,buildPivotRowTotalAccessor,pivotRows}from"simple-table-core";function f(e,n){var t={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&n.indexOf(r)<0&&(t[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)n.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(t[r[o]]=e[r[o]])}return t}function p(t,r){return o=>{const s=document.createElement("div");return e(n(r,o),s),t.register(s,()=>e(null,s)),s}}function R(t,r,o,s){const d="cell"===o?t.cellRendererCache:t.headerRendererCache,l=d.get(r);if(l)return l.component=s,l.wrapped;const i={component:s,wrapped:null},c=r=>{const o=document.createElement("div");return e(n(i.component,r),o),t.register(o,()=>e(null,o)),o};return i.wrapped=c,d.set(r,i),c}function m(n,t){const r=document.createElement("div");return e(t,r),n.register(r,()=>e(null,r)),r}function h(n){const t=document.createElement("div");e(n,t);const r=t.innerHTML;return e(null,t),r}function g(e){return"object"==typeof e||"function"==typeof e}function b(e,n){const{cellRenderer:t,headerRenderer:r,children:o,nestedTable:s}=e,d=f(e,["cellRenderer","headerRenderer","children","nestedTable"]),l=String(e.accessor),i=Object.assign({},d);if(t&&(i.cellRenderer="object"==typeof t?R(n,l,"cell",t):t),r&&(i.headerRenderer="object"==typeof r?R(n,l,"header",r):r),o&&(i.children=o.map(e=>b(e,n))),s){const e=Object.assign(Object.assign({},s),{rows:[]});i.nestedTable=v(e,n)}return i}function w(e){var n;const t=null!==(n=e.columns)&&void 0!==n?n:e.defaultHeaders;if(!t)throw new Error("SimpleTable requires `columns` or `defaultHeaders`");return t}function v(e,n){const{rows:t,footerRenderer:r,emptyStateRenderer:o,errorStateRenderer:s,loadingStateRenderer:d,tableEmptyStateRenderer:l,headerDropdown:c,columnEditorConfig:a,icons:u,rowButtons:R,enableColumnEditor:v,editColumns:O,enableColumnEditorInitOpen:y,editColumnsInitOpen:C,enablePagination:E,shouldPaginate:S,onTableReady:B,onGridReady:j,hoverRowBackground:I,useHoverRowBackground:k,oddColumnBackground:P,useOddColumnBackground:T,oddEvenRowBackground:H,useOddEvenRowBackground:A}=e,_=f(e,["defaultHeaders","columns","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","tableEmptyStateRenderer","headerDropdown","columnEditorConfig","icons","rowButtons","enableColumnEditor","editColumns","enableColumnEditorInitOpen","editColumnsInitOpen","enablePagination","shouldPaginate","onTableReady","onGridReady","hoverRowBackground","useHoverRowBackground","oddColumnBackground","useOddColumnBackground","oddEvenRowBackground","useOddEvenRowBackground"]),L=w(e);n.pruneRendererCaches(i(L));const x=Object.assign(Object.assign({},_),{rows:t,defaultHeaders:L.map(e=>b(e,n)),editColumns:null!=v?v:O,editColumnsInitOpen:null!=y?y:C,shouldPaginate:null!=E?E:S,onGridReady:null!=B?B:j,useHoverRowBackground:null!=I?I:k,useOddColumnBackground:null!=P?P:T,useOddEvenRowBackground:null!=H?H:A,onRendererHostDiscard:n.disposeHost});if(void 0!==r&&(x.footerRenderer="object"==typeof r?p(n,r):r),void 0!==o)if(g(o))x.emptyStateRenderer=p(n,o);else{const e=o;x.emptyStateRenderer=()=>m(n,e)}if(void 0!==s)if(g(s))x.errorStateRenderer=p(n,s);else{const e=s;x.errorStateRenderer=()=>m(n,e)}if(void 0!==d)if(g(d))x.loadingStateRenderer=p(n,d);else{const e=d;x.loadingStateRenderer=()=>m(n,e)}return void 0!==l&&(x.tableEmptyStateRenderer=null===l?null:l instanceof HTMLElement||"string"==typeof l?l:m(n,l)),void 0!==c&&(x.headerDropdown=p(n,c)),void 0!==a&&(x.columnEditorConfig=function(e,n){const{rowRenderer:t,customRenderer:r}=e,o=f(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},o),t?{rowRenderer:p(n,t)}:{}),r?{customRenderer:p(n,r)}:{})}(a,n)),void 0!==u&&(x.icons=function(e){const n={};for(const[t,r]of Object.entries(e))null!=r&&(n[t]="string"==typeof r||r instanceof HTMLElement||r instanceof SVGElement?r:h(r));return n}(u)),void 0!==R&&(x.rowButtons=R.map(e=>p(n,e))),x}"function"==typeof SuppressedError&&SuppressedError;const O="data-st-mount-id";class y{constructor(){this.entries=new Map,this.nextId=0,this.cellRendererCache=new Map,this.headerRendererCache=new Map,this.disposeHost=e=>{if("function"!=typeof e.getAttribute)return;const n=[],t=e.getAttribute(O);null!==t&&n.push(t),e.querySelectorAll(`[${O}]`).forEach(e=>{const t=e.getAttribute(O);null!==t&&n.push(t)});for(const e of n){const n=this.entries.get(e);n&&(this.entries.delete(e),n())}}}register(e,n){const t="st-mount-"+this.nextId++;e.setAttribute(O,t),this.entries.set(t,n)}clear(){this.cellRendererCache.clear(),this.headerRendererCache.clear();for(const e of this.entries.values())e();this.entries.clear()}pruneRendererCaches(e){for(const n of this.cellRendererCache.keys())e.has(n)||this.cellRendererCache.delete(n);for(const n of this.headerRendererCache.keys())e.has(n)||this.headerRendererCache.delete(n)}get size(){return this.entries.size}}function C(e){const n={};for(const t in e)n[l(t)]=""===e[t]||e[t];return n}const E=t({name:"SimpleTable",props:{},inheritAttrs:!1,setup(e,{attrs:t,expose:l}){const i=r(null);let f=null;const p=new y;let R,m;return o(()=>{if(!i.value)return;const e=C(t);f=new c(i.value,v(e,p)),f.mount(),R=w(e),m=e.rows}),s(t,function(){if(!f)return;const e=C(t),n=v(e,p),r=Object.assign({},n),o=w(e),s=a(R,o);R=o,s&&delete r.defaultHeaders;const d=u(m,e.rows,e.getRowId);m=e.rows,d&&delete r.rows,f.update(r)},{deep:!0}),d(()=>{null==f||f.destroy(),f=null,R=void 0,m=void 0,p.clear()}),l({getAPI:()=>{var e;return null!==(e=null==f?void 0:f.getAPI())&&void 0!==e?e:null}}),()=>n("div",{ref:i})}});export{E as SimpleTable};
2
2
  //# sourceMappingURL=index.es.js.map
@@ -1,15 +1,15 @@
1
- export type CachedRendererSlot<T = unknown> = {
2
- component: T;
3
- wrapped: unknown;
4
- };
5
- export declare class MountRegistry {
6
- private entries;
7
- private nextId;
8
- readonly cellRendererCache: Map<string, CachedRendererSlot<unknown>>;
9
- readonly headerRendererCache: Map<string, CachedRendererSlot<unknown>>;
10
- register(container: HTMLElement, dispose: () => void): void;
11
- disposeHost: (host: HTMLElement) => void;
12
- clear(): void;
13
- pruneRendererCaches(liveAccessors: ReadonlySet<string>): void;
14
- get size(): number;
15
- }
1
+ export type CachedRendererSlot<T = unknown> = {
2
+ component: T;
3
+ wrapped: unknown;
4
+ };
5
+ export declare class MountRegistry {
6
+ private entries;
7
+ private nextId;
8
+ readonly cellRendererCache: Map<string, CachedRendererSlot<unknown>>;
9
+ readonly headerRendererCache: Map<string, CachedRendererSlot<unknown>>;
10
+ register(container: HTMLElement, dispose: () => void): void;
11
+ disposeHost: (host: HTMLElement) => void;
12
+ clear(): void;
13
+ pruneRendererCaches(liveAccessors: ReadonlySet<string>): void;
14
+ get size(): number;
15
+ }
@@ -1,4 +1,4 @@
1
- declare const SimpleTable: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
2
- [key: string]: any;
3
- }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
4
- export default SimpleTable;
1
+ declare const SimpleTable: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
2
+ [key: string]: any;
3
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
4
+ export default SimpleTable;
@@ -0,0 +1,6 @@
1
+ import type { SimpleTableConfig, HeaderObject } from "simple-table-core";
2
+ import type { SimpleTableVueProps, VueHeaderObject } from "./types";
3
+ import type { MountRegistry } from "./MountRegistry";
4
+ /** Resolve preferred `columns` or legacy `defaultHeaders`. */
5
+ export declare function resolveVueColumns(config: Pick<SimpleTableVueProps, "columns" | "defaultHeaders">): ReadonlyArray<HeaderObject | VueHeaderObject>;
6
+ export declare function buildVanillaConfig(config: SimpleTableVueProps, registry: MountRegistry): SimpleTableConfig;
@@ -0,0 +1,5 @@
1
+ export { default as SimpleTable } from "./SimpleTable";
2
+ export { asRows } from "simple-table-core";
3
+ export type { SimpleTableVueProps, TableInstance, VueHeaderObject, VueColumnDef, VueColumnEditorConfig, VueIconsConfig, VueIconElement, VueCellRenderer, VueHeaderRenderer, VueFooterRenderer, VueHeaderDropdown, VueColumnEditorRowRenderer, VueColumnEditorCustomRenderer, VueRowButton, VueLoadingStateRenderer, VueErrorStateRenderer, VueEmptyStateRenderer, } from "./types";
4
+ export type { Accessor, AggregationConfig, AggregationType, AnimationsConfig, AutoSizeMode, ColumnDef, Cell, CellChangeProps, CellClickProps, CellRenderer, CellRendererProps, CellValue, ChartOptions, ColumnEditorConfig, ColumnEditorRowRenderer, ColumnEditorRowRendererComponents, ColumnEditorCustomRenderer, ColumnEditorCustomRendererProps, ColumnEditorRowRendererProps, ColumnEditorSearchFunction, ColumnType, ColumnVisibilityState, Comparator, ComparatorProps, CustomTheme, CustomThemeProps, EmptyStateRenderer, EmptyStateRendererProps, EnumOption, ErrorStateRenderer, ErrorStateRendererProps, ExportToCSVProps, ExportValueGetter, ExportValueProps, FilterCondition, FilterOperator, StringFilterOperator, NumberFilterOperator, BooleanFilterOperator, DateFilterOperator, EnumFilterOperator, FooterRendererProps, FooterPosition, GetRowId, GetRowIdParams, HeaderDropdown, HeaderDropdownProps, HeaderObject, HeaderRenderer, HeaderRendererComponents, HeaderRendererProps, IconsConfig, LoadingStateRenderer, LoadingStateRendererProps, OnRowGroupExpandProps, Pinned, PinnedSectionsState, PivotConfig, PivotValueConfig, PivotResult, QuickFilterConfig, QuickFilterGetter, QuickFilterGetterProps, QuickFilterMode, Row, RowButtonProps, RowId, RowSelectionChangeProps, RowSelectionMode, RowState, SetHeaderRenameProps, ShowWhen, SimpleTableConfig, SimpleTableProps, SortColumn, TableAPI, TableFilterState, TableRow, Theme, UpdateDataProps, ValueFormatter, ValueFormatterProps, ValueGetter, ValueGetterProps, } from "simple-table-core";
5
+ export { pivotRows, buildPivotAccessor, buildPivotRowTotalAccessor, PIVOT_CHILDREN_KEY, PIVOT_IS_TOTAL_KEY, PIVOT_ACCESSOR_PREFIX, PIVOT_BLANK_LABEL, } from "simple-table-core";
@@ -1,63 +1,71 @@
1
- import type { Component, VNode } from "vue";
2
- import type { SimpleTableProps, SimpleTableConfig, HeaderObject, Row, TableAPI, CellRendererProps, HeaderRendererProps, FooterRendererProps, LoadingStateRendererProps, ErrorStateRendererProps, EmptyStateRendererProps, HeaderDropdownProps, ColumnEditorRowRendererProps, ColumnEditorCustomRendererProps, ColumnEditorConfig, RowButtonProps } from "simple-table-core";
3
- export interface TableInstance {
4
- mount(): void;
5
- update(config: Partial<SimpleTableConfig>): void;
6
- destroy(): void;
7
- getAPI(): TableAPI;
8
- }
9
- export type VueIconElement = VNode;
10
- export interface VueIconsConfig {
11
- drag?: VueIconElement;
12
- expand?: VueIconElement;
13
- filter?: VueIconElement;
14
- headerCollapse?: VueIconElement;
15
- headerExpand?: VueIconElement;
16
- next?: VueIconElement;
17
- prev?: VueIconElement;
18
- sortDown?: VueIconElement;
19
- sortUp?: VueIconElement;
20
- pinnedLeftIcon?: VueIconElement;
21
- pinnedRightIcon?: VueIconElement;
22
- }
23
- export type VueCellRenderer = Component<CellRendererProps>;
24
- export type VueHeaderRenderer = Component<HeaderRendererProps>;
25
- export type VueFooterRenderer = Component<FooterRendererProps>;
26
- export type VueHeaderDropdown = Component<HeaderDropdownProps>;
27
- export type VueColumnEditorRowRenderer = Component<ColumnEditorRowRendererProps>;
28
- export type VueColumnEditorCustomRenderer = Component<ColumnEditorCustomRendererProps>;
29
- export type VueRowButton = Component<RowButtonProps>;
30
- export type VueLoadingStateRenderer = Component<LoadingStateRendererProps> | VNode;
31
- export type VueErrorStateRenderer = Component<ErrorStateRendererProps> | VNode;
32
- export type VueEmptyStateRenderer = Component<EmptyStateRendererProps> | VNode;
33
- export interface VueColumnEditorConfig extends Omit<ColumnEditorConfig, "rowRenderer" | "customRenderer"> {
34
- rowRenderer?: VueColumnEditorRowRenderer;
35
- customRenderer?: VueColumnEditorCustomRenderer;
36
- }
37
- /**
38
- * Column definition for `defaultHeaders`: core column metadata with Vue-only
39
- * `cellRenderer` / `headerRenderer` / `children` / `nestedTable`.
40
- * `defaultHeaders` also accepts plain `HeaderObject[]` from shared configs.
41
- */
42
- export interface VueHeaderObject extends Omit<HeaderObject, "cellRenderer" | "headerRenderer" | "children" | "nestedTable"> {
43
- cellRenderer?: VueCellRenderer;
44
- headerRenderer?: VueHeaderRenderer;
45
- children?: VueHeaderObject[];
46
- nestedTable?: Omit<SimpleTableVueProps, "rows" | "loadingStateRenderer" | "errorStateRenderer" | "emptyStateRenderer" | "tableEmptyStateRenderer">;
47
- }
48
- export interface SimpleTableVueProps extends Omit<SimpleTableProps, "rows" | "defaultHeaders" | "footerRenderer" | "emptyStateRenderer" | "errorStateRenderer" | "loadingStateRenderer" | "tableEmptyStateRenderer" | "headerDropdown" | "columnEditorConfig" | "icons" | "rowButtons"> {
49
- defaultHeaders: ReadonlyArray<HeaderObject | VueHeaderObject>;
50
- /** Row data: domain objects or core `Row[]`; cast inside the adapter. */
51
- rows: ReadonlyArray<Row> | ReadonlyArray<object>;
52
- footerRenderer?: VueFooterRenderer;
53
- loadingStateRenderer?: VueLoadingStateRenderer;
54
- errorStateRenderer?: VueErrorStateRenderer;
55
- emptyStateRenderer?: VueEmptyStateRenderer;
56
- tableEmptyStateRenderer?: VNode | HTMLElement | string | null;
57
- headerDropdown?: VueHeaderDropdown;
58
- columnEditorConfig?: VueColumnEditorConfig;
59
- icons?: VueIconsConfig;
60
- /** Per-row action buttons; each entry is a Vue component rendered into the row's selection column. */
61
- rowButtons?: VueRowButton[];
62
- }
63
- export type { CellRendererProps, HeaderRendererProps, FooterRendererProps, LoadingStateRendererProps, ErrorStateRendererProps, EmptyStateRendererProps, HeaderDropdownProps, ColumnEditorRowRendererProps, ColumnEditorCustomRendererProps, };
1
+ import type { Component, VNode } from "vue";
2
+ import type { SimpleTableProps, SimpleTableConfig, HeaderObject, Row, TableAPI, CellRendererProps, HeaderRendererProps, FooterRendererProps, LoadingStateRendererProps, ErrorStateRendererProps, EmptyStateRendererProps, HeaderDropdownProps, ColumnEditorRowRendererProps, ColumnEditorCustomRendererProps, ColumnEditorConfig, RowButtonProps } from "simple-table-core";
3
+ export interface TableInstance {
4
+ mount(): void;
5
+ update(config: Partial<SimpleTableConfig>): void;
6
+ destroy(): void;
7
+ getAPI(): TableAPI;
8
+ }
9
+ export type VueIconElement = VNode;
10
+ export interface VueIconsConfig {
11
+ drag?: VueIconElement;
12
+ expand?: VueIconElement;
13
+ filter?: VueIconElement;
14
+ headerCollapse?: VueIconElement;
15
+ headerExpand?: VueIconElement;
16
+ next?: VueIconElement;
17
+ prev?: VueIconElement;
18
+ sortDown?: VueIconElement;
19
+ sortUp?: VueIconElement;
20
+ pinnedLeftIcon?: VueIconElement;
21
+ pinnedRightIcon?: VueIconElement;
22
+ }
23
+ export type VueCellRenderer = Component<CellRendererProps>;
24
+ export type VueHeaderRenderer = Component<HeaderRendererProps>;
25
+ export type VueFooterRenderer = Component<FooterRendererProps>;
26
+ export type VueHeaderDropdown = Component<HeaderDropdownProps>;
27
+ export type VueColumnEditorRowRenderer = Component<ColumnEditorRowRendererProps>;
28
+ export type VueColumnEditorCustomRenderer = Component<ColumnEditorCustomRendererProps>;
29
+ export type VueRowButton = Component<RowButtonProps>;
30
+ export type VueLoadingStateRenderer = Component<LoadingStateRendererProps> | VNode;
31
+ export type VueErrorStateRenderer = Component<ErrorStateRendererProps> | VNode;
32
+ export type VueEmptyStateRenderer = Component<EmptyStateRendererProps> | VNode;
33
+ export interface VueColumnEditorConfig extends Omit<ColumnEditorConfig, "rowRenderer" | "customRenderer"> {
34
+ rowRenderer?: VueColumnEditorRowRenderer;
35
+ customRenderer?: VueColumnEditorCustomRenderer;
36
+ }
37
+ /**
38
+ * Column definition for `columns` / `defaultHeaders`: core column metadata with
39
+ * Vue-only `cellRenderer` / `headerRenderer` / `children` / `nestedTable`.
40
+ * `columns` / `defaultHeaders` also accept plain `HeaderObject[]` from shared configs.
41
+ */
42
+ export interface VueHeaderObject extends Omit<HeaderObject, "cellRenderer" | "headerRenderer" | "children" | "nestedTable"> {
43
+ cellRenderer?: VueCellRenderer;
44
+ headerRenderer?: VueHeaderRenderer;
45
+ children?: VueHeaderObject[];
46
+ nestedTable?: Omit<SimpleTableVueProps, "rows" | "loadingStateRenderer" | "errorStateRenderer" | "emptyStateRenderer" | "tableEmptyStateRenderer">;
47
+ }
48
+ /** Preferred name for Vue column definitions. Alias of {@link VueHeaderObject}. */
49
+ export type VueColumnDef = VueHeaderObject;
50
+ export interface SimpleTableVueProps extends Omit<SimpleTableProps, "rows" | "defaultHeaders" | "columns" | "footerRenderer" | "emptyStateRenderer" | "errorStateRenderer" | "loadingStateRenderer" | "tableEmptyStateRenderer" | "headerDropdown" | "columnEditorConfig" | "icons" | "rowButtons"> {
51
+ /**
52
+ * Column definitions.
53
+ * @deprecated Prefer {@link columns}
54
+ */
55
+ defaultHeaders?: ReadonlyArray<HeaderObject | VueHeaderObject>;
56
+ /** Column definitions. Preferred over `defaultHeaders`. */
57
+ columns?: ReadonlyArray<HeaderObject | VueHeaderObject>;
58
+ /** Row data: domain objects or core `Row[]`; cast inside the adapter. */
59
+ rows: ReadonlyArray<Row> | ReadonlyArray<object>;
60
+ footerRenderer?: VueFooterRenderer;
61
+ loadingStateRenderer?: VueLoadingStateRenderer;
62
+ errorStateRenderer?: VueErrorStateRenderer;
63
+ emptyStateRenderer?: VueEmptyStateRenderer;
64
+ tableEmptyStateRenderer?: VNode | HTMLElement | string | null;
65
+ headerDropdown?: VueHeaderDropdown;
66
+ columnEditorConfig?: VueColumnEditorConfig;
67
+ icons?: VueIconsConfig;
68
+ /** Per-row action buttons; each entry is a Vue component rendered into the row's selection column. */
69
+ rowButtons?: VueRowButton[];
70
+ }
71
+ export type { CellRendererProps, HeaderRendererProps, FooterRendererProps, LoadingStateRendererProps, ErrorStateRendererProps, EmptyStateRendererProps, HeaderDropdownProps, ColumnEditorRowRendererProps, ColumnEditorCustomRendererProps, };
@@ -1,29 +1,29 @@
1
- import { type Component, type VNode } from "vue";
2
- import type { MountRegistry } from "../MountRegistry";
3
- /**
4
- * Wraps a Vue 3 component into a function that returns an HTMLElement, matching
5
- * the vanilla renderer contract expected by simple-table-core.
6
- *
7
- * Uses Vue 3's low-level render() + h() which is synchronous, so the element
8
- * is fully populated before it is returned to the vanilla rendering pipeline.
9
- * The mount is registered so core's `onRendererHostDiscard` can unmount it
10
- * (including any `<Teleport>` / floating UI) when the host is discarded.
11
- */
12
- export declare function wrapVueRenderer<P extends object>(registry: MountRegistry, component: Component): (props: P) => HTMLElement;
13
- /**
14
- * Like {@link wrapVueRenderer}, but reuses one wrapper per accessor so
15
- * unstable column rebuilds keep a stable function identity on HeaderObject.
16
- */
17
- export declare function wrapCachedVueRenderer<P extends object>(registry: MountRegistry, accessor: string, kind: "cell" | "header", component: Component): (props: P) => HTMLElement;
18
- /**
19
- * Renders a static VNode into an HTMLElement.
20
- * Used for props like tableEmptyStateRenderer that are not called with arguments.
21
- */
22
- export declare function wrapVueNode(registry: MountRegistry, node: VNode): HTMLElement;
23
- /**
24
- * Converts a VNode to an HTML string.
25
- * Used for icon props where vanilla expects string | HTMLElement | SVGSVGElement.
26
- */
27
- export declare function vueNodeToHtmlString(node: VNode): string;
28
- /** Returns true if the value is a Vue component (object or function). */
29
- export declare function isVueComponent(value: unknown): value is Component;
1
+ import { type Component, type VNode } from "vue";
2
+ import type { MountRegistry } from "../MountRegistry";
3
+ /**
4
+ * Wraps a Vue 3 component into a function that returns an HTMLElement, matching
5
+ * the vanilla renderer contract expected by simple-table-core.
6
+ *
7
+ * Uses Vue 3's low-level render() + h() which is synchronous, so the element
8
+ * is fully populated before it is returned to the vanilla rendering pipeline.
9
+ * The mount is registered so core's `onRendererHostDiscard` can unmount it
10
+ * (including any `<Teleport>` / floating UI) when the host is discarded.
11
+ */
12
+ export declare function wrapVueRenderer<P extends object>(registry: MountRegistry, component: Component): (props: P) => HTMLElement;
13
+ /**
14
+ * Like {@link wrapVueRenderer}, but reuses one wrapper per accessor so
15
+ * unstable column rebuilds keep a stable function identity on HeaderObject.
16
+ */
17
+ export declare function wrapCachedVueRenderer<P extends object>(registry: MountRegistry, accessor: string, kind: "cell" | "header", component: Component): (props: P) => HTMLElement;
18
+ /**
19
+ * Renders a static VNode into an HTMLElement.
20
+ * Used for props like tableEmptyStateRenderer that are not called with arguments.
21
+ */
22
+ export declare function wrapVueNode(registry: MountRegistry, node: VNode): HTMLElement;
23
+ /**
24
+ * Converts a VNode to an HTML string.
25
+ * Used for icon props where vanilla expects string | HTMLElement | SVGSVGElement.
26
+ */
27
+ export declare function vueNodeToHtmlString(node: VNode): string;
28
+ /** Returns true if the value is a Vue component (object or function). */
29
+ export declare function isVueComponent(value: unknown): value is Component;
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@simple-table/vue",
3
- "version": "4.0.0",
3
+ "version": "4.0.2",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/index.es.js",
6
- "types": "dist/types/vue/src/index.d.ts",
6
+ "types": "dist/types/index.d.ts",
7
7
  "sideEffects": [
8
8
  "*.css",
9
9
  "**/*.css"
@@ -12,9 +12,12 @@
12
12
  ".": {
13
13
  "import": "./dist/index.es.js",
14
14
  "require": "./dist/cjs/index.js",
15
- "types": "./dist/types/vue/src/index.d.ts"
15
+ "types": "./dist/types/index.d.ts"
16
16
  },
17
- "./styles.css": "./dist/styles.css"
17
+ "./styles.css": {
18
+ "types": "./styles.css.d.ts",
19
+ "default": "./dist/styles.css"
20
+ }
18
21
  },
19
22
  "license": "Community",
20
23
  "publishConfig": {
@@ -22,13 +25,14 @@
22
25
  },
23
26
  "files": [
24
27
  "dist",
25
- "LICENSE"
28
+ "LICENSE",
29
+ "styles.css.d.ts"
26
30
  ],
27
31
  "peerDependencies": {
28
32
  "vue": ">=3.0.0"
29
33
  },
30
34
  "dependencies": {
31
- "simple-table-core": "4.0.0"
35
+ "simple-table-core": "4.0.2"
32
36
  },
33
37
  "devDependencies": {
34
38
  "@rollup/plugin-alias": "4.0.0",
@@ -40,7 +44,8 @@
40
44
  "rollup-plugin-peer-deps-external": "^2.2.4",
41
45
  "rollup-plugin-terser": "^7.0.2",
42
46
  "rollup-plugin-typescript2": "^0.37.0",
43
- "typescript": "^4.9.5",
47
+ "tslib": "^2.8.1",
48
+ "typescript": "^5.0.0",
44
49
  "vitest": "^2.1.9",
45
50
  "vue": "^3.0.0"
46
51
  },
@@ -97,6 +102,7 @@
97
102
  "scripts": {
98
103
  "build": "rollup -c",
99
104
  "preview": "rollup -c -w",
105
+ "typecheck": "tsc -p tsconfig.json --noEmit",
100
106
  "test": "vitest run",
101
107
  "version:patch": "npm version patch && git push && git push --tags",
102
108
  "version:minor": "npm version minor && git push && git push --tags",
@@ -0,0 +1 @@
1
+ export {};
@@ -1,58 +0,0 @@
1
- /**
2
- * Column width constraints for the table
3
- * These values control minimum and maximum widths for columns and sections
4
- */
5
- /**
6
- * MIN_COLUMN_WIDTH
7
- * The minimum width in pixels that any column can have.
8
- * This is used as:
9
- * - The default minimum width when header.minWidth is undefined
10
- * - The absolute minimum in autoExpandColumns mode to prevent columns from becoming too narrow
11
- */
12
- export declare const MIN_COLUMN_WIDTH = 40;
13
- /**
14
- * MAX_SINGLE_PINNED_SECTION_PERCENT
15
- * Maximum percentage of container width that a single pinned section can occupy.
16
- * When only one section (left OR right) is pinned, it can take up to 60% of the width.
17
- * This ensures the main section always has at least 40% of the space.
18
- */
19
- export declare const MAX_SINGLE_PINNED_SECTION_PERCENT = 0.6;
20
- /**
21
- * MAX_DUAL_PINNED_SECTION_PERCENT
22
- * Maximum percentage of container width that each pinned section can occupy
23
- * when BOTH left and right sections are pinned.
24
- * With both sections at 40%, the main section is guaranteed at least 20% of the space.
25
- */
26
- export declare const MAX_DUAL_PINNED_SECTION_PERCENT = 0.4;
27
- /**
28
- * Mobile breakpoints for responsive pinned section constraints
29
- */
30
- export declare const MOBILE_BREAKPOINT_SMALL = 480;
31
- export declare const MOBILE_BREAKPOINT_MEDIUM = 768;
32
- /**
33
- * Get the maximum allowed width percentage for a single pinned section based on container width.
34
- * This is used when only ONE section (left OR right) is pinned.
35
- *
36
- * @param containerWidth - The table container width in pixels (st-body-container)
37
- * @returns The maximum percentage (0-1) of container width that the pinned section can occupy
38
- */
39
- export declare const getMaxSinglePinnedPercent: (containerWidth: number) => number;
40
- /**
41
- * Get the maximum allowed width percentage for pinned sections based on container width
42
- * and the number of pinned sections.
43
- *
44
- * @param containerWidth - The table container width in pixels (st-body-container)
45
- * @param hasPinnedLeft - Whether there is a pinned left section
46
- * @param hasPinnedRight - Whether there is a pinned right section
47
- * @returns The maximum percentage (0-1) of container width that each pinned section can occupy
48
- */
49
- export declare const getMaxPinnedSectionPercent: (containerWidth: number, hasPinnedLeft: boolean, hasPinnedRight: boolean) => number;
50
- /**
51
- * Calculate the maximum width in pixels for a pinned section
52
- *
53
- * @param containerWidth - The table container width in pixels (st-body-container)
54
- * @param hasPinnedLeft - Whether there is a pinned left section
55
- * @param hasPinnedRight - Whether there is a pinned right section
56
- * @returns The maximum width in pixels for a pinned section
57
- */
58
- export declare const getMaxPinnedSectionWidth: (containerWidth: number, hasPinnedLeft: boolean, hasPinnedRight: boolean) => number;
@@ -1,32 +0,0 @@
1
- export declare const DRAG_THROTTLE_LIMIT = 50;
2
- export declare const ROW_SEPARATOR_WIDTH = 1;
3
- export declare const PAGE_SIZE = 20;
4
- export declare const CSS_VAR_BORDER_WIDTH = "--st-border-width";
5
- export declare const DEFAULT_BORDER_WIDTH = 1;
6
- export declare const VIRTUALIZATION_THRESHOLD = 20;
7
- export declare const UNVIRTUALIZED_ROW_WARNING_THRESHOLD = 500;
8
- export declare const OVERSCAN_PIXELS = 800;
9
- export declare const calculateBufferRowCount: (rowHeight: number) => number;
10
- export declare const COLUMN_EDIT_WIDTH = 29.5;
11
- /**
12
- * Horizontal space reserved for the built-in column-editor toggle strip.
13
- * Returns 0 when editing is off or the strip is hidden via `showToggle: false`.
14
- */
15
- export declare const getColumnEditorStripWidth: (editColumns: boolean | undefined, showToggle?: boolean) => number;
16
- /**
17
- * Whether the built-in column-editor toggle strip is visible and takes layout space.
18
- */
19
- export declare const isColumnEditorStripVisible: (editColumns: boolean | undefined, showToggle?: boolean) => boolean;
20
- export declare const TABLE_HEADER_CELL_WIDTH_DEFAULT = 150;
21
- export declare const PINNED_BORDER_WIDTH = 1;
22
- export declare const CHART_COLUMN_TYPES: string[];
23
- export declare const OPTIMAL_CHART_COLUMN_WIDTH = 150;
24
- export declare const AUTO_SIZE_HEAD_SAMPLE_SIZE = 25;
25
- export declare const AUTO_SIZE_STRIDED_SAMPLE_SIZE = 75;
26
- export declare const AUTO_SIZE_MAX_WIDTH = 500;
27
- export declare const AUTO_SIZE_OUTLIER_PERCENTILE = 95;
28
- export declare const AUTO_SIZE_OUTLIER_THRESHOLD = 0.5;
29
- export declare const AUTO_SIZE_MIN_SAMPLE_FOR_CLIP = 20;
30
- export declare const AUTO_SIZE_WIDTH_BUFFER = 2;
31
- /** Extra padding reserved around header icons (sort / collapse) during auto-size. */
32
- export declare const AUTO_SIZE_HEADER_ICON_PADDING = 4;