@skdx/vue-blocks 0.39.0 → 0.41.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.
@@ -21,6 +21,11 @@ type __VLS_Props = {
21
21
  title?: string | undefined;
22
22
  /** The side navigation, one entry per item, in render order. */
23
23
  navigation: readonly DashboardNavigationItem[];
24
+ /**
25
+ * Content element: use `div` when embedding inside an existing page main landmark.
26
+ * @default 'main'
27
+ */
28
+ contentAs?: 'main' | 'div';
24
29
  /**
25
30
  * Whether the side navigation is shown, for controlled usage. Pair with `v-model:nav-open` or `@nav-open-change`.
26
31
  * @default undefined — uncontrolled, seeded from `defaultNavOpen`.
@@ -58,6 +63,7 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}
58
63
  "onNav-open-change"?: (navOpen: boolean) => any;
59
64
  }>, {
60
65
  title: string | undefined;
66
+ contentAs: "main" | "div";
61
67
  navOpen: boolean | undefined;
62
68
  defaultNavOpen: boolean;
63
69
  navLabel: string;
@@ -21,6 +21,11 @@ type __VLS_Props = {
21
21
  title?: string | undefined;
22
22
  /** The side navigation, one entry per item, in render order. */
23
23
  navigation: readonly DashboardNavigationItem[];
24
+ /**
25
+ * Content element: use `div` when embedding inside an existing page main landmark.
26
+ * @default 'main'
27
+ */
28
+ contentAs?: 'main' | 'div';
24
29
  /**
25
30
  * Whether the side navigation is shown, for controlled usage. Pair with `v-model:nav-open` or `@nav-open-change`.
26
31
  * @default undefined — uncontrolled, seeded from `defaultNavOpen`.
@@ -58,6 +63,7 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}
58
63
  "onNav-open-change"?: (navOpen: boolean) => any;
59
64
  }>, {
60
65
  title: string | undefined;
66
+ contentAs: "main" | "div";
61
67
  navOpen: boolean | undefined;
62
68
  defaultNavOpen: boolean;
63
69
  navLabel: string;
@@ -1 +1 @@
1
- const a=require("../internal/part.cjs"),p=require("./DashboardNavList.vue.cjs");let e=require("vue"),c=require("@skdx/vue");var g=["data-nav-open"],m=["id","aria-label","hidden"],f=(0,e.defineComponent)({__name:"DashboardLayout",props:{title:{default:void 0},navigation:{},navOpen:{type:Boolean,default:void 0},defaultNavOpen:{type:Boolean,default:!0},navLabel:{default:"Main navigation"},navToggleLabel:{default:"Toggle navigation"}},emits:["update:navOpen","nav-open-change"],setup(r,{emit:s}){const o=r,d=s,l=(0,e.useId)(),i=(0,e.ref)(o.defaultNavOpen),n=(0,e.computed)(()=>o.navOpen??i.value);function v(){const t=!n.value;o.navOpen===void 0&&(i.value=t),d("update:navOpen",t),d("nav-open-change",t)}return(t,u)=>((0,e.openBlock)(),(0,e.createElementBlock)("div",(0,e.mergeProps)((0,e.unref)(a.skdxPart)("dashboard-layout","root"),{"data-nav-open":n.value?"":void 0}),[(0,e.createElementVNode)("header",(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(a.skdxPart)("dashboard-layout","app-bar"))),[(0,e.createVNode)((0,e.unref)(c.SkdxButton),(0,e.mergeProps)((0,e.unref)(a.skdxPart)("dashboard-layout","nav-toggle"),{"icon-only":"","aria-expanded":n.value,"aria-controls":(0,e.unref)(l),"aria-label":r.navToggleLabel,onClick:v}),{default:(0,e.withCtx)(()=>[...u[0]||(u[0]=[(0,e.createTextVNode)("☰",-1)])]),_:1},16,["aria-expanded","aria-controls","aria-label"]),(0,e.createElementVNode)("div",(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(a.skdxPart)("dashboard-layout","branding"))),[(0,e.renderSlot)(t.$slots,"branding")],16),r.title?((0,e.openBlock)(),(0,e.createElementBlock)("span",(0,e.normalizeProps)((0,e.mergeProps)({key:0},(0,e.unref)(a.skdxPart)("dashboard-layout","title"))),(0,e.toDisplayString)(r.title),17)):(0,e.createCommentVNode)("",!0),(0,e.createElementVNode)("div",(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(a.skdxPart)("dashboard-layout","actions"))),[(0,e.renderSlot)(t.$slots,"actions")],16)],16),(0,e.createElementVNode)("div",(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(a.skdxPart)("dashboard-layout","body"))),[(0,e.createElementVNode)("nav",(0,e.mergeProps)({id:(0,e.unref)(l)},(0,e.unref)(a.skdxPart)("dashboard-layout","nav"),{"aria-label":r.navLabel,hidden:!n.value}),[(0,e.createVNode)(p.default,{items:r.navigation},null,8,["items"])],16,m),(0,e.createElementVNode)("main",(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(a.skdxPart)("dashboard-layout","content"))),[(0,e.renderSlot)(t.$slots,"default")],16)],16)],16,g))}});exports.default=f;
1
+ const a=require("../internal/part.cjs"),c=require("./DashboardNavList.vue.cjs");let e=require("vue"),p=require("@skdx/vue");var m=["data-nav-open"],f=["id","aria-label","hidden"],g=(0,e.defineComponent)({__name:"DashboardLayout",props:{title:{default:void 0},navigation:{},contentAs:{default:"main"},navOpen:{type:Boolean,default:void 0},defaultNavOpen:{type:Boolean,default:!0},navLabel:{default:"Main navigation"},navToggleLabel:{default:"Toggle navigation"}},emits:["update:navOpen","nav-open-change"],setup(t,{emit:s}){const r=t,d=s,l=(0,e.useId)(),i=(0,e.ref)(r.defaultNavOpen),o=(0,e.computed)(()=>r.navOpen??i.value);function v(){const n=!o.value;r.navOpen===void 0&&(i.value=n),d("update:navOpen",n),d("nav-open-change",n)}return(n,u)=>((0,e.openBlock)(),(0,e.createElementBlock)("div",(0,e.mergeProps)((0,e.unref)(a.skdxPart)("dashboard-layout","root"),{"data-nav-open":o.value?"":void 0}),[(0,e.createElementVNode)("header",(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(a.skdxPart)("dashboard-layout","app-bar"))),[(0,e.createVNode)((0,e.unref)(p.SkdxButton),(0,e.mergeProps)((0,e.unref)(a.skdxPart)("dashboard-layout","nav-toggle"),{"icon-only":"","aria-expanded":o.value,"aria-controls":(0,e.unref)(l),"aria-label":t.navToggleLabel,onClick:v}),{default:(0,e.withCtx)(()=>[...u[0]||(u[0]=[(0,e.createTextVNode)("☰",-1)])]),_:1},16,["aria-expanded","aria-controls","aria-label"]),(0,e.createElementVNode)("div",(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(a.skdxPart)("dashboard-layout","branding"))),[(0,e.renderSlot)(n.$slots,"branding")],16),t.title?((0,e.openBlock)(),(0,e.createElementBlock)("span",(0,e.normalizeProps)((0,e.mergeProps)({key:0},(0,e.unref)(a.skdxPart)("dashboard-layout","title"))),(0,e.toDisplayString)(t.title),17)):(0,e.createCommentVNode)("",!0),(0,e.createElementVNode)("div",(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(a.skdxPart)("dashboard-layout","actions"))),[(0,e.renderSlot)(n.$slots,"actions")],16)],16),(0,e.createElementVNode)("div",(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(a.skdxPart)("dashboard-layout","body"))),[(0,e.createElementVNode)("nav",(0,e.mergeProps)({id:(0,e.unref)(l)},(0,e.unref)(a.skdxPart)("dashboard-layout","nav"),{"aria-label":t.navLabel,hidden:!o.value}),[(0,e.createVNode)(c.default,{items:t.navigation},null,8,["items"])],16,f),((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(t.contentAs==="div"?"div":"main"),(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(a.skdxPart)("dashboard-layout","content"))),{default:(0,e.withCtx)(()=>[(0,e.renderSlot)(n.$slots,"default")]),_:3},16))],16)],16,m))}});exports.default=g;
@@ -1 +1 @@
1
- import{skdxPart as a}from"../internal/part.js";import e from"./DashboardNavList.vue.js";import{computed as o,createCommentVNode as t,createElementBlock as n,createElementVNode as d,createTextVNode as l,createVNode as s,defineComponent as r,guardReactiveProps as i,mergeProps as v,normalizeProps as u,openBlock as p,ref as b,renderSlot as m,toDisplayString as c,unref as g,useId as f,withCtx as h}from"vue";import{SkdxButton as y}from"@skdx/vue";var x=["data-nav-open"],k=["id","aria-label","hidden"],N=/* @__PURE__ */r({__name:"DashboardLayout",props:{title:{default:void 0},navigation:{},navOpen:{type:Boolean,default:void 0},defaultNavOpen:{type:Boolean,default:!0},navLabel:{default:"Main navigation"},navToggleLabel:{default:"Toggle navigation"}},emits:["update:navOpen","nav-open-change"],setup(r,{emit:N}){const O=r,L=N,B=f(),C=b(O.defaultNavOpen),P=o(()=>O.navOpen??C.value);function T(){const a=!P.value;void 0===O.navOpen&&(C.value=a),L("update:navOpen",a),L("nav-open-change",a)}return(o,b)=>(p(),n("div",v(g(a)("dashboard-layout","root"),{"data-nav-open":P.value?"":void 0}),[d("header",u(i(g(a)("dashboard-layout","app-bar"))),[s(g(y),v(g(a)("dashboard-layout","nav-toggle"),{"icon-only":"","aria-expanded":P.value,"aria-controls":g(B),"aria-label":r.navToggleLabel,onClick:T}),{default:h(()=>[...b[0]||(b[0]=[l("☰",-1)])]),_:1},16,["aria-expanded","aria-controls","aria-label"]),d("div",u(i(g(a)("dashboard-layout","branding"))),[m(o.$slots,"branding")],16),r.title?(p(),n("span",u(v({key:0},g(a)("dashboard-layout","title"))),c(r.title),17)):t("",!0),d("div",u(i(g(a)("dashboard-layout","actions"))),[m(o.$slots,"actions")],16)],16),d("div",u(i(g(a)("dashboard-layout","body"))),[d("nav",v({id:g(B)},g(a)("dashboard-layout","nav"),{"aria-label":r.navLabel,hidden:!P.value}),[s(e,{items:r.navigation},null,8,["items"])],16,k),d("main",u(i(g(a)("dashboard-layout","content"))),[m(o.$slots,"default")],16)],16)],16,x))}});export{N as default};
1
+ import{skdxPart as a}from"../internal/part.js";import e from"./DashboardNavList.vue.js";import{computed as o,createBlock as t,createCommentVNode as n,createElementBlock as d,createElementVNode as l,createTextVNode as s,createVNode as i,defineComponent as r,guardReactiveProps as v,mergeProps as u,normalizeProps as p,openBlock as c,ref as m,renderSlot as b,resolveDynamicComponent as f,toDisplayString as g,unref as h,useId as y,withCtx as k}from"vue";import{SkdxButton as x}from"@skdx/vue";var N=["data-nav-open"],O=["id","aria-label","hidden"],B=/* @__PURE__ */r({__name:"DashboardLayout",props:{title:{default:void 0},navigation:{},contentAs:{default:"main"},navOpen:{type:Boolean,default:void 0},defaultNavOpen:{type:Boolean,default:!0},navLabel:{default:"Main navigation"},navToggleLabel:{default:"Toggle navigation"}},emits:["update:navOpen","nav-open-change"],setup(r,{emit:B}){const L=r,C=B,D=y(),P=m(L.defaultNavOpen),T=o(()=>L.navOpen??P.value);function V(){const a=!T.value;void 0===L.navOpen&&(P.value=a),C("update:navOpen",a),C("nav-open-change",a)}return(o,m)=>(c(),d("div",u(h(a)("dashboard-layout","root"),{"data-nav-open":T.value?"":void 0}),[l("header",p(v(h(a)("dashboard-layout","app-bar"))),[i(h(x),u(h(a)("dashboard-layout","nav-toggle"),{"icon-only":"","aria-expanded":T.value,"aria-controls":h(D),"aria-label":r.navToggleLabel,onClick:V}),{default:k(()=>[...m[0]||(m[0]=[s("☰",-1)])]),_:1},16,["aria-expanded","aria-controls","aria-label"]),l("div",p(v(h(a)("dashboard-layout","branding"))),[b(o.$slots,"branding")],16),r.title?(c(),d("span",p(u({key:0},h(a)("dashboard-layout","title"))),g(r.title),17)):n("",!0),l("div",p(v(h(a)("dashboard-layout","actions"))),[b(o.$slots,"actions")],16)],16),l("div",p(v(h(a)("dashboard-layout","body"))),[l("nav",u({id:h(D)},h(a)("dashboard-layout","nav"),{"aria-label":r.navLabel,hidden:!T.value}),[i(e,{items:r.navigation},null,8,["items"])],16,O),(c(),t(f("div"===r.contentAs?"div":"main"),p(v(h(a)("dashboard-layout","content"))),{default:k(()=>[b(o.$slots,"default")]),_:3},16))],16)],16,N))}});export{B as default};
@@ -0,0 +1 @@
1
+ function n(a,t){return t==="root"?`skdx-${a}`:`skdx-${a}__${t}`}function o(a,t,s){const r={"data-part":t};return t==="root"&&(r["data-skdx-component"]=s??a),r}exports.partClass=n;exports.partData=o;
@@ -0,0 +1,21 @@
1
+ /** Join string classes without discarding the consumer's class. */
2
+ export declare function cx(...values: Array<string | false | null | undefined>): string;
3
+ /** Class hook shared by JSX, template frameworks and custom-element hosts. */
4
+ export declare function partClass(component: string, part: string): string;
5
+ /** Framework-neutral data hooks, with an inherited family taking precedence. */
6
+ export declare function partData(component: string, part: string, inheritedComponent?: string): {
7
+ 'data-part': string;
8
+ 'data-skdx-component'?: string;
9
+ };
10
+ /** React's string class convention, without depending on React. */
11
+ export declare function stringPart(component: string, part: string, className?: string, inheritedComponent?: string): {
12
+ className: string;
13
+ 'data-part': string;
14
+ 'data-skdx-component'?: string;
15
+ };
16
+ /** Preserve framework class values (objects/arrays) without flattening them. */
17
+ export declare function arrayPart<T>(component: string, part: string, className?: T | null, inheritedComponent?: string): {
18
+ class: (string | T | null | undefined)[];
19
+ 'data-part': string;
20
+ 'data-skdx-component'?: string;
21
+ };
@@ -0,0 +1,21 @@
1
+ /** Join string classes without discarding the consumer's class. */
2
+ export declare function cx(...values: Array<string | false | null | undefined>): string;
3
+ /** Class hook shared by JSX, template frameworks and custom-element hosts. */
4
+ export declare function partClass(component: string, part: string): string;
5
+ /** Framework-neutral data hooks, with an inherited family taking precedence. */
6
+ export declare function partData(component: string, part: string, inheritedComponent?: string): {
7
+ 'data-part': string;
8
+ 'data-skdx-component'?: string;
9
+ };
10
+ /** React's string class convention, without depending on React. */
11
+ export declare function stringPart(component: string, part: string, className?: string, inheritedComponent?: string): {
12
+ className: string;
13
+ 'data-part': string;
14
+ 'data-skdx-component'?: string;
15
+ };
16
+ /** Preserve framework class values (objects/arrays) without flattening them. */
17
+ export declare function arrayPart<T>(component: string, part: string, className?: T | null, inheritedComponent?: string): {
18
+ class: (string | T | null | undefined)[];
19
+ 'data-part': string;
20
+ 'data-skdx-component'?: string;
21
+ };
@@ -0,0 +1 @@
1
+ function t(t,a){return"root"===a?`skdx-${t}`:`skdx-${t}__${a}`}function a(t,a,o){const r={"data-part":a};return"root"===a&&(r["data-skdx-component"]=o??t),r}export{t as partClass,a as partData};
@@ -1 +1 @@
1
- function k(s,t){const a=t==="root",d={class:a?`skdx-${s}`:`skdx-${s}__${t}`,"data-part":t};return a&&(d["data-skdx-component"]=s),d}exports.skdxPart=k;
1
+ const s=require("./part-core.cjs");function t(r,a){return{class:s.partClass(r,a),...s.partData(r,a)}}exports.skdxPart=t;
@@ -1 +1 @@
1
- function t(t,a){const s="root"===a,o={class:s?`skdx-${t}`:`skdx-${t}__${a}`,"data-part":a};return s&&(o["data-skdx-component"]=t),o}export{t as skdxPart};
1
+ import{partClass as a,partData as r}from"./part-core.js";function s(s,t){return{class:a(s,t),...r(s,t)}}export{s as skdxPart};
@@ -1,6 +1,6 @@
1
1
  import { type BreadcrumbItem } from '@skdx/vue';
2
2
  /**
3
- * Composes Breadcrumb, Heading and Toolbar into a `<section>` named by its own heading, above the page content.
3
+ * Composes Breadcrumb, Heading and page actions into a `<section>` named by its own heading.
4
4
  *
5
5
  * @example
6
6
  * ```vue
@@ -31,17 +31,20 @@ type __VLS_Props = {
31
31
  */
32
32
  breadcrumbLabel?: string;
33
33
  /**
34
- * Accessible name of the derived actions Toolbar.
34
+ * Accessible name of the page actions group or optional toolbar.
35
35
  * @default 'Page actions'
36
36
  */
37
37
  actionsLabel?: string;
38
+ /** Render a keyboard toolbar for bare toolbar parts. @default false */
39
+ actionsAsToolbar?: boolean;
38
40
  };
