@skdx/vue-blocks 0.39.0 → 0.40.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};
@@ -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.40.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.40.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.40.0"
270
270
  },
271
271
  "scripts": {
272
272
  "lint": "eslint . --cache --cache-location node_modules/.cache/eslint/",