@skdx/vue 0.32.0 → 0.33.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 (59) hide show
  1. package/dist/index.d.cts +1 -1
  2. package/dist/index.d.ts +1 -1
  3. package/dist/table/Table.vue.d.cts +73 -4
  4. package/dist/table/Table.vue.d.ts +73 -4
  5. package/dist/table/Table.vue_vue_type_script_setup_true_lang.cjs +1 -1
  6. package/dist/table/Table.vue_vue_type_script_setup_true_lang.js +1 -1
  7. package/dist/table/TableAnatomy.vue.d.cts +11 -1
  8. package/dist/table/TableAnatomy.vue.d.ts +11 -1
  9. package/dist/table/TableAnatomy.vue_vue_type_script_setup_true_lang.cjs +1 -1
  10. package/dist/table/TableAnatomy.vue_vue_type_script_setup_true_lang.js +1 -1
  11. package/dist/table/TableCell.vue.d.cts +11 -3
  12. package/dist/table/TableCell.vue.d.ts +11 -3
  13. package/dist/table/TableCell.vue_vue_type_script_setup_true_lang.cjs +1 -1
  14. package/dist/table/TableCell.vue_vue_type_script_setup_true_lang.js +1 -1
  15. package/dist/table/TableColumnPinTrigger.vue.cjs +1 -0
  16. package/dist/table/TableColumnPinTrigger.vue.d.cts +30 -0
  17. package/dist/table/TableColumnPinTrigger.vue.d.ts +30 -0
  18. package/dist/table/TableColumnPinTrigger.vue.js +1 -0
  19. package/dist/table/TableColumnPinTrigger.vue_vue_type_script_setup_true_lang.cjs +1 -0
  20. package/dist/table/TableColumnPinTrigger.vue_vue_type_script_setup_true_lang.js +1 -0
  21. package/dist/table/TableColumnReorderTrigger.vue.cjs +1 -0
  22. package/dist/table/TableColumnReorderTrigger.vue.d.cts +27 -0
  23. package/dist/table/TableColumnReorderTrigger.vue.d.ts +27 -0
  24. package/dist/table/TableColumnReorderTrigger.vue.js +1 -0
  25. package/dist/table/TableColumnReorderTrigger.vue_vue_type_script_setup_true_lang.cjs +1 -0
  26. package/dist/table/TableColumnReorderTrigger.vue_vue_type_script_setup_true_lang.js +1 -0
  27. package/dist/table/TableGroupRow.vue.cjs +1 -0
  28. package/dist/table/TableGroupRow.vue.d.cts +26 -0
  29. package/dist/table/TableGroupRow.vue.d.ts +26 -0
  30. package/dist/table/TableGroupRow.vue.js +1 -0
  31. package/dist/table/TableGroupRow.vue_vue_type_script_setup_true_lang.cjs +1 -0
  32. package/dist/table/TableGroupRow.vue_vue_type_script_setup_true_lang.js +1 -0
  33. package/dist/table/TableHeaderCell.vue.d.cts +12 -0
  34. package/dist/table/TableHeaderCell.vue.d.ts +12 -0
  35. package/dist/table/TableHeaderCell.vue_vue_type_script_setup_true_lang.cjs +1 -1
  36. package/dist/table/TableHeaderCell.vue_vue_type_script_setup_true_lang.js +1 -1
  37. package/dist/table/TableRow.vue.d.cts +9 -1
  38. package/dist/table/TableRow.vue.d.ts +9 -1
  39. package/dist/table/TableRow.vue_vue_type_script_setup_true_lang.cjs +1 -1
  40. package/dist/table/TableRow.vue_vue_type_script_setup_true_lang.js +1 -1
  41. package/dist/table/TableTreeTrigger.vue.cjs +1 -0
  42. package/dist/table/TableTreeTrigger.vue.d.cts +19 -0
  43. package/dist/table/TableTreeTrigger.vue.d.ts +19 -0
  44. package/dist/table/TableTreeTrigger.vue.js +1 -0
  45. package/dist/table/TableTreeTrigger.vue_vue_type_script_setup_true_lang.cjs +1 -0
  46. package/dist/table/TableTreeTrigger.vue_vue_type_script_setup_true_lang.js +1 -0
  47. package/dist/table/context.cjs +1 -1
  48. package/dist/table/context.d.cts +39 -0
  49. package/dist/table/context.d.ts +39 -0
  50. package/dist/table/context.js +1 -1
  51. package/dist/table/index.d.cts +1 -1
  52. package/dist/table/index.d.ts +1 -1
  53. package/dist/table/primitives.cjs +1 -1
  54. package/dist/table/primitives.d.cts +5 -1
  55. package/dist/table/primitives.d.ts +5 -1
  56. package/dist/table/primitives.js +1 -1
  57. package/dist/transfer/Transfer.vue.d.cts +1 -1
  58. package/dist/transfer/Transfer.vue.d.ts +1 -1
  59. package/package.json +2 -2
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Toggle button pinning its column to one edge: a `<button aria-pressed>` that unpins the column when it is already pinned to `side`.
3
+ */
4
+ type __VLS_Props = {
5
+ /** Column this trigger pins, inherited from `SkdxTableHeaderCell`'s `columnKey` or renders nothing. */
6
+ columnKey?: string | undefined;
7
+ /** Which edge the column sticks to when pinned by this trigger. @default 'start' */
8
+ side?: 'start' | 'end';
9
+ /**
10
+ * Accessible name for the trigger, e.g. `"Pin Name column"`.
11
+ * @default the enclosing header cell's `pinLabel`, otherwise `'Pin column'`.
12
+ */
13
+ label?: string | undefined;
14
+ };
15
+ declare var __VLS_1: {};
16
+ type __VLS_Slots = {} & {
17
+ default?: (props: typeof __VLS_1) => any;
18
+ };
19
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
20
+ label: string | undefined;
21
+ side: "start" | "end";
22
+ columnKey: string | undefined;
23
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
24
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
25
+ export default _default;
26
+ type __VLS_WithSlots<T, S> = T & {
27
+ new (): {
28
+ $slots: S;
29
+ };
30
+ };
@@ -0,0 +1 @@
1
+ import e from"./TableColumnPinTrigger.vue_vue_type_script_setup_true_lang.js";var r=e;export{r as default};
@@ -0,0 +1 @@
1
+ const p=require("../utils/injectRequired.cjs"),d=require("./context.cjs");let e=require("vue");var m=["aria-label","aria-pressed","data-pinned"],v={"aria-hidden":"true"},_=(0,e.defineComponent)({inheritAttrs:!1,__name:"TableColumnPinTrigger",props:{columnKey:{default:void 0},side:{default:"start"},label:{default:void 0}},setup(l){const t=l,i=p.injectRequired(d.TABLE_CONTEXT,"SkdxTableColumnPinTrigger must be used within SkdxTable"),r=(0,e.inject)(d.TABLE_HEADER_CELL_CONTEXT,void 0),n=(0,e.computed)(()=>t.columnKey??r?.columnKey),s=(0,e.computed)(()=>t.label??r?.pinLabel??"Pin column"),o=(0,e.computed)(()=>n.value===void 0?void 0:i.columnPins.value[n.value]),u=(0,e.computed)(()=>o.value===t.side);function c(a){a.stopPropagation(),i.setColumnPin(n.value,u.value?null:t.side)}return(a,g)=>n.value!==void 0?((0,e.openBlock)(),(0,e.createElementBlock)("button",(0,e.mergeProps)({key:0,class:"skdx-table__column-pin-trigger","data-part":"column-pin-trigger",type:"button","aria-label":s.value,"aria-pressed":u.value,"data-pinned":o.value,"data-skdx-table-pin-trigger":""},a.$attrs,{onClick:c}),[(0,e.renderSlot)(a.$slots,"default",{},()=>[(0,e.createElementVNode)("span",v,(0,e.toDisplayString)(l.side==="end"?"⊢":"⊣"),1)])],16,m)):(0,e.createCommentVNode)("",!0)}});exports.default=_;
@@ -0,0 +1 @@
1
+ import{injectRequired as e}from"../utils/injectRequired.js";import{TABLE_CONTEXT as a,TABLE_HEADER_CELL_CONTEXT as t}from"./context.js";import{computed as i,createCommentVNode as l,createElementBlock as n,createElementVNode as o,defineComponent as r,inject as s,mergeProps as u,openBlock as d,renderSlot as m,toDisplayString as p}from"vue";var c=["aria-label","aria-pressed","data-pinned"],v={"aria-hidden":"true"},b=/* @__PURE__ */r({inheritAttrs:!1,__name:"TableColumnPinTrigger",props:{columnKey:{default:void 0},side:{default:"start"},label:{default:void 0}},setup(r){const b=r,g=e(a,"SkdxTableColumnPinTrigger must be used within SkdxTable"),T=s(t,void 0),f=i(()=>b.columnKey??T?.columnKey),C=i(()=>b.label??T?.pinLabel??"Pin column"),E=i(()=>void 0===f.value?void 0:g.columnPins.value[f.value]),k=i(()=>E.value===b.side);function _(e){e.stopPropagation(),g.setColumnPin(f.value,k.value?null:b.side)}return(e,a)=>void 0!==f.value?(d(),n("button",u({key:0,class:"skdx-table__column-pin-trigger","data-part":"column-pin-trigger",type:"button","aria-label":C.value,"aria-pressed":k.value,"data-pinned":E.value,"data-skdx-table-pin-trigger":""},e.$attrs,{onClick:_}),[m(e.$slots,"default",{},()=>[o("span",v,p("end"===r.side?"⊢":"⊣"),1)])],16,c)):l("",!0)}});export{b as default};
@@ -0,0 +1 @@
1
+ const e=require("./TableColumnReorderTrigger.vue_vue_type_script_setup_true_lang.cjs");var r=e.default;exports.default=r;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Moves its column: Arrow Left/Right one position (mirrored under `dir="rtl"`), Home/End to an end, or drag it onto another header cell.
3
+ */
4
+ type __VLS_Props = {
5
+ /** Column this trigger moves, inherited from `SkdxTableHeaderCell`'s `columnKey` or renders nothing. */
6
+ columnKey?: string | undefined;
7
+ /**
8
+ * Accessible name for the trigger, e.g. `"Move Name column"`.
9
+ * @default the enclosing header cell's `reorderLabel`, otherwise `'Move column'`.
10
+ */
11
+ label?: string | undefined;
12
+ };
13
+ declare var __VLS_1: {};
14
+ type __VLS_Slots = {} & {
15
+ default?: (props: typeof __VLS_1) => any;
16
+ };
17
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
18
+ label: string | undefined;
19
+ columnKey: string | undefined;
20
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
21
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
22
+ export default _default;
23
+ type __VLS_WithSlots<T, S> = T & {
24
+ new (): {
25
+ $slots: S;
26
+ };
27
+ };
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Moves its column: Arrow Left/Right one position (mirrored under `dir="rtl"`), Home/End to an end, or drag it onto another header cell.
3
+ */
4
+ type __VLS_Props = {
5
+ /** Column this trigger moves, inherited from `SkdxTableHeaderCell`'s `columnKey` or renders nothing. */
6
+ columnKey?: string | undefined;
7
+ /**
8
+ * Accessible name for the trigger, e.g. `"Move Name column"`.
9
+ * @default the enclosing header cell's `reorderLabel`, otherwise `'Move column'`.
10
+ */
11
+ label?: string | undefined;
12
+ };
13
+ declare var __VLS_1: {};
14
+ type __VLS_Slots = {} & {
15
+ default?: (props: typeof __VLS_1) => any;
16
+ };
17
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
18
+ label: string | undefined;
19
+ columnKey: string | undefined;
20
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
21
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
22
+ export default _default;
23
+ type __VLS_WithSlots<T, S> = T & {
24
+ new (): {
25
+ $slots: S;
26
+ };
27
+ };
@@ -0,0 +1 @@
1
+ import e from"./TableColumnReorderTrigger.vue_vue_type_script_setup_true_lang.js";var r=e;export{r as default};
@@ -0,0 +1 @@
1
+ const R=require("../utils/injectRequired.cjs"),_=require("../utils/direction.cjs"),E=require("./context.cjs");let t=require("vue");var q=["aria-label","data-dragging"],I='button, input, [role="separator"]',K=(0,t.defineComponent)({inheritAttrs:!1,__name:"TableColumnReorderTrigger",props:{columnKey:{default:void 0},label:{default:void 0}},setup(b){const g=b,k=R.injectRequired(E.TABLE_CONTEXT,"SkdxTableColumnReorderTrigger must be used within SkdxTable"),p=(0,t.inject)(E.TABLE_HEADER_CELL_CONTEXT,void 0),C=_.useDirection(),d=(0,t.ref)(null),l=(0,t.ref)(null),T=(0,t.computed)(()=>l.value!==null);let u=null;const i=(0,t.computed)(()=>g.columnKey??p?.columnKey),P=(0,t.computed)(()=>g.label??p?.reorderLabel??"Move column");function c(){const e=d.value?.closest("tr");return e?[...e.querySelectorAll("th[data-column-key]")]:[]}function s(e){return e.findIndex(r=>r.dataset.columnKey===i.value)}function h(e,r){const n=e[r];return n===void 0?i.value:[...(n.querySelector("[data-skdx-table-sort-trigger]")??n).childNodes].filter(o=>o.nodeType!==Node.COMMENT_NODE).filter(o=>!(o instanceof Element&&o.matches(I))).map(o=>o.textContent??"").join("").trim()||i.value}function a(e,r){const n=s(e);n!==-1&&k.moveColumn(i.value,r,h(e,n))}let f=null;function m(e){e.key==="Escape"&&(u=null,v())}function v(){const e=l.value;if(e===null)return null;l.value=null,document.removeEventListener("keydown",m);const r=d.value,n=f;return f=null,n!==null&&r?.hasPointerCapture?.(n)&&r.releasePointerCapture(n),e}(0,t.onBeforeUnmount)(()=>document.removeEventListener("keydown",m));function w(e){if(e.button!==0)return;e.preventDefault(),e.stopPropagation();const r=s(c());r!==-1&&(l.value=r,u=null,f=e.pointerId,document.addEventListener("keydown",m),e.currentTarget.setPointerCapture?.(e.pointerId))}function x(e){if(l.value===null)return;const r=c().findIndex(n=>{const o=n.getBoundingClientRect();return e.clientX>=o.left&&e.clientX<=o.right});r!==-1&&(u=r)}function y(){const e=v(),r=u;u=null,!(e===null||r===null||r===e)&&a(c(),r)}function D(e){const r=_.directionalKey(e.key,e.currentTarget,C()),n=c(),o=s(n);if(o!==-1){if(r==="ArrowLeft")a(n,o-1);else if(r==="ArrowRight")a(n,o+1);else if(e.key==="Home")a(n,0);else if(e.key==="End")a(n,n.length-1);else return;e.preventDefault(),e.stopPropagation()}}function L(e){e.stopPropagation()}return(e,r)=>i.value!==void 0?((0,t.openBlock)(),(0,t.createElementBlock)("button",(0,t.mergeProps)({key:0,ref_key:"triggerRef",ref:d,class:"skdx-table__column-reorder-trigger","data-part":"column-reorder-trigger",type:"button","aria-label":P.value,"data-skdx-table-reorder-trigger":"","data-dragging":T.value?"":void 0},e.$attrs,{onPointerdown:w,onPointermove:x,onPointerup:y,onPointercancel:y,onKeydown:D,onClick:L}),[(0,t.renderSlot)(e.$slots,"default",{},()=>[r[0]||(r[0]=(0,t.createElementVNode)("span",{"aria-hidden":"true"},"⠿",-1))])],16,q)):(0,t.createCommentVNode)("",!0)}});exports.default=K;
@@ -0,0 +1 @@
1
+ import{injectRequired as e}from"../utils/injectRequired.js";import{directionalKey as t,useDirection as n}from"../utils/direction.js";import{TABLE_CONTEXT as r,TABLE_HEADER_CELL_CONTEXT as o}from"./context.js";import{computed as l,createCommentVNode as a,createElementBlock as u,createElementVNode as i,defineComponent as s,inject as d,mergeProps as c,onBeforeUnmount as f,openBlock as m,ref as p,renderSlot as v}from"vue";var g=["aria-label","data-dragging"],y=/* @__PURE__ */s({inheritAttrs:!1,__name:"TableColumnReorderTrigger",props:{columnKey:{default:void 0},label:{default:void 0}},setup(s){const y=s,k=e(r,"SkdxTableColumnReorderTrigger must be used within SkdxTable"),E=d(o,void 0),b=n(),C=p(null),T=p(null),P=l(()=>null!==T.value);let h=null;const x=l(()=>y.columnKey??E?.columnKey),_=l(()=>y.label??E?.reorderLabel??"Move column");function L(){const e=C.value?.closest("tr");return e?[...e.querySelectorAll("th[data-column-key]")]:[]}function w(e){return e.findIndex(e=>e.dataset.columnKey===x.value)}function N(e,t){const n=w(e);-1!==n&&k.moveColumn(x.value,t,function(e,t){const n=e[t];return void 0===n?x.value:[...(n.querySelector("[data-skdx-table-sort-trigger]")??n).childNodes].filter(e=>e.nodeType!==Node.COMMENT_NODE).filter(e=>!(e instanceof Element&&e.matches('button, input, [role="separator"]'))).map(e=>e.textContent??"").join("").trim()||x.value}(e,n))}let R=null;function j(e){"Escape"===e.key&&(h=null,A())}function A(){const e=T.value;if(null===e)return null;T.value=null,document.removeEventListener("keydown",j);const t=C.value,n=R;return R=null,null!==n&&t?.hasPointerCapture?.(n)&&t.releasePointerCapture(n),e}function B(e){if(0!==e.button)return;e.preventDefault(),e.stopPropagation();const t=w(L());-1!==t&&(T.value=t,h=null,R=e.pointerId,document.addEventListener("keydown",j),e.currentTarget.setPointerCapture?.(e.pointerId))}function K(e){if(null===T.value)return;const t=L().findIndex(t=>{const n=t.getBoundingClientRect();return e.clientX>=n.left&&e.clientX<=n.right});-1!==t&&(h=t)}function D(){const e=A(),t=h;h=null,null!==e&&null!==t&&t!==e&&N(L(),t)}function S(e){const n=t(e.key,e.currentTarget,b()),r=L(),o=w(r);if(-1!==o){if("ArrowLeft"===n)N(r,o-1);else if("ArrowRight"===n)N(r,o+1);else if("Home"===e.key)N(r,0);else{if("End"!==e.key)return;N(r,r.length-1)}e.preventDefault(),e.stopPropagation()}}function q(e){e.stopPropagation()}return f(()=>document.removeEventListener("keydown",j)),(e,t)=>void 0!==x.value?(m(),u("button",c({key:0,ref_key:"triggerRef",ref:C,class:"skdx-table__column-reorder-trigger","data-part":"column-reorder-trigger",type:"button","aria-label":_.value,"data-skdx-table-reorder-trigger":"","data-dragging":P.value?"":void 0},e.$attrs,{onPointerdown:B,onPointermove:K,onPointerup:D,onPointercancel:D,onKeydown:S,onClick:q}),[v(e.$slots,"default",{},()=>[t[0]||(t[0]=i("span",{"aria-hidden":"true"},"⠿",-1))])],16,g)):a("",!0)}});export{y as default};
@@ -0,0 +1 @@
1
+ const e=require("./TableGroupRow.vue_vue_type_script_setup_true_lang.cjs");var u=e.default;exports.default=u;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Row heading a group of rows: a `<tr>` whose single `<th scope="rowgroup">` holds a `<button aria-expanded>` that shows or hides the group.
3
+ */
4
+ type __VLS_Props = {
5
+ /** Key of the group this row heads, the one that appears in `collapsedGroups`. */
6
+ groupKey: string;
7
+ /**
8
+ * How many columns the group cell spans.
9
+ * @default undefined — the table's own header cell count, so a column added later still spans.
10
+ */
11
+ colSpan?: number | undefined;
12
+ };
13
+ declare var __VLS_1: {};
14
+ type __VLS_Slots = {} & {
15
+ default?: (props: typeof __VLS_1) => any;
16
+ };
17
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
18
+ colSpan: number | undefined;
19
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
20
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
21
+ export default _default;
22
+ type __VLS_WithSlots<T, S> = T & {
23
+ new (): {
24
+ $slots: S;
25
+ };
26
+ };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Row heading a group of rows: a `<tr>` whose single `<th scope="rowgroup">` holds a `<button aria-expanded>` that shows or hides the group.
3
+ */
4
+ type __VLS_Props = {
5
+ /** Key of the group this row heads, the one that appears in `collapsedGroups`. */
6
+ groupKey: string;
7
+ /**
8
+ * How many columns the group cell spans.
9
+ * @default undefined — the table's own header cell count, so a column added later still spans.
10
+ */
11
+ colSpan?: number | undefined;
12
+ };
13
+ declare var __VLS_1: {};
14
+ type __VLS_Slots = {} & {
15
+ default?: (props: typeof __VLS_1) => any;
16
+ };
17
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
18
+ colSpan: number | undefined;
19
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
20
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
21
+ export default _default;
22
+ type __VLS_WithSlots<T, S> = T & {
23
+ new (): {
24
+ $slots: S;
25
+ };
26
+ };
@@ -0,0 +1 @@
1
+ import e from"./TableGroupRow.vue_vue_type_script_setup_true_lang.js";var r=e;export{r as default};
@@ -0,0 +1 @@
1
+ const p=require("../utils/injectRequired.cjs"),d=require("./context.cjs");let e=require("vue");var n=["data-state"],s=["colspan"],c=["aria-expanded"],i=(0,e.defineComponent)({__name:"TableGroupRow",props:{groupKey:{},colSpan:{default:void 0}},setup(o){const r=o,t=p.injectRequired(d.TABLE_CONTEXT,"SkdxTableGroupRow must be used within SkdxTable"),u=(0,e.computed)(()=>t.isGroupCollapsed(r.groupKey));function l(a){a.stopPropagation(),t.toggleGroup(r.groupKey)}return(a,_)=>((0,e.openBlock)(),(0,e.createElementBlock)("tr",{class:"skdx-table__group-row","data-part":"group-row","data-state":u.value?"collapsed":"expanded","data-skdx-table-group-row":""},[(0,e.createElementVNode)("th",{class:"skdx-table__group-cell","data-part":"group-cell",scope:"rowgroup",colspan:o.colSpan??(0,e.unref)(t).headerCellCount.value},[(0,e.createElementVNode)("button",{class:"skdx-table__group-trigger","data-part":"group-trigger",type:"button","aria-expanded":!u.value,onClick:l},[(0,e.renderSlot)(a.$slots,"default")],8,c)],8,s)],8,n))}});exports.default=i;
@@ -0,0 +1 @@
1
+ import{injectRequired as e}from"../utils/injectRequired.js";import{TABLE_CONTEXT as a}from"./context.js";import{computed as o,createElementBlock as t,createElementVNode as r,defineComponent as p,openBlock as l,renderSlot as s,unref as u}from"vue";var d=["data-state"],n=["colspan"],c=["aria-expanded"],i=/* @__PURE__ */p({__name:"TableGroupRow",props:{groupKey:{},colSpan:{default:void 0}},setup(p){const i=p,g=e(a,"SkdxTableGroupRow must be used within SkdxTable"),m=o(()=>g.isGroupCollapsed(i.groupKey));function x(e){e.stopPropagation(),g.toggleGroup(i.groupKey)}return(e,a)=>(l(),t("tr",{class:"skdx-table__group-row","data-part":"group-row","data-state":m.value?"collapsed":"expanded","data-skdx-table-group-row":""},[r("th",{class:"skdx-table__group-cell","data-part":"group-cell",scope:"rowgroup",colspan:p.colSpan??u(g).headerCellCount.value},[r("button",{class:"skdx-table__group-trigger","data-part":"group-trigger",type:"button","aria-expanded":!m.value,onClick:x},[s(e.$slots,"default")],8,c)],8,n)],8,d))}});export{i as default};
@@ -20,6 +20,14 @@ type __VLS_Props = {
20
20
  resizeLabel?: string;
21
21
  /** Pixels each Arrow keypress moves the column edge; inherited by child resize triggers. */
22
22
  resizeStep?: number;
23
+ /** Renders a move trigger after the content, driven by Arrow/Home/End keys or a drag onto another header. */
24
+ reorderable?: boolean | undefined;
25
+ /** Renders a pin trigger after the content, sticking this column to one edge of the table. */
26
+ pinnable?: boolean | undefined;
27
+ /** Accessible name for the derived move trigger, distinct from the column header's. */
28
+ reorderLabel?: string;
29
+ /** Accessible name for the derived pin trigger, distinct from the column header's. */
30
+ pinLabel?: string;
23
31
  };