39
41
  type __VLS_Slots = {
40
42
  /** The page content rendered below the header. */
41
43
  default?(): unknown;
42
44
  /**
43
- * Toolbar parts placed inside the derived Toolbar beside the heading; no toolbar renders
44
- * without it. Pass toolbar parts — a toolbar button, link, separator or toggle group; anything else stays its own Tab stop and the arrow keys skip it, since only a toolbar part joins the roving tabindex.
45
+ * Page controls beside the heading. Ordinary buttons keep their own Tab stops.
46
+ * Compose an explicit Toolbar for keyboard grouping, or enable actionsAsToolbar
47
+ * when passing bare toolbar parts. No group renders without this slot.
45
48
  */
46
49
  actions?(): unknown;
47
50
  };
@@ -50,6 +53,7 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}
50
53
  breadcrumbs: readonly BreadcrumbItem[] | undefined;
51
54
  breadcrumbLabel: string;
52
55
  actionsLabel: string;
56
+ actionsAsToolbar: boolean;
53
57
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
54
58
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
55
59
  export default _default;
@@ -1,6 +1,6 @@
1
1
  import { type BreadcrumbItem } from '@skdx/vue';
2
2
  /**
3
- * Composes Breadcrumb, Heading and Toolbar into a `<section>` named by its own heading, above the page content.
3
+ * Composes Breadcrumb, Heading and page actions into a `<section>` named by its own heading.
4
4
  *
5
5
  * @example
6
6
  * ```vue
@@ -31,17 +31,20 @@ type __VLS_Props = {
31
31
  */
