UNPKG

primevue

Version:

PrimeVue is an open source UI library for Vue featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBloc

2 lines (1 loc) 8.8 kB
import t from"primevue/basecomponent";import e from"primevue/dock/style";import n from"primevue/ripple";import i from"primevue/tooltip";import{UniqueComponentId as o,ObjectUtils as a,DomHandler as r}from"primevue/utils";import{mergeProps as s,resolveDirective as l,openBlock as d,createElementBlock as u,createElementVNode as c,Fragment as p,renderList as m,withDirectives as f,createBlock as h,resolveDynamicComponent as b,normalizeClass as y,resolveComponent as I,createVNode as v}from"vue";var g={name:"BaseDock",extends:t,props:{position:{type:String,default:"bottom"},model:null,class:null,style:null,tooltipOptions:null,menuId:{type:String,default:null},tabindex:{type:Number,default:0},breakpoint:{type:String,default:"960px"},ariaLabel:{type:String,default:null},ariaLabelledby:{type:String,default:null}},style:e,provide:function(){return{$parentInstance:this}}};function x(t){return k(t)||M(t)||O(t)||L()}function L(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function O(t,e){if(t){if("string"==typeof t)return S(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?S(t,e):void 0}}function M(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function k(t){if(Array.isArray(t))return S(t)}function S(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}var w={name:"DockSub",hostName:"Dock",extends:t,emits:["focus","blur"],props:{position:{type:String,default:"bottom"},model:{type:Array,default:null},templates:{type:null,default:null},tooltipOptions:null,menuId:{type:String,default:null},tabindex:{type:Number,default:0},ariaLabel:{type:String,default:null},ariaLabelledby:{type:String,default:null}},data:function(){return{id:this.menuId,currentIndex:-3,focused:!1,focusedOptionIndex:-1}},watch:{menuId:function(t){this.id=t||o()}},mounted:function(){this.id=this.id||o()},methods:{getItemId:function(t){return"".concat(this.id,"_").concat(t)},getItemProp:function(t,e){return t&&t.item?a.getItemValue(t.item[e]):void 0},getPTOptions:function(t,e,n){return this.ptm(t,{context:{index:n,item:e,active:this.isItemActive(this.getItemId(n))}})},isSameMenuItem:function(t){return t.currentTarget&&(t.currentTarget.isSameNode(t.target)||t.currentTarget.isSameNode(t.target.closest('[data-pc-section="menuitem"]')))},isItemActive:function(t){return t===this.focusedOptionIndex},onListMouseLeave:function(){this.currentIndex=-3},onItemMouseEnter:function(t){this.currentIndex=t},onItemClick:function(t,e){if(this.isSameMenuItem(t)){var n=this.getItemProp(e,"command");n&&n({originalEvent:t,item:e.item})}},onListFocus:function(t){this.focused=!0,this.changeFocusedOptionIndex(0),this.$emit("focus",t)},onListBlur:function(t){this.focused=!1,this.focusedOptionIndex=-1,this.$emit("blur",t)},onListKeyDown:function(t){switch(t.code){case"ArrowDown":"left"!==this.position&&"right"!==this.position||this.onArrowDownKey(),t.preventDefault();break;case"ArrowUp":"left"!==this.position&&"right"!==this.position||this.onArrowUpKey(),t.preventDefault();break;case"ArrowRight":"top"!==this.position&&"bottom"!==this.position||this.onArrowDownKey(),t.preventDefault();break;case"ArrowLeft":"top"!==this.position&&"bottom"!==this.position||this.onArrowUpKey(),t.preventDefault();break;case"Home":this.onHomeKey(),t.preventDefault();break;case"End":this.onEndKey(),t.preventDefault();break;case"Enter":case"NumpadEnter":case"Space":this.onSpaceKey(t),t.preventDefault()}},onArrowDownKey:function(){var t=this.findNextOptionIndex(this.focusedOptionIndex);this.changeFocusedOptionIndex(t)},onArrowUpKey:function(){var t=this.findPrevOptionIndex(this.focusedOptionIndex);this.changeFocusedOptionIndex(t)},onHomeKey:function(){this.changeFocusedOptionIndex(0)},onEndKey:function(){this.changeFocusedOptionIndex(r.find(this.$refs.list,'li[data-pc-section="menuitem"][data-p-disabled="false"]').length-1)},onSpaceKey:function(){var t=r.findSingle(this.$refs.list,'li[id="'.concat("".concat(this.focusedOptionIndex),'"]')),e=t&&r.findSingle(t,'[data-pc-section="action"]');e?e.click():t&&t.click()},findNextOptionIndex:function(t){var e=x(r.find(this.$refs.list,'li[data-pc-section="menuitem"][data-p-disabled="false"]')).findIndex((function(e){return e.id===t}));return e>-1?e+1:0},findPrevOptionIndex:function(t){var e=x(r.find(this.$refs.list,'li[data-pc-section="menuitem"][data-p-disabled="false"]')).findIndex((function(e){return e.id===t}));return e>-1?e-1:0},changeFocusedOptionIndex:function(t){var e=r.find(this.$refs.list,'li[data-pc-section="menuitem"][data-p-disabled="false"]');this.focusedOptionIndex=e[t>=e.length?e.length-1:t<0?0:t].getAttribute("id")},disabled:function(t){return"function"==typeof t.disabled?t.disabled():t.disabled},getMenuItemProps:function(t,e){return{action:s({tabindex:-1,"aria-hidden":!0,class:this.cx("action")},this.getPTOptions("action",t,e)),icon:s({class:[this.cx("icon"),t.icon]},this.getPTOptions("icon",t,e))}}},computed:{focusedOptionId:function(){return-1!==this.focusedOptionIndex?this.focusedOptionIndex:null}},directives:{ripple:n,tooltip:i}},A=["id","aria-orientation","aria-activedescendant","tabindex","aria-label","aria-labelledby"],D=["id","aria-label","aria-disabled","onClick","onMouseenter","data-p-focused","data-p-disabled"],K=["href","target"];w.render=function(t,e,n,i,o,a){var r=l("ripple"),I=l("tooltip");return d(),u("div",s({class:t.cx("container")},t.ptm("container")),[c("ul",s({ref:"list",id:o.id,class:t.cx("menu"),role:"menu","aria-orientation":"bottom"===n.position||"top"===n.position?"horizontal":"vertical","aria-activedescendant":o.focused?a.focusedOptionId:void 0,tabindex:n.tabindex,"aria-label":n.ariaLabel,"aria-labelledby":n.ariaLabelledby,onFocus:e[0]||(e[0]=function(){return a.onListFocus&&a.onListFocus.apply(a,arguments)}),onBlur:e[1]||(e[1]=function(){return a.onListBlur&&a.onListBlur.apply(a,arguments)}),onKeydown:e[2]||(e[2]=function(){return a.onListKeyDown&&a.onListKeyDown.apply(a,arguments)}),onMouseleave:e[3]||(e[3]=function(){return a.onListMouseLeave&&a.onListMouseLeave.apply(a,arguments)})},t.ptm("menu")),[(d(!0),u(p,null,m(n.model,(function(e,i){return d(),u("li",s({key:i,id:a.getItemId(i),class:t.cx("menuitem",{processedItem:e,index:i,id:a.getItemId(i)}),role:"menuitem","aria-label":e.label,"aria-disabled":a.disabled(e),onClick:function(t){return a.onItemClick(t,e)},onMouseenter:function(t){return a.onItemMouseEnter(i)}},a.getPTOptions("menuitem",e,i),{"data-p-focused":a.isItemActive(a.getItemId(i)),"data-p-disabled":a.disabled(e)||!1}),[c("div",s({class:t.cx("content")},a.getPTOptions("content",e,i)),[n.templates.item?(d(),h(b(n.templates.item),{key:1,item:e,index:i,label:e.label,props:a.getMenuItemProps(e,i)},null,8,["item","index","label","props"])):f((d(),u("a",s({key:0,href:e.url,class:t.cx("action"),target:e.target,tabindex:"-1","aria-hidden":"true"},a.getPTOptions("action",e,i)),[n.templates.icon?(d(),h(b(n.templates.icon),{key:1,item:e,class:y(t.cx("icon"))},null,8,["item","class"])):f((d(),u("span",s({key:0,class:[t.cx("icon"),e.icon]},a.getPTOptions("icon",e,i)),null,16)),[[r]])],16,K)),[[I,{value:e.label,disabled:!n.tooltipOptions},n.tooltipOptions]])],16)],16,D)})),128))],16,A)],16)};var P={name:"Dock",extends:g,matchMediaListener:null,data:function(){return{query:null,queryMatches:!1}},mounted:function(){this.bindMatchMediaListener()},beforeUnmount:function(){this.unbindMatchMediaListener()},methods:{bindMatchMediaListener:function(){var t=this;if(!this.matchMediaListener){var e=matchMedia("(max-width: ".concat(this.breakpoint,")"));this.query=e,this.queryMatches=e.matches,this.matchMediaListener=function(){t.queryMatches=e.matches,t.mobileActive=!1},this.query.addEventListener("change",this.matchMediaListener)}},unbindMatchMediaListener:function(){this.matchMediaListener&&(this.query.removeEventListener("change",this.matchMediaListener),this.matchMediaListener=null)}},computed:{containerClass:function(){return[this.class,this.cx("root")]}},components:{DockSub:w}};P.render=function(t,e,n,i,o,a){var r=I("DockSub");return d(),u("div",s({class:a.containerClass,style:t.style},t.ptm("root"),{"data-pc-name":"dock"}),[v(r,{model:t.model,templates:t.$slots,tooltipOptions:t.tooltipOptions,position:t.position,menuId:t.menuId,"aria-label":t.ariaLabel,"aria-labelledby":t.ariaLabelledby,tabindex:t.tabindex,pt:t.pt,unstyled:t.unstyled},null,8,["model","templates","tooltipOptions","position","menuId","aria-label","aria-labelledby","tabindex","pt","unstyled"])],16)};export{P as default};