24
32
  declare var __VLS_4: {}, __VLS_6: {};
25
33
  type __VLS_Slots = {} & {
@@ -33,10 +41,14 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}
33
41
  maxWidth: number | undefined;
34
42
  columnKey: string | undefined;
35
43
  sortable: boolean | undefined;
44
+ pinLabel: string;
45
+ reorderLabel: string;
36
46
  resizeLabel: string;
37
47
  filterLabel: string | undefined;
38
48
  resizable: boolean | undefined;
39
49
  resizeStep: number;
50
+ reorderable: boolean | undefined;
51
+ pinnable: boolean | undefined;
40
52
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
41
53
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
42
54
  export default _default;
@@ -20,6 +20,14 @@ type __VLS_Props = {
20
20
  resizeLabel?: string;
21
21
  /** Pixels each Arrow keypress moves the column edge; inherited by child resize triggers. */
22
22
  resizeStep?: number;
23
+ /** Renders a move trigger after the content, driven by Arrow/Home/End keys or a drag onto another header. */
24
+ reorderable?: boolean | undefined;
25
+ /** Renders a pin trigger after the content, sticking this column to one edge of the table. */
26
+ pinnable?: boolean | undefined;
27
+ /** Accessible name for the derived move trigger, distinct from the column header's. */
28
+ reorderLabel?: string;
29
+ /** Accessible name for the derived pin trigger, distinct from the column header's. */
30
+ pinLabel?: string;
23
31
  };