32
32
  breadcrumbLabel?: string;
33
33
  /**
34
- * Accessible name of the derived actions Toolbar.
34
+ * Accessible name of the page actions group or optional toolbar.
35
35
  * @default 'Page actions'
36
36
  */
37
37
  actionsLabel?: string;
38
+ /** Render a keyboard toolbar for bare toolbar parts. @default false */
39
+ actionsAsToolbar?: boolean;
38
40
  };
39
41
  type __VLS_Slots = {
40
42
  /** The page content rendered below the header. */
41
43
  default?(): unknown;
42
44
  /**
43
- * Toolbar parts placed inside the derived Toolbar beside the heading; no toolbar renders
44
- * without it. Pass toolbar parts — a toolbar button, link, separator or toggle group; anything else stays its own Tab stop and the arrow keys skip it, since only a toolbar part joins the roving tabindex.
45
+ * Page controls beside the heading. Ordinary buttons keep their own Tab stops.
46
+ * Compose an explicit Toolbar for keyboard grouping, or enable actionsAsToolbar
47
+ * when passing bare toolbar parts. No group renders without this slot.
45
48
  */
46
49
  actions?(): unknown;
47
50
  };
@@ -50,6 +53,7 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}
50
53
  breadcrumbs: readonly BreadcrumbItem[] | undefined;
51
54
  breadcrumbLabel: string;
52
55
  actionsLabel: string;
56
+ actionsAsToolbar: boolean;
53
57
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
54
58
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
55
59
  export default _default;
