@phila/phila-ui-core 3.0.0-beta.4 → 3.0.0-beta.6

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.
package/dist/index.d.ts CHANGED
@@ -253,6 +253,28 @@ declare type DecorativeIconProps = {
253
253
 
254
254
  export declare const ErrorList: DefineComponent<ExtractPropTypes<__VLS_TypePropsToRuntimeProps<ValidationProps>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_TypePropsToRuntimeProps<ValidationProps>>> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
255
255
 
256
+ /** value is string to satisfy RadioGroup (string-only) and CheckboxGroup. */
257
+ export declare interface FilterChoice {
258
+ text: string;
259
+ value: string;
260
+ }
261
+
262
+ export declare interface FilterDefinition {
263
+ key: string;
264
+ label: string;
265
+ /** Present → dropdown/section chip; absent → toggle-only chip. */
266
+ choices?: FilterChoice[];
267
+ /** Dropdown/section only: checkbox group (true) vs radio group (false). Default false. */
268
+ multiple?: boolean;
269
+ iconDefinition?: IconDefinition;
270
+ /** Optional CSS color for this chip's leading icon (independent of text color). */
271
+ iconColor?: string;
272
+ /** Leave this filter's selections out of the active-selection count (e.g. Sort). */
273
+ excludeFromCount?: boolean;
274
+ }
275
+
276
+ export declare type FilterValues = Record<string, string | string[] | boolean>;
277
+
256
278
  export declare const FocusTrap: __VLS_WithTemplateSlots_5<typeof __VLS_component_5, ReturnType<typeof __VLS_template_5>>;
257
279
 
258
280
  export declare interface FocusTrapEmits {
@@ -356,10 +378,10 @@ export declare function useVisibility(props: UseVisibilityProps): {
356
378
  setVisibility: (visible?: boolean, id?: string) => void;
357
379
  toggleProps: ComputedRef< {
358
380
  "data-toggle"?: undefined;
359
- onclick?: undefined;
381
+ onClick?: undefined;
360
382
  } | {
361
383
  "data-toggle": string;
362
- onclick: () => void;
384
+ onClick: () => void;
363
385
  }>;
364
386
  };
365
387
 
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const e=require("vue"),N=require("@fortawesome/vue-fontawesome");function S(...n){return n.filter(Boolean).join(" ")}function z(n,t){let i;return(...r)=>{i!==void 0&&clearTimeout(i),i=setTimeout(()=>{n(...r)},t)}}function P(n="phila-ui-"){const t=new Uint8Array(16);crypto.getRandomValues(t);const i=Array.from(t,r=>r.toString(36)).join("").substring(0,12);return`${n}-${i}`}const L=e.ref("");function I(){return{inputValue:L,setInputValue:t=>{L.value=t}}}const d=e.reactive({validateOnBlur:!1,validateOnInput:!1,validateOnChange:!1,validateOnMount:!1,required:!1,isValid:!0,errors:[]}),{inputValue:x}=I();function w(n,t){return{init:()=>{n&&(d.validateOnBlur=n.validateOnBlur??!1,d.validateOnInput=n.validateOnInput??!1,d.validateOnChange=n.validateOnChange??!1,d.validateOnMount=n.validateOnMount??!1,d.validate=n.validate,d.required=n.required??!1,d.errors=n.errors||[])},validation:()=>{const o=Object.assign([],n?.errors||[]);if(d.required&&!x.value&&(d.isValid=!1,o.push("This field is required")),d.validate){const s=d.validate(x.value);typeof s=="string"?(d.isValid=!1,o.push(s)):Array.isArray(s)?(d.isValid=!1,o.push(...s)):d.isValid=!0}d.errors=o,o.length>0?(d.isValid=!1,t?.("error",o)):d.isValid=!0},isValid:e.computed(()=>d.isValid),errors:e.computed(()=>d.errors)}}const F={key:0,class:"input-errors"},H=e.defineComponent({__name:"ErrorList",props:{errors:{},validateOnBlur:{type:Boolean},validateOnInput:{type:Boolean},validateOnChange:{type:Boolean},validateOnMount:{type:Boolean},validate:{type:Function},required:{type:Boolean}},setup(n){const{errors:t,isValid:i}=w(),r=n,o=e.computed(()=>Object.assign([],t.value,r.errors||[]));return(s,y)=>!e.unref(i)&&o.value?.length?(e.openBlock(),e.createElementBlock("div",F,[e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(p,m)=>(e.openBlock(),e.createElementBlock("li",{key:m},e.toDisplayString(p),1))),128))])])):e.createCommentVNode("",!0)}}),_=(n,t)=>{const i=n.__vccOpts||n;for(const[r,o]of t)i[r]=o;return i},$=_(H,[["__scopeId","data-v-caba8dd2"]]),j=["for"],K={key:0,class:"required"},U=e.defineComponent({__name:"InputLabel",props:{id:{},required:{type:Boolean}},setup(n){return(t,i)=>(e.openBlock(),e.createElementBlock("label",{class:"input-label",for:n.id},[e.renderSlot(t.$slots,"default",{},void 0,!0),n.required?(e.openBlock(),e.createElementBlock("span",K,"*")):e.createCommentVNode("",!0)],8,j))}}),q=_(U,[["__scopeId","data-v-00c91174"]]),W=e.defineComponent({inheritAttrs:!1,__name:"InputWrap",props:{id:{},name:{},placeholder:{},label:{},icon:{},required:{type:Boolean},errors:{},validateOnBlur:{type:Boolean},validateOnInput:{type:Boolean},validateOnChange:{type:Boolean},validateOnMount:{type:Boolean},validate:{type:Function},className:{}},emits:["update:modelValue","input","change","focus","blur","keydown","keyup","keypress","error"],setup(n,{emit:t}){const{setInputValue:i}=I(),r=e.ref(""),o=n,s=t,{init:y,isValid:p,validation:m}=w({validateOnMount:o.validateOnMount??!0,validateOnInput:o.validateOnInput??!0,validateOnBlur:o.validateOnBlur??!0,validateOnChange:o.validateOnChange??!0,required:o.required??!1,errors:o.errors||[],validate:o.validate},s),l=e.computed(()=>({invalid:!p.value})),c=k=>(r.value=k.target.value,s("update:modelValue",r.value),s("input",r.value),i(r.value),o.validateOnInput&&m(),r.value),v=()=>{o.validateOnBlur&&m(),s("blur")},g=()=>{s("focus")};return e.onBeforeMount(()=>{y()}),e.onMounted(()=>{o.validateOnMount&&m()}),(k,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["input-wrap",{hasError:!e.unref(p)}])},[o.label?(e.openBlock(),e.createBlock(q,{key:0,id:o.id,required:o.required},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.label),1)]),_:1},8,["id","required"])):e.createCommentVNode("",!0),e.renderSlot(k.$slots,"default",e.normalizeProps(e.guardReactiveProps({inputValue:r.value,onBlur:v,onFocus:g,onInput:c,isValid:e.unref(p),inputClasses:l.value})),void 0,!0),e.createVNode($)],2))}}),G=_(W,[["__scopeId","data-v-751bf20e"]]),J=["innerHTML"],Q=["src","alt"],X=e.defineComponent({__name:"Icon",props:{className:{},iconDefinition:{},iconClass:{},src:{},svgRaw:{},variant:{default:"default"},size:{default:"small"},inline:{type:Boolean},shadow:{type:Boolean},decorative:{type:Boolean},ariaLabel:{default:void 0}},setup(n){const t=n,i=e.computed(()=>S("phila-icon",t.size&&`phila-icon--${t.size}`,t.inline&&"phila-icon--inline",t.variant&&t.variant!=="default"&&`phila-icon--${t.variant}`,t.shadow&&"phila-icon--shadow",t.className)),r=e.computed(()=>t.decorative?{"aria-hidden":!0}:{"aria-label":t.ariaLabel,role:"img"});return(o,s)=>(e.openBlock(),e.createElementBlock("span",e.mergeProps({class:i.value},r.value),[t.iconDefinition?(e.openBlock(),e.createBlock(e.unref(N.FontAwesomeIcon),{key:0,icon:t.iconDefinition},null,8,["icon"])):t.iconClass?(e.openBlock(),e.createElementBlock("i",{key:1,class:e.normalizeClass(`fa fa-${t.iconClass}`)},null,2)):t.svgRaw?(e.openBlock(),e.createElementBlock("span",{key:2,class:"phila-icon__svg",innerHTML:t.svgRaw},null,8,J)):t.src?(e.openBlock(),e.createElementBlock("img",{key:3,src:t.src,alt:t.decorative?"":t.ariaLabel||"Icon"},null,8,Q)):e.createCommentVNode("",!0)],16))}}),O=_(X,[["__scopeId","data-v-1fe4be50"]]),Y={key:1},Z=e.defineComponent({__name:"ActionContent",props:{iconRight:{type:Boolean,default:!1},iconOnly:{type:Boolean,default:!1},inline:{type:Boolean},text:{default:void 0},size:{default:void 0},shadow:{type:Boolean},iconSize:{default:void 0},iconDefinition:{},iconClass:{},src:{},svgRaw:{},variant:{}},setup(n){const t=n,i=e.computed(()=>t.iconDefinition||t.iconClass||t.src||t.svgRaw),r=s=>{if(s.iconOnly)switch(s.size){case"small":return"extra-small";case"extra-small":return"xxsmall";default:return s.size||"medium"}else switch(s.size){case"small":case"extra-small":return"xxsmall";default:return"extra-small"}},o=e.computed(()=>({iconDefinition:t.iconDefinition,iconClass:t.iconClass,src:t.src,svgRaw:t.svgRaw,size:t.iconSize??r(t),decorative:!0,class:"icon",inline:t.inline??!t.iconOnly,shadow:t.shadow}));return(s,y)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[i.value&&!t.iconRight?(e.openBlock(),e.createBlock(O,e.normalizeProps(e.mergeProps({key:0},o.value)),null,16)):e.createCommentVNode("",!0),t.iconOnly?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",Y,[e.renderSlot(s.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(t.text),1)])])),i.value&&t.iconRight?(e.openBlock(),e.createBlock(O,e.normalizeProps(e.mergeProps({key:2},o.value)),null,16)):e.createCommentVNode("",!0)],64))}}),C=n=>"to"in n&&n.to!==void 0;function D(){const n=e.inject("router",null),t=e.computed(()=>n!==null);return{router:n,hasRouter:t}}const ee=e.defineComponent({__name:"BaseLink",props:{to:{},href:{},target:{},rel:{},disabled:{type:Boolean},ariaLabel:{},className:{}},setup(n){const t=n,{hasRouter:i}=D(),r=e.computed(()=>C(t)&&i.value?e.resolveComponent("RouterLink"):"a"),o=e.computed(()=>C(t)?{to:t.disabled?void 0:t.to,...t.disabled&&{"aria-disabled":"true"},...t.ariaLabel&&{"aria-label":t.ariaLabel}}:{href:t.disabled?void 0:t.href,...t.target&&{target:t.target},...t.rel&&{rel:t.rel},...t.disabled&&{"aria-disabled":"true"},...t.ariaLabel&&{"aria-label":t.ariaLabel}});return(s,y)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value),e.mergeProps({class:n.className},o.value),{default:e.withCtx(()=>[e.renderSlot(s.$slots,"default")]),_:3},16,["class"]))}}),te='a,area,button,iframe,input,object,textarea,select,details,[tabindex]:not([tabindex="-1"])',ne=e.defineComponent({__name:"FocusTrap",props:{initialFocusElement:{},arrowNavigation:{type:Boolean},allowEscape:{type:Boolean},as:{}},emits:["escape"],setup(n,{emit:t}){const i=e.useTemplateRef("focusTrap"),r=e.ref([]),o=n,s=t,y=e.useAttrs(),p=l=>{const c=r.value;if(c.length===0)return;const v=c[0],g=c[c.length-1];if(l.key==="Tab"&&(l.shiftKey?document.activeElement===v&&(o.allowEscape?s("escape"):(l.preventDefault(),g.focus())):document.activeElement===g&&(o.allowEscape?s("escape"):(l.preventDefault(),v.focus()))),l.key==="PageUp"&&(l.preventDefault(),v.focus()),l.key==="PageDown"&&(l.preventDefault(),g.focus()),o.arrowNavigation){const k=c.indexOf(document.activeElement);if(l.key==="ArrowDown"||l.key==="ArrowRight"){l.preventDefault();const a=(k+1)%c.length;c[a].focus()}if(l.key==="ArrowUp"||l.key==="ArrowLeft"){l.preventDefault();const a=(k-1+c.length)%c.length;c[a].focus()}}},m=l=>{l.target.removeAttribute("tabindex")};return e.onMounted(()=>{const l=i.value?.querySelectorAll(te);if(l){l.forEach(v=>{v.addEventListener("keydown",p)}),r.value=Array.from(l);let c=r.value[0];if(o.initialFocusElement){const v=i.value?.querySelector(`${o.initialFocusElement}`);v&&(v.tabIndex===-1&&(v.tabIndex=0,v.addEventListener("blur",m,{once:!0})),c=v)}else c||(c=i.value,c.tabIndex=0,c.addEventListener("blur",m,{once:!0}));c.focus()}}),e.onBeforeUnmount(()=>{r.value.forEach(l=>{l.removeEventListener("keydown",p),l.removeEventListener("blur",m)})}),(l,c)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.as||"span"),e.mergeProps({ref_key:"focusTrap",ref:i},e.unref(y)),{default:e.withCtx(()=>[e.renderSlot(l.$slots,"default")]),_:3},16))}}),u=e.reactive({}),B=e.ref(),T=400,E=e.ref(null),R={id:"default-item",group:"global"};function oe(n){const t=n.group||R.group,i=n.id||R.id,r=(a,f)=>{const b=u[t]?.[a];b&&(b.showSingle?Object.keys(u[t]).forEach(h=>{u[t][h].visible=h===a?f:!1}):u[t][a].visible=f)},o=(a=!0,f)=>{clearTimeout(B.value),r(f??i,a),a&&v(f??i)},s=a=>u[t]?.[a??i]?.visible??!1,y=a=>{u[t]||(u[t]={}),u[t][a]||(u[t][a]={group:t,visible:!1}),n.blurHide!==void 0&&(u[t][a].blurHide=n.blurHide),n.showSingle!==void 0&&(u[t][a].showSingle=n.showSingle),n.mouseOverToggle!==void 0&&(u[t][a].mouseOverToggle=n.mouseOverToggle),n.outsideClickHide!==void 0&&(u[t][a].outsideClickHide=n.outsideClickHide),n.escapeKeyHide!==void 0&&(u[t][a].escapeKeyHide=n.escapeKeyHide)},p=a=>f=>{f.key==="Escape"&&(r(a,!1),g())},m=a=>f=>{if(!u[t])return;const b=f.target,[h]=Object.keys(u[t]).filter(M=>u[t][M].visible===!0),V=document.getElementById(h),A=document.querySelector(`[data-toggle="visibility-${h}"]`)?.contains(f.target);V&&!V.contains(b)&&!A&&(r(a??i,!1),g())},l=a=>{(u[t]?.[a??i]).mouseOverToggle===!0&&(E.value=a??i,B.value=setTimeout(()=>{o(!0,a)},T))},c=a=>{(u[t]?.[a??i]).mouseOverToggle===!0&&(E.value=null,clearTimeout(B.value),B.value=setTimeout(()=>{E.value!==(a??i)&&(r(a??i,!1),g())},T))},v=a=>{const f=u[t]?.[a];f?.outsideClickHide&&(document.addEventListener("click",m(a)),document.addEventListener("touchend",m(a))),f?.escapeKeyHide&&document.addEventListener("keydown",p(a))},g=()=>{u[t]&&Object.keys(u[t]).forEach(a=>{document.removeEventListener("click",m(a)),document.removeEventListener("touchend",m(a)),document.removeEventListener("keydown",p(a))})};e.onBeforeMount(()=>{n.id!==void 0&&(y(n.id),e.nextTick(()=>{n.visibleOnMount&&o(!0)}))}),e.onUnmounted(()=>{g()});const k=e.computed(()=>n.id?{"data-toggle":`visibility-${i}`,onclick:()=>o(!s(i))}:{});return{visibilityState:u,create:y,setState:r,isVisible:s,onMouseEnter:l,onMouseLeave:c,setVisibility:o,toggleProps:k}}exports.ActionContent=Z;exports.BaseLink=ee;exports.ErrorList=$;exports.FocusTrap=ne;exports.Icon=O;exports.InputLabel=q;exports.InputWrap=G;exports.cn=S;exports.debounce=z;exports.generateRandomId=P;exports.isRouterLink=C;exports.useInput=I;exports.useRouter=D;exports.useValidation=w;exports.useVisibility=oe;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const e=require("vue"),N=require("@fortawesome/vue-fontawesome");function S(...n){return n.filter(Boolean).join(" ")}function z(n,t){let i;return(...r)=>{i!==void 0&&clearTimeout(i),i=setTimeout(()=>{n(...r)},t)}}function P(n="phila-ui-"){const t=new Uint8Array(16);crypto.getRandomValues(t);const i=Array.from(t,r=>r.toString(36)).join("").substring(0,12);return`${n}-${i}`}const L=e.ref("");function I(){return{inputValue:L,setInputValue:t=>{L.value=t}}}const d=e.reactive({validateOnBlur:!1,validateOnInput:!1,validateOnChange:!1,validateOnMount:!1,required:!1,isValid:!0,errors:[]}),{inputValue:x}=I();function w(n,t){return{init:()=>{n&&(d.validateOnBlur=n.validateOnBlur??!1,d.validateOnInput=n.validateOnInput??!1,d.validateOnChange=n.validateOnChange??!1,d.validateOnMount=n.validateOnMount??!1,d.validate=n.validate,d.required=n.required??!1,d.errors=n.errors||[])},validation:()=>{const o=Object.assign([],n?.errors||[]);if(d.required&&!x.value&&(d.isValid=!1,o.push("This field is required")),d.validate){const s=d.validate(x.value);typeof s=="string"?(d.isValid=!1,o.push(s)):Array.isArray(s)?(d.isValid=!1,o.push(...s)):d.isValid=!0}d.errors=o,o.length>0?(d.isValid=!1,t?.("error",o)):d.isValid=!0},isValid:e.computed(()=>d.isValid),errors:e.computed(()=>d.errors)}}const F={key:0,class:"input-errors"},H=e.defineComponent({__name:"ErrorList",props:{errors:{},validateOnBlur:{type:Boolean},validateOnInput:{type:Boolean},validateOnChange:{type:Boolean},validateOnMount:{type:Boolean},validate:{type:Function},required:{type:Boolean}},setup(n){const{errors:t,isValid:i}=w(),r=n,o=e.computed(()=>Object.assign([],t.value,r.errors||[]));return(s,y)=>!e.unref(i)&&o.value?.length?(e.openBlock(),e.createElementBlock("div",F,[e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(p,m)=>(e.openBlock(),e.createElementBlock("li",{key:m},e.toDisplayString(p),1))),128))])])):e.createCommentVNode("",!0)}}),_=(n,t)=>{const i=n.__vccOpts||n;for(const[r,o]of t)i[r]=o;return i},$=_(H,[["__scopeId","data-v-caba8dd2"]]),j=["for"],K={key:0,class:"required"},U=e.defineComponent({__name:"InputLabel",props:{id:{},required:{type:Boolean}},setup(n){return(t,i)=>(e.openBlock(),e.createElementBlock("label",{class:"input-label",for:n.id},[e.renderSlot(t.$slots,"default",{},void 0,!0),n.required?(e.openBlock(),e.createElementBlock("span",K,"*")):e.createCommentVNode("",!0)],8,j))}}),q=_(U,[["__scopeId","data-v-00c91174"]]),W=e.defineComponent({inheritAttrs:!1,__name:"InputWrap",props:{id:{},name:{},placeholder:{},label:{},icon:{},required:{type:Boolean},errors:{},validateOnBlur:{type:Boolean},validateOnInput:{type:Boolean},validateOnChange:{type:Boolean},validateOnMount:{type:Boolean},validate:{type:Function},className:{}},emits:["update:modelValue","input","change","focus","blur","keydown","keyup","keypress","error"],setup(n,{emit:t}){const{setInputValue:i}=I(),r=e.ref(""),o=n,s=t,{init:y,isValid:p,validation:m}=w({validateOnMount:o.validateOnMount??!0,validateOnInput:o.validateOnInput??!0,validateOnBlur:o.validateOnBlur??!0,validateOnChange:o.validateOnChange??!0,required:o.required??!1,errors:o.errors||[],validate:o.validate},s),l=e.computed(()=>({invalid:!p.value})),c=k=>(r.value=k.target.value,s("update:modelValue",r.value),s("input",r.value),i(r.value),o.validateOnInput&&m(),r.value),v=()=>{o.validateOnBlur&&m(),s("blur")},g=()=>{s("focus")};return e.onBeforeMount(()=>{y()}),e.onMounted(()=>{o.validateOnMount&&m()}),(k,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["input-wrap",{hasError:!e.unref(p)}])},[o.label?(e.openBlock(),e.createBlock(q,{key:0,id:o.id,required:o.required},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.label),1)]),_:1},8,["id","required"])):e.createCommentVNode("",!0),e.renderSlot(k.$slots,"default",e.normalizeProps(e.guardReactiveProps({inputValue:r.value,onBlur:v,onFocus:g,onInput:c,isValid:e.unref(p),inputClasses:l.value})),void 0,!0),e.createVNode($)],2))}}),G=_(W,[["__scopeId","data-v-751bf20e"]]),J=["innerHTML"],Q=["src","alt"],X=e.defineComponent({__name:"Icon",props:{className:{},iconDefinition:{},iconClass:{},src:{},svgRaw:{},variant:{default:"default"},size:{default:"small"},inline:{type:Boolean},shadow:{type:Boolean},decorative:{type:Boolean},ariaLabel:{default:void 0}},setup(n){const t=n,i=e.computed(()=>S("phila-icon",t.size&&`phila-icon--${t.size}`,t.inline&&"phila-icon--inline",t.variant&&t.variant!=="default"&&`phila-icon--${t.variant}`,t.shadow&&"phila-icon--shadow",t.className)),r=e.computed(()=>t.decorative?{"aria-hidden":!0}:{"aria-label":t.ariaLabel,role:"img"});return(o,s)=>(e.openBlock(),e.createElementBlock("span",e.mergeProps({class:i.value},r.value),[t.iconDefinition?(e.openBlock(),e.createBlock(e.unref(N.FontAwesomeIcon),{key:0,icon:t.iconDefinition},null,8,["icon"])):t.iconClass?(e.openBlock(),e.createElementBlock("i",{key:1,class:e.normalizeClass(`fa fa-${t.iconClass}`)},null,2)):t.svgRaw?(e.openBlock(),e.createElementBlock("span",{key:2,class:"phila-icon__svg",innerHTML:t.svgRaw},null,8,J)):t.src?(e.openBlock(),e.createElementBlock("img",{key:3,src:t.src,alt:t.decorative?"":t.ariaLabel||"Icon"},null,8,Q)):e.createCommentVNode("",!0)],16))}}),O=_(X,[["__scopeId","data-v-1fe4be50"]]),Y={key:1},Z=e.defineComponent({__name:"ActionContent",props:{iconRight:{type:Boolean,default:!1},iconOnly:{type:Boolean,default:!1},inline:{type:Boolean},text:{default:void 0},size:{default:void 0},shadow:{type:Boolean},iconSize:{default:void 0},iconDefinition:{},iconClass:{},src:{},svgRaw:{},variant:{}},setup(n){const t=n,i=e.computed(()=>t.iconDefinition||t.iconClass||t.src||t.svgRaw),r=s=>{if(s.iconOnly)switch(s.size){case"small":return"extra-small";case"extra-small":return"xxsmall";default:return s.size||"medium"}else switch(s.size){case"small":case"extra-small":return"xxsmall";default:return"extra-small"}},o=e.computed(()=>({iconDefinition:t.iconDefinition,iconClass:t.iconClass,src:t.src,svgRaw:t.svgRaw,size:t.iconSize??r(t),decorative:!0,class:"icon",inline:t.inline??!t.iconOnly,shadow:t.shadow}));return(s,y)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[i.value&&!t.iconRight?(e.openBlock(),e.createBlock(O,e.normalizeProps(e.mergeProps({key:0},o.value)),null,16)):e.createCommentVNode("",!0),t.iconOnly?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",Y,[e.renderSlot(s.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(t.text),1)])])),i.value&&t.iconRight?(e.openBlock(),e.createBlock(O,e.normalizeProps(e.mergeProps({key:2},o.value)),null,16)):e.createCommentVNode("",!0)],64))}}),C=n=>"to"in n&&n.to!==void 0;function D(){const n=e.inject("router",null),t=e.computed(()=>n!==null);return{router:n,hasRouter:t}}const ee=e.defineComponent({__name:"BaseLink",props:{to:{},href:{},target:{},rel:{},disabled:{type:Boolean},ariaLabel:{},className:{}},setup(n){const t=n,{hasRouter:i}=D(),r=e.computed(()=>C(t)&&i.value?e.resolveComponent("RouterLink"):"a"),o=e.computed(()=>C(t)?{to:t.disabled?void 0:t.to,...t.disabled&&{"aria-disabled":"true"},...t.ariaLabel&&{"aria-label":t.ariaLabel}}:{href:t.disabled?void 0:t.href,...t.target&&{target:t.target},...t.rel&&{rel:t.rel},...t.disabled&&{"aria-disabled":"true"},...t.ariaLabel&&{"aria-label":t.ariaLabel}});return(s,y)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value),e.mergeProps({class:n.className},o.value),{default:e.withCtx(()=>[e.renderSlot(s.$slots,"default")]),_:3},16,["class"]))}}),te='a,area,button,iframe,input,object,textarea,select,details,[tabindex]:not([tabindex="-1"])',ne=e.defineComponent({__name:"FocusTrap",props:{initialFocusElement:{},arrowNavigation:{type:Boolean},allowEscape:{type:Boolean},as:{}},emits:["escape"],setup(n,{emit:t}){const i=e.useTemplateRef("focusTrap"),r=e.ref([]),o=n,s=t,y=e.useAttrs(),p=l=>{const c=r.value;if(c.length===0)return;const v=c[0],g=c[c.length-1];if(l.key==="Tab"&&(l.shiftKey?document.activeElement===v&&(o.allowEscape?s("escape"):(l.preventDefault(),g.focus())):document.activeElement===g&&(o.allowEscape?s("escape"):(l.preventDefault(),v.focus()))),l.key==="PageUp"&&(l.preventDefault(),v.focus()),l.key==="PageDown"&&(l.preventDefault(),g.focus()),o.arrowNavigation){const k=c.indexOf(document.activeElement);if(l.key==="ArrowDown"||l.key==="ArrowRight"){l.preventDefault();const a=(k+1)%c.length;c[a].focus()}if(l.key==="ArrowUp"||l.key==="ArrowLeft"){l.preventDefault();const a=(k-1+c.length)%c.length;c[a].focus()}}},m=l=>{l.target.removeAttribute("tabindex")};return e.onMounted(()=>{const l=i.value?.querySelectorAll(te);if(l){l.forEach(v=>{v.addEventListener("keydown",p)}),r.value=Array.from(l);let c=r.value[0];if(o.initialFocusElement){const v=i.value?.querySelector(`${o.initialFocusElement}`);v&&(v.tabIndex===-1&&(v.tabIndex=0,v.addEventListener("blur",m,{once:!0})),c=v)}else c||(c=i.value,c.tabIndex=0,c.addEventListener("blur",m,{once:!0}));c.focus()}}),e.onBeforeUnmount(()=>{r.value.forEach(l=>{l.removeEventListener("keydown",p),l.removeEventListener("blur",m)})}),(l,c)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.as||"span"),e.mergeProps({ref_key:"focusTrap",ref:i},e.unref(y)),{default:e.withCtx(()=>[e.renderSlot(l.$slots,"default")]),_:3},16))}}),u=e.reactive({}),B=e.ref(),T=400,E=e.ref(null),R={id:"default-item",group:"global"};function oe(n){const t=n.group||R.group,i=n.id||R.id,r=(a,f)=>{const b=u[t]?.[a];b&&(b.showSingle?Object.keys(u[t]).forEach(h=>{u[t][h].visible=h===a?f:!1}):u[t][a].visible=f)},o=(a=!0,f)=>{clearTimeout(B.value),r(f??i,a),a&&v(f??i)},s=a=>u[t]?.[a??i]?.visible??!1,y=a=>{u[t]||(u[t]={}),u[t][a]||(u[t][a]={group:t,visible:!1}),n.blurHide!==void 0&&(u[t][a].blurHide=n.blurHide),n.showSingle!==void 0&&(u[t][a].showSingle=n.showSingle),n.mouseOverToggle!==void 0&&(u[t][a].mouseOverToggle=n.mouseOverToggle),n.outsideClickHide!==void 0&&(u[t][a].outsideClickHide=n.outsideClickHide),n.escapeKeyHide!==void 0&&(u[t][a].escapeKeyHide=n.escapeKeyHide)},p=a=>f=>{f.key==="Escape"&&(r(a,!1),g())},m=a=>f=>{if(!u[t])return;const b=f.target,[h]=Object.keys(u[t]).filter(M=>u[t][M].visible===!0),V=document.getElementById(h),A=document.querySelector(`[data-toggle="visibility-${h}"]`)?.contains(f.target);V&&!V.contains(b)&&!A&&(r(a??i,!1),g())},l=a=>{(u[t]?.[a??i]).mouseOverToggle===!0&&(E.value=a??i,B.value=setTimeout(()=>{o(!0,a)},T))},c=a=>{(u[t]?.[a??i]).mouseOverToggle===!0&&(E.value=null,clearTimeout(B.value),B.value=setTimeout(()=>{E.value!==(a??i)&&(r(a??i,!1),g())},T))},v=a=>{const f=u[t]?.[a];f?.outsideClickHide&&(document.addEventListener("click",m(a)),document.addEventListener("touchend",m(a))),f?.escapeKeyHide&&document.addEventListener("keydown",p(a))},g=()=>{u[t]&&Object.keys(u[t]).forEach(a=>{document.removeEventListener("click",m(a)),document.removeEventListener("touchend",m(a)),document.removeEventListener("keydown",p(a))})};e.onBeforeMount(()=>{n.id!==void 0&&(y(n.id),e.nextTick(()=>{n.visibleOnMount&&o(!0)}))}),e.onUnmounted(()=>{g()});const k=e.computed(()=>n.id?{"data-toggle":`visibility-${i}`,onClick:()=>o(!s(i))}:{});return{visibilityState:u,create:y,setState:r,isVisible:s,onMouseEnter:l,onMouseLeave:c,setVisibility:o,toggleProps:k}}exports.ActionContent=Z;exports.BaseLink=ee;exports.ErrorList=$;exports.FocusTrap=ne;exports.Icon=O;exports.InputLabel=q;exports.InputWrap=G;exports.cn=S;exports.debounce=z;exports.generateRandomId=P;exports.isRouterLink=C;exports.useInput=I;exports.useRouter=D;exports.useValidation=w;exports.useVisibility=oe;
package/dist/index.mjs CHANGED
@@ -404,7 +404,7 @@ function De(t) {
404
404
  });
405
405
  const _ = g(() => t.id ? {
406
406
  "data-toggle": `visibility-${i}`,
407
- onclick: () => n(!r(i))
407
+ onClick: () => n(!r(i))
408
408
  } : {});
409
409
  return {
410
410
  visibilityState: u,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phila/phila-ui-core",
3
- "version": "3.0.0-beta.4",
3
+ "version": "3.0.0-beta.6",
4
4
  "type": "module",
5
5
  "description": "Core utilities and styles for Phila UI library",
6
6
  "main": "./dist/index.js",