24
32
  declare var __VLS_4: {}, __VLS_6: {};
25
33
  type __VLS_Slots = {} & {
@@ -33,10 +41,14 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}
33
41
  maxWidth: number | undefined;
34
42
  columnKey: string | undefined;
35
43
  sortable: boolean | undefined;
44
+ pinLabel: string;
45
+ reorderLabel: string;
36
46
  resizeLabel: string;
37
47
  filterLabel: string | undefined;
38
48
  resizable: boolean | undefined;
39
49
  resizeStep: number;
50
+ reorderable: boolean | undefined;
51
+ pinnable: boolean | undefined;
40
52
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
41
53
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
42
54
  export default _default;
@@ -1 +1 @@
1
- const z=require("../utils/injectRequired.cjs"),p=require("./context.cjs"),m=require("./TableColumnHeaderFilterInput.vue.cjs"),b=require("./TableColumnHeaderSortTrigger.vue.cjs"),C=require("./TableColumnResizeTrigger.vue.cjs");let e=require("vue");var S=["aria-sort","data-sort-direction","data-filterable","data-filtered","data-resizable"],q=(0,e.defineComponent)({__name:"TableHeaderCell",props:{columnKey:{default:void 0},sortable:{type:Boolean,default:void 0},filterable:{type:Boolean,default:void 0},filterLabel:{default:void 0},resizable:{type:Boolean,default:!1},minWidth:{default:40},maxWidth:{default:1e3},resizeLabel:{default:"Resize column"},resizeStep:{default:8}},setup(_){const t=_,a=z.injectRequired(p.TABLE_CONTEXT,"SkdxTableHeaderCell must be used within SkdxTable");(0,e.onScopeDispose)(a.registerHeaderCell());const v=(0,e.useSlots)();function i(r,s){return(r??[]).some(c=>c.type===s?!0:c.type===e.Fragment&&i(c.children,s))}function h(){return i(v.default?.(),b.default)}function g(){return i(v.default?.(),m.default)}const l=(0,e.computed)(()=>t.columnKey),u=(0,e.computed)(()=>t.sortable&&l.value!==void 0),d=(0,e.computed)(()=>u.value?a.sortList.value.find(r=>r.columnKey===l.value)?.direction:void 0),y=(0,e.computed)(()=>{if(u.value)return d.value==="asc"?"ascending":d.value==="desc"?"descending":"none"}),o=(0,e.computed)(()=>t.filterable===!0&&l.value!==void 0),k=(0,e.computed)(()=>o.value&&(a.filterMap.value[l.value]??"")!==""),f=(0,e.computed)(()=>t.resizable&&l.value!==void 0),n=(0,e.computed)(()=>l.value===void 0?void 0:a.columnWidths.value[l.value]),T=(0,e.computed)(()=>n.value===void 0?void 0:{width:`${n.value}px`,"--skdx-table-column-width":`${n.value}px`});return(0,e.provide)(p.TABLE_HEADER_CELL_CONTEXT,{get columnKey(){return l.value},get sortable(){return u.value},get filterable(){return o.value},get filterLabel(){return t.filterLabel},get minWidth(){return t.minWidth},get maxWidth(){return t.maxWidth},get resizeLabel(){return t.resizeLabel},get resizeStep(){return t.resizeStep}}),(r,s)=>((0,e.openBlock)(),(0,e.createElementBlock)("th",{class:"skdx-table__header-cell","data-part":"header-cell","aria-sort":y.value,"data-sort-direction":d.value,"data-filterable":o.value?"":void 0,"data-filtered":k.value?"":void 0,"data-resizable":f.value?"":void 0,style:(0,e.normalizeStyle)(T.value)},[u.value&&!h()?((0,e.openBlock)(),(0,e.createBlock)(b.default,{key:0},{default:(0,e.withCtx)(()=>[(0,e.renderSlot)(r.$slots,"default")]),_:3})):(0,e.renderSlot)(r.$slots,"default",{key:1}),o.value&&!g()?((0,e.openBlock)(),(0,e.createBlock)(m.default,{key:2})):(0,e.createCommentVNode)("",!0),f.value?((0,e.openBlock)(),(0,e.createBlock)(C.default,{key:3})):(0,e.createCommentVNode)("",!0)],12,S))}});exports.default=q;
1
+ const O=require("../utils/injectRequired.cjs"),k=require("./context.cjs"),y=require("./TableColumnHeaderFilterInput.vue.cjs"),_=require("./TableColumnHeaderSortTrigger.vue.cjs"),h=require("./TableColumnPinTrigger.vue.cjs"),T=require("./TableColumnReorderTrigger.vue.cjs"),R=require("./TableColumnResizeTrigger.vue.cjs");let e=require("vue");var E=["aria-sort","data-sort-direction","data-filterable","data-filtered","data-resizable","data-column-key","data-reorderable","data-pinnable","data-pinned"],H=(0,e.defineComponent)({__name:"TableHeaderCell",props:{columnKey:{default:void 0},sortable:{type:Boolean,default:void 0},filterable:{type:Boolean,default:void 0},filterLabel:{default:void 0},resizable:{type:Boolean,default:!1},minWidth:{default:40},maxWidth:{default:1e3},resizeLabel:{default:"Resize column"},resizeStep:{default:8},reorderable:{type:Boolean,default:!1},pinnable:{type:Boolean,default:!1},reorderLabel:{default:"Move column"},pinLabel:{default:"Pin column"}},setup(m){const a=m,l=O.injectRequired(k.TABLE_CONTEXT,"SkdxTableHeaderCell must be used within SkdxTable");(0,e.onScopeDispose)(l.registerHeaderCell());const o=(0,e.useSlots)();function u(r,f){return(r??[]).some(p=>p.type===f?!0:p.type===e.Fragment&&u(p.children,f))}function B(){return u(o.default?.(),_.default)}function C(){return u(o.default?.(),y.default)}function q(){return u(o.default?.(),T.default)}function L(){return u(o.default?.(),h.default)}const t=(0,e.computed)(()=>a.columnKey),n=(0,e.computed)(()=>a.sortable&&t.value!==void 0),d=(0,e.computed)(()=>n.value?l.sortList.value.find(r=>r.columnKey===t.value)?.direction:void 0),z=(0,e.computed)(()=>{if(n.value)return d.value==="asc"?"ascending":d.value==="desc"?"descending":"none"}),i=(0,e.computed)(()=>a.filterable===!0&&t.value!==void 0),S=(0,e.computed)(()=>i.value&&(l.filterMap.value[t.value]??"")!==""),b=(0,e.computed)(()=>a.resizable&&t.value!==void 0),c=(0,e.computed)(()=>t.value===void 0?void 0:l.columnWidths.value[t.value]),s=(0,e.computed)(()=>a.reorderable===!0&&t.value!==void 0),v=(0,e.computed)(()=>a.pinnable===!0&&t.value!==void 0),g=(0,e.computed)(()=>t.value===void 0?void 0:l.columnPins.value[t.value]),x=(0,e.computed)(()=>t.value===void 0?void 0:l.pinOffsets.value[t.value]),w=(0,e.computed)(()=>{const r={};return c.value!==void 0&&(r.width=`${c.value}px`,r["--skdx-table-column-width"]=`${c.value}px`),g.value!==void 0&&(r["--skdx-table-pin-offset"]=`${x.value??0}px`),Object.keys(r).length>0?r:void 0});return(0,e.provide)(k.TABLE_HEADER_CELL_CONTEXT,{get columnKey(){return t.value},get sortable(){return n.value},get filterable(){return i.value},get filterLabel(){return a.filterLabel},get minWidth(){return a.minWidth},get maxWidth(){return a.maxWidth},get resizeLabel(){return a.resizeLabel},get resizeStep(){return a.resizeStep},get reorderable(){return s.value},get pinnable(){return v.value},get reorderLabel(){return a.reorderLabel},get pinLabel(){return a.pinLabel}}),(r,f)=>((0,e.openBlock)(),(0,e.createElementBlock)("th",{class:"skdx-table__header-cell","data-part":"header-cell","aria-sort":z.value,"data-sort-direction":d.value,"data-filterable":i.value?"":void 0,"data-filtered":S.value?"":void 0,"data-resizable":b.value?"":void 0,"data-column-key":m.columnKey,"data-reorderable":s.value?"":void 0,"data-pinnable":v.value?"":void 0,"data-pinned":g.value,style:(0,e.normalizeStyle)(w.value)},[n.value&&!B()?((0,e.openBlock)(),(0,e.createBlock)(_.default,{key:0},{default:(0,e.withCtx)(()=>[(0,e.renderSlot)(r.$slots,"default")]),_:3})):(0,e.renderSlot)(r.$slots,"default",{key:1}),i.value&&!C()?((0,e.openBlock)(),(0,e.createBlock)(y.default,{key:2})):(0,e.createCommentVNode)("",!0),s.value&&!q()?((0,e.openBlock)(),(0,e.createBlock)(T.default,{key:3})):(0,e.createCommentVNode)("",!0),v.value&&!L()?((0,e.openBlock)(),(0,e.createBlock)(h.default,{key:4})):(0,e.createCommentVNode)("",!0),b.value?((0,e.openBlock)(),(0,e.createBlock)(R.default,{key:5})):(0,e.createCommentVNode)("",!0)],12,E))}});exports.default=H;
@@ -1 +1 @@
1
- import{injectRequired as e}from"../utils/injectRequired.js";import{TABLE_CONTEXT as a,TABLE_HEADER_CELL_CONTEXT as t}from"./context.js";import l from"./TableColumnHeaderFilterInput.vue.js";import r from"./TableColumnHeaderSortTrigger.vue.js";import i from"./TableColumnResizeTrigger.vue.js";import{Fragment as o,computed as u,createBlock as d,createCommentVNode as s,createElementBlock as n,defineComponent as v,normalizeStyle as m,onScopeDispose as f,openBlock as c,provide as p,renderSlot as b,useSlots as g,withCtx as h}from"vue";var y=["aria-sort","data-sort-direction","data-filterable","data-filtered","data-resizable"],T=/* @__PURE__ */v({__name:"TableHeaderCell",props:{columnKey:{default:void 0},sortable:{type:Boolean,default:void 0},filterable:{type:Boolean,default:void 0},filterLabel:{default:void 0},resizable:{type:Boolean,default:!1},minWidth:{default:40},maxWidth:{default:1e3},resizeLabel:{default:"Resize column"},resizeStep:{default:8}},setup(v){const T=v,z=e(a,"SkdxTableHeaderCell must be used within SkdxTable");f(z.registerHeaderCell());const x=g();function C(e,a){return(e??[]).some(e=>e.type===a||e.type===o&&C(e.children,a))}const k=u(()=>T.columnKey),L=u(()=>T.sortable&&void 0!==k.value),S=u(()=>L.value?z.sortList.value.find(e=>e.columnKey===k.value)?.direction:void 0),_=u(()=>{if(L.value)return"asc"===S.value?"ascending":"desc"===S.value?"descending":"none"}),B=u(()=>!0===T.filterable&&void 0!==k.value),E=u(()=>B.value&&""!==(z.filterMap.value[k.value]??"")),j=u(()=>T.resizable&&void 0!==k.value),W=u(()=>void 0===k.value?void 0:z.columnWidths.value[k.value]),H=u(()=>void 0===W.value?void 0:{width:`${W.value}px`,"--skdx-table-column-width":`${W.value}px`});return p(t,{get columnKey(){return k.value},get sortable(){return L.value},get filterable(){return B.value},get filterLabel(){return T.filterLabel},get minWidth(){return T.minWidth},get maxWidth(){return T.maxWidth},get resizeLabel(){return T.resizeLabel},get resizeStep(){return T.resizeStep}}),(e,a)=>(c(),n("th",{class:"skdx-table__header-cell","data-part":"header-cell","aria-sort":_.value,"data-sort-direction":S.value,"data-filterable":B.value?"":void 0,"data-filtered":E.value?"":void 0,"data-resizable":j.value?"":void 0,style:m(H.value)},[L.value&&!C(x.default?.(),r)?(c(),d(r,{key:0},{default:h(()=>[b(e.$slots,"default")]),_:3})):b(e.$slots,"default",{key:1}),B.value&&!C(x.default?.(),l)?(c(),d(l,{key:2})):s("",!0),j.value?(c(),d(i,{key:3})):s("",!0)],12,y))}});export{T as default};
1
+ import{injectRequired as e}from"../utils/injectRequired.js";import{TABLE_CONTEXT as a,TABLE_HEADER_CELL_CONTEXT as l}from"./context.js";import t from"./TableColumnHeaderFilterInput.vue.js";import r from"./TableColumnHeaderSortTrigger.vue.js";import o from"./TableColumnPinTrigger.vue.js";import u from"./TableColumnReorderTrigger.vue.js";import i from"./TableColumnResizeTrigger.vue.js";import{Fragment as d,computed as n,createBlock as s,createCommentVNode as v,createElementBlock as m,defineComponent as f,normalizeStyle as b,onScopeDispose as p,openBlock as c,provide as g,renderSlot as y,useSlots as T,withCtx as k}from"vue";var L=["aria-sort","data-sort-direction","data-filterable","data-filtered","data-resizable","data-column-key","data-reorderable","data-pinnable","data-pinned"],h=/* @__PURE__ */f({__name:"TableHeaderCell",props:{columnKey:{default:void 0},sortable:{type:Boolean,default:void 0},filterable:{type:Boolean,default:void 0},filterLabel:{default:void 0},resizable:{type:Boolean,default:!1},minWidth:{default:40},maxWidth:{default:1e3},resizeLabel:{default:"Resize column"},resizeStep:{default:8},reorderable:{type:Boolean,default:!1},pinnable:{type:Boolean,default:!1},reorderLabel:{default:"Move column"},pinLabel:{default:"Pin column"}},setup(f){const h=f,x=e(a,"SkdxTableHeaderCell must be used within SkdxTable");p(x.registerHeaderCell());const C=T();function z(e,a){return(e??[]).some(e=>e.type===a||e.type===d&&z(e.children,a))}const j=n(()=>h.columnKey),B=n(()=>h.sortable&&void 0!==j.value),S=n(()=>B.value?x.sortList.value.find(e=>e.columnKey===j.value)?.direction:void 0),_=n(()=>{if(B.value)return"asc"===S.value?"ascending":"desc"===S.value?"descending":"none"}),E=n(()=>!0===h.filterable&&void 0!==j.value),W=n(()=>E.value&&""!==(x.filterMap.value[j.value]??"")),H=n(()=>h.resizable&&void 0!==j.value),R=n(()=>void 0===j.value?void 0:x.columnWidths.value[j.value]),K=n(()=>!0===h.reorderable&&void 0!==j.value),$=n(()=>!0===h.pinnable&&void 0!==j.value),w=n(()=>void 0===j.value?void 0:x.columnPins.value[j.value]),O=n(()=>void 0===j.value?void 0:x.pinOffsets.value[j.value]),A=n(()=>{const e={};return void 0!==R.value&&(e.width=`${R.value}px`,e["--skdx-table-column-width"]=`${R.value}px`),void 0!==w.value&&(e["--skdx-table-pin-offset"]=`${O.value??0}px`),Object.keys(e).length>0?e:void 0});return g(l,{get columnKey(){return j.value},get sortable(){return B.value},get filterable(){return E.value},get filterLabel(){return h.filterLabel},get minWidth(){return h.minWidth},get maxWidth(){return h.maxWidth},get resizeLabel(){return h.resizeLabel},get resizeStep(){return h.resizeStep},get reorderable(){return K.value},get pinnable(){return $.value},get reorderLabel(){return h.reorderLabel},get pinLabel(){return h.pinLabel}}),(e,a)=>(c(),m("th",{class:"skdx-table__header-cell","data-part":"header-cell","aria-sort":_.value,"data-sort-direction":S.value,"data-filterable":E.value?"":void 0,"data-filtered":W.value?"":void 0,"data-resizable":H.value?"":void 0,"data-column-key":f.columnKey,"data-reorderable":K.value?"":void 0,"data-pinnable":$.value?"":void 0,"data-pinned":w.value,style:b(A.value)},[B.value&&!z(C.default?.(),r)?(c(),s(r,{key:0},{default:k(()=>[y(e.$slots,"default")]),_:3})):y(e.$slots,"default",{key:1}),E.value&&!z(C.default?.(),t)?(c(),s(t,{key:2})):v("",!0),K.value&&!z(C.default?.(),u)?(c(),s(u,{key:3})):v("",!0),$.value&&!z(C.default?.(),o)?(c(),s(o,{key:4})):v("",!0),H.value?(c(),s(i,{key:5})):v("",!0)],12,L))}});export{h as default};
@@ -7,12 +7,20 @@ type __VLS_Props = {
7
7
  * @default undefined
8
8
  */
9
9
  rowId?: string | undefined;
10
+ /**
11
+ * Tree depth of this row, `0` at the top level, published for the skin to indent by.
12
+ * @default undefined — the row carries no depth.
13
+ */
14
+ level?: number | undefined;
10
15
  };