@@ -1 +1 @@
1
- const a=require("../internal/part.cjs");let e=require("vue"),n=require("@skdx/vue");var i=["aria-labelledby"],u=(0,e.defineComponent)({__name:"PageContainer",props:{title:{},headingLevel:{default:1},breadcrumbs:{default:void 0},breadcrumbLabel:{default:"Breadcrumb"},actionsLabel:{default:"Page actions"}},setup(r){const o=r,l=(0,e.useId)(),d=(0,e.computed)(()=>`h${o.headingLevel}`);return(t,c)=>((0,e.openBlock)(),(0,e.createElementBlock)("section",(0,e.mergeProps)((0,e.unref)(a.skdxPart)("page-container","root"),{"aria-labelledby":(0,e.unref)(l)}),[(0,e.createElementVNode)("header",(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(a.skdxPart)("page-container","header"))),[r.breadcrumbs?.length?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(n.SkdxBreadcrumb),(0,e.mergeProps)({key:0},(0,e.unref)(a.skdxPart)("page-container","breadcrumbs"),{label:o.breadcrumbLabel,items:r.breadcrumbs}),null,16,["label","items"])):(0,e.createCommentVNode)("",!0),(0,e.createElementVNode)("div",(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(a.skdxPart)("page-container","heading-row"))),[(0,e.createVNode)((0,e.unref)(n.SkdxHeading),(0,e.mergeProps)({id:(0,e.unref)(l)},(0,e.unref)(a.skdxPart)("page-container","title"),{as:d.value}),{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(r.title),1)]),_:1},16,["id","as"]),t.$slots.actions?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(n.SkdxToolbar),(0,e.mergeProps)({key:0},(0,e.unref)(a.skdxPart)("page-container","actions"),{"aria-label":r.actionsLabel}),{default:(0,e.withCtx)(()=>[(0,e.renderSlot)(t.$slots,"actions")]),_:3},16,["aria-label"])):(0,e.createCommentVNode)("",!0)],16)],16),(0,e.createElementVNode)("div",(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(a.skdxPart)("page-container","content"))),[(0,e.renderSlot)(t.$slots,"default")],16)],16,i))}});exports.default=u;
1
+ const r=require("../internal/part.cjs");let e=require("vue"),o=require("@skdx/vue");var i=["aria-labelledby"],s=(0,e.defineComponent)({__name:"PageContainer",props:{title:{},headingLevel:{default:1},breadcrumbs:{default:void 0},breadcrumbLabel:{default:"Breadcrumb"},actionsLabel:{default:"Page actions"},actionsAsToolbar:{type:Boolean,default:!1}},setup(a){const n=a,l=(0,e.useId)(),d=(0,e.computed)(()=>`h${n.headingLevel}`);return(t,u)=>((0,e.openBlock)(),(0,e.createElementBlock)("section",(0,e.mergeProps)((0,e.unref)(r.skdxPart)("page-container","root"),{"aria-labelledby":(0,e.unref)(l)}),[(0,e.createElementVNode)("header",(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(r.skdxPart)("page-container","header"))),[a.breadcrumbs?.length?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(o.SkdxBreadcrumb),(0,e.mergeProps)({key:0},(0,e.unref)(r.skdxPart)("page-container","breadcrumbs"),{label:n.breadcrumbLabel,items:a.breadcrumbs}),null,16,["label","items"])):(0,e.createCommentVNode)("",!0),(0,e.createElementVNode)("div",(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(r.skdxPart)("page-container","heading-row"))),[(0,e.createVNode)((0,e.unref)(o.SkdxHeading),(0,e.mergeProps)({id:(0,e.unref)(l)},(0,e.unref)(r.skdxPart)("page-container","title"),{as:d.value}),{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(a.title),1)]),_:1},16,["id","as"]),t.$slots.actions?((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(a.actionsAsToolbar?(0,e.unref)(o.SkdxToolbar):"div"),(0,e.mergeProps)({key:0,role:a.actionsAsToolbar?"toolbar":"group"},(0,e.unref)(r.skdxPart)("page-container","actions"),{"aria-label":a.actionsLabel}),{default:(0,e.withCtx)(()=>[(0,e.renderSlot)(t.$slots,"actions")]),_:3},16,["role","aria-label"])):(0,e.createCommentVNode)("",!0)],16)],16),(0,e.createElementVNode)("div",(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(r.skdxPart)("page-container","content"))),[(0,e.renderSlot)(t.$slots,"default")],16)],16,i))}});exports.default=s;
@@ -1 +1 @@
1
- import{skdxPart as e}from"../internal/part.js";import{computed as a,createBlock as t,createCommentVNode as r,createElementBlock as s,createElementVNode as o,createTextVNode as l,createVNode as n,defineComponent as d,guardReactiveProps as i,mergeProps as c,normalizeProps as b,openBlock as u,renderSlot as m,toDisplayString as p,unref as g,useId as f,withCtx as k}from"vue";import{SkdxBreadcrumb as v,SkdxHeading as h,SkdxToolbar as x}from"@skdx/vue";var L=["aria-labelledby"],P=/* @__PURE__ */d({__name:"PageContainer",props:{title:{},headingLevel:{default:1},breadcrumbs:{default:void 0},breadcrumbLabel:{default:"Breadcrumb"},actionsLabel:{default:"Page actions"}},setup(d){const P=d,y=f(),B=a(()=>`h${P.headingLevel}`);return(a,f)=>(u(),s("section",c(g(e)("page-container","root"),{"aria-labelledby":g(y)}),[o("header",b(i(g(e)("page-container","header"))),[d.breadcrumbs?.length?(u(),t(g(v),c({key:0},g(e)("page-container","breadcrumbs"),{label:P.breadcrumbLabel,items:d.breadcrumbs}),null,16,["label","items"])):r("",!0),o("div",b(i(g(e)("page-container","heading-row"))),[n(g(h),c({id:g(y)},g(e)("page-container","title"),{as:B.value}),{default:k(()=>[l(p(d.title),1)]),_:1},16,["id","as"]),a.$slots.actions?(u(),t(g(x),c({key:0},g(e)("page-container","actions"),{"aria-label":d.actionsLabel}),{default:k(()=>[m(a.$slots,"actions")]),_:3},16,["aria-label"])):r("",!0)],16)],16),o("div",b(i(g(e)("page-container","content"))),[m(a.$slots,"default")],16)],16,L))}});export{P as default};
1
+ import{skdxPart as e}from"../internal/part.js";import{computed as a,createBlock as t,createCommentVNode as o,createElementBlock as r,createElementVNode as s,createTextVNode as l,createVNode as n,defineComponent as i,guardReactiveProps as d,mergeProps as c,normalizeProps as b,openBlock as u,renderSlot as m,resolveDynamicComponent as p,toDisplayString as g,unref as f,useId as v,withCtx as k}from"vue";import{SkdxBreadcrumb as h,SkdxHeading as x,SkdxToolbar as y}from"@skdx/vue";var B=["aria-labelledby"],L=/* @__PURE__ */i({__name:"PageContainer",props:{title:{},headingLevel:{default:1},breadcrumbs:{default:void 0},breadcrumbLabel:{default:"Breadcrumb"},actionsLabel:{default:"Page actions"},actionsAsToolbar:{type:Boolean,default:!1}},setup(i){const L=i,P=v(),C=a(()=>`h${L.headingLevel}`);return(a,v)=>(u(),r("section",c(f(e)("page-container","root"),{"aria-labelledby":f(P)}),[s("header",b(d(f(e)("page-container","header"))),[i.breadcrumbs?.length?(u(),t(f(h),c({key:0},f(e)("page-container","breadcrumbs"),{label:L.breadcrumbLabel,items:i.breadcrumbs}),null,16,["label","items"])):o("",!0),s("div",b(d(f(e)("page-container","heading-row"))),[n(f(x),c({id:f(P)},f(e)("page-container","title"),{as:C.value}),{default:k(()=>[l(g(i.title),1)]),_:1},16,["id","as"]),a.$slots.actions?(u(),t(p(i.actionsAsToolbar?f(y):"div"),c({key:0,role:i.actionsAsToolbar?"toolbar":"group"},f(e)("page-container","actions"),{"aria-label":i.actionsLabel}),{default:k(()=>[m(a.$slots,"actions")]),_:3},16,["role","aria-label"])):o("",!0)],16)],16),s("div",b(d(f(e)("page-container","content"))),[m(a.$slots,"default")],16)],16,B))}});export{L as default};
@@ -99,7 +99,6 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}
99
99
  "focus-outside": (event: Event) => any;
100
100
  "interact-outside": (event: Event) => any;
101
101
  "close-auto-focus": (event: Event) => any;
102
- "open-auto-focus": (event: Event) => any;
103
102
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
104
103
  "onUpdate:value"?: (value: string) => any;
105
104
  "onValue-change"?: (value: string) => any;
@@ -111,7 +110,6 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}
111
110
  "onFocus-outside"?: (event: Event) => any;
112
111
  "onInteract-outside"?: (event: Event) => any;
113
112
  "onClose-auto-focus"?: (event: Event) => any;
114
- "onOpen-auto-focus"?: (event: Event) => any;
115
113
  }>, {
116
114
  label: string | undefined;
117
115
  placeholder: string;
@@ -99,7 +99,6 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}
99
99
  "focus-outside": (event: Event) => any;
100
100
  "interact-outside": (event: Event) => any;
101
101
  "close-auto-focus": (event: Event) => any;
102
- "open-auto-focus": (event: Event) => any;
103
102
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
104
103
  "onUpdate:value"?: (value: string) => any;
105
104
  "onValue-change"?: (value: string) => any;
@@ -111,7 +110,6 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}
111
110
  "onFocus-outside"?: (event: Event) => any;
112
111
  "onInteract-outside"?: (event: Event) => any;
