@vielzeug/refine 2.2.5 → 2.4.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 (223) hide show
  1. package/dist/accordion-item.cjs +1 -1
  2. package/dist/accordion-item.cjs.map +1 -1
  3. package/dist/accordion-item.js +1 -1
  4. package/dist/accordion-item.js.map +1 -1
  5. package/dist/card.cjs +1 -1
  6. package/dist/card.cjs.map +1 -1
  7. package/dist/card.js +1 -1
  8. package/dist/card.js.map +1 -1
  9. package/dist/carousel.cjs +1 -1
  10. package/dist/carousel.cjs.map +1 -1
  11. package/dist/carousel.js +1 -1
  12. package/dist/carousel.js.map +1 -1
  13. package/dist/chat-message.cjs +9 -9
  14. package/dist/chat-message.cjs.map +1 -1
  15. package/dist/chat-message.js +41 -38
  16. package/dist/chat-message.js.map +1 -1
  17. package/dist/combobox.cjs +9 -7
  18. package/dist/combobox.cjs.map +1 -1
  19. package/dist/combobox.js +55 -48
  20. package/dist/combobox.js.map +1 -1
  21. package/dist/command-palette.cjs +1 -1
  22. package/dist/command-palette.cjs.map +1 -1
  23. package/dist/command-palette.js +1 -1
  24. package/dist/command-palette.js.map +1 -1
  25. package/dist/content/index.d.ts +2 -0
  26. package/dist/content/index.d.ts.map +1 -1
  27. package/dist/content/list/list-item.css.cjs +1 -1
  28. package/dist/content/list/list-item.css.cjs.map +1 -1
  29. package/dist/content/list/list-item.css.js +1 -1
  30. package/dist/content/list/list-item.css.js.map +1 -1
  31. package/dist/content/list/list-item.d.ts +9 -0
  32. package/dist/content/list/list-item.d.ts.map +1 -1
  33. package/dist/content/stats/stats.css.cjs +2 -0
  34. package/dist/content/stats/stats.css.cjs.map +1 -0
  35. package/dist/content/stats/stats.css.js +6 -0
  36. package/dist/content/stats/stats.css.js.map +1 -0
  37. package/dist/content/stats/stats.d.ts +72 -0
  38. package/dist/content/stats/stats.d.ts.map +1 -0
  39. package/dist/core/announcer.cjs +1 -1
  40. package/dist/core/announcer.cjs.map +1 -1
  41. package/dist/core/announcer.d.ts +13 -3
  42. package/dist/core/announcer.d.ts.map +1 -1
  43. package/dist/core/announcer.js +16 -9
  44. package/dist/core/announcer.js.map +1 -1
  45. package/dist/core/auto-resize.cjs +1 -1
  46. package/dist/core/auto-resize.cjs.map +1 -1
  47. package/dist/core/auto-resize.js +1 -1
  48. package/dist/core/auto-resize.js.map +1 -1
  49. package/dist/custom-elements.json +4457 -4161
  50. package/dist/datagrid.cjs +199 -179
  51. package/dist/datagrid.cjs.map +1 -1
  52. package/dist/datagrid.js +435 -321
  53. package/dist/datagrid.js.map +1 -1
  54. package/dist/disclosure/tab-item/tab-item.css.cjs +1 -1
  55. package/dist/disclosure/tab-item/tab-item.css.cjs.map +1 -1
  56. package/dist/disclosure/tab-item/tab-item.css.js +1 -1
  57. package/dist/disclosure/tab-item/tab-item.css.js.map +1 -1
  58. package/dist/disclosure/tab-item/tab-item.d.ts +3 -0
  59. package/dist/disclosure/tab-item/tab-item.d.ts.map +1 -1
  60. package/dist/disclosure/tabs/tabs.css.cjs +1 -1
  61. package/dist/disclosure/tabs/tabs.css.cjs.map +1 -1
  62. package/dist/disclosure/tabs/tabs.css.js +1 -1
  63. package/dist/disclosure/tabs/tabs.css.js.map +1 -1
  64. package/dist/disclosure/tabs/tabs.d.ts +4 -0
  65. package/dist/disclosure/tabs/tabs.d.ts.map +1 -1
  66. package/dist/feedback/typing-indicator/typing-indicator.d.ts +2 -2
  67. package/dist/file-input.cjs +49 -49
  68. package/dist/file-input.cjs.map +1 -1
  69. package/dist/file-input.js +128 -127
  70. package/dist/file-input.js.map +1 -1
  71. package/dist/frameworks/elements.d.ts +2 -1
  72. package/dist/icon.cjs +1 -1
  73. package/dist/icon.cjs.map +1 -1
  74. package/dist/icon.js +1 -1
  75. package/dist/icon.js.map +1 -1
  76. package/dist/input.cjs +5 -4
  77. package/dist/input.cjs.map +1 -1
  78. package/dist/input.js +14 -8
  79. package/dist/input.js.map +1 -1
  80. package/dist/inputs/combobox/combobox-options.cjs +1 -1
  81. package/dist/inputs/combobox/combobox-options.cjs.map +1 -1
  82. package/dist/inputs/combobox/combobox-options.d.ts.map +1 -1
  83. package/dist/inputs/combobox/combobox-options.js +1 -0
  84. package/dist/inputs/combobox/combobox-options.js.map +1 -1
  85. package/dist/inputs/combobox/combobox.css.cjs +1 -1
  86. package/dist/inputs/combobox/combobox.css.cjs.map +1 -1
  87. package/dist/inputs/combobox/combobox.css.js +1 -1
  88. package/dist/inputs/combobox/combobox.css.js.map +1 -1
  89. package/dist/inputs/combobox/combobox.d.ts +1 -0
  90. package/dist/inputs/combobox/combobox.d.ts.map +1 -1
  91. package/dist/inputs/combobox/combobox.types.d.ts +7 -0
  92. package/dist/inputs/combobox/combobox.types.d.ts.map +1 -1
  93. package/dist/inputs/datagrid/datagrid-model.cjs +1 -1
  94. package/dist/inputs/datagrid/datagrid-model.cjs.map +1 -1
  95. package/dist/inputs/datagrid/datagrid-model.d.ts +17 -3
  96. package/dist/inputs/datagrid/datagrid-model.d.ts.map +1 -1
  97. package/dist/inputs/datagrid/datagrid-model.js +93 -70
  98. package/dist/inputs/datagrid/datagrid-model.js.map +1 -1
  99. package/dist/inputs/datagrid/datagrid.css.cjs +1 -1
  100. package/dist/inputs/datagrid/datagrid.css.cjs.map +1 -1
  101. package/dist/inputs/datagrid/datagrid.css.js +1 -1
  102. package/dist/inputs/datagrid/datagrid.css.js.map +1 -1
  103. package/dist/inputs/datagrid/datagrid.d.ts +54 -4
  104. package/dist/inputs/datagrid/datagrid.d.ts.map +1 -1
  105. package/dist/inputs/file-input/file-input-upload.cjs +1 -1
  106. package/dist/inputs/file-input/file-input-upload.cjs.map +1 -1
  107. package/dist/inputs/file-input/file-input-upload.d.ts +2 -0
  108. package/dist/inputs/file-input/file-input-upload.d.ts.map +1 -1
  109. package/dist/inputs/file-input/file-input-upload.js +5 -2
  110. package/dist/inputs/file-input/file-input-upload.js.map +1 -1
  111. package/dist/inputs/file-input/file-input.d.ts.map +1 -1
  112. package/dist/inputs/index.d.ts +1 -1
  113. package/dist/inputs/index.d.ts.map +1 -1
  114. package/dist/inputs/input/input.css.cjs +1 -1
  115. package/dist/inputs/input/input.css.cjs.map +1 -1
  116. package/dist/inputs/input/input.css.js +1 -1
  117. package/dist/inputs/input/input.css.js.map +1 -1
  118. package/dist/inputs/input/input.d.ts +3 -0
  119. package/dist/inputs/input/input.d.ts.map +1 -1
  120. package/dist/inputs/select/select.css.cjs +1 -1
  121. package/dist/inputs/select/select.css.cjs.map +1 -1
  122. package/dist/inputs/select/select.css.js +1 -1
  123. package/dist/inputs/select/select.css.js.map +1 -1
  124. package/dist/inputs/select/select.d.ts +5 -0
  125. package/dist/inputs/select/select.d.ts.map +1 -1
  126. package/dist/layout/navbar/navbar.d.ts +2 -0
  127. package/dist/layout/navbar/navbar.d.ts.map +1 -1
  128. package/dist/layout/sidebar/sidebar.css.cjs +1 -1
  129. package/dist/layout/sidebar/sidebar.css.cjs.map +1 -1
  130. package/dist/layout/sidebar/sidebar.css.js +1 -1
  131. package/dist/layout/sidebar/sidebar.css.js.map +1 -1
  132. package/dist/layout/sidebar/sidebar.d.ts +8 -0
  133. package/dist/layout/sidebar/sidebar.d.ts.map +1 -1
  134. package/dist/list-item.cjs +6 -5
  135. package/dist/list-item.cjs.map +1 -1
  136. package/dist/list-item.js +23 -17
  137. package/dist/list-item.js.map +1 -1
  138. package/dist/list.cjs +1 -1
  139. package/dist/list.cjs.map +1 -1
  140. package/dist/list.js +1 -1
  141. package/dist/list.js.map +1 -1
  142. package/dist/menu.cjs +1 -1
  143. package/dist/menu.cjs.map +1 -1
  144. package/dist/menu.js +1 -1
  145. package/dist/menu.js.map +1 -1
  146. package/dist/navbar.cjs +2 -2
  147. package/dist/navbar.cjs.map +1 -1
  148. package/dist/navbar.js +7 -5
  149. package/dist/navbar.js.map +1 -1
  150. package/dist/navigation-menu.cjs +1 -1
  151. package/dist/navigation-menu.cjs.map +1 -1
  152. package/dist/navigation-menu.js +1 -1
  153. package/dist/navigation-menu.js.map +1 -1
  154. package/dist/overlay/popover/popover.css.cjs +1 -1
  155. package/dist/overlay/popover/popover.css.cjs.map +1 -1
  156. package/dist/overlay/popover/popover.css.js +1 -1
  157. package/dist/overlay/popover/popover.css.js.map +1 -1
  158. package/dist/overlay/popover/popover.d.ts +1 -0
  159. package/dist/overlay/popover/popover.d.ts.map +1 -1
  160. package/dist/overlay/shared/use-dialog.cjs +1 -1
  161. package/dist/overlay/shared/use-dialog.cjs.map +1 -1
  162. package/dist/overlay/shared/use-dialog.js +1 -1
  163. package/dist/overlay/shared/use-dialog.js.map +1 -1
  164. package/dist/overlay/shared/use-floating-trigger.cjs +1 -1
  165. package/dist/overlay/shared/use-floating-trigger.cjs.map +1 -1
  166. package/dist/overlay/shared/use-floating-trigger.js +1 -1
  167. package/dist/overlay/shared/use-floating-trigger.js.map +1 -1
  168. package/dist/popover.cjs.map +1 -1
  169. package/dist/popover.js.map +1 -1
  170. package/dist/radio.cjs +1 -1
  171. package/dist/radio.cjs.map +1 -1
  172. package/dist/radio.js +10 -8
  173. package/dist/radio.js.map +1 -1
  174. package/dist/rating.cjs +1 -1
  175. package/dist/rating.cjs.map +1 -1
  176. package/dist/rating.js +1 -1
  177. package/dist/rating.js.map +1 -1
  178. package/dist/refine.cjs +428 -379
  179. package/dist/refine.cjs.map +1 -1
  180. package/dist/refine.iife.js +428 -379
  181. package/dist/refine.iife.js.map +1 -1
  182. package/dist/refine.js +458 -409
  183. package/dist/refine.js.map +1 -1
  184. package/dist/select.cjs +16 -14
  185. package/dist/select.cjs.map +1 -1
  186. package/dist/select.js +118 -112
  187. package/dist/select.js.map +1 -1
  188. package/dist/sidebar.cjs +28 -23
  189. package/dist/sidebar.cjs.map +1 -1
  190. package/dist/sidebar.js +112 -77
  191. package/dist/sidebar.js.map +1 -1
  192. package/dist/slider.cjs +1 -1
  193. package/dist/slider.cjs.map +1 -1
  194. package/dist/slider.js +1 -1
  195. package/dist/slider.js.map +1 -1
  196. package/dist/stats.cjs +18 -0
  197. package/dist/stats.cjs.map +1 -0
  198. package/dist/stats.js +88 -0
  199. package/dist/stats.js.map +1 -0
  200. package/dist/stepper.cjs +1 -1
  201. package/dist/stepper.cjs.map +1 -1
  202. package/dist/stepper.js +1 -1
  203. package/dist/stepper.js.map +1 -1
  204. package/dist/styles/mixins/animation.css.cjs +2 -0
  205. package/dist/styles/mixins/animation.css.cjs.map +1 -1
  206. package/dist/styles/mixins/animation.css.d.ts.map +1 -1
  207. package/dist/styles/mixins/animation.css.js +2 -0
  208. package/dist/styles/mixins/animation.css.js.map +1 -1
  209. package/dist/tab-item.cjs +1 -1
  210. package/dist/tab-item.cjs.map +1 -1
  211. package/dist/tab-item.js +3 -2
  212. package/dist/tab-item.js.map +1 -1
  213. package/dist/tabs.cjs +1 -1
  214. package/dist/tabs.cjs.map +1 -1
  215. package/dist/tabs.js +3 -1
  216. package/dist/tabs.js.map +1 -1
  217. package/dist/toast.cjs.map +1 -1
  218. package/dist/toast.js.map +1 -1
  219. package/dist/typing-indicator.cjs +1 -1
  220. package/dist/typing-indicator.cjs.map +1 -1
  221. package/dist/typing-indicator.js +8 -7
  222. package/dist/typing-indicator.js.map +1 -1
  223. package/package.json +66 -58
