Page MenuHomeWickedGov Phorge

CdxMenu.cjs
No OneTemporary

Size
12 KB
Referenced Files
None
Subscribers
None

CdxMenu.cjs

"use strict";var ye=Object.defineProperty,ke=Object.defineProperties;var _e=Object.getOwnPropertyDescriptors;var U=Object.getOwnPropertySymbols;var we=Object.prototype.hasOwnProperty,Me=Object.prototype.propertyIsEnumerable;var G=(e,o,u)=>o in e?ye(e,o,{enumerable:!0,configurable:!0,writable:!0,value:u}):e[o]=u,E=(e,o)=>{for(var u in o||(o={}))we.call(o,u)&&G(e,u,o[u]);if(U)for(var u of U(o))Me.call(o,u)&&G(e,u,o[u]);return e},A=(e,o)=>ke(e,_e(o));var H=(e,o,u)=>new Promise((N,B)=>{var x=h=>{try{m(u.next(h))}catch(i){B(i)}},f=h=>{try{m(u.throw(h))}catch(i){B(i)}},m=h=>h.done?N(h.value):Promise.resolve(h.value).then(x,f);m((u=u.apply(e,o)).next())});const t=require("vue"),Be=require("./CdxMenuItem.cjs"),xe=require("./Icon.js"),Ce=require("./CdxProgressBar.cjs"),Se=require("./useIntersectionObserver.cjs"),Te=require("./useSplitAttributes.cjs"),Ve=require("./_plugin-vue_export-helper.js");function P(e){return e!==null&&Array.isArray(e)}function V(e){return"items"in e}const Ne=t.defineComponent({name:"CdxMenu",components:{CdxMenuItem:Be,CdxIcon:xe.CdxIcon,CdxProgressBar:Ce},inheritAttrs:!1,props:{menuItems:{type:Array,required:!0},footer:{type:Object,default:null},selected:{type:[String,Number,Array,null],required:!0},expanded:{type:Boolean,required:!0},showPending:{type:Boolean,default:!1},visibleItemLimit:{type:Number,default:null},showThumbnail:{type:Boolean,default:!1},boldLabel:{type:Boolean,default:!1},hideDescriptionOverflow:{type:Boolean,default:!1},searchQuery:{type:String,default:""},showNoResultsSlot:{type:Boolean,default:null},renderInPlace:{type:Boolean,default:!1}},emits:["update:selected","update:expanded","menu-item-click","menu-item-keyboard-navigation","load-more"],setup(e,{emit:o,slots:u,attrs:N}){const B=t.useId();let x=0;const f=new Map;function m(){return x+=1,"".concat(B,"-").concat(x)}function h(l){l.forEach(n=>{if(V(n)){const a="group-".concat(n.label);f.has(a)||f.set(a,m()),n.items.forEach(r=>{f.has(r.value)||f.set(r.value,m())})}else f.has(n.value)||f.set(n.value,m())})}t.watch(t.toRef(e,"menuItems"),l=>{function n(r){const c=new Set;return r.forEach(d=>{V(d)?(c.add("group-".concat(d.label)),d.items.forEach(M=>c.add(M.value))):c.add(d.value)}),c}const a=n(l);f.forEach((r,c)=>{a.has(c)||f.delete(c)})},{deep:!0});const i=t.computed(()=>{h(e.menuItems),e.footer&&h([e.footer]);const l=e.footer&&e.menuItems?[...e.menuItems,e.footer]:e.menuItems;function n(a){const r=f.get(a.value);if(!r)throw new Error("No ID found for menu item with value ".concat(a.value));return A(E({},a),{id:r})}return l.map(a=>{if(V(a)){const r=f.get("group-".concat(a.label));if(!r)throw new Error("No ID found for menu item with value group-".concat(a.label));return A(E({},a),{id:r,items:a.items.map(c=>n(c))})}else return n(a)})}),v=t.computed(()=>{const l=[];return i.value.forEach(n=>{V(n)?l.push(...n.items):l.push(n)}),l}),b=t.computed(()=>u["no-results"]?e.showNoResultsSlot!==null?e.showNoResultsSlot:v.value.length===0:!1),s=t.ref(null),C=t.ref(!1),I=t.ref(null),J=t.inject("CdxTeleportMenus",!1),X=t.computed(()=>!t.unref(J)||e.renderInPlace),Y=t.inject("CdxTeleportTarget",void 0),Z=t.computed(()=>{var l;return(l=t.unref(Y))!=null?l:"body"}),ee="additions removals";let p="",_=null;function D(){p="",_!==null&&(clearTimeout(_),_=null)}function q(){_!==null&&clearTimeout(_),_=setTimeout(D,1500)}function S(){var l;return(l=v.value.find(n=>P(e.selected)?e.selected.includes(n.value):n.value===e.selected))!=null?l:null}const T=t.computed(()=>P(e.selected));function te(l){return P(e.selected)?e.selected.includes(l):l===e.selected}function R(l){if(P(e.selected)){const n=e.selected.includes(l)?e.selected.filter(a=>a!==l):e.selected.concat(l);o("update:selected",n)}else o("update:selected",l)}function g(l,n){if(!(n!=null&&n.disabled))switch(l){case"selected":n&&R(n.value),T.value||o("update:expanded",!1),I.value=null;break;case"highlighted":s.value=n!=null?n:null,C.value=!1;break;case"highlightedViaKeyboard":s.value=n!=null?n:null,C.value=!0;break;case"active":I.value=n!=null?n:null;break}}const k=t.computed(()=>{if(s.value!==null)return v.value.findIndex(l=>l.value===s.value.value)});function F(l){l&&(g("highlightedViaKeyboard",l),o("menu-item-keyboard-navigation",l))}function O(l){var r;const n=c=>{for(let d=c-1;d>=0;d--)if(!v.value[d].disabled)return v.value[d]};l=l!=null?l:v.value.length;const a=(r=n(l))!=null?r:n(v.value.length);F(a)}function W(l){var r;const n=c=>v.value.find((d,M)=>!d.disabled&&M>c);l=l!=null?l:-1;const a=(r=n(l))!=null?r:n(-1);F(a)}function le(l){if(l.key==="Clear")return D(),!0;if(l.key==="Backspace")return p=p.slice(0,-1),q(),!0;if(l.key.length===1&&!l.metaKey&&!l.ctrlKey&&!l.altKey){if(e.expanded||o("update:expanded",!0),l.key===" "&&p.length<1)return!1;p+=l.key.toLowerCase();const n=p.length>1&&p.split("").every(d=>d===p[0]);let a=v.value,r=p;n&&k.value!==void 0&&(a=a.slice(k.value+1).concat(a.slice(0,k.value)),r=p[0]);const c=a.find(d=>{var M;return!d.disabled&&String((M=d.label)!=null?M:d.value).toLowerCase().startsWith(r)});return c&&(g("highlightedViaKeyboard",c),w()),q(),!0}return!1}function ne(l,{prevent:n=!0,characterNavigation:a=!1}={}){if(a){if(le(l))return l.preventDefault(),!0;D()}function r(){n&&(l.preventDefault(),l.stopPropagation())}switch(l.key){case"Enter":case" ":return r(),e.expanded?(s.value&&C.value&&R(s.value.value),T.value||o("update:expanded",!1)):o("update:expanded",!0),!0;case"Tab":return e.expanded&&s.value&&C.value&&!T.value&&(R(s.value.value),o("update:expanded",!1)),!0;case"ArrowUp":return r(),e.expanded?(s.value===null&&g("highlightedViaKeyboard",S()),O(k.value)):o("update:expanded",!0),w(),!0;case"ArrowDown":return r(),e.expanded?(s.value===null&&g("highlightedViaKeyboard",S()),W(k.value)):o("update:expanded",!0),w(),!0;case"Home":return r(),e.expanded?(s.value===null&&g("highlightedViaKeyboard",S()),W()):o("update:expanded",!0),w(),!0;case"End":return r(),e.expanded?(s.value===null&&g("highlightedViaKeyboard",S()),O()):o("update:expanded",!0),w(),!0;case"Escape":return r(),o("update:expanded",!1),!0;default:return!1}}function z(){g("active",null)}const y=[],j=t.ref(void 0),ae=Se(j,{threshold:.8});t.watch(ae,l=>{l&&o("load-more")});function oe(l,n){if(l){y[n]=l.$el;const a=e.visibleItemLimit;if(!a||e.menuItems.length<a)return;const r=Math.min(a,Math.max(2,Math.floor(.2*e.menuItems.length)));n===e.menuItems.length-r&&(j.value=l.$el)}}const re=t.ref(),K=t.ref();function w(){const l=K.value&&K.value.scrollHeight>K.value.clientHeight;if(k.value===void 0||!l)return;const n=k.value>=0?k.value:0;requestAnimationFrame(()=>{y[n].scrollIntoView({behavior:"smooth",block:"nearest"})})}const $=t.ref(null),L=t.ref(null);function Q(){return H(this,null,function*(){yield t.nextTick(),ie(),ue(),yield t.nextTick(),w()})}function ie(){if(e.footer){const l=y[y.length-1];L.value=l.scrollHeight}else L.value=null}function ue(){if(!e.visibleItemLimit||y.length<=e.visibleItemLimit){$.value=null;return}const l=y[0].getBoundingClientRect().top,n=y[e.visibleItemLimit].getBoundingClientRect().top;$.value=n-l+2}function se(l){return{"cdx-menu__group-wrapper--hide-label":!!l.hideLabel}}function de(l){return v.value.indexOf(l)}function ce(l){var n,a;return E({selected:te(l.value),active:l.value===((n=I.value)==null?void 0:n.value),highlighted:l.value===((a=s.value)==null?void 0:a.value),showThumbnail:e.showThumbnail,boldLabel:e.boldLabel,hideDescriptionOverflow:e.hideDescriptionOverflow,searchQuery:e.searchQuery,multiselect:T.value},l)}function fe(l){return{change:(n,a)=>g(n,a?l:null),click:()=>o("menu-item-click",l)}}function ve(l){var n,a;return{menuItem:l,active:l.value===((n=I.value)==null?void 0:n.value)&&l.value===((a=s.value)==null?void 0:a.value)}}t.onMounted(()=>{document.addEventListener("mouseup",z)}),t.onUnmounted(()=>{document.removeEventListener("mouseup",z)}),t.watch(t.toRef(e,"expanded"),l=>H(null,null,function*(){if(l){const n=S();n&&!s.value&&g("highlighted",n),yield Q()}else g("highlighted",null)})),t.watch(t.toRef(e,"menuItems"),l=>H(null,null,function*(){l.length<y.length&&(y.length=l.length),e.expanded&&(yield Q())}),{deep:!0});const he=t.computed(()=>({"max-height":$.value?"".concat($.value,"px"):void 0,"margin-bottom":L.value?"".concat(L.value,"px"):void 0})),ge=t.computed(()=>({"cdx-menu--has-footer":!!e.footer})),{rootClasses:me,rootStyle:pe,otherAttrs:be}=Te(N,ge);return{listBoxStyle:he,rootClasses:me,rootStyle:pe,otherAttrs:be,assignTemplateRef:oe,computedMenuEntries:i,computedMenuItems:v,computedShowNoResultsSlot:b,highlightedMenuItem:s,highlightedViaKeyboard:C,teleportDisabled:X,computedTarget:Z,handleMenuItemChange:g,handleKeyNavigation:ne,ariaRelevant:ee,isMultiselect:T,rootElement:re,menuListbox:K,getGroupWrapperClasses:se,getMenuItemIndex:de,getMenuItemBindings:ce,getMenuItemHandlers:fe,getSlotBindings:ve,isMenuGroupData:V}},methods:{isExpanded(){return this.expanded},getRootElement(){return this.rootElement},getHighlightedMenuItem(){return this.expanded?this.highlightedMenuItem:null},getHighlightedViaKeyboard(){return this.highlightedViaKeyboard},getComputedMenuItems(){return this.computedMenuItems},clearActive(){this.handleMenuItemChange("active",null)},delegateKeyNavigation(e,{prevent:o=!0,characterNavigation:u=!1}={}){return this.handleKeyNavigation(e,{prevent:o,characterNavigation:u})}}}),Ie=["aria-live","aria-relevant","aria-multiselectable"],Ke={key:0,class:"cdx-menu__pending cdx-menu-item"},$e={key:1,class:"cdx-menu__no-results cdx-menu-item",role:"option"},Le=["aria-labelledby","aria-describedby"],Ee={class:"cdx-menu__group__meta"},He={class:"cdx-menu__group__meta__text"},Pe=["id"],De=["id"];function Re(e,o,u,N,B,x){const f=t.resolveComponent("cdx-icon"),m=t.resolveComponent("cdx-menu-item"),h=t.resolveComponent("cdx-progress-bar");return t.openBlock(),t.createBlock(t.Teleport,{to:e.computedTarget,disabled:e.teleportDisabled},[t.withDirectives(t.createElementVNode("div",{ref:"rootElement",class:t.normalizeClass(["cdx-menu",e.rootClasses]),style:t.normalizeStyle(e.rootStyle)},[t.createElementVNode("ul",t.mergeProps({ref:"menuListbox",class:"cdx-menu__listbox",role:"listbox",tabindex:"-1",style:e.listBoxStyle,"aria-live":e.showPending?"polite":void 0,"aria-relevant":e.showPending?e.ariaRelevant:void 0,"aria-multiselectable":e.isMultiselect?!0:void 0},e.otherAttrs,{onMousedown:o[0]||(o[0]=t.withModifiers(()=>{},["prevent"]))}),[e.showPending&&e.computedMenuItems.length===0&&e.$slots.pending?(t.openBlock(),t.createElementBlock("li",Ke,[t.renderSlot(e.$slots,"pending")])):t.createCommentVNode("v-if",!0),e.computedShowNoResultsSlot?(t.openBlock(),t.createElementBlock("li",$e,[t.renderSlot(e.$slots,"no-results")])):t.createCommentVNode("v-if",!0),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.computedMenuEntries,(i,v)=>(t.openBlock(),t.createElementBlock(t.Fragment,{key:v},[e.isMenuGroupData(i)?(t.openBlock(),t.createElementBlock("li",{key:0,class:t.normalizeClass(["cdx-menu__group-wrapper",e.getGroupWrapperClasses(i)])},[t.createElementVNode("ul",{class:"cdx-menu__group",role:"group","aria-labelledby":i.id+"-label","aria-describedby":i.id+"-description"},[t.createElementVNode("span",Ee,[i.icon?(t.openBlock(),t.createBlock(f,{key:0,class:"cdx-menu__group__icon",icon:i.icon},null,8,["icon"])):t.createCommentVNode("v-if",!0),t.createElementVNode("span",He,[t.createElementVNode("span",{id:i.id+"-label",class:"cdx-menu__group__label"},t.toDisplayString(i.label),9,Pe),i.description?(t.openBlock(),t.createElementBlock("span",{key:0,id:i.id+"-description",class:"cdx-menu__group__description"},t.toDisplayString(i.description),9,De)):t.createCommentVNode("v-if",!0)])]),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(i.items,b=>(t.openBlock(),t.createBlock(m,t.mergeProps({key:b.value,ref_for:!0,ref:s=>e.assignTemplateRef(s,e.getMenuItemIndex(b)),class:"cdx-menu__group__item"},{ref_for:!0},e.getMenuItemBindings(b),t.toHandlers(e.getMenuItemHandlers(b))),{default:t.withCtx(()=>[t.renderSlot(e.$slots,"default",t.mergeProps({ref_for:!0},e.getSlotBindings(b)))]),_:2},1040))),128))],8,Le)],2)):(t.openBlock(),t.createBlock(m,t.mergeProps({key:1,ref_for:!0,ref:b=>e.assignTemplateRef(b,e.getMenuItemIndex(i))},{ref_for:!0},e.getMenuItemBindings(i),t.toHandlers(e.getMenuItemHandlers(i))),{default:t.withCtx(()=>[t.renderSlot(e.$slots,"default",t.mergeProps({ref_for:!0},e.getSlotBindings(i)))]),_:2},1040))],64))),128)),e.showPending?(t.openBlock(),t.createBlock(h,{key:2,class:"cdx-menu__progress-bar",inline:!0})):t.createCommentVNode("v-if",!0)],16,Ie)],6),[[t.vShow,e.expanded]])],8,["to","disabled"])}const Ae=Ve._export_sfc(Ne,[["render",Re]]);module.exports=Ae;

File Metadata

Mime Type
text/plain
Expires
Aug 19 2026, 16:45 (4 w, 3 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
56/f6/626c2cb728d2e13699d9995a1b7b
Default Alt Text
CdxMenu.cjs (12 KB)

Event Timeline