113
112
  "onClose-auto-focus"?: (event: Event) => any;
114
- "onOpen-auto-focus"?: (event: Event) => any;
115
113
  }>, {
116
114
  label: string | undefined;
117
115
  placeholder: string;
@@ -1 +1 @@
1
- const n=require("../internal/part.cjs");let e=require("vue"),O=require("@skdx/vue"),i=require("@skdx/vue/primitives/command"),k=require("@skdx/vue/primitives/popover");var D=(0,e.defineComponent)({inheritAttrs:!1,__name:"WorkspaceSwitcher",props:{items:{},value:{default:void 0},defaultValue:{default:""},placeholder:{default:"Select"},label:{default:void 0},searchLabel:{default:"Search"},searchPlaceholder:{default:void 0},emptyMessage:{default:"No results"},loadingMessage:{default:"Loading"},loading:{type:Boolean,default:!1},selectedLabel:{default:"Current"},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:!1}},emits:["update:value","value-change","update:open","open-change","open-change-complete","escape-key-down","pointer-down-outside","focus-outside","interact-outside","open-auto-focus","close-auto-focus"],setup(l,{emit:y}){const u=l,s=y;function S(t,o){const r=o.toLowerCase(),a=new Map([[void 0,[]]]);for(const d of t){const p=a.get(d.group);p?p.push(d):a.set(d.group,[d])}const C=d=>r===""||d.id.toLowerCase().includes(r)||d.label.toLowerCase().includes(r)||(d.description?.toLowerCase().includes(r)??!1),x=[];for(const[d,p]of a)p.some(C)&&x.push({heading:d,items:p});return x}const b=(0,e.useAttrs)(),f=(0,e.ref)(""),g=(0,e.ref)(u.defaultValue),v=(0,e.ref)(u.defaultOpen),m=(0,e.computed)(()=>u.value??g.value),w=(0,e.computed)(()=>u.open??v.value),h=(0,e.ref)(null);(0,e.watch)(w,t=>{t&&h.value?.focus()},{flush:"post"});const c=(0,e.computed)(()=>u.items.find(t=>t.id===m.value)),B=(0,e.computed)(()=>S(u.items,f.value)),V=(0,e.computed)(()=>(0,e.mergeProps)({"aria-label":u.label},b,{...n.skdxPart("workspace-switcher","root")}));function P(t){t||(f.value=""),u.open===void 0&&(v.value=t),s("update:open",t),s("open-change",t)}function N(t){u.value===void 0&&(g.value=t),s("update:value",t),s("value-change",t),P(!1)}function L(t){return t.description?[t.label,t.description]:[t.label]}function E(t){return t.heading===void 0?{}:{heading:t.heading}}return(t,o)=>((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(k.SkdxPopoverRoot),{open:w.value,modal:"none",onOpenChange:P,onOpenChangeComplete:o[7]||(o[7]=r=>s("open-change-complete",r))},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(k.SkdxPopoverTrigger),(0,e.normalizeProps)((0,e.guardReactiveProps)(V.value)),{default:(0,e.withCtx)(()=>[(0,e.renderSlot)(t.$slots,"trigger",{},()=>[t.$slots.leading&&c.value?((0,e.openBlock)(),(0,e.createElementBlock)("span",(0,e.mergeProps)({key:0,"aria-hidden":"true"},(0,e.unref)(n.skdxPart)("workspace-switcher","leading")),[(0,e.renderSlot)(t.$slots,"leading",{item:c.value})],16)):(0,e.createCommentVNode)("",!0),(0,e.createElementVNode)("span",(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(n.skdxPart)("workspace-switcher","current"))),(0,e.toDisplayString)(c.value?.label??l.placeholder),17),c.value?.description?((0,e.openBlock)(),(0,e.createElementBlock)("span",(0,e.normalizeProps)((0,e.mergeProps)({key:1},(0,e.unref)(n.skdxPart)("workspace-switcher","description"))),(0,e.toDisplayString)(c.value.description),17)):(0,e.createCommentVNode)("",!0)])]),_:3},16),(0,e.createVNode)((0,e.unref)(k.SkdxPopoverPortal),null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(k.SkdxPopoverContent),(0,e.mergeProps)((0,e.unref)(n.skdxPart)("workspace-switcher","content"),{align:"start","aria-label":l.label??l.placeholder,onEscapeKeyDown:o[1]||(o[1]=r=>s("escape-key-down",r)),onPointerDownOutside:o[2]||(o[2]=r=>s("pointer-down-outside",r)),onFocusOutside:o[3]||(o[3]=r=>s("focus-outside",r)),onInteractOutside:o[4]||(o[4]=r=>s("interact-outside",r)),onOpenAutoFocus:o[5]||(o[5]=r=>s("open-auto-focus",r)),onCloseAutoFocus:o[6]||(o[6]=r=>s("close-auto-focus",r))}),{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.SkdxCommand),{loading:l.loading??!1,search:f.value,onSearchChange:o[0]||(o[0]=r=>f.value=r)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.SkdxCommandInput),(0,e.mergeProps)({ref_key:"searchInput",ref:h},(0,e.unref)(n.skdxPart)("workspace-switcher","search"),{"aria-label":l.searchLabel,placeholder:l.searchPlaceholder}),null,16,["aria-label","placeholder"]),(0,e.createVNode)((0,e.unref)(i.SkdxCommandList),(0,e.mergeProps)((0,e.unref)(n.skdxPart)("workspace-switcher","list"),{"aria-label":l.label??l.placeholder}),{default:(0,e.withCtx)(()=>[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(B.value,r=>((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(i.SkdxCommandGroup),(0,e.mergeProps)({key:r.heading??""},{ref_for:!0},{...(0,e.unref)(n.skdxPart)("workspace-switcher","group"),...E(r)}),{default:(0,e.withCtx)(()=>[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(r.items,a=>((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(i.SkdxCommandItem),(0,e.mergeProps)({key:a.id},{ref_for:!0},(0,e.unref)(n.skdxPart)("workspace-switcher","item"),{value:a.id,keywords:L(a),disabled:a.disabled,"data-selected":a.id===m.value?"":void 0,onSelect:C=>N(a.id)}),{default:(0,e.withCtx)(()=>[t.$slots.leading?((0,e.openBlock)(),(0,e.createElementBlock)("span",(0,e.mergeProps)({key:0,"aria-hidden":"true"},{ref_for:!0},(0,e.unref)(n.skdxPart)("workspace-switcher","item-leading")),[(0,e.renderSlot)(t.$slots,"leading",{item:a})],16)):(0,e.createCommentVNode)("",!0),(0,e.createElementVNode)("span",(0,e.mergeProps)({ref_for:!0},(0,e.unref)(n.skdxPart)("workspace-switcher","item-label")),(0,e.toDisplayString)(a.label),17),a.description?((0,e.openBlock)(),(0,e.createElementBlock)("span",(0,e.mergeProps)({key:1,ref_for:!0},(0,e.unref)(n.skdxPart)("workspace-switcher","item-description")),(0,e.toDisplayString)(a.description),17)):(0,e.createCommentVNode)("",!0),a.id===m.value?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(O.SkdxVisuallyHidden),{key:2},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(l.selectedLabel),1)]),_:1})):(0,e.createCommentVNode)("",!0)]),_:2},1040,["value","keywords","disabled","data-selected","onSelect"]))),128))]),_:2},1040))),128))]),_:3},16,["aria-label"]),(0,e.createVNode)((0,e.unref)(i.SkdxCommandLoading),(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(n.skdxPart)("workspace-switcher","loading"))),{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(l.loadingMessage),1)]),_:1},16),(0,e.createVNode)((0,e.unref)(i.SkdxCommandEmpty),(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(n.skdxPart)("workspace-switcher","empty"))),{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(l.emptyMessage),1)]),_:1},16)]),_:3},8,["loading","search"]),t.$slots.actions?((0,e.openBlock)(),(0,e.createElementBlock)("div",(0,e.normalizeProps)((0,e.mergeProps)({key:0},(0,e.unref)(n.skdxPart)("workspace-switcher","footer"))),[(0,e.renderSlot)(t.$slots,"actions")],16)):(0,e.createCommentVNode)("",!0)]),_:3},16,["aria-label"])]),_:3})]),_:3},8,["open"]))}});exports.default=D;
1
+ const n=require("../internal/part.cjs");let e=require("vue"),O=require("@skdx/vue"),i=require("@skdx/vue/primitives/command"),k=require("@skdx/vue/primitives/popover");var D=(0,e.defineComponent)({inheritAttrs:!1,__name:"WorkspaceSwitcher",props:{items:{},value:{default:void 0},defaultValue:{default:""},placeholder:{default:"Select"},label:{default:void 0},searchLabel:{default:"Search"},searchPlaceholder:{default:void 0},emptyMessage:{default:"No results"},loadingMessage:{default:"Loading"},loading:{type:Boolean,default:!1},selectedLabel:{default:"Current"},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:!1}},emits:["update:value","value-change","update:open","open-change","open-change-complete","escape-key-down","pointer-down-outside","focus-outside","interact-outside","close-auto-focus"],setup(l,{emit:y}){const u=l,s=y;function S(t,o){const r=o.toLowerCase(),a=new Map([[void 0,[]]]);for(const d of t){const p=a.get(d.group);p?p.push(d):a.set(d.group,[d])}const C=d=>r===""||d.id.toLowerCase().includes(r)||d.label.toLowerCase().includes(r)||(d.description?.toLowerCase().includes(r)??!1),x=[];for(const[d,p]of a)p.some(C)&&x.push({heading:d,items:p});return x}const b=(0,e.useAttrs)(),f=(0,e.ref)(""),g=(0,e.ref)(u.defaultValue),v=(0,e.ref)(u.defaultOpen),m=(0,e.computed)(()=>u.value??g.value),h=(0,e.computed)(()=>u.open??v.value),w=(0,e.ref)(null);(0,e.watch)(h,t=>{t&&w.value?.focus()},{flush:"post"});const c=(0,e.computed)(()=>u.items.find(t=>t.id===m.value)),B=(0,e.computed)(()=>S(u.items,f.value)),V=(0,e.computed)(()=>(0,e.mergeProps)({"aria-label":u.label},b,{...n.skdxPart("workspace-switcher","root")}));function P(t){t||(f.value=""),u.open===void 0&&(v.value=t),s("update:open",t),s("open-change",t)}function N(t){u.value===void 0&&(g.value=t),s("update:value",t),s("value-change",t),P(!1)}function L(t){return t.description?[t.label,t.description]:[t.label]}function E(t){return t.heading===void 0?{}:{heading:t.heading}}return(t,o)=>((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(k.SkdxPopoverRoot),{open:h.value,modal:"none",onOpenChange:P,onOpenChangeComplete:o[6]||(o[6]=r=>s("open-change-complete",r))},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(k.SkdxPopoverTrigger),(0,e.normalizeProps)((0,e.guardReactiveProps)(V.value)),{default:(0,e.withCtx)(()=>[(0,e.renderSlot)(t.$slots,"trigger",{},()=>[t.$slots.leading&&c.value?((0,e.openBlock)(),(0,e.createElementBlock)("span",(0,e.mergeProps)({key:0,"aria-hidden":"true"},(0,e.unref)(n.skdxPart)("workspace-switcher","leading")),[(0,e.renderSlot)(t.$slots,"leading",{item:c.value})],16)):(0,e.createCommentVNode)("",!0),(0,e.createElementVNode)("span",(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(n.skdxPart)("workspace-switcher","current"))),(0,e.toDisplayString)(c.value?.label??l.placeholder),17),c.value?.description?((0,e.openBlock)(),(0,e.createElementBlock)("span",(0,e.normalizeProps)((0,e.mergeProps)({key:1},(0,e.unref)(n.skdxPart)("workspace-switcher","description"))),(0,e.toDisplayString)(c.value.description),17)):(0,e.createCommentVNode)("",!0)])]),_:3},16),(0,e.createVNode)((0,e.unref)(k.SkdxPopoverPortal),null,{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(k.SkdxPopoverContent),(0,e.mergeProps)((0,e.unref)(n.skdxPart)("workspace-switcher","content"),{align:"start","aria-label":l.label??l.placeholder,onEscapeKeyDown:o[1]||(o[1]=r=>s("escape-key-down",r)),onPointerDownOutside:o[2]||(o[2]=r=>s("pointer-down-outside",r)),onFocusOutside:o[3]||(o[3]=r=>s("focus-outside",r)),onInteractOutside:o[4]||(o[4]=r=>s("interact-outside",r)),onCloseAutoFocus:o[5]||(o[5]=r=>s("close-auto-focus",r))}),{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.SkdxCommand),{loading:l.loading??!1,search:f.value,onSearchChange:o[0]||(o[0]=r=>f.value=r)},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i.SkdxCommandInput),(0,e.mergeProps)({ref_key:"searchInput",ref:w},(0,e.unref)(n.skdxPart)("workspace-switcher","search"),{"aria-label":l.searchLabel,placeholder:l.searchPlaceholder}),null,16,["aria-label","placeholder"]),(0,e.createVNode)((0,e.unref)(i.SkdxCommandList),(0,e.mergeProps)((0,e.unref)(n.skdxPart)("workspace-switcher","list"),{"aria-label":l.label??l.placeholder}),{default:(0,e.withCtx)(()=>[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(B.value,r=>((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(i.SkdxCommandGroup),(0,e.mergeProps)({key:r.heading??""},{ref_for:!0},{...(0,e.unref)(n.skdxPart)("workspace-switcher","group"),...E(r)}),{default:(0,e.withCtx)(()=>[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(r.items,a=>((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(i.SkdxCommandItem),(0,e.mergeProps)({key:a.id},{ref_for:!0},(0,e.unref)(n.skdxPart)("workspace-switcher","item"),{value:a.id,keywords:L(a),disabled:a.disabled,"data-selected":a.id===m.value?"":void 0,onSelect:C=>N(a.id)}),{default:(0,e.withCtx)(()=>[t.$slots.leading?((0,e.openBlock)(),(0,e.createElementBlock)("span",(0,e.mergeProps)({key:0,"aria-hidden":"true"},{ref_for:!0},(0,e.unref)(n.skdxPart)("workspace-switcher","item-leading")),[(0,e.renderSlot)(t.$slots,"leading",{item:a})],16)):(0,e.createCommentVNode)("",!0),(0,e.createElementVNode)("span",(0,e.mergeProps)({ref_for:!0},(0,e.unref)(n.skdxPart)("workspace-switcher","item-label")),(0,e.toDisplayString)(a.label),17),a.description?((0,e.openBlock)(),(0,e.createElementBlock)("span",(0,e.mergeProps)({key:1,ref_for:!0},(0,e.unref)(n.skdxPart)("workspace-switcher","item-description")),(0,e.toDisplayString)(a.description),17)):(0,e.createCommentVNode)("",!0),a.id===m.value?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(O.SkdxVisuallyHidden),{key:2},{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(l.selectedLabel),1)]),_:1})):(0,e.createCommentVNode)("",!0)]),_:2},1040,["value","keywords","disabled","data-selected","onSelect"]))),128))]),_:2},1040))),128))]),_:3},16,["aria-label"]),(0,e.createVNode)((0,e.unref)(i.SkdxCommandLoading),(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(n.skdxPart)("workspace-switcher","loading"))),{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(l.loadingMessage),1)]),_:1},16),(0,e.createVNode)((0,e.unref)(i.SkdxCommandEmpty),(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(n.skdxPart)("workspace-switcher","empty"))),{default:(0,e.withCtx)(()=>[(0,e.createTextVNode)((0,e.toDisplayString)(l.emptyMessage),1)]),_:1},16)]),_:3},8,["loading","search"]),t.$slots.actions?((0,e.openBlock)(),(0,e.createElementBlock)("div",(0,e.normalizeProps)((0,e.mergeProps)({key:0},(0,e.unref)(n.skdxPart)("workspace-switcher","footer"))),[(0,e.renderSlot)(t.$slots,"actions")],16)):(0,e.createCommentVNode)("",!0)]),_:3},16,["aria-label"])]),_:3})]),_:3},8,["open"]))}});exports.default=D;
@@ -1 +1 @@
1
- import{skdxPart as e}from"../internal/part.js";import{Fragment as a,computed as o,createBlock as t,createCommentVNode as s,createElementBlock as l,createElementVNode as r,createTextVNode as n,createVNode as d,defineComponent as i,guardReactiveProps as u,mergeProps as c,normalizeProps as p,openBlock as f,ref as m,renderList as h,renderSlot as v,toDisplayString as k,unref as g,useAttrs as w,watch as b,withCtx as y}from"vue";import{SkdxVisuallyHidden as C}from"@skdx/vue";import{SkdxCommand as S,SkdxCommandEmpty as x,SkdxCommandGroup as _,SkdxCommandInput as L,SkdxCommandItem as P,SkdxCommandList as O,SkdxCommandLoading as V}from"@skdx/vue/primitives/command";import{SkdxPopoverContent as $,SkdxPopoverPortal as B,SkdxPopoverRoot as M,SkdxPopoverTrigger as N}from"@skdx/vue/primitives/popover";var A=/* @__PURE__ */i({inheritAttrs:!1,__name:"WorkspaceSwitcher",props:{items:{},value:{default:void 0},defaultValue:{default:""},placeholder:{default:"Select"},label:{default:void 0},searchLabel:{default:"Search"},searchPlaceholder:{default:void 0},emptyMessage:{default:"No results"},loadingMessage:{default:"Loading"},loading:{type:Boolean,default:!1},selectedLabel:{default:"Current"},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:!1}},emits:["update:value","value-change","update:open","open-change","open-change-complete","escape-key-down","pointer-down-outside","focus-outside","interact-outside","open-auto-focus","close-auto-focus"],setup(i,{emit:A}){const E=i,F=A,I=w(),D=m(""),R=m(E.defaultValue),T=m(E.defaultOpen),j=o(()=>E.value??R.value),z=o(()=>E.open??T.value),G=m(null);b(z,e=>{e&&G.value?.focus()},{flush:"post"});const H=o(()=>E.items.find(e=>e.id===j.value)),K=o(()=>function(e,a){const o=a.toLowerCase(),t=/* @__PURE__ */new Map([[void 0,[]]]);for(const a of e){const e=t.get(a.group);e?e.push(a):t.set(a.group,[a])}const s=e=>""===o||e.id.toLowerCase().includes(o)||e.label.toLowerCase().includes(o)||(e.description?.toLowerCase().includes(o)??!1),l=[];for(const[e,a]of t)a.some(s)&&l.push({heading:e,items:a});return l}(E.items,D.value)),W=o(()=>c({"aria-label":E.label},I,{...e("workspace-switcher","root")}));function q(e){e||(D.value=""),void 0===E.open&&(T.value=e),F("update:open",e),F("open-change",e)}function J(e){return e.description?[e.label,e.description]:[e.label]}function Q(e){return void 0===e.heading?{}:{heading:e.heading}}return(o,m)=>(f(),t(g(M),{open:z.value,modal:"none",onOpenChange:q,onOpenChangeComplete:m[7]||(m[7]=e=>F("open-change-complete",e))},{default:y(()=>[d(g(N),p(u(W.value)),{default:y(()=>[v(o.$slots,"trigger",{},()=>[o.$slots.leading&&H.value?(f(),l("span",c({key:0,"aria-hidden":"true"},g(e)("workspace-switcher","leading")),[v(o.$slots,"leading",{item:H.value})],16)):s("",!0),r("span",p(u(g(e)("workspace-switcher","current"))),k(H.value?.label??i.placeholder),17),H.value?.description?(f(),l("span",p(c({key:1},g(e)("workspace-switcher","description"))),k(H.value.description),17)):s("",!0)])]),_:3},16),d(g(B),null,{default:y(()=>[d(g($),c(g(e)("workspace-switcher","content"),{align:"start","aria-label":i.label??i.placeholder,onEscapeKeyDown:m[1]||(m[1]=e=>F("escape-key-down",e)),onPointerDownOutside:m[2]||(m[2]=e=>F("pointer-down-outside",e)),onFocusOutside:m[3]||(m[3]=e=>F("focus-outside",e)),onInteractOutside:m[4]||(m[4]=e=>F("interact-outside",e)),onOpenAutoFocus:m[5]||(m[5]=e=>F("open-auto-focus",e)),onCloseAutoFocus:m[6]||(m[6]=e=>F("close-auto-focus",e))}),{default:y(()=>[d(g(S),{loading:i.loading??!1,search:D.value,onSearchChange:m[0]||(m[0]=e=>D.value=e)},{default:y(()=>[d(g(L),c({ref_key:"searchInput",ref:G},g(e)("workspace-switcher","search"),{"aria-label":i.searchLabel,placeholder:i.searchPlaceholder}),null,16,["aria-label","placeholder"]),d(g(O),c(g(e)("workspace-switcher","list"),{"aria-label":i.label??i.placeholder}),{default:y(()=>[(f(!0),l(a,null,h(K.value,d=>(f(),t(g(_),c({key:d.heading??""},{ref_for:!0},{...g(e)("workspace-switcher","group"),...Q(d)}),{default:y(()=>[(f(!0),l(a,null,h(d.items,a=>(f(),t(g(P),c({key:a.id},{ref_for:!0},g(e)("workspace-switcher","item"),{value:a.id,keywords:J(a),disabled:a.disabled,"data-selected":a.id===j.value?"":void 0,onSelect:e=>function(e){void 0===E.value&&(R.value=e),F("update:value",e),F("value-change",e),q(!1)}(a.id)}),{default:y(()=>[o.$slots.leading?(f(),l("span",c({key:0,"aria-hidden":"true"},{ref_for:!0},g(e)("workspace-switcher","item-leading")),[v(o.$slots,"leading",{item:a})],16)):s("",!0),r("span",c({ref_for:!0},g(e)("workspace-switcher","item-label")),k(a.label),17),a.description?(f(),l("span",c({key:1,ref_for:!0},g(e)("workspace-switcher","item-description")),k(a.description),17)):s("",!0),a.id===j.value?(f(),t(g(C),{key:2},{default:y(()=>[n(k(i.selectedLabel),1)]),_:1})):s("",!0)]),_:2},1040,["value","keywords","disabled","data-selected","onSelect"]))),128))]),_:2},1040))),128))]),_:3},16,["aria-label"]),d(g(V),p(u(g(e)("workspace-switcher","loading"))),{default:y(()=>[n(k(i.loadingMessage),1)]),_:1},16),d(g(x),p(u(g(e)("workspace-switcher","empty"))),{default:y(()=>[n(k(i.emptyMessage),1)]),_:1},16)]),_:3},8,["loading","search"]),o.$slots.actions?(f(),l("div",p(c({key:0},g(e)("workspace-switcher","footer"))),[v(o.$slots,"actions")],16)):s("",!0)]),_:3},16,["aria-label"])]),_:3})]),_:3},8,["open"]))}});export{A as default};
1
+ import{skdxPart as e}from"../internal/part.js";import{Fragment as a,computed as o,createBlock as t,createCommentVNode as s,createElementBlock as l,createElementVNode as r,createTextVNode as d,createVNode as n,defineComponent as i,guardReactiveProps as u,mergeProps as c,normalizeProps as p,openBlock as f,ref as m,renderList as h,renderSlot as v,toDisplayString as k,unref as g,useAttrs as w,watch as b,withCtx as y}from"vue";import{SkdxVisuallyHidden as C}from"@skdx/vue";import{SkdxCommand as S,SkdxCommandEmpty as x,SkdxCommandGroup as _,SkdxCommandInput as L,SkdxCommandItem as P,SkdxCommandList as O,SkdxCommandLoading as V}from"@skdx/vue/primitives/command";import{SkdxPopoverContent as $,SkdxPopoverPortal as B,SkdxPopoverRoot as M,SkdxPopoverTrigger as N}from"@skdx/vue/primitives/popover";var E=/* @__PURE__ */i({inheritAttrs:!1,__name:"WorkspaceSwitcher",props:{items:{},value:{default:void 0},defaultValue:{default:""},placeholder:{default:"Select"},label:{default:void 0},searchLabel:{default:"Search"},searchPlaceholder:{default:void 0},emptyMessage:{default:"No results"},loadingMessage:{default:"Loading"},loading:{type:Boolean,default:!1},selectedLabel:{default:"Current"},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:!1}},emits:["update:value","value-change","update:open","open-change","open-change-complete","escape-key-down","pointer-down-outside","focus-outside","interact-outside","close-auto-focus"],setup(i,{emit:E}){const I=i,A=E,D=w(),F=m(""),R=m(I.defaultValue),T=m(I.defaultOpen),j=o(()=>I.value??R.value),z=o(()=>I.open??T.value),G=m(null);b(z,e=>{e&&G.value?.focus()},{flush:"post"});const H=o(()=>I.items.find(e=>e.id===j.value)),K=o(()=>function(e,a){const o=a.toLowerCase(),t=/* @__PURE__ */new Map([[void 0,[]]]);for(const a of e){const e=t.get(a.group);e?e.push(a):t.set(a.group,[a])}const s=e=>""===o||e.id.toLowerCase().includes(o)||e.label.toLowerCase().includes(o)||(e.description?.toLowerCase().includes(o)??!1),l=[];for(const[e,a]of t)a.some(s)&&l.push({heading:e,items:a});return l}(I.items,F.value)),W=o(()=>c({"aria-label":I.label},D,{...e("workspace-switcher","root")}));function q(e){e||(F.value=""),void 0===I.open&&(T.value=e),A("update:open",e),A("open-change",e)}function J(e){return e.description?[e.label,e.description]:[e.label]}function Q(e){return void 0===e.heading?{}:{heading:e.heading}}return(o,m)=>(f(),t(g(M),{open:z.value,modal:"none",onOpenChange:q,onOpenChangeComplete:m[6]||(m[6]=e=>A("open-change-complete",e))},{default:y(()=>[n(g(N),p(u(W.value)),{default:y(()=>[v(o.$slots,"trigger",{},()=>[o.$slots.leading&&H.value?(f(),l("span",c({key:0,"aria-hidden":"true"},g(e)("workspace-switcher","leading")),[v(o.$slots,"leading",{item:H.value})],16)):s("",!0),r("span",p(u(g(e)("workspace-switcher","current"))),k(H.value?.label??i.placeholder),17),H.value?.description?(f(),l("span",p(c({key:1},g(e)("workspace-switcher","description"))),k(H.value.description),17)):s("",!0)])]),_:3},16),n(g(B),null,{default:y(()=>[n(g($),c(g(e)("workspace-switcher","content"),{align:"start","aria-label":i.label??i.placeholder,onEscapeKeyDown:m[1]||(m[1]=e=>A("escape-key-down",e)),onPointerDownOutside:m[2]||(m[2]=e=>A("pointer-down-outside",e)),onFocusOutside:m[3]||(m[3]=e=>A("focus-outside",e)),onInteractOutside:m[4]||(m[4]=e=>A("interact-outside",e)),onCloseAutoFocus:m[5]||(m[5]=e=>A("close-auto-focus",e))}),{default:y(()=>[n(g(S),{loading:i.loading??!1,search:F.value,onSearchChange:m[0]||(m[0]=e=>F.value=e)},{default:y(()=>[n(g(L),c({ref_key:"searchInput",ref:G},g(e)("workspace-switcher","search"),{"aria-label":i.searchLabel,placeholder:i.searchPlaceholder}),null,16,["aria-label","placeholder"]),n(g(O),c(g(e)("workspace-switcher","list"),{"aria-label":i.label??i.placeholder}),{default:y(()=>[(f(!0),l(a,null,h(K.value,n=>(f(),t(g(_),c({key:n.heading??""},{ref_for:!0},{...g(e)("workspace-switcher","group"),...Q(n)}),{default:y(()=>[(f(!0),l(a,null,h(n.items,a=>(f(),t(g(P),c({key:a.id},{ref_for:!0},g(e)("workspace-switcher","item"),{value:a.id,keywords:J(a),disabled:a.disabled,"data-selected":a.id===j.value?"":void 0,onSelect:e=>function(e){void 0===I.value&&(R.value=e),A("update:value",e),A("value-change",e),q(!1)}(a.id)}),{default:y(()=>[o.$slots.leading?(f(),l("span",c({key:0,"aria-hidden":"true"},{ref_for:!0},g(e)("workspace-switcher","item-leading")),[v(o.$slots,"leading",{item:a})],16)):s("",!0),r("span",c({ref_for:!0},g(e)("workspace-switcher","item-label")),k(a.label),17),a.description?(f(),l("span",c({key:1,ref_for:!0},g(e)("workspace-switcher","item-description")),k(a.description),17)):s("",!0),a.id===j.value?(f(),t(g(C),{key:2},{default:y(()=>[d(k(i.selectedLabel),1)]),_:1})):s("",!0)]),_:2},1040,["value","keywords","disabled","data-selected","onSelect"]))),128))]),_:2},1040))),128))]),_:3},16,["aria-label"]),n(g(V),p(u(g(e)("workspace-switcher","loading"))),{default:y(()=>[d(k(i.loadingMessage),1)]),_:1},16),n(g(x),p(u(g(e)("workspace-switcher","empty"))),{default:y(()=>[d(k(i.emptyMessage),1)]),_:1},16)]),_:3},8,["loading","search"]),o.$slots.actions?(f(),l("div",p(c({key:0},g(e)("workspace-switcher","footer"))),[v(o.$slots,"actions")],16)):s("",!0)]),_:3},16,["aria-label"])]),_:3})]),_:3},8,["open"]))}});export{E as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skdx/vue-blocks",
3
- "version": "0.39.0",
3
+ "version": "0.41.0",
4
4
  "description": "Vue blocks for the SkandaDX design system — page-level compositions of @skdx/vue styled by @skdx/skins",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -254,7 +254,7 @@
254
254
  "sideEffects": false,
255
255
  "peerDependencies": {
256
256
  "vue": "^3.5.0",
257
- "@skdx/vue": "^0.39.0"
257
+ "@skdx/vue": "^0.41.0"
258
258
  },
259
259
  "devDependencies": {
260
260
  "@vitejs/plugin-vue": "^5.0.0",
@@ -266,7 +266,7 @@
266
266
  "vitest": "^4.1.10",
267
267
  "vue": "^3.5.39",
268
268
  "vue-tsc": "^2.0.0",
269
- "@skdx/vue": "0.39.0"
269
+ "@skdx/vue": "0.41.0"
270
270
  },
271
271
  "scripts": {
272
272
  "lint": "eslint . --cache --cache-location node_modules/.cache/eslint/",