11
16
  declare var __VLS_1: {};
12
17
  type __VLS_Slots = {} & {
13
18
  default?: (props: typeof __VLS_1) => any;
14
19
  };
15
- declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
20
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
21
+ level: number | undefined;
22
+ rowId: string | undefined;
23
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
24
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
17
25
  export default _default;
18
26
  type __VLS_WithSlots<T, S> = T & {
@@ -7,12 +7,20 @@ type __VLS_Props = {
7
7
  * @default undefined
8
8
  */
9
9
  rowId?: string | undefined;
10
+ /**
11
+ * Tree depth of this row, `0` at the top level, published for the skin to indent by.
12
+ * @default undefined — the row carries no depth.
13
+ */
14
+ level?: number | undefined;
10
15
  };
11
16
  declare var __VLS_1: {};
12
17
  type __VLS_Slots = {} & {
13
18
  default?: (props: typeof __VLS_1) => any;
14
19
  };
15
- declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
20
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
21
+ level: number | undefined;
22
+ rowId: string | undefined;
23
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
24
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
17
25
  export default _default;
18
26
  type __VLS_WithSlots<T, S> = T & {
@@ -1 +1 @@
1
- const u=require("../utils/injectRequired.cjs"),i=require("./context.cjs");let e=require("vue");var c=["data-state","data-row-id"],s='button, a, input, [role="button"]',w=(0,e.defineComponent)({__name:"TableRow",props:{rowId:{}},setup(d){const t=d,r=u.injectRequired(i.TABLE_CONTEXT,"SkdxTableRow must be used within SkdxTable"),a=(0,e.computed)(()=>r.selectionMode!=="none"&&t.rowId!==void 0),n=(0,e.computed)(()=>t.rowId!==void 0&&r.isRowSelected(t.rowId));function l(o){!a.value||!t.rowId||o.target.closest(s)||r.toggleRow(t.rowId,o.shiftKey)}return(o,_)=>((0,e.openBlock)(),(0,e.createElementBlock)("tr",{class:"skdx-table__row","data-part":"row","data-state":n.value?"selected":void 0,"data-row-id":a.value?d.rowId:void 0,onClick:l},[(0,e.renderSlot)(o.$slots,"default")],8,c))}});exports.default=w;
1
+ const u=require("../utils/injectRequired.cjs"),c=require("./context.cjs");let e=require("vue");var s=["data-state","data-row-id","data-level"],v='button, a, input, [role="button"]',w=(0,e.defineComponent)({__name:"TableRow",props:{rowId:{default:void 0},level:{default:void 0}},setup(o){const t=o,d=u.injectRequired(c.TABLE_CONTEXT,"SkdxTableRow must be used within SkdxTable"),r=(0,e.computed)(()=>d.selectionMode!=="none"&&t.rowId!==void 0),a=(0,e.computed)(()=>t.rowId!==void 0&&d.isRowSelected(t.rowId)),i=(0,e.computed)(()=>t.level===void 0?void 0:{"--skdx-table-row-level":String(t.level)});function n(l){!r.value||!t.rowId||l.target.closest(v)||d.toggleRow(t.rowId,l.shiftKey)}return(l,_)=>((0,e.openBlock)(),(0,e.createElementBlock)("tr",{class:"skdx-table__row","data-part":"row","data-state":a.value?"selected":void 0,"data-row-id":r.value?o.rowId:void 0,"data-level":o.level===void 0?void 0:String(o.level),style:(0,e.normalizeStyle)(i.value),onClick:n},[(0,e.renderSlot)(l.$slots,"default")],12,s))}});exports.default=w;
@@ -1 +1 @@
1
- import{injectRequired as e}from"../utils/injectRequired.js";import{TABLE_CONTEXT as t}from"./context.js";import{computed as o,createElementBlock as a,defineComponent as d,openBlock as r,renderSlot as s}from"vue";var i=["data-state","data-row-id"],l=/* @__PURE__ */d({__name:"TableRow",props:{rowId:{}},setup(d){const l=d,n=e(t,"SkdxTableRow must be used within SkdxTable"),u=o(()=>"none"!==n.selectionMode&&void 0!==l.rowId),w=o(()=>void 0!==l.rowId&&n.isRowSelected(l.rowId));function c(e){!u.value||!l.rowId||e.target.closest('button, a, input, [role="button"]')||n.toggleRow(l.rowId,e.shiftKey)}return(e,t)=>(r(),a("tr",{class:"skdx-table__row","data-part":"row","data-state":w.value?"selected":void 0,"data-row-id":u.value?d.rowId:void 0,onClick:c},[s(e.$slots,"default")],8,i))}});export{l as default};
1
+ import{injectRequired as e}from"../utils/injectRequired.js";import{TABLE_CONTEXT as t}from"./context.js";import{computed as o,createElementBlock as a,defineComponent as l,normalizeStyle as d,openBlock as r,renderSlot as i}from"vue";var s=["data-state","data-row-id","data-level"],n=/* @__PURE__ */l({__name:"TableRow",props:{rowId:{default:void 0},level:{default:void 0}},setup(l){const n=l,v=e(t,"SkdxTableRow must be used within SkdxTable"),u=o(()=>"none"!==v.selectionMode&&void 0!==n.rowId),w=o(()=>void 0!==n.rowId&&v.isRowSelected(n.rowId)),c=o(()=>void 0===n.level?void 0:{"--skdx-table-row-level":String(n.level)});function m(e){!u.value||!n.rowId||e.target.closest('button, a, input, [role="button"]')||v.toggleRow(n.rowId,e.shiftKey)}return(e,t)=>(r(),a("tr",{class:"skdx-table__row","data-part":"row","data-state":w.value?"selected":void 0,"data-row-id":u.value?l.rowId:void 0,"data-level":void 0===l.level?void 0:String(l.level),style:d(c.value),onClick:m},[i(e.$slots,"default")],12,s))}});export{n as default};
@@ -0,0 +1 @@
1
+ const e=require("./TableTreeTrigger.vue_vue_type_script_setup_true_lang.cjs");var r=e.default;exports.default=r;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Disclosure button that shows a tree parent's child rows: a `<button aria-expanded>` with `data-state`, and no `aria-controls`.
3
+ */
4
+ type __VLS_Props = {
5
+ /** Id of the parent row this trigger expands, the one that appears in `expandedNodeIds`. */
6
+ rowId: string;
7
+ };
8
+ declare var __VLS_1: {};
9
+ type __VLS_Slots = {} & {
10
+ default?: (props: typeof __VLS_1) => any;
11
+ };
12
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
14
+ export default _default;
15
+ type __VLS_WithSlots<T, S> = T & {
16
+ new (): {
17
+ $slots: S;
18
+ };
19
+ };
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Disclosure button that shows a tree parent's child rows: a `<button aria-expanded>` with `data-state`, and no `aria-controls`.
3
+ */
4
+ type __VLS_Props = {
5
+ /** Id of the parent row this trigger expands, the one that appears in `expandedNodeIds`. */
6
+ rowId: string;
7
+ };
8
+ declare var __VLS_1: {};
9
+ type __VLS_Slots = {} & {
10
+ default?: (props: typeof __VLS_1) => any;
11
+ };
12
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
14
+ export default _default;
15
+ type __VLS_WithSlots<T, S> = T & {
16
+ new (): {
17
+ $slots: S;
18
+ };
19
+ };
@@ -0,0 +1 @@
1
+ import e from"./TableTreeTrigger.vue_vue_type_script_setup_true_lang.js";var r=e;export{r as default};
@@ -0,0 +1 @@
1
+ const i=require("../utils/Glyph.vue.cjs"),u=require("../utils/injectRequired.cjs"),l=require("./context.cjs");let e=require("vue");var s=["aria-expanded","data-state"],c=(0,e.defineComponent)({__name:"TableTreeTrigger",props:{rowId:{}},setup(o){const r=o,a=u.injectRequired(l.TABLE_CONTEXT,"SkdxTableTreeTrigger must be used within SkdxTable"),d=(0,e.computed)(()=>a.isNodeExpanded(r.rowId));function n(t){t.stopPropagation(),a.toggleNode(r.rowId)}return(t,p)=>((0,e.openBlock)(),(0,e.createElementBlock)("button",{class:"skdx-table__tree-trigger","data-part":"tree-trigger",type:"button","aria-expanded":d.value,"data-state":d.value?"expanded":"collapsed","data-skdx-table-tree-trigger":"",onClick:n},[(0,e.renderSlot)(t.$slots,"default",{},()=>[(0,e.createVNode)(i.default,{name:"chevron-right"})])],8,s))}});exports.default=c;
@@ -0,0 +1 @@
1
+ import e from"../utils/Glyph.vue.js";import{injectRequired as t}from"../utils/injectRequired.js";import{TABLE_CONTEXT as a}from"./context.js";import{computed as r,createElementBlock as o,createVNode as d,defineComponent as s,openBlock as i,renderSlot as n}from"vue";var l=["aria-expanded","data-state"],p=/* @__PURE__ */s({__name:"TableTreeTrigger",props:{rowId:{}},setup(s){const p=s,u=t(a,"SkdxTableTreeTrigger must be used within SkdxTable"),c=r(()=>u.isNodeExpanded(p.rowId));function g(e){e.stopPropagation(),u.toggleNode(p.rowId)}return(t,a)=>(i(),o("button",{class:"skdx-table__tree-trigger","data-part":"tree-trigger",type:"button","aria-expanded":c.value,"data-state":c.value?"expanded":"collapsed","data-skdx-table-tree-trigger":"",onClick:g},[n(t.$slots,"default",{},()=>[d(e,{name:"chevron-right"})])],8,l))}});export{p as default};
@@ -1 +1 @@
1
- var a=Symbol("skdx-table-context"),n=Symbol("skdx-table-header-cell-context");function r(l,e){return`${l}-detail-${e}`}function o(l,e){return e===null?`${l} not sorted`:`${l} sorted ${e==="asc"?"ascending":"descending"}`}function c(l,e){const t=`${e} ${e===1?"row":"rows"}`;return l==="page"?`Select all ${t} on this page`:`Select all ${t}`}function d(l,e){return l[e]}exports.TABLE_CONTEXT=a;exports.TABLE_HEADER_CELL_CONTEXT=n;exports.cellValue=d;exports.defaultGetSortLabel=o;exports.defaultSelectAllLabel=c;exports.tableDetailRowId=r;
1
+ var a=Symbol("skdx-table-context"),o=Symbol("skdx-table-header-cell-context");function n(t,e){return`${t}-detail-${e}`}function r(t,e){return e===null?`${t} not sorted`:`${t} sorted ${e==="asc"?"ascending":"descending"}`}function u(t,e,l){return`${t} moved to position ${e} of ${l}`}function d(t,e){const l=`${e} ${e===1?"row":"rows"}`;return t==="page"?`Select all ${l} on this page`:`Select all ${l}`}function c(t,e){return t[e]}exports.TABLE_CONTEXT=a;exports.TABLE_HEADER_CELL_CONTEXT=o;exports.cellValue=c;exports.defaultGetMoveLabel=u;exports.defaultGetSortLabel=r;exports.defaultSelectAllLabel=d;exports.tableDetailRowId=n;
@@ -16,6 +16,8 @@ export type TableSelectionMode = 'single' | 'multiple' | 'none';
16
16
  export type TableSelectAllScope = 'page' | 'all';
17
17
  /** Per-column pixel widths, keyed by a header cell's `columnKey`. */
18
18
  export type TableColumnWidths = Record<string, number>;
19
+ /** Pinned columns keyed by `columnKey`; an unpinned column is absent from the map. */
20
+ export type TableColumnPins = Record<string, 'start' | 'end'>;
19
21
  /** One column definition for `SkdxTable`, with `key` typed against the row shape. */
20
22
  export interface TableColumnDef<TRow extends object = object> {
21
23
  /** Column identifier (header `columnKey` and default row property); any string for a computed column. */
@@ -30,6 +32,10 @@ export interface TableColumnDef<TRow extends object = object> {
30
32
  resizable?: boolean;
31
33
  /** Whether this column filters, overriding the root `filterable`. @default the root `filterable` */
32
34
  filterable?: boolean;
35
+ /** Whether this column reorders, overriding the root `reorderable`. @default the root `reorderable` */
36
+ reorderable?: boolean;
37
+ /** Whether this column pins to an edge, overriding the root `pinnable`. @default the root `pinnable` */
38
+ pinnable?: boolean;
33
39
  /** Smallest width in pixels a resize drag may reach for this column. @default 40 */
34
40
  minWidth?: number;
35
41
  /** Largest width in pixels a resize drag may reach for this column. @default 1000 */
@@ -77,6 +83,28 @@ export interface TableContext {
77
83
  setColumnWidth(columnKey: string, width: number): void;
78
84
  /** Ends the resize gesture and emits `column-widths-commit` with the settled widths. */
79
85
  commitColumnWidths(): void;
86
+ /** @internal Published display order of column keys; keys left out follow in source order. */
87
+ columnOrder: Readonly<Ref<string[]>>;
88
+ /** @internal Moves a column to `toIndex` (clamped) among the header cells and announces the new position. */
89
+ moveColumn(columnKey: string, toIndex: number, columnLabel?: string): void;
90
+ /** @internal Which edge each pinned column sticks to; unpinned columns are absent. */
91
+ columnPins: Readonly<Ref<TableColumnPins>>;
92
+ /** @internal Pins a column to one edge, or unpins it when `side` is `null`. */
93
+ setColumnPin(columnKey: string, side: 'start' | 'end' | null): void;
94
+ /** @internal Measured sticky offset in pixels for each pinned column, zero for the first on its edge. */
95
+ pinOffsets: Readonly<Ref<Record<string, number>>>;
96
+ /** @internal Group keys whose rows are currently hidden. */
97
+ collapsedGroups: Readonly<Ref<Set<string>>>;
98
+ /** @internal Collapses an expanded group, or expands a collapsed one. */
99
+ toggleGroup(groupKey: string): void;
100
+ /** @internal Whether this group's rows are hidden right now. */
101
+ isGroupCollapsed(groupKey: string): boolean;
102
+ /** @internal Row ids of the tree parents whose children are rendered. */
103
+ expandedNodes: Readonly<Ref<Set<string>>>;
104
+ /** @internal Expands a collapsed tree parent, or collapses an expanded one. */
105
+ toggleNode(rowId: string): void;
106
+ /** @internal Whether this tree parent's children are rendered right now. */
107
+ isNodeExpanded(rowId: string): boolean;
80
108
  }
81
109
  /**
82
110
  * Injection key a Table provides so its header cells and rows share sort and selection state.
@@ -100,6 +128,12 @@ export interface TableHeaderCellContext {
100
128
  readonly maxWidth: number | undefined;
101
129
  readonly resizeLabel: string | undefined;
102
130
  readonly resizeStep: number | undefined;
131
+ /** Whether this column reorders — `reorderable`. */
132
+ readonly reorderable: boolean | undefined;
133
+ /** Whether this column pins to an edge — `pinnable`. */
134
+ readonly pinnable: boolean | undefined;
135
+ readonly reorderLabel: string | undefined;
136
+ readonly pinLabel: string | undefined;
103
137
  }
104
138
  /**
105
139
  * Injection key for nested sort/resize parts to inherit column key and bounds, or `undefined` standalone.
@@ -113,6 +147,11 @@ export declare function tableDetailRowId(tableId: string, rowId: string): string
113
147
  * @internal
114
148
  */
115
149
  export declare function defaultGetSortLabel(column: string, direction: SortDirection | null): string;
150
+ /**
151
+ * Default column-move announcement text, with a 1-based position.
152
+ * @internal
153
+ */
154
+ export declare function defaultGetMoveLabel(column: string, position: number, count: number): string;
116
155
  /** Default accessible name for the select-all checkbox, including the count and scope. */
117
156
  export declare function defaultSelectAllLabel(scope: TableSelectAllScope, count: number): string;
118
157
  /** Reads the column's default cell value off a row. */
@@ -16,6 +16,8 @@ export type TableSelectionMode = 'single' | 'multiple' | 'none';
16
16
  export type TableSelectAllScope = 'page' | 'all';
17
17
  /** Per-column pixel widths, keyed by a header cell's `columnKey`. */
18
18
  export type TableColumnWidths = Record<string, number>;
19
+ /** Pinned columns keyed by `columnKey`; an unpinned column is absent from the map. */
20
+ export type TableColumnPins = Record<string, 'start' | 'end'>;
19
21
  /** One column definition for `SkdxTable`, with `key` typed against the row shape. */
20
22
  export interface TableColumnDef<TRow extends object = object> {
21
23
  /** Column identifier (header `columnKey` and default row property); any string for a computed column. */
@@ -30,6 +32,10 @@ export interface TableColumnDef<TRow extends object = object> {
30
32
  resizable?: boolean;
31
33
  /** Whether this column filters, overriding the root `filterable`. @default the root `filterable` */
32
34
  filterable?: boolean;
35
+ /** Whether this column reorders, overriding the root `reorderable`. @default the root `reorderable` */
36
+ reorderable?: boolean;
37
+ /** Whether this column pins to an edge, overriding the root `pinnable`. @default the root `pinnable` */
38
+ pinnable?: boolean;
33
39
  /** Smallest width in pixels a resize drag may reach for this column. @default 40 */
34
40
  minWidth?: number;
35
41
  /** Largest width in pixels a resize drag may reach for this column. @default 1000 */
@@ -77,6 +83,28 @@ export interface TableContext {
77
83
  setColumnWidth(columnKey: string, width: number): void;
78
84
  /** Ends the resize gesture and emits `column-widths-commit` with the settled widths. */
79
85
  commitColumnWidths(): void;
86
+ /** @internal Published display order of column keys; keys left out follow in source order. */
87
+ columnOrder: Readonly<Ref<string[]>>;
88
+ /** @internal Moves a column to `toIndex` (clamped) among the header cells and announces the new position. */
89
+ moveColumn(columnKey: string, toIndex: number, columnLabel?: string): void;
90
+ /** @internal Which edge each pinned column sticks to; unpinned columns are absent. */
91
+ columnPins: Readonly<Ref<TableColumnPins>>;
92
+ /** @internal Pins a column to one edge, or unpins it when `side` is `null`. */
93
+ setColumnPin(columnKey: string, side: 'start' | 'end' | null): void;
94
+ /** @internal Measured sticky offset in pixels for each pinned column, zero for the first on its edge. */
95
+ pinOffsets: Readonly<Ref<Record<string, number>>>;
96
+ /** @internal Group keys whose rows are currently hidden. */
97
+ collapsedGroups: Readonly<Ref<Set<string>>>;
98
+ /** @internal Collapses an expanded group, or expands a collapsed one. */
99
+ toggleGroup(groupKey: string): void;
100
+ /** @internal Whether this group's rows are hidden right now. */
101
+ isGroupCollapsed(groupKey: string): boolean;
102
+ /** @internal Row ids of the tree parents whose children are rendered. */
103
+ expandedNodes: Readonly<Ref<Set<string>>>;
104
+ /** @internal Expands a collapsed tree parent, or collapses an expanded one. */
105
+ toggleNode(rowId: string): void;
106
+ /** @internal Whether this tree parent's children are rendered right now. */
107
+ isNodeExpanded(rowId: string): boolean;
80
108
  }
81
109
  /**
82
110
  * Injection key a Table provides so its header cells and rows share sort and selection state.
@@ -100,6 +128,12 @@ export interface TableHeaderCellContext {
100
128
  readonly maxWidth: number | undefined;
101
129
  readonly resizeLabel: string | undefined;
102
130
  readonly resizeStep: number | undefined;
131
+ /** Whether this column reorders — `reorderable`. */
132
+ readonly reorderable: boolean | undefined;
133
+ /** Whether this column pins to an edge — `pinnable`. */
134
+ readonly pinnable: boolean | undefined;
135
+ readonly reorderLabel: string | undefined;
136
+ readonly pinLabel: string | undefined;
103
137
  }
104
138
  /**
105
139
  * Injection key for nested sort/resize parts to inherit column key and bounds, or `undefined` standalone.
@@ -113,6 +147,11 @@ export declare function tableDetailRowId(tableId: string, rowId: string): string
113
147
  * @internal
114
148
  */
115
149
  export declare function defaultGetSortLabel(column: string, direction: SortDirection | null): string;
150
+ /**
151
+ * Default column-move announcement text, with a 1-based position.
152
+ * @internal
153
+ */
154
+ export declare function defaultGetMoveLabel(column: string, position: number, count: number): string;
116
155
  /** Default accessible name for the select-all checkbox, including the count and scope. */
117
156
  export declare function defaultSelectAllLabel(scope: TableSelectAllScope, count: number): string;
118
157
  /** Reads the column's default cell value off a row. */
@@ -1 +1 @@
1
- var e=/* @__PURE__ */Symbol("skdx-table-context"),t=/* @__PURE__ */Symbol("skdx-table-header-cell-context");function l(e,t){return`${e}-detail-${t}`}function a(e,t){return null===t?`${e} not sorted`:`${e} sorted ${"asc"===t?"ascending":"descending"}`}function n(e,t){const l=`${t} ${1===t?"row":"rows"}`;return"page"===e?`Select all ${l} on this page`:`Select all ${l}`}function o(e,t){return e[t]}export{e as TABLE_CONTEXT,t as TABLE_HEADER_CELL_CONTEXT,o as cellValue,a as defaultGetSortLabel,n as defaultSelectAllLabel,l as tableDetailRowId};
1
+ var e=/* @__PURE__ */Symbol("skdx-table-context"),t=/* @__PURE__ */Symbol("skdx-table-header-cell-context");function l(e,t){return`${e}-detail-${t}`}function a(e,t){return null===t?`${e} not sorted`:`${e} sorted ${"asc"===t?"ascending":"descending"}`}function n(e,t,l){return`${e} moved to position ${t} of ${l}`}function o(e,t){const l=`${t} ${1===t?"row":"rows"}`;return"page"===e?`Select all ${l} on this page`:`Select all ${l}`}function r(e,t){return e[t]}export{e as TABLE_CONTEXT,t as TABLE_HEADER_CELL_CONTEXT,r as cellValue,n as defaultGetMoveLabel,a as defaultGetSortLabel,o as defaultSelectAllLabel,l as tableDetailRowId};
@@ -2,4 +2,4 @@ export { default as SkdxTable } from './Table.vue.cjs';
2
2
  export { default as SkdxTableRow } from './TableRow.vue.cjs';
3
3
  export { default as SkdxTableCell } from './TableCell.vue.cjs';
4
4
  export { defaultSelectAllLabel, tableDetailRowId } from './context.cjs';
5
- export type { SortDirection, TableSortState, TableSort, TableFilterState, TableSelectAllScope, TableSelectionMode, TableColumnWidths, TableColumnDef, } from './context.cjs';
5
+ export type { SortDirection, TableSortState, TableSort, TableFilterState, TableSelectAllScope, TableSelectionMode, TableColumnWidths, TableColumnPins, TableColumnDef, } from './context.cjs';
@@ -2,4 +2,4 @@ export { default as SkdxTable } from './Table.vue.js';
2
2
  export { default as SkdxTableRow } from './TableRow.vue.js';
3
3
  export { default as SkdxTableCell } from './TableCell.vue.js';
4
4
  export { defaultSelectAllLabel, tableDetailRowId } from './context.js';
5
- export type { SortDirection, TableSortState, TableSort, TableFilterState, TableSelectAllScope, TableSelectionMode, TableColumnWidths, TableColumnDef, } from './context.js';
5
+ export type { SortDirection, TableSortState, TableSort, TableFilterState, TableSelectAllScope, TableSelectionMode, TableColumnWidths, TableColumnPins, TableColumnDef, } from './context.js';