package/dist/datagrid.cjs CHANGED
@@ -1,8 +1,8 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./styles/mixins/table-base.css.cjs");require("./_dev.cjs");const t=require("./shared/prop-bundles.cjs"),n=require("./inputs/datagrid/datagrid.css.cjs"),r=require("./inputs/datagrid/datagrid-column.cjs"),i=require("./inputs/datagrid/datagrid-model.cjs"),a=require("./inputs/datagrid/datagrid-nav.cjs");let o=require("@vielzeug/ore"),s=require("@vielzeug/ripple"),c=require("@vielzeug/arsenal/function");function l(e,t){return e.key!==t||e.direction===`none`?`chevrons-up-down`:e.direction===`asc`?`chevron-up`:`chevron-down`}function u(e,t){return e.key!==t||e.direction===`none`?`none`:e.direction===`asc`?`ascending`:`descending`}var d=`ore-datagrid`;(0,o.define)(d,{props:{activeView:o.prop.string(),density:o.prop.string(),...t.disablableBundle,...t.loadableBundle,columns:o.prop.data(),emptyText:o.prop.string(`No data`),expandable:o.prop.bool(!1),filterOptions:o.prop.data(),fullwidth:o.prop.bool(!1),getRowKey:o.prop.data(),label:o.prop.string(),pageSize:o.prop.number(10),pageSizeOptions:o.prop.data(),rows:o.prop.data(),searchLabel:o.prop.data(),searchPlaceholder:o.prop.string(`Search…`),selectedKeys:o.prop.data(),selectionMode:o.prop.string(`none`),sortMode:o.prop.string(`client`),source:o.prop.data(),striped:o.prop.bool(!1),views:o.prop.data()},setup(e){let t=(0,o.getHost)(),n=(0,o.useEmit)(),d=(0,o.useSlots)(),f=(0,s.computed)(()=>e.disabled.value===!0),p=(0,s.computed)(()=>e.selectionMode.value??`none`),m=(0,s.signal)(new Set),h=(0,s.computed)(()=>e.expandable.value===!0&&y.value.some(e=>typeof e.renderExpanded==`function`)),g=(0,s.computed)(()=>+(p.value===`multi`)),_=(0,s.signal)(e.pageSize.value??10);(0,s.watch)(e.pageSize,e=>{e!=null&&(_.value=e)});let v=(0,s.signal)([]);(0,o.onMounted)(()=>{v.value=r.parseColumnChildren(t);let e=new MutationObserver(()=>{v.value=r.parseColumnChildren(t)});return e.observe(t,{attributeFilter:r.COLUMN_OBSERVED_ATTRS,attributes:!0,childList:!0,subtree:!0}),()=>e.disconnect()});let y=(0,s.computed)(()=>{let t=e.columns.value;return t===void 0?v.value:t}),b=t=>{let n=e.getRowKey.value;if(n)return n(t);let r=t.id;return r==null?`__missing_${Math.random().toString(36).slice(2)}`:String(r)},x=(0,s.computed)(()=>e.source.value!=null),S=(0,s.signal)([]),C=(0,s.signal)({error:null,isLoading:!1,pageCount:1,pageNumber:1,pageSize:_.value,totalItems:0}),w=null;(0,o.onCleanup)(()=>{w?.(),w=null}),(0,s.watch)(e.source,e=>{if(w?.(),w=null,!e){S.value=[],C.value={error:null,isLoading:!1,pageCount:1,pageNumber:1,pageSize:_.value,totalItems:0};return}let t=(t=e.snapshot)=>{S.value=t.data,C.value={error:t.error,isLoading:t.isFetching,pageCount:t.pagination.count,pageNumber:t.pagination.index,pageSize:t.pagination.size,totalItems:t.pagination.total}};t(),w=e.subscribe(t)},{immediate:!0});let T=i.createDataGridModel({clientSide:(0,s.computed)(()=>!x.value),columns:y,filterOptions:e.filterOptions,getRowKey:b,items:(0,s.computed)(()=>x.value?S.value:e.rows.value??[]),onSelectionChange:e=>{n(`selection-change`,{keys:[...e],rows:T.selectedRows.value})},onSortChange:e=>{n(`sort-change`,e)},pageSize:(0,s.computed)(()=>x.value?0:_.value),selectionMode:p,sortMode:(0,s.computed)(()=>e.sortMode.value??`client`)}),E=(0,c.debounce)(t=>{let n=e.source.value;n?.setQuery?n.setQuery({search:t}):T.setSearchQuery(t)},250);(0,s.watch)(e.selectedKeys,e=>{Array.isArray(e)&&T.setSelection(new Set(e))},{immediate:!0});let D=(0,s.signal)({}),O=(e,t)=>n=>{n.preventDefault();let r=n.clientX,i=t.getBoundingClientRect().width,a=new AbortController,{signal:o}=a;window.addEventListener(`pointermove`,t=>{D.value={...D.value,[e]:Math.max(40,i+t.clientX-r)}},{signal:o}),window.addEventListener(`pointerup`,()=>a.abort(),{signal:o})},k=T.visibleColumns,A=(e,t)=>{if(e.cell)return e.cell(t);let n=t[e.key];return n==null?``:String(n)};function j(t){let r=e.source.value;if(r){t===`prev`?r.page?.previous():r.page?.next();return}t===`prev`?T.prevPage():T.nextPage(),n(`page-change`,{pageIndex:T.pageIndex.value,pageSize:_.value})}let M=(0,s.computed)(()=>{let e=T.currentPageItems.value;return!e.length||T.isAllSelected()?!1:e.some(e=>T.selectedKeys.value.has(b(e)))}),N=(0,s.computed)(()=>k.value.length+ +(p.value===`multi`)+ +!!h.value),P=(0,s.computed)(()=>x.value?C.value.pageCount>1:_.value>0),F=(0,s.computed)(()=>{if(x.value){let{pageNumber:e,pageSize:t,totalItems:n}=C.value,r=Math.max(1,t);if(!P.value)return`${n} row${n===1?``:`s`}`;if(n===0)return`0 to 0 of 0`;let i=(e-1)*r+1;return`${i} to ${Math.min(i+r-1,n)} of ${n}`}let e=T.totalItems.value;if(!P.value)return`${e} row${e===1?``:`s`}`;if(e===0)return`0 to 0 of 0`;let t=T.pageIndex.value*_.value+1;return`${t} to ${Math.min(t+_.value-1,e)} of ${e}`}),I=(0,s.computed)(()=>e.loading.value===!0||x.value&&C.value.isLoading),L=(0,s.computed)(()=>x.value?C.value.pageNumber>1:T.hasPrevPage.value),R=(0,s.computed)(()=>x.value?C.value.pageNumber<C.value.pageCount:T.hasNextPage.value),z=(0,s.computed)(()=>x.value?C.value.totalItems===0?`0 / 0`:`${C.value.pageNumber} / ${C.value.pageCount}`:`${T.pageIndex.value+1} / ${T.pageCount.value}`),B=[`compact`,`cozy`,`comfortable`],V={comfortable:`rows-2`,compact:`rows-4`,cozy:`rows-3`},H={comfortable:`Density: Comfortable`,compact:`Density: Compact`,cozy:`Density: Cozy`},U=(0,s.signal)(e.density.value??`cozy`);(0,s.watch)(e.density,e=>{e&&(U.value=e)});let W=()=>{let e=B.indexOf(U.value),r=B[(e+1)%B.length];U.value=r,t.setAttribute(`density`,r),n(`density-change`,{density:r})},G=(0,s.signal)(!1),K=e=>{let t=new Set(m.value),r=!t.has(e);r?t.add(e):t.delete(e),m.value=t,n(`row-expand`,{expanded:r,key:e})},q={activeCell:(0,s.signal)({col:0,row:0}),focusCell:()=>{}};(0,o.onMounted)(()=>{let e=t.shadowRoot,n=e.querySelector(`.dg-table`);if(!n)return;let{cleanup:r,handle:i}=a.createGridNav(n,e);return q=i,r}),t.focusCell=e=>q.focusCell(e);let J=()=>{let t=e.views.value??[],r=e.activeView.value;return o.html`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./styles/mixins/table-base.css.cjs");require("./_dev.cjs");const t=require("./shared/prop-bundles.cjs"),n=require("./inputs/datagrid/datagrid.css.cjs"),r=require("./inputs/datagrid/datagrid-column.cjs"),i=require("./inputs/datagrid/datagrid-model.cjs"),a=require("./inputs/datagrid/datagrid-nav.cjs");let o=require("@vielzeug/ore"),s=require("@vielzeug/ripple"),c=require("@vielzeug/arsenal/function");var l={activeFilters:e=>`${e} active filter${e===1?``:`s`}`,addFilter:`Add filter…`,ascending:`A → Z`,clearAllFilters:`Clear all filters`,clearFiltersAndSearch:`Clear all filters & search`,clearSort:`Clear sort`,closeSearch:`Close search`,collapseRow:`Collapse row`,columnOptions:`Column options`,columnVisibility:`Column visibility`,comfortableDensity:`Density: Comfortable`,compactDensity:`Density: Compact`,contains:`Contains`,cozyDensity:`Density: Cozy`,data:`Data`,descending:`Z → A`,emptyValue:`(empty)`,equals:`Equals`,expandRow:`Expand row`,filter:`Filter`,filterBy:`Filter by`,filterOperator:e=>`${e} operator`,greaterThan:`Greater than`,hiddenColumns:e=>`${e} hidden column${e===1?``:`s`}`,lessThan:`Less than`,nextPage:`Next page`,numericAscending:`0 → 9`,numericDescending:`9 → 0`,pageNavigation:`Page navigation`,pagination:`Pagination`,previousPage:`Previous page`,property:`Property`,range:(e,t,n)=>`${e} to ${t} of ${n}`,removeFilter:`Remove filter`,resetColumns:`Reset`,rowDetails:`Row details`,rows:e=>`${e} row${e===1?``:`s`}`,rowsPerPage:`Rows per page`,search:`Search`,selectAllRows:`Select all rows on this page`,selectRow:`Select row`,sort:`Sort`,sortBy:`Sort by`,views:`Views`,visibleColumns:(e,t)=>`${e} of ${t} visible`};function u(e,t){return e.key!==t||e.direction===`none`?`chevrons-up-down`:e.direction===`asc`?`chevron-up`:`chevron-down`}function d(e,t){return e.key!==t||e.direction===`none`?`none`:e.direction===`asc`?`ascending`:`descending`}function f(e){let t=e.detail;return Array.isArray(t?.values)?t.values:(e.target.value??``).split(`,`).filter(Boolean)}var p=`ore-datagrid`;(0,o.define)(p,{props:{activeView:o.prop.string(),density:o.prop.string(),...t.disablableBundle,...t.loadableBundle,columns:o.prop.data(),emptyText:o.prop.string(`No data`),expandable:o.prop.bool(!1),filterOptions:o.prop.data(),fullwidth:o.prop.bool(!1),getRowKey:o.prop.data(),label:o.prop.string(),labels:o.prop.data(),pageSize:o.prop.number(10),pageSizeOptions:o.prop.data(),rows:o.prop.data(),searchLabel:o.prop.data(),searchPlaceholder:o.prop.string(),selectedKeys:o.prop.data(),selectionMode:o.prop.string(`none`),sortMode:o.prop.string(`client`),source:o.prop.data(),striped:o.prop.bool(!1),views:o.prop.data()},setup(e){let t=(0,o.getHost)(),n=(0,o.useEmit)(),p=(0,o.useSlots)(),m=(0,s.computed)(()=>({...l,...e.labels.value})),h=(0,s.computed)(()=>e.disabled.value===!0),g=(0,s.computed)(()=>e.selectionMode.value??`none`),_=(0,s.signal)(new Set),v=(0,s.computed)(()=>e.expandable.value===!0&&S.value.some(e=>typeof e.renderExpanded==`function`)),y=(0,s.computed)(()=>+(g.value===`multi`)),b=(0,s.signal)(e.pageSize.value??10);(0,s.watch)(e.pageSize,e=>{e!=null&&(b.value=e)});let x=(0,s.signal)([]);(0,o.onMounted)(()=>{x.value=r.parseColumnChildren(t);let e=new MutationObserver(()=>{x.value=r.parseColumnChildren(t)});return e.observe(t,{attributeFilter:r.COLUMN_OBSERVED_ATTRS,attributes:!0,childList:!0,subtree:!0}),()=>e.disconnect()});let S=(0,s.computed)(()=>{let t=e.columns.value;return t===void 0?x.value:t}),C=(0,s.computed)(()=>{let t=S.value.map(e=>({label:e.label,value:e.key})),n=new Set(t.map(e=>e.value));for(let r of e.filterOptions.value??[])n.has(r.key)||t.push({label:r.label,value:r.key});return t}),w=t=>{let n=e.getRowKey.value;if(n)return n(t);let r=t.id;return r==null?`__missing_${Math.random().toString(36).slice(2)}`:String(r)},T=(0,s.computed)(()=>e.source.value!=null),E=(0,s.signal)([]),D=(0,s.signal)({error:null,isLoading:!1,pageCount:1,pageNumber:1,pageSize:b.value,totalItems:0}),O=null;(0,o.onCleanup)(()=>{O?.(),O=null}),(0,s.watch)(e.source,e=>{if(O?.(),O=null,!e){E.value=[],D.value={error:null,isLoading:!1,pageCount:1,pageNumber:1,pageSize:b.value,totalItems:0};return}let t=(t=e.snapshot)=>{E.value=t.data,D.value={error:t.error,isLoading:t.isFetching,pageCount:t.pagination.count,pageNumber:t.pagination.index,pageSize:t.pagination.size,totalItems:t.pagination.total}};t(),O=e.subscribe(t)},{immediate:!0});let k=i.createDataGridModel({activeView:(0,s.computed)(()=>(e.views.value??[]).find(t=>t.id===e.activeView.value)),clientSide:(0,s.computed)(()=>!T.value),columns:S,emptyValueLabel:(0,s.computed)(()=>m.value.emptyValue),filterOperators:(0,s.computed)(()=>[{label:m.value.contains,value:`contains`},{label:m.value.equals,value:`equals`},{label:m.value.greaterThan,value:`gt`},{label:m.value.lessThan,value:`lt`}]),filterOptions:e.filterOptions,getRowKey:w,items:(0,s.computed)(()=>T.value?E.value:e.rows.value??[]),onSelectionChange:e=>{n(`selection-change`,{keys:[...e],rows:k.selectedRows.value})},onSortChange:e=>{n(`sort-change`,e)},pageSize:(0,s.computed)(()=>T.value?0:b.value),selectionMode:g,sortMode:(0,s.computed)(()=>e.sortMode.value??`client`)}),A=(0,s.computed)(()=>{let e=S.value.find(e=>e.key===k.sortState.value.key);if(e?.sortType)return e.sortType;let t=k.filteredRows.value.find(t=>t[e?.key??``]!=null);return t&&typeof t[e?.key??``]==`number`?`number`:`text`}),j=(0,s.computed)(()=>A.value===`number`?[{label:m.value.numericAscending,value:`asc`},{label:m.value.numericDescending,value:`desc`}]:[{label:m.value.ascending,value:`asc`},{label:m.value.descending,value:`desc`}]),M=(0,c.debounce)(t=>{let n=e.source.value;n?.setQuery?n.setQuery({search:t}):k.setSearchQuery(t)},250);(0,s.watch)(e.selectedKeys,e=>{Array.isArray(e)&&k.setSelection(new Set(e))},{immediate:!0});let N=(0,s.signal)({}),P=(e,t)=>n=>{n.preventDefault();let r=n.clientX,i=t.getBoundingClientRect().width,a=new AbortController,{signal:o}=a;window.addEventListener(`pointermove`,t=>{N.value={...N.value,[e]:Math.max(40,i+t.clientX-r)}},{signal:o}),window.addEventListener(`pointerup`,()=>a.abort(),{signal:o})},F=k.visibleColumns,I=(e,t)=>{if(e.cell)return e.cell(t);let n=t[e.key];return n==null?``:String(n)};function L(t){let r=e.source.value;if(r){t===`prev`?r.page?.previous():r.page?.next();return}t===`prev`?k.prevPage():k.nextPage(),n(`page-change`,{pageIndex:k.pageIndex.value,pageSize:b.value})}let R=(0,s.computed)(()=>{let e=k.currentPageItems.value;return!e.length||k.isAllSelected()?!1:e.some(e=>k.selectedKeys.value.has(w(e)))}),z=(0,s.computed)(()=>F.value.length+ +(g.value===`multi`)+ +!!v.value),B=(0,s.computed)(()=>T.value?D.value.pageCount>1:b.value>0),V=(0,s.computed)(()=>{if(T.value){let{pageNumber:e,pageSize:t,totalItems:n}=D.value,r=Math.max(1,t);if(!B.value)return m.value.rows(n);if(n===0)return m.value.range(0,0,0);let i=(e-1)*r+1,a=Math.min(i+r-1,n);return m.value.range(i,a,n)}let e=k.totalItems.value;if(!B.value)return m.value.rows(e);if(e===0)return m.value.range(0,0,0);let t=k.pageIndex.value*b.value+1,n=Math.min(t+b.value-1,e);return m.value.range(t,n,e)}),H=(0,s.computed)(()=>e.loading.value===!0||T.value&&D.value.isLoading),U=(0,s.computed)(()=>T.value?D.value.pageNumber>1:k.hasPrevPage.value),W=(0,s.computed)(()=>T.value?D.value.pageNumber<D.value.pageCount:k.hasNextPage.value),G=(0,s.computed)(()=>T.value?D.value.totalItems===0?`0 / 0`:`${D.value.pageNumber} / ${D.value.pageCount}`:`${k.pageIndex.value+1} / ${k.pageCount.value}`),K=[`compact`,`cozy`,`comfortable`],q={comfortable:`rows-2`,compact:`rows-4`,cozy:`rows-3`},J=(0,s.computed)(()=>({comfortable:m.value.comfortableDensity,compact:m.value.compactDensity,cozy:m.value.cozyDensity})),Y=(0,s.signal)(e.density.value??`cozy`);(0,s.watch)(e.density,e=>{e&&(Y.value=e)});let X=()=>{let e=K.indexOf(Y.value),r=K[(e+1)%K.length];Y.value=r,t.setAttribute(`density`,r),n(`density-change`,{density:r})},Z=e=>{let t=new Set(_.value),r=!t.has(e);r?t.add(e):t.delete(e),_.value=t,n(`row-expand`,{expanded:r,key:e})},Q={activeCell:(0,s.signal)({col:0,row:0}),focusCell:()=>{}};(0,o.onMounted)(()=>{let e=t.shadowRoot,n=e.querySelector(`.dg-table`);if(!n)return;let{cleanup:r,handle:i}=a.createGridNav(n,e);return Q=i,r}),t.focusCell=e=>Q.focusCell(e);let $=()=>{let t=e.views.value??[],r=e.activeView.value;return o.html`
2
2
  <div
3
3
  class="dg-tabs"
4
4
  role="tablist"
5
- aria-label="Views"
5
+ aria-label="${()=>m.value.views}"
6
6
  aria-controls="dg-tabpanel"
7
7
  @keydown="${e=>{if(![`ArrowLeft`,`ArrowRight`,`Home`,`End`].includes(e.key))return;let t=Array.from(e.currentTarget.querySelectorAll(`.dg-tab`)),n=t.findIndex(e=>e.classList.contains(`dg-tab--active`)),r=n;if(e.key===`ArrowLeft`?r=Math.max(0,n-1):e.key===`ArrowRight`?r=Math.min(t.length-1,n+1):e.key===`Home`?r=0:e.key===`End`&&(r=t.length-1),r!==n){e.preventDefault();let n=t[r];n.focus(),n.click()}}}">
8
8
  ${t.map(e=>o.html`
@@ -20,88 +20,86 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
20
20
  </ore-button>
21
21
  `)}
22
22
  </div>
23
- `},Y=()=>o.html`
24
- <ore-popover class="dg-action-popover" placement="bottom-end" label="Sort" style="--popover-min-width:18rem">
25
- <ore-button variant="ghost" size="sm" icon-only label="Sort">
23
+ `},ee=()=>o.html`
24
+ <ore-popover class="dg-action-popover" placement="bottom-end" label="${()=>m.value.sort}" style="--popover-min-width:18rem;--popover-overflow:visible">
25
+ <ore-button
26
+ class="dg-icon-btn dg-state-trigger"
27
+ variant="ghost"
28
+ size="sm"
29
+ icon-only
30
+ ?data-customized="${()=>k.sortState.value.direction!==`none`}"
31
+ label="${()=>m.value.sort}">
26
32
  <ore-icon name="arrow-up-down" size="15" stroke-width="1.75" aria-hidden="true"></ore-icon>
27
33
  </ore-button>
28
34
  <div slot="content" class="dg-pop-sort">
29
35
  <div class="dg-pop-header">
30
- <span class="dg-pop-title">Sort by</span>
31
- <ore-button
32
- class="dg-icon-btn"
33
- variant="ghost"
34
- size="sm"
35
- icon-only
36
- label="Clear sort"
37
- disabled="${()=>T.sortState.value.direction===`none`||void 0}"
38
- @click="${()=>T.sortTo(``,`none`)}">
39
- <ore-icon name="trash-2" size="14" stroke-width="1.75" aria-hidden="true"></ore-icon>
40
- </ore-button>
36
+ <span class="dg-pop-title">${()=>m.value.sortBy}</span>
37
+ ${()=>k.sortState.value.direction===`none`?o.html``:o.html`
38
+ <ore-button
39
+ class="dg-icon-btn"
40
+ variant="ghost"
41
+ size="sm"
42
+ icon-only
43
+ label="${()=>m.value.clearSort}"
44
+ @click="${()=>k.sortTo(``,`none`)}">
45
+ <ore-icon name="trash-2" size="14" stroke-width="1.75" aria-hidden="true"></ore-icon>
46
+ </ore-button>
47
+ `}
41
48
  </div>
42
49
  <div class="dg-pop-sort-row">
43
50
  <ore-select
44
51
  class="dg-pop-select"
52
+ hide-label
45
53
  variant="flat"
46
54
  size="sm"
47
55
  rounded="lg"
48
- placeholder="Property"
56
+ label="${()=>m.value.property}"
57
+ placeholder="${()=>m.value.property}"
49
58
  fullwidth
50
- value="${()=>T.sortState.value.key}"
51
- options="${()=>y.value.map(e=>({label:e.label,value:e.key}))}"
52
- @change="${e=>{let t=e.detail.values[0]??``,n=T.sortState.value.direction===`none`?`asc`:T.sortState.value.direction;T.sortTo(t,n)}}"></ore-select>
59
+ value="${()=>k.sortState.value.key}"
60
+ options="${()=>S.value.map(e=>({label:e.label,value:e.key}))}"
61
+ @change="${e=>{let t=f(e)[0]??``,n=k.sortState.value.direction===`none`?`asc`:k.sortState.value.direction;k.sortTo(t,n)}}"></ore-select>
53
62
  <ore-select
54
63
  class="dg-pop-dir-select"
64
+ hide-label
55
65
  variant="flat"
56
66
  size="sm"
57
67
  rounded="lg"
68
+ label="${()=>m.value.sort}"
58
69
  fullwidth
59
- disabled="${()=>!T.sortState.value.key||void 0}"
60
- value="${()=>T.sortState.value.direction===`none`?`asc`:T.sortState.value.direction}"
61
- options="${()=>[{label:`A → Z`,value:`asc`},{label:`Z → A`,value:`desc`}]}"
62
- @change="${e=>{T.sortState.value.key&&T.sortTo(T.sortState.value.key,e.detail.values[0]??`asc`)}}"></ore-select>
70
+ disabled="${()=>!k.sortState.value.key||void 0}"
71
+ value="${()=>k.sortState.value.direction===`none`?`asc`:k.sortState.value.direction}"
72
+ options="${j}"
73
+ @change="${e=>{k.sortState.value.key&&k.sortTo(k.sortState.value.key,f(e)[0]??`asc`)}}"></ore-select>
63
74
  </div>
64
75
  </div>
65
76
  </ore-popover>
66
- `,X=()=>o.html`
77
+ `,te=()=>o.html`
67
78
  <ore-popover
68
79
  class="dg-action-popover"
69
80
  placement="bottom-end"
70
- label="Filter"
71
- style="--popover-min-width:16rem;--popover-max-height:min(90vh,48rem)">
72
- ${()=>T.filterDefs.value.length?o.html`
73
- <ore-badge
74
- anchor="top-end"
75
- color="primary"
76
- size="xs"
77
- count="${()=>G.value?T.filterDefs.value.length:void 0}"
78
- dot="${()=>!G.value||void 0}"
79
- label="${()=>`${T.filterDefs.value.length} active filter${T.filterDefs.value.length>1?`s`:``}`}"
80
- aria-hidden="true"
81
- @mouseenter="${()=>G.value=!0}"
82
- @mouseleave="${()=>G.value=!1}"
83
- @focusin="${()=>G.value=!0}"
84
- @focusout="${()=>G.value=!1}">
85
- <ore-button slot="target" variant="ghost" size="sm" icon-only label="Filter">
86
- <ore-icon name="filter" size="15" stroke-width="1.75" aria-hidden="true"></ore-icon>
87
- </ore-button>
88
- </ore-badge>
89
- `:o.html`
90
- <ore-button class="dg-icon-btn" variant="ghost" size="sm" icon-only label="Filter">
91
- <ore-icon name="filter" size="15" stroke-width="1.75" aria-hidden="true"></ore-icon>
92
- </ore-button>
93
- `}
81
+ label="${()=>m.value.filter}"
82
+ style="--popover-min-width:18rem;--popover-max-height:min(90vh,48rem)">
83
+ <ore-button
84
+ class="dg-icon-btn dg-state-trigger"
85
+ variant="ghost"
86
+ size="sm"
87
+ icon-only
88
+ ?data-customized="${()=>k.filterDefs.value.length>0}"
89
+ label="${()=>k.filterDefs.value.length?`${m.value.filter}: ${m.value.activeFilters(k.filterDefs.value.length)}`:m.value.filter}">
90
+ <ore-icon name="filter" size="15" stroke-width="1.75" aria-hidden="true"></ore-icon>
91
+ </ore-button>
94
92
  <div slot="content" class="dg-pop-filter">
95
93
  <div class="dg-pop-header">
96
- <span class="dg-pop-title">Filter by</span>
97
- ${()=>T.filterDefs.value.length?o.html`
94
+ <span class="dg-pop-title">${()=>m.value.filterBy}</span>
95
+ ${()=>k.filterDefs.value.length?o.html`
98
96
  <ore-button
99
97
  class="dg-icon-btn"
100
98
  variant="ghost"
101
99
  size="sm"
102
100
  icon-only
103
- label="Clear all filters"
104
- @click="${()=>T.clearAllFilters()}">
101
+ label="${()=>m.value.clearAllFilters}"
102
+ @click="${()=>k.clearAllFilters()}">
105
103
  <ore-icon name="trash-2" size="14" stroke-width="1.75" aria-hidden="true"></ore-icon>
106
104
  </ore-button>
107
105
  `:o.html``}
@@ -110,92 +108,114 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
110
108
  <!-- Always-visible field picker: select columns to add filter rules -->
111
109
  <div class="dg-pop-filter-fields">
112
110
  <ore-combobox
113
- placeholder="Add filter…"
111
+ hide-label
112
+ label="${()=>m.value.addFilter}"
113
+ placeholder="${()=>m.value.addFilter}"
114
114
  multiple
115
115
  fullwidth
116
116
  autoclose
117
- options="${()=>y.value.map(e=>({label:e.label,value:e.key}))}"
118
- value="${()=>T.filterDefs.value.map(e=>e.key)}"
119
- @change="${e=>{T.setActiveFilterKeys(e.detail.values)}}"></ore-combobox>
117
+ size="sm"
118
+ variant="flat"
119
+ options="${C}"
120
+ value="${()=>k.filterDefs.value.map(e=>e.key)}"
121
+ @change="${e=>{k.setActiveFilterKeys(f(e))}}"></ore-combobox>
120
122
  </div>
121
123
 
122
124
  <!-- Active filter rules (appear below the field picker as rules are added) -->
123
- <div class="dg-pop-filter-rules" ?hidden="${()=>!T.filterDefs.value.length}">
124
- ${()=>T.filterDefs.value.map(e=>o.html`
125
+ <div class="dg-pop-filter-rules" ?hidden="${()=>!k.filterDefs.value.length}">
126
+ ${()=>k.filterDefs.value.map(e=>o.html`
125
127
  <div class="dg-pop-filter-rule">
126
128
  <div class="dg-pop-filter-rule-header">
127
129
  <span class="dg-pop-filter-field">${e.label}</span>
128
130
  <ore-select
129
131
  class="dg-pop-filter-op-select"
132
+ hide-label
130
133
  variant="ghost"
131
134
  size="sm"
135
+ label="${()=>m.value.filterOperator(e.label)}"
132
136
  fullwidth
133
- value="${()=>T.filterValues.value.get(e.key)?.operator??`contains`}"
137
+ value="${()=>k.filterValues.value.get(e.key)?.operator??`contains`}"
134
138
  options="${()=>e.operators??[]}"
135
- @change="${t=>{T.setFilterOperator(e.key,t.detail.values[0])}}"></ore-select>
139
+ @change="${t=>{let n=f(t)[0];n&&k.setFilterOperator(e.key,n)}}"></ore-select>
136
140
  <ore-button
137
141
  class="dg-icon-btn"
138
142
  variant="ghost"
139
143
  size="sm"
140
144
  icon-only
141
- label="Remove filter"
142
- @click="${()=>T.removeFilter(e.key)}">
145
+ label="${()=>m.value.removeFilter}"
146
+ @click="${()=>k.removeFilter(e.key)}">
143
147
  <ore-icon name="trash-2" size="13" stroke-width="1.75" aria-hidden="true"></ore-icon>
144
148
  </ore-button>
145
149
  </div>
146
150
  <ore-combobox
147
151
  class="dg-filter"
152
+ hide-label
153
+ size="sm"
154
+ variant="flat"
155
+ label="${()=>e.label}"
148
156
  placeholder="${()=>e.label}"
149
157
  options="${()=>e.options}"
150
- value="${()=>[...T.filterValues.value.get(e.key)?.values??[]]}"
151
- disabled="${()=>f.value||void 0}"
158
+ value="${()=>[...k.filterValues.value.get(e.key)?.values??[]]}"
159
+ disabled="${()=>h.value||void 0}"
152
160
  multiple
153
161
  fullwidth
154
162
  autoclose
155
- @change="${t=>{T.setFilter(e.key,t.detail.values)}}"></ore-combobox>
163
+ @change="${t=>{k.setFilter(e.key,f(t))}}"></ore-combobox>
156
164
  </div>
157
165
  `)}
158
166
  </div>
159
167
  </div>
160
168
  </ore-popover>
161
- `,Z=()=>o.html`
169
+ `,ne=()=>o.html`
162
170
  <ore-popover
163
171
  class="dg-action-popover"
164
172
  placement="bottom-end"
165
- label="Column options"
173
+ label="${()=>m.value.columnOptions}"
166
174
  style="--popover-min-width:18rem">
167
- <ore-button class="dg-icon-btn" variant="ghost" size="sm" icon-only label="Column options">
175
+ <ore-button
176
+ class="dg-icon-btn dg-state-trigger dg-column-trigger"
177
+ variant="ghost"
178
+ size="sm"
179
+ icon-only
180
+ ?data-customized="${()=>k.hiddenColumns.value.size>0}"
181
+ label="${()=>k.hiddenColumns.value.size?`${m.value.columnOptions}: ${m.value.hiddenColumns(k.hiddenColumns.value.size)}`:m.value.columnOptions}">
168
182
  <ore-icon name="columns-2" size="15" stroke-width="1.75" aria-hidden="true"></ore-icon>
169
183
  </ore-button>
170
- <div slot="content" class="dg-pop-col-list" role="menu" aria-label="Column visibility">
171
- ${()=>y.value.map(e=>o.html`
172
- <ore-button
173
- class="dg-pop-col-item"
174
- role="menuitemcheckbox"
175
- variant="ghost"
176
- size="sm"
177
- aria-checked="${()=>String(!T.hiddenColumns.value.has(e.key))}"
178
- @click="${()=>T.toggleColumnVisibility(e.key)}">
179
- <ore-icon
180
- slot="prefix"
181
- name="${()=>T.hiddenColumns.value.has(e.key)?`eye-off`:`eye`}"
182
- size="13"
183
- stroke-width="2"
184
- aria-hidden="true"></ore-icon>
185
- ${e.label}
186
- </ore-button>
187
- `)}
184
+ <div slot="content" class="dg-pop-col">
185
+ <div class="dg-pop-header">
186
+ <span class="dg-pop-heading"><strong class="dg-pop-title">${()=>m.value.columnVisibility}</strong><small>${()=>m.value.visibleColumns(k.visibleColumns.value.length,S.value.length)}</small></span>
187
+ ${()=>k.hiddenColumns.value.size?o.html`
188
+ <ore-button
189
+ class="dg-icon-btn"
190
+ variant="ghost"
191
+ size="sm"
192
+ icon-only
193
+ label="${()=>m.value.resetColumns}"
194
+ @click="${()=>k.resetColumnVisibility()}">
195
+ <ore-icon name="trash-2" size="14" stroke-width="1.75" aria-hidden="true"></ore-icon>
196
+ </ore-button>
197
+ `:o.html``}
198
+ </div>
199
+ <div class="dg-pop-col-list" role="group" aria-label="${()=>m.value.columnVisibility}">
200
+ ${()=>S.value.map(e=>o.html`
201
+ <ore-checkbox
202
+ class="dg-pop-col-item"
203
+ checked="${()=>!k.hiddenColumns.value.has(e.key)}"
204
+ disabled="${()=>!k.hiddenColumns.value.has(e.key)&&k.visibleColumns.value.length===1||void 0}"
205
+ @change="${()=>k.toggleColumnVisibility(e.key)}">${e.label}</ore-checkbox>
206
+ `)}
207
+ </div>
188
208
  </div>
189
209
  </ore-popover>
190
210
  `;return o.html`
191
211
  <!-- ── Controls Bar ────────────────────────────────────────────────── -->
192
212
  <div class="dg-controls" part="controls">
193
213
  <!-- Left: view tabs -->
194
- ${()=>J()}
214
+ ${()=>$()}
195
215
 
196
216
  <!-- Right: Action bar -->
197
217
  <div class="dg-actions">
198
- ${()=>Y()} ${()=>X()} ${()=>Z()}
218
+ ${()=>ee()} ${()=>te()} ${()=>ne()}
199
219
 
200
220
  <!-- Density toggle -->
201
221
  <ore-button
@@ -203,33 +223,34 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
203
223
  variant="ghost"
204
224
  size="sm"
205
225
  icon-only
206
- label="${()=>H[U.value]}"
207
- @click="${W}">
226
+ label="${()=>J.value[Y.value]}"
227
+ @click="${X}">
208
228
  <ore-icon
209
- name="${()=>V[U.value]}"
229
+ name="${()=>q[Y.value]}"
210
230
  size="15"
211
231
  stroke-width="1.75"
212
232
  aria-hidden="true"></ore-icon>
213
233
  </ore-button>
214
234
 
215
- <span class="dg-action-divider" aria-hidden="true" ?hidden="${()=>!d.has(`actions`).value}"></span>
235
+ <span class="dg-action-divider" aria-hidden="true" ?hidden="${()=>!p.has(`actions`).value}"></span>
216
236
 
217
237
  <slot name="actions"></slot>
218
238
 
219
239
  <!-- Search toggle: rightmost, expands in-place -->
220
- <div class="${()=>`dg-search${T.searchActive.value?` dg-search--open`:``}`}">
221
- ${()=>T.searchActive.value?o.html`
240
+ <div class="${()=>`dg-search${k.searchActive.value?` dg-search--open`:``}`}">
241
+ ${()=>k.searchActive.value?o.html`
222
242
  <ore-input
223
243
  class="dg-search-input"
224
244
  type="search"
225
245
  variant="flat"
226
246
  size="sm"
227
247
  rounded="full"
228
- placeholder="${()=>e.searchPlaceholder.value??`Search…`}"
229
- disabled="${()=>f.value||void 0}"
248
+ aria-label="${()=>m.value.search}"
249
+ placeholder="${()=>e.searchPlaceholder.value??`${m.value.search}…`}"
250
+ disabled="${()=>h.value||void 0}"
230
251
  ref="${e=>{e&&requestAnimationFrame(()=>e.focus())}}"
231
- @input="${e=>{E(e.detail.value)}}"
232
- @keydown="${t=>{if(t.key===`Escape`){let t=e.source.value;t?.setQuery&&t.setQuery({search:``}),T.toggleSearch()}}}">
252
+ @input="${e=>{M(e.currentTarget.value)}}"
253
+ @keydown="${t=>{if(t.key===`Escape`){let t=e.source.value;t?.setQuery&&t.setQuery({search:``}),k.toggleSearch()}}}">
233
254
  <ore-icon slot="prefix" name="search" size="13" stroke-width="1.75" aria-hidden="true"></ore-icon>
234
255
  </ore-input>
235
256
  `:o.html``}
@@ -237,10 +258,10 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
237
258
  variant="ghost"
238
259
  size="sm"
239
260
  icon-only
240
- label="${()=>{let[t,n]=e.searchLabel.value??[`Search`,`Close search`];return T.searchActive.value?n:t}}"
241
- @click="${()=>{let t=e.source.value;t?.setQuery&&T.searchActive.value&&t.setQuery({search:``}),T.toggleSearch()}}">
261
+ label="${()=>{let[t,n]=e.searchLabel.value??[m.value.search,m.value.closeSearch];return k.searchActive.value?n:t}}"
262
+ @click="${()=>{let t=e.source.value;t?.setQuery&&k.searchActive.value&&t.setQuery({search:``}),k.toggleSearch()}}">
242
263
  <ore-icon
243
- name="${()=>T.searchActive.value?`x`:`search`}"
264
+ name="${()=>k.searchActive.value?`x`:`search`}"
244
265
  size="15"
245
266
  stroke-width="1.75"
246
267
  aria-hidden="true"></ore-icon>
@@ -249,7 +270,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
249
270
  </div>
250
271
  </div>
251
272
 
252
- <div id="dg-tabpanel" class="dg-scroll" role="tabpanel" aria-label="Data">
273
+ <div id="dg-tabpanel" class="dg-scroll" role="tabpanel" aria-label="${()=>m.value.data}">
253
274
  <div class="dg-loading-overlay">
254
275
  <ore-icon name="loader-2" size="24" class="dg-spin" aria-hidden="true"></ore-icon>
255
276
  </div>
@@ -258,36 +279,36 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
258
279
  part="table"
259
280
  role="grid"
260
281
  aria-label="${()=>e.label.value??void 0}"
261
- aria-busy="${()=>I.value?`true`:null}"
262
- aria-disabled="${()=>f.value?`true`:null}">
282
+ aria-busy="${()=>H.value?`true`:null}"
283
+ aria-disabled="${()=>h.value?`true`:null}">
263
284
  <!-- Head -->
264
285
  <thead class="dg-head" part="thead">
265
286
  <tr role="row">
266
- ${()=>p.value===`multi`?o.html`
287
+ ${()=>g.value===`multi`?o.html`
267
288
  <th
268
289
  class="dg-th dg-th-check"
269
290
  role="columnheader"
270
291
  scope="col"
271
- tabindex="${()=>q.activeCell.value.row===0&&q.activeCell.value.col===0&&g.value>=1?`0`:`-1`}">
292
+ tabindex="${()=>Q.activeCell.value.row===0&&Q.activeCell.value.col===0&&y.value>=1?`0`:`-1`}">
272
293
  <ore-checkbox
273
294
  class="dg-check"
274
- checked="${()=>T.isAllSelected()}"
275
- indeterminate="${M}"
276
- ?disabled="${f}"
277
- aria-label="Select all rows on this page"
278
- @change="${()=>{f.value||T.selectAll()}}"></ore-checkbox>
295
+ checked="${()=>k.isAllSelected()}"
296
+ indeterminate="${R}"
297
+ ?disabled="${h}"
298
+ aria-label="${()=>m.value.selectAllRows}"
299
+ @change="${()=>{h.value||k.selectAll()}}"></ore-checkbox>
279
300
  </th>
280
301
  `:o.html``}
281
- ${()=>k.value.map((e,t)=>{let n=t===k.value.length-1;return o.html`
302
+ ${()=>F.value.map((e,t)=>{let n=t===F.value.length-1;return o.html`
282
303
  <th
283
- class="${`dg-th${n&&h.value?` dg-th-last`:``}`}"
304
+ class="${`dg-th${n&&v.value?` dg-th-last`:``}`}"
284
305
  role="columnheader"
285
306
  scope="col"
286
- tabindex="${()=>{let e=q.activeCell.value;return e.row===0&&e.col===t+g.value?`0`:`-1`}}"
307
+ tabindex="${()=>{let e=Q.activeCell.value;return e.row===0&&e.col===t+y.value?`0`:`-1`}}"
287
308
  data-align="${e.align??`left`}"
288
- aria-sort="${()=>e.sortable?u(T.sortState.value,e.key):void 0}"
309
+ aria-sort="${()=>e.sortable?d(k.sortState.value,e.key):void 0}"
289
310
  aria-label="${e.sortable?void 0:e.headerLabel??e.label}"
290
- style="${()=>{let t=D.value[e.key];return t?`width:${t}px`:e.width?`width:${e.width}`:``}}">
311
+ style="${()=>{let t=N.value[e.key];return t?`width:${t}px`:e.width?`width:${e.width}`:``}}">
291
312
  <div class="dg-th-inner">
292
313
  ${()=>e.sortable?o.html`
293
314
  <ore-button
@@ -296,13 +317,13 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
296
317
  size="sm"
297
318
  fullwidth
298
319
  label="${e.headerLabel??e.label}"
299
- disabled="${()=>f.value||void 0}"
300
- @click="${()=>{f.value||T.sortBy(e.key)}}">
320
+ disabled="${()=>h.value||void 0}"
321
+ @click="${()=>{h.value||k.sortBy(e.key)}}">
301
322
  ${e.label}
302
323
  <ore-icon
303
324
  slot="suffix"
304
325
  class="dg-sort-icon"
305
- name="${()=>l(T.sortState.value,e.key)}"
326
+ name="${()=>u(k.sortState.value,e.key)}"
306
327
  size="14"
307
328
  stroke-width="2"></ore-icon>
308
329
  </ore-button>
@@ -311,17 +332,17 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
311
332
  <span
312
333
  class="dg-col-resize"
313
334
  aria-hidden="true"
314
- ref="${t=>{if(!t)return;let n=t.closest(`th`);n&&t.addEventListener(`pointerdown`,O(e.key,n))}}"></span>
335
+ ref="${t=>{if(!t)return;let n=t.closest(`th`);n&&t.addEventListener(`pointerdown`,P(e.key,n))}}"></span>
315
336
  `:o.html``}
316
337
  </div>
317
338
  </th>
318
339
  `})}
319
- ${()=>h.value?o.html`
340
+ ${()=>v.value?o.html`
320
341
  <th
321
342
  class="dg-th dg-th-expand"
322
343
  role="columnheader"
323
344
  scope="col"
324
- aria-label="Row details"
345
+ aria-label="${()=>m.value.rowDetails}"
325
346
  tabindex="-1"></th>
326
347
  `:o.html``}
327
348
  </tr>
@@ -329,80 +350,80 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
329
350
 
330
351
  <!-- Body -->
331
352
  <tbody class="dg-body" part="tbody">
332
- ${()=>T.currentPageItems.value.length===0?o.html`
353
+ ${()=>k.currentPageItems.value.length===0?o.html`
333
354
  <tr role="row">
334
- <td class="dg-empty" role="gridcell" colspan="${()=>String(N.value)}">
355
+ <td class="dg-empty" role="gridcell" colspan="${()=>String(z.value)}">
335
356
  <div class="dg-empty-content">
336
357
  ${()=>e.emptyText.value??`No data`}
337
- ${()=>T.searchQuery.value||T.filterValues.value.size?o.html`
358
+ ${()=>k.searchQuery.value||k.filterValues.value.size?o.html`
338
359
  <div class="dg-empty-actions">
339
360
  <ore-button
340
361
  variant="text"
341
362
  size="sm"
342
- @click="${()=>{T.resetSearch(),T.resetFilters()}}">
343
- Clear all filters & search
363
+ @click="${()=>{k.resetSearch(),k.resetFilters()}}">
364
+ ${()=>m.value.clearFiltersAndSearch}
344
365
  </ore-button>
345
366
  </div>
346
367
  `:o.html``}
347
368
  </div>
348
369
  </td>
349
370
  </tr>
350
- `:T.currentPageItems.value.map((e,t)=>{let n=b(e),r=p.value!==`none`&&!f.value,i=t+1;return o.html`
371
+ `:k.currentPageItems.value.map((e,t)=>{let n=w(e),r=g.value!==`none`&&!h.value,i=t+1;return o.html`
351
372
  <tr
352
373
  class="dg-tr"
353
374
  part="row"
354
375
  role="row"
355
- aria-selected="${()=>p.value===`none`?null:String(T.selectedKeys.value.has(n))}"
356
- aria-expanded="${()=>h.value?String(m.value.has(n)):null}"
376
+ aria-selected="${()=>g.value===`none`?null:String(k.selectedKeys.value.has(n))}"
377
+ aria-expanded="${()=>v.value?String(_.value.has(n)):null}"
357
378
  ?data-selectable="${r}"
358
- ?data-disabled="${f}"
359
- @click="${()=>{r&&p.value===`single`&&T.toggleRow(n)}}"
360
- @keydown="${e=>{(e.key===`Enter`||e.key===` `)&&r&&p.value===`single`&&(e.preventDefault(),T.toggleRow(n))}}">
361
- ${()=>p.value===`multi`?o.html`
379
+ ?data-disabled="${h}"
380
+ @click="${()=>{r&&g.value===`single`&&k.toggleRow(n)}}"
381
+ @keydown="${e=>{(e.key===`Enter`||e.key===` `)&&r&&g.value===`single`&&(e.preventDefault(),k.toggleRow(n))}}">
382
+ ${()=>g.value===`multi`?o.html`
362
383
  <td
363
384
  class="dg-td dg-td-check"
364
385
  role="gridcell"
365
- tabindex="${()=>{let e=q.activeCell.value;return e.row===i&&e.col===0?`0`:`-1`}}"
366
- @keydown="${e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),f.value||T.toggleRow(n))}}">
386
+ tabindex="${()=>{let e=Q.activeCell.value;return e.row===i&&e.col===0?`0`:`-1`}}"
387
+ @keydown="${e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),h.value||k.toggleRow(n))}}">
367
388
  <ore-checkbox
368
389
  class="dg-check"
369
- checked="${()=>T.selectedKeys.value.has(n)}"
370
- ?disabled="${f}"
371
- aria-label="Select row"
390
+ checked="${()=>k.selectedKeys.value.has(n)}"
391
+ ?disabled="${h}"
392
+ aria-label="${()=>m.value.selectRow}"
372
393
  tabindex="-1"
373
394
  @click="${e=>e.stopPropagation()}"
374
- @change="${()=>{f.value||T.toggleRow(n)}}"></ore-checkbox>
395
+ @change="${()=>{h.value||k.toggleRow(n)}}"></ore-checkbox>
375
396
  </td>
376
397
  `:o.html``}
377
- ${k.value.map((t,n)=>{let r=A(t,e),a=n===k.value.length-1;return o.html`
398
+ ${F.value.map((t,n)=>{let r=e,a=I(t,r),s=t.renderCell?.(r)??a,c=n===F.value.length-1;return o.html`
378
399
  <td
379
- class="${`dg-td${a&&h.value?` dg-td-last`:``}`}"
400
+ class="${`dg-td${c&&v.value?` dg-td-last`:``}`}"
380
401
  part="cell"
381
402
  role="gridcell"
382
403
  data-align="${t.align??`left`}"
383
- tabindex="${()=>{let e=q.activeCell.value;return e.row===i&&e.col===n+g.value?`0`:`-1`}}"
384
- title="${r}">
385
- ${r}
404
+ tabindex="${()=>{let e=Q.activeCell.value;return e.row===i&&e.col===n+y.value?`0`:`-1`}}"
405
+ title="${a}">
406
+ ${s}
386
407
  </td>
387
408
  `})}
388
- ${()=>h.value?o.html`
409
+ ${()=>v.value?o.html`
389
410
  <td
390
411
  class="dg-td dg-td-expand"
391
412
  role="gridcell"
392
- tabindex="${()=>{let e=q.activeCell.value;return e.row===i&&e.col===N.value-1?`0`:`-1`}}"
393
- @keydown="${e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),f.value||K(n))}}">
413
+ tabindex="${()=>{let e=Q.activeCell.value;return e.row===i&&e.col===z.value-1?`0`:`-1`}}"
414
+ @keydown="${e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),h.value||Z(n))}}">
394
415
  <ore-button
395
416
  class="dg-expand-btn"
396
417
  variant="ghost"
397
418
  size="sm"
398
419
  icon-only
399
420
  tabindex="-1"
400
- label="${()=>m.value.has(n)?`Collapse row`:`Expand row`}"
401
- aria-expanded="${()=>String(m.value.has(n))}"
402
- disabled="${()=>f.value||void 0}"
403
- @click="${e=>{e.stopPropagation(),f.value||K(n)}}">
421
+ label="${()=>_.value.has(n)?m.value.collapseRow:m.value.expandRow}"
422
+ aria-expanded="${()=>String(_.value.has(n))}"
423
+ disabled="${()=>h.value||void 0}"
424
+ @click="${e=>{e.stopPropagation(),h.value||Z(n)}}">
404
425
  <ore-icon
405
- name="${()=>m.value.has(n)?`chevron-up`:`chevron-down`}"
426
+ name="${()=>_.value.has(n)?`chevron-up`:`chevron-down`}"
406
427
  size="14"
407
428
  stroke-width="2"
408
429
  aria-hidden="true"></ore-icon>
@@ -410,13 +431,13 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
410
431
  </td>
411
432
  `:o.html``}
412
433
  </tr>
413
- ${()=>h.value&&m.value.has(n)?o.html`
434
+ ${()=>v.value&&_.value.has(n)?o.html`
414
435
  <tr class="dg-tr-expanded" role="row">
415
436
  <td
416
437
  class="dg-td-expanded"
417
438
  role="gridcell"
418
- colspan="${()=>String(N.value)}">
419
- ${(0,o.unsafeHtml)(()=>y.value.find(e=>typeof e.renderExpanded==`function`)?.renderExpanded?.(e)??``)}
439
+ colspan="${()=>String(z.value)}">
440
+ ${(0,o.unsafeHtml)(()=>S.value.find(e=>typeof e.renderExpanded==`function`)?.renderExpanded?.(e)??``)}
420
441
  </td>
421
442
  </tr>
422
443
  `:o.html``}
@@ -426,35 +447,35 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
426
447
  </div>
427
448
 
428
449
  <!-- Footer / Pagination -->
429
- ${()=>P.value?o.html`
430
- <div class="dg-footer" part="footer" role="navigation" aria-label="Pagination">
431
- ${()=>(e.pageSizeOptions.value??[]).length?o.html``:o.html`
432
- <span class="dg-footer-info" dir="ltr" aria-live="polite" aria-atomic="true">
433
- ${F}
434
- </span>
435
- `}
436
- <div class="dg-footer-end">
450
+ ${()=>B.value?o.html`
451
+ <div class="dg-footer" part="footer" role="navigation" aria-label="${()=>m.value.pagination}">
452
+ <div class="dg-footer-start">
453
+ <span class="dg-footer-info" dir="ltr" aria-live="polite" aria-atomic="true">
454
+ ${V}
455
+ </span>
437
456
  ${()=>{let t=e.pageSizeOptions.value??[];return t.length?o.html`
438
457
  <div class="dg-page-size-wrap">
439
458
  <ore-select
440
459
  class="dg-page-size-select"
441
460
  fullwidth
442
- aria-label="Rows per page"
443
- value="${()=>String(_.value)}"
461
+ hide-label
462
+ label="${()=>m.value.rowsPerPage}"
463
+ value="${()=>String(b.value)}"
444
464
  options="${()=>t.map(e=>({label:String(e),value:String(e)}))}"
445
- disabled="${()=>f.value||void 0}"
446
- @change="${e=>{let t=parseInt(e.detail.values[0],10);Number.isNaN(t)||(_.value=t,T.goToPage(0),n(`page-change`,{pageIndex:0,pageSize:t}))}}"></ore-select>
465
+ disabled="${()=>h.value||void 0}"
466
+ @change="${e=>{let t=parseInt(f(e)[0]??``,10);Number.isNaN(t)||(b.value=t,k.goToPage(0),n(`page-change`,{pageIndex:0,pageSize:t}))}}"></ore-select>
447
467
  </div>
448
468
  `:o.html``}}
449
- <div class="dg-pagination" role="group" aria-label="Page navigation">
469
+ </div>
470
+ <div class="dg-pagination" role="group" aria-label="${()=>m.value.pageNavigation}">
450
471
  <ore-button
451
472
  class="dg-page-btn"
452
473
  variant="ghost"
453
474
  size="sm"
454
475
  icon-only
455
- label="Previous page"
456
- disabled="${()=>!L.value||f.value}"
457
- @click="${()=>j(`prev`)}">
476
+ label="${()=>m.value.previousPage}"
477
+ disabled="${()=>!U.value||h.value}"
478
+ @click="${()=>L(`prev`)}">
458
479
  <ore-icon name="chevron-left" size="14" stroke-width="2" aria-hidden="true"></ore-icon>
459
480
  </ore-button>
460
481
  <span
@@ -464,21 +485,20 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
464
485
  role="status"
465
486
  aria-live="polite"
466
487
  aria-atomic="true">
467
- ${()=>z.value}
488
+ ${()=>G.value}
468
489
  </span>
469
490
  <ore-button
470
491
  class="dg-page-btn"
471
492
  variant="ghost"
472
493
  size="sm"
473
494
  icon-only
474
- label="Next page"
475
- disabled="${()=>!R.value||f.value}"
476
- @click="${()=>j(`next`)}">
495
+ label="${()=>m.value.nextPage}"
496
+ disabled="${()=>!W.value||h.value}"
497
+ @click="${()=>L(`next`)}">
477
498
  <ore-icon name="chevron-right" size="14" stroke-width="2" aria-hidden="true"></ore-icon>
478
499
  </ore-button>
479
- </div>
480
500
  </div>
481
501
  </div>
482
502
  `:o.html``}
483
- `},shadow:{delegatesFocus:!0},styles:[e.tableBaseMixin(`datagrid`),n.default]}),exports.COLUMN_TAG=r.COLUMN_TAG,exports.DATAGRID_TAG=d,exports.ariaSortValue=u,exports.sortIconName=l;
503
+ `},shadow:{delegatesFocus:!0},styles:[e.tableBaseMixin(`datagrid`),n.default]}),exports.COLUMN_TAG=r.COLUMN_TAG,exports.DATAGRID_TAG=p,exports.ariaSortValue=d,exports.sortIconName=u;
484
504
  //# sourceMappingURL=datagrid.cjs.map