@aotearoan/neon 28.0.1 → 28.0.3

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.
Files changed (56) hide show
  1. package/dist/components/navigation/dropdown-menu/NeonDropdownMenu.cjs.js +1 -1
  2. package/dist/components/navigation/dropdown-menu/NeonDropdownMenu.cjs.js.map +1 -1
  3. package/dist/components/navigation/dropdown-menu/NeonDropdownMenu.es.js +29 -27
  4. package/dist/components/navigation/dropdown-menu/NeonDropdownMenu.es.js.map +1 -1
  5. package/dist/components/navigation/dropdown-menu/NeonDropdownMenu.vue.cjs.js +1 -1
  6. package/dist/components/navigation/dropdown-menu/NeonDropdownMenu.vue.cjs.js.map +1 -1
  7. package/dist/components/navigation/dropdown-menu/NeonDropdownMenu.vue.es.js +49 -48
  8. package/dist/components/navigation/dropdown-menu/NeonDropdownMenu.vue.es.js.map +1 -1
  9. package/dist/components/navigation/link/NeonLink.cjs.js +1 -1
  10. package/dist/components/navigation/link/NeonLink.cjs.js.map +1 -1
  11. package/dist/components/navigation/link/NeonLink.es.js +20 -20
  12. package/dist/components/navigation/link/NeonLink.es.js.map +1 -1
  13. package/dist/components/navigation/tree-menu/NeonTreeMenu.cjs.js +1 -1
  14. package/dist/components/navigation/tree-menu/NeonTreeMenu.cjs.js.map +1 -1
  15. package/dist/components/navigation/tree-menu/NeonTreeMenu.es.js +19 -15
  16. package/dist/components/navigation/tree-menu/NeonTreeMenu.es.js.map +1 -1
  17. package/dist/components/navigation/tree-menu/NeonTreeMenu.vue.cjs.js +1 -1
  18. package/dist/components/navigation/tree-menu/NeonTreeMenu.vue.cjs.js.map +1 -1
  19. package/dist/components/navigation/tree-menu/NeonTreeMenu.vue.es.js +44 -39
  20. package/dist/components/navigation/tree-menu/NeonTreeMenu.vue.es.js.map +1 -1
  21. package/dist/src/components/feedback/alert/NeonAlert.d.ts +2 -2
  22. package/dist/src/components/feedback/alert/container/NeonAlertContainer.d.ts +2 -2
  23. package/dist/src/components/feedback/banner/NeonBanner.d.ts +4 -4
  24. package/dist/src/components/feedback/dialog/NeonDialog.d.ts +4 -4
  25. package/dist/src/components/feedback/note/NeonNote.d.ts +2 -2
  26. package/dist/src/components/layout/card-list/NeonCardList.d.ts +9 -15
  27. package/dist/src/components/layout/modal/NeonModal.d.ts +2 -2
  28. package/dist/src/components/layout/page/NeonPage.d.ts +6 -6
  29. package/dist/src/components/navigation/action-menu/NeonActionMenu.d.ts +2 -2
  30. package/dist/src/components/navigation/breadcrumbs/NeonBreadcrumbs.d.ts +2 -2
  31. package/dist/src/components/navigation/dropdown-menu/NeonDropdownMenu.d.ts +226 -158
  32. package/dist/src/components/navigation/link/NeonLink.d.ts +2 -2
  33. package/dist/src/components/navigation/menu/NeonMenu.d.ts +17 -16
  34. package/dist/src/components/navigation/mobile-menu/NeonMobileMenu.d.ts +17 -16
  35. package/dist/src/components/navigation/pagination/NeonPagination.d.ts +2 -2
  36. package/dist/src/components/navigation/tree-menu/NeonTreeMenu.d.ts +17 -2
  37. package/dist/src/components/presentation/badge/NeonBadge.d.ts +4 -8
  38. package/dist/src/components/presentation/dropdown/NeonDropdown.d.ts +4 -4
  39. package/dist/src/components/presentation/header/NeonHeader.d.ts +2 -2
  40. package/dist/src/components/presentation/image-carousel/NeonImageCarousel.d.ts +4 -4
  41. package/dist/src/components/presentation/tabs/NeonTabs.d.ts +6 -6
  42. package/dist/src/components/user-input/button/NeonButton.d.ts +3 -5
  43. package/dist/src/components/user-input/date-picker/NeonDatePicker.d.ts +15 -9
  44. package/dist/src/components/user-input/file/NeonFile.d.ts +2 -2
  45. package/dist/src/components/user-input/filter-list/NeonFilterList.d.ts +2 -2
  46. package/dist/src/components/user-input/number/NeonNumber.d.ts +2 -2
  47. package/dist/src/components/user-input/search/NeonSearch.d.ts +30 -12
  48. package/dist/src/components/user-input/select/NeonSelect.d.ts +48 -24
  49. package/dist/src/model/navigation/tree-menu/NeonTreeMenuItemModel.d.ts +2 -0
  50. package/dist/src/model/presentation/dropdown/NeonDropdownMenuItem.d.ts +4 -1
  51. package/package.json +1 -1
  52. package/src/sass/components/_button.scss +3 -0
  53. package/src/sass/components/_dropdown-menu.scss +10 -5
  54. package/src/sass/components/_dropdown.scss +1 -1
  55. package/src/sass/components/_tree-menu.scss +39 -3
  56. package/src/sass/variables-global.scss +5 -0
@@ -1,2 +1,2 @@
1
- "use strict";const n=require("vue"),b=require("../../../model/common/size/NeonSize.cjs.js"),q=require("../../../model/common/color/NeonFunctionalColor.cjs.js"),S=require("../../presentation/dropdown/NeonDropdown.vue.cjs.js"),c=require("../../../model/presentation/dropdown/NeonDropdownPlacement.cjs.js"),P=require("../../../utils/common/dom/NeonScrollUtils.cjs.js"),B=require("../../presentation/icon/NeonIcon.vue.cjs.js"),L=require("../link/NeonLink.vue.cjs.js"),C=n.defineComponent({name:"NeonDropdownMenu",components:{NeonDropdown:S,NeonIcon:B,NeonLink:L},props:{model:{type:Array,required:!0},size:{type:String,default:b.NeonSize.Medium},color:{type:String,default:q.NeonFunctionalColor.LowContrast},disabled:{type:Boolean,default:!1},placement:{type:String,default:c.NeonDropdownPlacement.BottomLeft},openOnHover:{type:Boolean,default:!1}},emits:["click"],setup(t,{emit:d}){const h=n.useAttrs(),f=n.ref(null),m=n.ref(null),v=n.ref([]),r=n.ref(!1),s=n.ref(null),l=n.ref(-1),p=e=>{s.value=e,l.value=t.model.findIndex(o=>o.key===e)},y=e=>{m.value=e},g=()=>{switch(m.value){case c.NeonDropdownPlacement.TopLeft:case c.NeonDropdownPlacement.TopRight:case c.NeonDropdownPlacement.LeftBottom:case c.NeonDropdownPlacement.RightBottom:return!0}return!1},N=()=>{var o,a;const e=(a=(o=f.value)==null?void 0:o.dropdownContent)==null?void 0:a.querySelector(".neon-dropdown-menu__item--highlighted");e&&(e.focus(),P.NeonScrollUtils.scrollIntoView(e))},i=(e,o)=>{const a=l.value+e;a>=0&&a<=t.model.length-1&&(l.value=a,s.value=t.model[l.value].key,o.preventDefault(),setTimeout(N))},u=e=>{if(!t.disabled&&r.value)switch(e.code){case"ArrowUp":case"ArrowDown":{const o=g()?-1:1;e.code==="ArrowUp"?i(-1*o,e):i(1*o,e)}break;case"Enter":case"Space":t.model[l.value]&&!t.model[l.value].disabled&&(w(t.model[l.value]),e.preventDefault());break;case"Tab":!e.ctrlKey&&!e.metaKey&&!e.altKey&&(r.value=!1);break;case"Escape":r.value=!1;break}},w=e=>{var o;if(!e.disabled){if(e.href){const a=(o=v.value[l.value])==null?void 0:o.firstElementChild;a&&a.click()}else d("click",e);r.value=!1}},k=()=>{t.openOnHover&&(r.value=!0)},D=()=>{t.openOnHover&&(r.value=!1)};return n.onMounted(()=>{document.addEventListener("keydown",u)}),n.onUnmounted(()=>{document.removeEventListener("keydown",u)}),n.watch(()=>r.value,e=>{e&&(s.value=t.model[0].key,l.value=0)}),{dropdown:f,items:v,open:r,highlightedKey:s,highlightedIndex:l,attrs:h,emit:d,changeHighlighted:p,keyboardHandler:u,onBlur:D,onFocus:k,clickItem:w,navigateBy:i,onPlacement:y}}});module.exports=C;
1
+ "use strict";const n=require("vue"),D=require("../../../model/common/size/NeonSize.cjs.js"),P=require("../../../model/common/color/NeonFunctionalColor.cjs.js"),b=require("../../presentation/dropdown/NeonDropdown.vue.cjs.js"),c=require("../../../model/presentation/dropdown/NeonDropdownPlacement.cjs.js"),S=require("../../../utils/common/dom/NeonScrollUtils.cjs.js"),H=require("../../presentation/icon/NeonIcon.vue.cjs.js"),B=require("../link/NeonLink.vue.cjs.js"),L=require("../../../model/common/position/NeonHorizontalPosition.cjs.js"),z=n.defineComponent({name:"NeonDropdownMenu",components:{NeonDropdown:b,NeonIcon:H,NeonLink:B},props:{model:{type:Array,required:!0},size:{type:String,default:D.NeonSize.Medium},color:{type:String,default:P.NeonFunctionalColor.LowContrast},disabled:{type:Boolean,default:!1},placement:{type:String,default:c.NeonDropdownPlacement.BottomLeft},openOnHover:{type:Boolean,default:!1}},emits:["click"],setup(t,{emit:d}){const h=n.useAttrs(),f=n.ref(null),m=n.ref(null),v=n.ref([]),r=n.ref(!1),s=n.ref(null),l=n.ref(-1),N=e=>{s.value=e,l.value=t.model.findIndex(o=>o.key===e)},p=e=>{m.value=e},y=()=>{switch(m.value){case c.NeonDropdownPlacement.TopLeft:case c.NeonDropdownPlacement.TopRight:case c.NeonDropdownPlacement.LeftBottom:case c.NeonDropdownPlacement.RightBottom:return!0}return!1},g=()=>{var o,a;const e=(a=(o=f.value)==null?void 0:o.dropdownContent)==null?void 0:a.querySelector(".neon-dropdown-menu__item--highlighted");e&&(e.focus(),S.NeonScrollUtils.scrollIntoView(e))},i=(e,o)=>{const a=l.value+e;a>=0&&a<=t.model.length-1&&(l.value=a,s.value=t.model[l.value].key,o.preventDefault(),setTimeout(g))},u=e=>{if(!t.disabled&&r.value)switch(e.code){case"ArrowUp":case"ArrowDown":{const o=y()?-1:1;e.code==="ArrowUp"?i(-1*o,e):i(1*o,e)}break;case"Enter":case"Space":t.model[l.value]&&!t.model[l.value].disabled&&(w(t.model[l.value]),e.preventDefault());break;case"Tab":!e.ctrlKey&&!e.metaKey&&!e.altKey&&(r.value=!1);break;case"Escape":r.value=!1;break}},w=e=>{var o;if(!e.disabled){if(e.href){const a=(o=v.value[l.value])==null?void 0:o.firstElementChild;a&&a.click()}else d("click",e);r.value=!1}},k=()=>{t.openOnHover&&(r.value=!0)},q=()=>{t.openOnHover&&(r.value=!1)};return n.onMounted(()=>{document.addEventListener("keydown",u)}),n.onUnmounted(()=>{document.removeEventListener("keydown",u)}),n.watch(()=>r.value,e=>{e&&(s.value=t.model[0].key,l.value=0)}),{dropdown:f,items:v,open:r,highlightedKey:s,highlightedIndex:l,attrs:h,emit:d,changeHighlighted:N,keyboardHandler:u,onBlur:q,onFocus:k,clickItem:w,navigateBy:i,onPlacement:p,NeonHorizontalPosition:L.NeonHorizontalPosition}}});module.exports=z;
2
2
  //# sourceMappingURL=NeonDropdownMenu.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NeonDropdownMenu.cjs.js","sources":["../../../../src/components/navigation/dropdown-menu/NeonDropdownMenu.ts?vue&type=script&src=true&lang.ts"],"sourcesContent":["import { defineComponent, onMounted, onUnmounted, ref, useAttrs, watch } from 'vue';\nimport type { NeonDropdownMenuItem } from '@/model/presentation/dropdown/NeonDropdownMenuItem';\nimport { NeonSize } from '@/model/common/size/NeonSize';\nimport { NeonFunctionalColor } from '@/model/common/color/NeonFunctionalColor';\nimport NeonDropdown from '@/components/presentation/dropdown/NeonDropdown.vue';\nimport { NeonDropdownPlacement } from '@/model/presentation/dropdown/NeonDropdownPlacement';\nimport { NeonScrollUtils } from '@/utils/common/dom/NeonScrollUtils';\nimport NeonIcon from '@/components/presentation/icon/NeonIcon.vue';\nimport NeonLink from '@/components/navigation/link/NeonLink.vue';\n\n/**\n * <p>A dropdown menu consisting of a button to open the menu and a list of menu items. Clicking on a menu item will\n * result in navigating to the provided URL or notifying the parent component via the @click event.</p>\n * <p><strong>Note:</strong> As well as the options described below, pass through attributes supported by\n * <a href=\"/presentation/dropdown\">NeonDropdown</a> to change the style of the dropdown button.</p>\n */\nexport default defineComponent({\n name: 'NeonDropdownMenu',\n components: {\n NeonDropdown,\n NeonIcon,\n NeonLink,\n },\n props: {\n /**\n * A list of menu items to render in the dropdown menu.\n */\n model: { type: Array as () => Array<NeonDropdownMenuItem>, required: true },\n /**\n * The size of the dropdown - Small, Medium or Large.\n */\n size: { type: String as () => NeonSize, default: NeonSize.Medium },\n /**\n * The dropdown color.\n */\n color: { type: String as () => NeonFunctionalColor, default: NeonFunctionalColor.LowContrast },\n /**\n * Whether the dropdown button is disabled or not.\n */\n disabled: { type: Boolean, default: false },\n /**\n * Placement of the dropdown contents.\n */\n placement: { type: String as () => NeonDropdownPlacement, default: NeonDropdownPlacement.BottomLeft },\n /**\n * Instead of opening on click (default), open on hover.\n */\n openOnHover: { type: Boolean, default: false },\n },\n emits: [\n /**\n * emitted when the user clicks on a menu item.\n * @type {NeonDropdownMenuItem} the menu item the user clicked on.\n */\n 'click',\n ],\n setup(props, { emit }) {\n const attrs = useAttrs();\n const dropdown = ref<InstanceType<typeof NeonDropdown> | null>(null);\n const dropdownPlacement = ref<NeonDropdownPlacement | null>(null);\n const items = ref<Array<HTMLLIElement>>([]);\n const open = ref(false);\n const highlightedKey = ref<string | null>(null);\n const highlightedIndex = ref(-1);\n\n const changeHighlighted = (key: string) => {\n highlightedKey.value = key;\n highlightedIndex.value = props.model.findIndex((item) => item.key === key);\n };\n\n const onPlacement = (placement: NeonDropdownPlacement) => {\n dropdownPlacement.value = placement;\n };\n\n const isReverse = () => {\n switch (dropdownPlacement.value) {\n case NeonDropdownPlacement.TopLeft:\n case NeonDropdownPlacement.TopRight:\n case NeonDropdownPlacement.LeftBottom:\n case NeonDropdownPlacement.RightBottom:\n return true;\n }\n\n return false;\n };\n\n const onNavigate = () => {\n const element: HTMLElement | null = dropdown.value?.dropdownContent?.querySelector(\n '.neon-dropdown-menu__item--highlighted',\n ) as HTMLElement;\n\n if (element) {\n element.focus();\n NeonScrollUtils.scrollIntoView(element);\n }\n };\n\n const navigateBy = (offset: number, $event: KeyboardEvent) => {\n const newIndex = highlightedIndex.value + offset;\n if (newIndex >= 0 && newIndex <= props.model.length - 1) {\n highlightedIndex.value = newIndex;\n highlightedKey.value = props.model[highlightedIndex.value].key;\n $event.preventDefault();\n setTimeout(onNavigate);\n }\n };\n\n const keyboardHandler = ($event: KeyboardEvent) => {\n if (!props.disabled) {\n if (open.value) {\n switch ($event.code) {\n case 'ArrowUp':\n case 'ArrowDown':\n {\n const reverseOffset = isReverse() ? -1 : 1;\n if ($event.code === 'ArrowUp') {\n navigateBy(-1 * reverseOffset, $event);\n } else {\n navigateBy(1 * reverseOffset, $event);\n }\n }\n break;\n case 'Enter':\n case 'Space':\n if (props.model[highlightedIndex.value] && !props.model[highlightedIndex.value].disabled) {\n clickItem(props.model[highlightedIndex.value]);\n $event.preventDefault();\n }\n break;\n case 'Tab':\n if (!$event.ctrlKey && !$event.metaKey && !$event.altKey) {\n open.value = false;\n }\n break;\n case 'Escape':\n open.value = false;\n break;\n }\n }\n }\n };\n\n const clickItem = (item: NeonDropdownMenuItem) => {\n if (!item.disabled) {\n if (item.href) {\n const anchor = items.value[highlightedIndex.value]?.firstElementChild as HTMLAnchorElement;\n anchor && anchor.click();\n } else {\n emit('click', item);\n }\n open.value = false;\n }\n };\n\n const onFocus = () => {\n if (props.openOnHover) {\n open.value = true;\n }\n };\n\n const onBlur = () => {\n if (props.openOnHover) {\n open.value = false;\n }\n };\n\n onMounted(() => {\n document.addEventListener('keydown', keyboardHandler);\n });\n\n onUnmounted(() => {\n document.removeEventListener('keydown', keyboardHandler);\n });\n\n watch(\n () => open.value,\n (open: boolean) => {\n if (open) {\n highlightedKey.value = props.model[0].key;\n highlightedIndex.value = 0;\n }\n },\n );\n\n return {\n dropdown,\n items,\n open,\n highlightedKey,\n highlightedIndex,\n attrs,\n emit,\n changeHighlighted,\n keyboardHandler,\n onBlur,\n onFocus,\n clickItem,\n navigateBy,\n onPlacement,\n };\n },\n});\n"],"names":["_sfc_main","defineComponent","NeonDropdown","NeonIcon","NeonLink","NeonSize","NeonFunctionalColor","NeonDropdownPlacement","props","emit","attrs","useAttrs","dropdown","ref","dropdownPlacement","items","open","highlightedKey","highlightedIndex","changeHighlighted","key","item","onPlacement","placement","isReverse","onNavigate","element","_b","_a","NeonScrollUtils","navigateBy","offset","$event","newIndex","keyboardHandler","reverseOffset","clickItem","anchor","onFocus","onBlur","onMounted","onUnmounted","watch"],"mappings":"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"}
1
+ {"version":3,"file":"NeonDropdownMenu.cjs.js","sources":["../../../../src/components/navigation/dropdown-menu/NeonDropdownMenu.ts?vue&type=script&src=true&lang.ts"],"sourcesContent":["import { defineComponent, onMounted, onUnmounted, ref, useAttrs, watch } from 'vue';\nimport type { NeonDropdownMenuItem } from '@/model/presentation/dropdown/NeonDropdownMenuItem';\nimport { NeonSize } from '@/model/common/size/NeonSize';\nimport { NeonFunctionalColor } from '@/model/common/color/NeonFunctionalColor';\nimport NeonDropdown from '@/components/presentation/dropdown/NeonDropdown.vue';\nimport { NeonDropdownPlacement } from '@/model/presentation/dropdown/NeonDropdownPlacement';\nimport { NeonScrollUtils } from '@/utils/common/dom/NeonScrollUtils';\nimport NeonIcon from '@/components/presentation/icon/NeonIcon.vue';\nimport NeonLink from '@/components/navigation/link/NeonLink.vue';\nimport { NeonHorizontalPosition } from '@/model/common/position/NeonHorizontalPosition';\n\n/**\n * <p>A dropdown menu consisting of a button to open the menu and a list of menu items. Clicking on a menu item will\n * result in navigating to the provided URL or notifying the parent component via the @click event.</p>\n * <p><strong>Note:</strong> As well as the options described below, pass through attributes supported by\n * <a href=\"/presentation/dropdown\">NeonDropdown</a> to change the style of the dropdown button.</p>\n */\nexport default defineComponent({\n name: 'NeonDropdownMenu',\n components: {\n NeonDropdown,\n NeonIcon,\n NeonLink,\n },\n props: {\n /**\n * A list of menu items to render in the dropdown menu.\n */\n model: { type: Array as () => Array<NeonDropdownMenuItem>, required: true },\n /**\n * The size of the dropdown - Small, Medium or Large.\n */\n size: { type: String as () => NeonSize, default: NeonSize.Medium },\n /**\n * The dropdown color.\n */\n color: { type: String as () => NeonFunctionalColor, default: NeonFunctionalColor.LowContrast },\n /**\n * Whether the dropdown button is disabled or not.\n */\n disabled: { type: Boolean, default: false },\n /**\n * Placement of the dropdown contents.\n */\n placement: { type: String as () => NeonDropdownPlacement, default: NeonDropdownPlacement.BottomLeft },\n /**\n * Instead of opening on click (default), open on hover.\n */\n openOnHover: { type: Boolean, default: false },\n },\n emits: [\n /**\n * emitted when the user clicks on a menu item.\n * @type {NeonDropdownMenuItem} the menu item the user clicked on.\n */\n 'click',\n ],\n setup(props, { emit }) {\n const attrs = useAttrs();\n const dropdown = ref<InstanceType<typeof NeonDropdown> | null>(null);\n const dropdownPlacement = ref<NeonDropdownPlacement | null>(null);\n const items = ref<Array<HTMLLIElement>>([]);\n const open = ref(false);\n const highlightedKey = ref<string | null>(null);\n const highlightedIndex = ref(-1);\n\n const changeHighlighted = (key: string) => {\n highlightedKey.value = key;\n highlightedIndex.value = props.model.findIndex((item) => item.key === key);\n };\n\n const onPlacement = (placement: NeonDropdownPlacement) => {\n dropdownPlacement.value = placement;\n };\n\n const isReverse = () => {\n switch (dropdownPlacement.value) {\n case NeonDropdownPlacement.TopLeft:\n case NeonDropdownPlacement.TopRight:\n case NeonDropdownPlacement.LeftBottom:\n case NeonDropdownPlacement.RightBottom:\n return true;\n }\n\n return false;\n };\n\n const onNavigate = () => {\n const element: HTMLElement | null = dropdown.value?.dropdownContent?.querySelector(\n '.neon-dropdown-menu__item--highlighted',\n ) as HTMLElement;\n\n if (element) {\n element.focus();\n NeonScrollUtils.scrollIntoView(element);\n }\n };\n\n const navigateBy = (offset: number, $event: KeyboardEvent) => {\n const newIndex = highlightedIndex.value + offset;\n if (newIndex >= 0 && newIndex <= props.model.length - 1) {\n highlightedIndex.value = newIndex;\n highlightedKey.value = props.model[highlightedIndex.value].key;\n $event.preventDefault();\n setTimeout(onNavigate);\n }\n };\n\n const keyboardHandler = ($event: KeyboardEvent) => {\n if (!props.disabled) {\n if (open.value) {\n switch ($event.code) {\n case 'ArrowUp':\n case 'ArrowDown':\n {\n const reverseOffset = isReverse() ? -1 : 1;\n if ($event.code === 'ArrowUp') {\n navigateBy(-1 * reverseOffset, $event);\n } else {\n navigateBy(1 * reverseOffset, $event);\n }\n }\n break;\n case 'Enter':\n case 'Space':\n if (props.model[highlightedIndex.value] && !props.model[highlightedIndex.value].disabled) {\n clickItem(props.model[highlightedIndex.value]);\n $event.preventDefault();\n }\n break;\n case 'Tab':\n if (!$event.ctrlKey && !$event.metaKey && !$event.altKey) {\n open.value = false;\n }\n break;\n case 'Escape':\n open.value = false;\n break;\n }\n }\n }\n };\n\n const clickItem = (item: NeonDropdownMenuItem) => {\n if (!item.disabled) {\n if (item.href) {\n const anchor = items.value[highlightedIndex.value]?.firstElementChild as HTMLAnchorElement;\n anchor && anchor.click();\n } else {\n emit('click', item);\n }\n open.value = false;\n }\n };\n\n const onFocus = () => {\n if (props.openOnHover) {\n open.value = true;\n }\n };\n\n const onBlur = () => {\n if (props.openOnHover) {\n open.value = false;\n }\n };\n\n onMounted(() => {\n document.addEventListener('keydown', keyboardHandler);\n });\n\n onUnmounted(() => {\n document.removeEventListener('keydown', keyboardHandler);\n });\n\n watch(\n () => open.value,\n (open: boolean) => {\n if (open) {\n highlightedKey.value = props.model[0].key;\n highlightedIndex.value = 0;\n }\n },\n );\n\n return {\n dropdown,\n items,\n open,\n highlightedKey,\n highlightedIndex,\n attrs,\n emit,\n changeHighlighted,\n keyboardHandler,\n onBlur,\n onFocus,\n clickItem,\n navigateBy,\n onPlacement,\n NeonHorizontalPosition,\n };\n },\n});\n"],"names":["_sfc_main","defineComponent","NeonDropdown","NeonIcon","NeonLink","NeonSize","NeonFunctionalColor","NeonDropdownPlacement","props","emit","attrs","useAttrs","dropdown","ref","dropdownPlacement","items","open","highlightedKey","highlightedIndex","changeHighlighted","key","item","onPlacement","placement","isReverse","onNavigate","element","_b","_a","NeonScrollUtils","navigateBy","offset","$event","newIndex","keyboardHandler","reverseOffset","clickItem","anchor","onFocus","onBlur","onMounted","onUnmounted","watch","NeonHorizontalPosition"],"mappings":"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"}
@@ -1,15 +1,16 @@
1
- import { defineComponent as B, useAttrs as L, ref as r, onMounted as S, onUnmounted as D, watch as I } from "vue";
2
- import { NeonSize as A } from "../../../model/common/size/NeonSize.es.js";
3
- import { NeonFunctionalColor as C } from "../../../model/common/color/NeonFunctionalColor.es.js";
4
- import E from "../../presentation/dropdown/NeonDropdown.vue.es.js";
5
- import { NeonDropdownPlacement as c } from "../../../model/presentation/dropdown/NeonDropdownPlacement.es.js";
6
- import { NeonScrollUtils as H } from "../../../utils/common/dom/NeonScrollUtils.es.js";
1
+ import { defineComponent as B, useAttrs as L, ref as r, onMounted as S, onUnmounted as D, watch as H } from "vue";
2
+ import { NeonSize as I } from "../../../model/common/size/NeonSize.es.js";
3
+ import { NeonFunctionalColor as A } from "../../../model/common/color/NeonFunctionalColor.es.js";
4
+ import C from "../../presentation/dropdown/NeonDropdown.vue.es.js";
5
+ import { NeonDropdownPlacement as i } from "../../../model/presentation/dropdown/NeonDropdownPlacement.es.js";
6
+ import { NeonScrollUtils as E } from "../../../utils/common/dom/NeonScrollUtils.es.js";
7
7
  import x from "../../presentation/icon/NeonIcon.vue.es.js";
8
8
  import K from "../link/NeonLink.vue.es.js";
9
- const z = B({
9
+ import { NeonHorizontalPosition as O } from "../../../model/common/position/NeonHorizontalPosition.es.js";
10
+ const V = B({
10
11
  name: "NeonDropdownMenu",
11
12
  components: {
12
- NeonDropdown: E,
13
+ NeonDropdown: C,
13
14
  NeonIcon: x,
14
15
  NeonLink: K
15
16
  },
@@ -21,11 +22,11 @@ const z = B({
21
22
  /**
22
23
  * The size of the dropdown - Small, Medium or Large.
23
24
  */
24
- size: { type: String, default: A.Medium },
25
+ size: { type: String, default: I.Medium },
25
26
  /**
26
27
  * The dropdown color.
27
28
  */
28
- color: { type: String, default: C.LowContrast },
29
+ color: { type: String, default: A.LowContrast },
29
30
  /**
30
31
  * Whether the dropdown button is disabled or not.
31
32
  */
@@ -33,7 +34,7 @@ const z = B({
33
34
  /**
34
35
  * Placement of the dropdown contents.
35
36
  */
36
- placement: { type: String, default: c.BottomLeft },
37
+ placement: { type: String, default: i.BottomLeft },
37
38
  /**
38
39
  * Instead of opening on click (default), open on hover.
39
40
  */
@@ -47,16 +48,16 @@ const z = B({
47
48
  "click"
48
49
  ],
49
50
  setup(t, { emit: u }) {
50
- const h = L(), f = r(null), m = r(null), v = r([]), a = r(!1), s = r(null), n = r(-1), w = (e) => {
51
- s.value = e, n.value = t.model.findIndex((o) => o.key === e);
51
+ const h = L(), f = r(null), m = r(null), v = r([]), a = r(!1), c = r(null), n = r(-1), w = (e) => {
52
+ c.value = e, n.value = t.model.findIndex((o) => o.key === e);
52
53
  }, y = (e) => {
53
54
  m.value = e;
54
55
  }, g = () => {
55
56
  switch (m.value) {
56
- case c.TopLeft:
57
- case c.TopRight:
58
- case c.LeftBottom:
59
- case c.RightBottom:
57
+ case i.TopLeft:
58
+ case i.TopRight:
59
+ case i.LeftBottom:
60
+ case i.RightBottom:
60
61
  return !0;
61
62
  }
62
63
  return !1;
@@ -65,10 +66,10 @@ const z = B({
65
66
  const e = (l = (o = f.value) == null ? void 0 : o.dropdownContent) == null ? void 0 : l.querySelector(
66
67
  ".neon-dropdown-menu__item--highlighted"
67
68
  );
68
- e && (e.focus(), H.scrollIntoView(e));
69
- }, i = (e, o) => {
69
+ e && (e.focus(), E.scrollIntoView(e));
70
+ }, s = (e, o) => {
70
71
  const l = n.value + e;
71
- l >= 0 && l <= t.model.length - 1 && (n.value = l, s.value = t.model[n.value].key, o.preventDefault(), setTimeout(k));
72
+ l >= 0 && l <= t.model.length - 1 && (n.value = l, c.value = t.model[n.value].key, o.preventDefault(), setTimeout(k));
72
73
  }, d = (e) => {
73
74
  if (!t.disabled && a.value)
74
75
  switch (e.code) {
@@ -76,7 +77,7 @@ const z = B({
76
77
  case "ArrowDown":
77
78
  {
78
79
  const o = g() ? -1 : 1;
79
- e.code === "ArrowUp" ? i(-1 * o, e) : i(1 * o, e);
80
+ e.code === "ArrowUp" ? s(-1 * o, e) : s(1 * o, e);
80
81
  }
81
82
  break;
82
83
  case "Enter":
@@ -109,16 +110,16 @@ const z = B({
109
110
  document.addEventListener("keydown", d);
110
111
  }), D(() => {
111
112
  document.removeEventListener("keydown", d);
112
- }), I(
113
+ }), H(
113
114
  () => a.value,
114
115
  (e) => {
115
- e && (s.value = t.model[0].key, n.value = 0);
116
+ e && (c.value = t.model[0].key, n.value = 0);
116
117
  }
117
118
  ), {
118
119
  dropdown: f,
119
120
  items: v,
120
121
  open: a,
121
- highlightedKey: s,
122
+ highlightedKey: c,
122
123
  highlightedIndex: n,
123
124
  attrs: h,
124
125
  emit: u,
@@ -127,12 +128,13 @@ const z = B({
127
128
  onBlur: N,
128
129
  onFocus: b,
129
130
  clickItem: p,
130
- navigateBy: i,
131
- onPlacement: y
131
+ navigateBy: s,
132
+ onPlacement: y,
133
+ NeonHorizontalPosition: O
132
134
  };
133
135
  }
134
136
  });
135
137
  export {
136
- z as default
138
+ V as default
137
139
  };
138
140
  //# sourceMappingURL=NeonDropdownMenu.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NeonDropdownMenu.es.js","sources":["../../../../src/components/navigation/dropdown-menu/NeonDropdownMenu.ts?vue&type=script&src=true&lang.ts"],"sourcesContent":["import { defineComponent, onMounted, onUnmounted, ref, useAttrs, watch } from 'vue';\nimport type { NeonDropdownMenuItem } from '@/model/presentation/dropdown/NeonDropdownMenuItem';\nimport { NeonSize } from '@/model/common/size/NeonSize';\nimport { NeonFunctionalColor } from '@/model/common/color/NeonFunctionalColor';\nimport NeonDropdown from '@/components/presentation/dropdown/NeonDropdown.vue';\nimport { NeonDropdownPlacement } from '@/model/presentation/dropdown/NeonDropdownPlacement';\nimport { NeonScrollUtils } from '@/utils/common/dom/NeonScrollUtils';\nimport NeonIcon from '@/components/presentation/icon/NeonIcon.vue';\nimport NeonLink from '@/components/navigation/link/NeonLink.vue';\n\n/**\n * <p>A dropdown menu consisting of a button to open the menu and a list of menu items. Clicking on a menu item will\n * result in navigating to the provided URL or notifying the parent component via the @click event.</p>\n * <p><strong>Note:</strong> As well as the options described below, pass through attributes supported by\n * <a href=\"/presentation/dropdown\">NeonDropdown</a> to change the style of the dropdown button.</p>\n */\nexport default defineComponent({\n name: 'NeonDropdownMenu',\n components: {\n NeonDropdown,\n NeonIcon,\n NeonLink,\n },\n props: {\n /**\n * A list of menu items to render in the dropdown menu.\n */\n model: { type: Array as () => Array<NeonDropdownMenuItem>, required: true },\n /**\n * The size of the dropdown - Small, Medium or Large.\n */\n size: { type: String as () => NeonSize, default: NeonSize.Medium },\n /**\n * The dropdown color.\n */\n color: { type: String as () => NeonFunctionalColor, default: NeonFunctionalColor.LowContrast },\n /**\n * Whether the dropdown button is disabled or not.\n */\n disabled: { type: Boolean, default: false },\n /**\n * Placement of the dropdown contents.\n */\n placement: { type: String as () => NeonDropdownPlacement, default: NeonDropdownPlacement.BottomLeft },\n /**\n * Instead of opening on click (default), open on hover.\n */\n openOnHover: { type: Boolean, default: false },\n },\n emits: [\n /**\n * emitted when the user clicks on a menu item.\n * @type {NeonDropdownMenuItem} the menu item the user clicked on.\n */\n 'click',\n ],\n setup(props, { emit }) {\n const attrs = useAttrs();\n const dropdown = ref<InstanceType<typeof NeonDropdown> | null>(null);\n const dropdownPlacement = ref<NeonDropdownPlacement | null>(null);\n const items = ref<Array<HTMLLIElement>>([]);\n const open = ref(false);\n const highlightedKey = ref<string | null>(null);\n const highlightedIndex = ref(-1);\n\n const changeHighlighted = (key: string) => {\n highlightedKey.value = key;\n highlightedIndex.value = props.model.findIndex((item) => item.key === key);\n };\n\n const onPlacement = (placement: NeonDropdownPlacement) => {\n dropdownPlacement.value = placement;\n };\n\n const isReverse = () => {\n switch (dropdownPlacement.value) {\n case NeonDropdownPlacement.TopLeft:\n case NeonDropdownPlacement.TopRight:\n case NeonDropdownPlacement.LeftBottom:\n case NeonDropdownPlacement.RightBottom:\n return true;\n }\n\n return false;\n };\n\n const onNavigate = () => {\n const element: HTMLElement | null = dropdown.value?.dropdownContent?.querySelector(\n '.neon-dropdown-menu__item--highlighted',\n ) as HTMLElement;\n\n if (element) {\n element.focus();\n NeonScrollUtils.scrollIntoView(element);\n }\n };\n\n const navigateBy = (offset: number, $event: KeyboardEvent) => {\n const newIndex = highlightedIndex.value + offset;\n if (newIndex >= 0 && newIndex <= props.model.length - 1) {\n highlightedIndex.value = newIndex;\n highlightedKey.value = props.model[highlightedIndex.value].key;\n $event.preventDefault();\n setTimeout(onNavigate);\n }\n };\n\n const keyboardHandler = ($event: KeyboardEvent) => {\n if (!props.disabled) {\n if (open.value) {\n switch ($event.code) {\n case 'ArrowUp':\n case 'ArrowDown':\n {\n const reverseOffset = isReverse() ? -1 : 1;\n if ($event.code === 'ArrowUp') {\n navigateBy(-1 * reverseOffset, $event);\n } else {\n navigateBy(1 * reverseOffset, $event);\n }\n }\n break;\n case 'Enter':\n case 'Space':\n if (props.model[highlightedIndex.value] && !props.model[highlightedIndex.value].disabled) {\n clickItem(props.model[highlightedIndex.value]);\n $event.preventDefault();\n }\n break;\n case 'Tab':\n if (!$event.ctrlKey && !$event.metaKey && !$event.altKey) {\n open.value = false;\n }\n break;\n case 'Escape':\n open.value = false;\n break;\n }\n }\n }\n };\n\n const clickItem = (item: NeonDropdownMenuItem) => {\n if (!item.disabled) {\n if (item.href) {\n const anchor = items.value[highlightedIndex.value]?.firstElementChild as HTMLAnchorElement;\n anchor && anchor.click();\n } else {\n emit('click', item);\n }\n open.value = false;\n }\n };\n\n const onFocus = () => {\n if (props.openOnHover) {\n open.value = true;\n }\n };\n\n const onBlur = () => {\n if (props.openOnHover) {\n open.value = false;\n }\n };\n\n onMounted(() => {\n document.addEventListener('keydown', keyboardHandler);\n });\n\n onUnmounted(() => {\n document.removeEventListener('keydown', keyboardHandler);\n });\n\n watch(\n () => open.value,\n (open: boolean) => {\n if (open) {\n highlightedKey.value = props.model[0].key;\n highlightedIndex.value = 0;\n }\n },\n );\n\n return {\n dropdown,\n items,\n open,\n highlightedKey,\n highlightedIndex,\n attrs,\n emit,\n changeHighlighted,\n keyboardHandler,\n onBlur,\n onFocus,\n clickItem,\n navigateBy,\n onPlacement,\n };\n },\n});\n"],"names":["_sfc_main","defineComponent","NeonDropdown","NeonIcon","NeonLink","NeonSize","NeonFunctionalColor","NeonDropdownPlacement","props","emit","attrs","useAttrs","dropdown","ref","dropdownPlacement","items","open","highlightedKey","highlightedIndex","changeHighlighted","key","item","onPlacement","placement","isReverse","onNavigate","element","_b","_a","NeonScrollUtils","navigateBy","offset","$event","newIndex","keyboardHandler","reverseOffset","clickItem","anchor","onFocus","onBlur","onMounted","onUnmounted","watch"],"mappings":"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"}
1
+ {"version":3,"file":"NeonDropdownMenu.es.js","sources":["../../../../src/components/navigation/dropdown-menu/NeonDropdownMenu.ts?vue&type=script&src=true&lang.ts"],"sourcesContent":["import { defineComponent, onMounted, onUnmounted, ref, useAttrs, watch } from 'vue';\nimport type { NeonDropdownMenuItem } from '@/model/presentation/dropdown/NeonDropdownMenuItem';\nimport { NeonSize } from '@/model/common/size/NeonSize';\nimport { NeonFunctionalColor } from '@/model/common/color/NeonFunctionalColor';\nimport NeonDropdown from '@/components/presentation/dropdown/NeonDropdown.vue';\nimport { NeonDropdownPlacement } from '@/model/presentation/dropdown/NeonDropdownPlacement';\nimport { NeonScrollUtils } from '@/utils/common/dom/NeonScrollUtils';\nimport NeonIcon from '@/components/presentation/icon/NeonIcon.vue';\nimport NeonLink from '@/components/navigation/link/NeonLink.vue';\nimport { NeonHorizontalPosition } from '@/model/common/position/NeonHorizontalPosition';\n\n/**\n * <p>A dropdown menu consisting of a button to open the menu and a list of menu items. Clicking on a menu item will\n * result in navigating to the provided URL or notifying the parent component via the @click event.</p>\n * <p><strong>Note:</strong> As well as the options described below, pass through attributes supported by\n * <a href=\"/presentation/dropdown\">NeonDropdown</a> to change the style of the dropdown button.</p>\n */\nexport default defineComponent({\n name: 'NeonDropdownMenu',\n components: {\n NeonDropdown,\n NeonIcon,\n NeonLink,\n },\n props: {\n /**\n * A list of menu items to render in the dropdown menu.\n */\n model: { type: Array as () => Array<NeonDropdownMenuItem>, required: true },\n /**\n * The size of the dropdown - Small, Medium or Large.\n */\n size: { type: String as () => NeonSize, default: NeonSize.Medium },\n /**\n * The dropdown color.\n */\n color: { type: String as () => NeonFunctionalColor, default: NeonFunctionalColor.LowContrast },\n /**\n * Whether the dropdown button is disabled or not.\n */\n disabled: { type: Boolean, default: false },\n /**\n * Placement of the dropdown contents.\n */\n placement: { type: String as () => NeonDropdownPlacement, default: NeonDropdownPlacement.BottomLeft },\n /**\n * Instead of opening on click (default), open on hover.\n */\n openOnHover: { type: Boolean, default: false },\n },\n emits: [\n /**\n * emitted when the user clicks on a menu item.\n * @type {NeonDropdownMenuItem} the menu item the user clicked on.\n */\n 'click',\n ],\n setup(props, { emit }) {\n const attrs = useAttrs();\n const dropdown = ref<InstanceType<typeof NeonDropdown> | null>(null);\n const dropdownPlacement = ref<NeonDropdownPlacement | null>(null);\n const items = ref<Array<HTMLLIElement>>([]);\n const open = ref(false);\n const highlightedKey = ref<string | null>(null);\n const highlightedIndex = ref(-1);\n\n const changeHighlighted = (key: string) => {\n highlightedKey.value = key;\n highlightedIndex.value = props.model.findIndex((item) => item.key === key);\n };\n\n const onPlacement = (placement: NeonDropdownPlacement) => {\n dropdownPlacement.value = placement;\n };\n\n const isReverse = () => {\n switch (dropdownPlacement.value) {\n case NeonDropdownPlacement.TopLeft:\n case NeonDropdownPlacement.TopRight:\n case NeonDropdownPlacement.LeftBottom:\n case NeonDropdownPlacement.RightBottom:\n return true;\n }\n\n return false;\n };\n\n const onNavigate = () => {\n const element: HTMLElement | null = dropdown.value?.dropdownContent?.querySelector(\n '.neon-dropdown-menu__item--highlighted',\n ) as HTMLElement;\n\n if (element) {\n element.focus();\n NeonScrollUtils.scrollIntoView(element);\n }\n };\n\n const navigateBy = (offset: number, $event: KeyboardEvent) => {\n const newIndex = highlightedIndex.value + offset;\n if (newIndex >= 0 && newIndex <= props.model.length - 1) {\n highlightedIndex.value = newIndex;\n highlightedKey.value = props.model[highlightedIndex.value].key;\n $event.preventDefault();\n setTimeout(onNavigate);\n }\n };\n\n const keyboardHandler = ($event: KeyboardEvent) => {\n if (!props.disabled) {\n if (open.value) {\n switch ($event.code) {\n case 'ArrowUp':\n case 'ArrowDown':\n {\n const reverseOffset = isReverse() ? -1 : 1;\n if ($event.code === 'ArrowUp') {\n navigateBy(-1 * reverseOffset, $event);\n } else {\n navigateBy(1 * reverseOffset, $event);\n }\n }\n break;\n case 'Enter':\n case 'Space':\n if (props.model[highlightedIndex.value] && !props.model[highlightedIndex.value].disabled) {\n clickItem(props.model[highlightedIndex.value]);\n $event.preventDefault();\n }\n break;\n case 'Tab':\n if (!$event.ctrlKey && !$event.metaKey && !$event.altKey) {\n open.value = false;\n }\n break;\n case 'Escape':\n open.value = false;\n break;\n }\n }\n }\n };\n\n const clickItem = (item: NeonDropdownMenuItem) => {\n if (!item.disabled) {\n if (item.href) {\n const anchor = items.value[highlightedIndex.value]?.firstElementChild as HTMLAnchorElement;\n anchor && anchor.click();\n } else {\n emit('click', item);\n }\n open.value = false;\n }\n };\n\n const onFocus = () => {\n if (props.openOnHover) {\n open.value = true;\n }\n };\n\n const onBlur = () => {\n if (props.openOnHover) {\n open.value = false;\n }\n };\n\n onMounted(() => {\n document.addEventListener('keydown', keyboardHandler);\n });\n\n onUnmounted(() => {\n document.removeEventListener('keydown', keyboardHandler);\n });\n\n watch(\n () => open.value,\n (open: boolean) => {\n if (open) {\n highlightedKey.value = props.model[0].key;\n highlightedIndex.value = 0;\n }\n },\n );\n\n return {\n dropdown,\n items,\n open,\n highlightedKey,\n highlightedIndex,\n attrs,\n emit,\n changeHighlighted,\n keyboardHandler,\n onBlur,\n onFocus,\n clickItem,\n navigateBy,\n onPlacement,\n NeonHorizontalPosition,\n };\n },\n});\n"],"names":["_sfc_main","defineComponent","NeonDropdown","NeonIcon","NeonLink","NeonSize","NeonFunctionalColor","NeonDropdownPlacement","props","emit","attrs","useAttrs","dropdown","ref","dropdownPlacement","items","open","highlightedKey","highlightedIndex","changeHighlighted","key","item","onPlacement","placement","isReverse","onNavigate","element","_b","_a","NeonScrollUtils","navigateBy","offset","$event","newIndex","keyboardHandler","reverseOffset","clickItem","anchor","onFocus","onBlur","onMounted","onUnmounted","watch","NeonHorizontalPosition"],"mappings":";;;;;;;;;AAiBA,MAAAA,IAAeC,EAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV,cAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,EAAA;AAAA,EAEF,OAAO;AAAA;AAAA;AAAA;AAAA,IAIL,OAAO,EAAE,MAAM,OAA4C,UAAU,GAAA;AAAA;AAAA;AAAA;AAAA,IAIrE,MAAM,EAAE,MAAM,QAA0B,SAASC,EAAS,OAAA;AAAA;AAAA;AAAA;AAAA,IAI1D,OAAO,EAAE,MAAM,QAAqC,SAASC,EAAoB,YAAA;AAAA;AAAA;AAAA;AAAA,IAIjF,UAAU,EAAE,MAAM,SAAS,SAAS,GAAA;AAAA;AAAA;AAAA;AAAA,IAIpC,WAAW,EAAE,MAAM,QAAuC,SAASC,EAAsB,WAAA;AAAA;AAAA;AAAA;AAAA,IAIzF,aAAa,EAAE,MAAM,SAAS,SAAS,GAAA;AAAA,EAAM;AAAA,EAE/C,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL;AAAA,EAAA;AAAA,EAEF,MAAMC,GAAO,EAAE,MAAAC,KAAQ;AACrB,UAAMC,IAAQC,EAAA,GACRC,IAAWC,EAA8C,IAAI,GAC7DC,IAAoBD,EAAkC,IAAI,GAC1DE,IAAQF,EAA0B,EAAE,GACpCG,IAAOH,EAAI,EAAK,GAChBI,IAAiBJ,EAAmB,IAAI,GACxCK,IAAmBL,EAAI,EAAE,GAEzBM,IAAoB,CAACC,MAAgB;AACzC,MAAAH,EAAe,QAAQG,GACvBF,EAAiB,QAAQV,EAAM,MAAM,UAAU,CAACa,MAASA,EAAK,QAAQD,CAAG;AAAA,IAC3E,GAEME,IAAc,CAACC,MAAqC;AACxD,MAAAT,EAAkB,QAAQS;AAAA,IAC5B,GAEMC,IAAY,MAAM;AACtB,cAAQV,EAAkB,OAAA;AAAA,QACxB,KAAKP,EAAsB;AAAA,QAC3B,KAAKA,EAAsB;AAAA,QAC3B,KAAKA,EAAsB;AAAA,QAC3B,KAAKA,EAAsB;AACzB,iBAAO;AAAA,MAAA;AAGX,aAAO;AAAA,IACT,GAEMkB,IAAa,MAAM;;AACvB,YAAMC,KAA8BC,KAAAC,IAAAhB,EAAS,UAAT,gBAAAgB,EAAgB,oBAAhB,gBAAAD,EAAiC;AAAA,QACnE;AAAA;AAGF,MAAID,MACFA,EAAQ,MAAA,GACRG,EAAgB,eAAeH,CAAO;AAAA,IAE1C,GAEMI,IAAa,CAACC,GAAgBC,MAA0B;AAC5D,YAAMC,IAAWf,EAAiB,QAAQa;AAC1C,MAAIE,KAAY,KAAKA,KAAYzB,EAAM,MAAM,SAAS,MACpDU,EAAiB,QAAQe,GACzBhB,EAAe,QAAQT,EAAM,MAAMU,EAAiB,KAAK,EAAE,KAC3Dc,EAAO,eAAA,GACP,WAAWP,CAAU;AAAA,IAEzB,GAEMS,IAAkB,CAACF,MAA0B;AACjD,UAAI,CAACxB,EAAM,YACLQ,EAAK;AACP,gBAAQgB,EAAO,MAAA;AAAA,UACb,KAAK;AAAA,UACL,KAAK;AACH;AACE,oBAAMG,IAAgBX,MAAc,KAAK;AACzC,cAAIQ,EAAO,SAAS,YAClBF,EAAW,KAAKK,GAAeH,CAAM,IAErCF,EAAW,IAAIK,GAAeH,CAAM;AAAA,YAExC;AACA;AAAA,UACF,KAAK;AAAA,UACL,KAAK;AACH,YAAIxB,EAAM,MAAMU,EAAiB,KAAK,KAAK,CAACV,EAAM,MAAMU,EAAiB,KAAK,EAAE,aAC9EkB,EAAU5B,EAAM,MAAMU,EAAiB,KAAK,CAAC,GAC7Cc,EAAO,eAAA;AAET;AAAA,UACF,KAAK;AACH,YAAI,CAACA,EAAO,WAAW,CAACA,EAAO,WAAW,CAACA,EAAO,WAChDhB,EAAK,QAAQ;AAEf;AAAA,UACF,KAAK;AACH,YAAAA,EAAK,QAAQ;AACb;AAAA,QAAA;AAAA,IAIV,GAEMoB,IAAY,CAACf,MAA+B;;AAChD,UAAI,CAACA,EAAK,UAAU;AAClB,YAAIA,EAAK,MAAM;AACb,gBAAMgB,KAAST,IAAAb,EAAM,MAAMG,EAAiB,KAAK,MAAlC,gBAAAU,EAAqC;AACpD,UAAAS,KAAUA,EAAO,MAAA;AAAA,QACnB;AACE,UAAA5B,EAAK,SAASY,CAAI;AAEpB,QAAAL,EAAK,QAAQ;AAAA,MACf;AAAA,IACF,GAEMsB,IAAU,MAAM;AACpB,MAAI9B,EAAM,gBACRQ,EAAK,QAAQ;AAAA,IAEjB,GAEMuB,IAAS,MAAM;AACnB,MAAI/B,EAAM,gBACRQ,EAAK,QAAQ;AAAA,IAEjB;AAEA,WAAAwB,EAAU,MAAM;AACd,eAAS,iBAAiB,WAAWN,CAAe;AAAA,IACtD,CAAC,GAEDO,EAAY,MAAM;AAChB,eAAS,oBAAoB,WAAWP,CAAe;AAAA,IACzD,CAAC,GAEDQ;AAAA,MACE,MAAM1B,EAAK;AAAA,MACX,CAACA,MAAkB;AACjB,QAAIA,MACFC,EAAe,QAAQT,EAAM,MAAM,CAAC,EAAE,KACtCU,EAAiB,QAAQ;AAAA,MAE7B;AAAA,IAAA,GAGK;AAAA,MACL,UAAAN;AAAA,MACA,OAAAG;AAAA,MACA,MAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,OAAAR;AAAA,MACA,MAAAD;AAAA,MACA,mBAAAU;AAAA,MACA,iBAAAe;AAAA,MACA,QAAAK;AAAA,MACA,SAAAD;AAAA,MACA,WAAAF;AAAA,MACA,YAAAN;AAAA,MACA,aAAAR;AAAA,MACA,wBAAAqB;AAAA,IAAA;AAAA,EAEJ;AACF,CAAC;"}
@@ -1,2 +1,2 @@
1
- "use strict";const a=require("./NeonDropdownMenu.cjs.js"),e=require("vue"),p=require("../../../_virtual/_plugin-vue_export-helper.cjs.js"),i={class:"no-style neon-dropdown-menu__items",role:"menu"},c=["onMouseover"],u={key:0,class:"neon-dropdown-menu__item-container"},m={class:"neon-dropdown-menu__item-label"},_={class:"neon-dropdown-menu__item-label"},k=["onClick"],w={class:"neon-dropdown-menu__item-label"};function b(n,l,y,g,v,h){const r=e.resolveComponent("neon-icon"),d=e.resolveComponent("neon-link"),s=e.resolveComponent("neon-dropdown");return e.openBlock(),e.createBlock(s,e.mergeProps({ref:"dropdown",modelValue:n.open,"onUpdate:modelValue":l[0]||(l[0]=o=>n.open=o),class:[`neon-dropdown-menu--${n.color}`,"neon-dropdown-menu"],color:n.color,disabled:n.disabled,openOnHover:n.openOnHover,placement:n.placement,size:n.size},n.attrs,{onBlur:l[1]||(l[1]=o=>n.onBlur()),onFocus:l[2]||(l[2]=o=>n.onFocus()),"onUpdate:modelValue":l[3]||(l[3]=o=>n.open=o),onDropdownPlacement:n.onPlacement}),{default:e.withCtx(()=>[e.createElementVNode("ul",i,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.model,o=>(e.openBlock(),e.createElementBlock("li",{key:o.key,ref_for:!0,ref:"items",class:e.normalizeClass([[{"neon-dropdown-menu__item--disabled":o.disabled,"neon-dropdown-menu__item--separator-before":o.separatorBefore,"neon-dropdown-menu__item--group-title":o.isGroup,"neon-dropdown-menu__item--grouped":o.grouped,"neon-dropdown-menu__item--highlighted":o.key===n.highlightedKey},`neon-dropdown-menu__item--${n.size}`],"neon-dropdown-menu__item"]),tabindex:"0",onMouseover:t=>n.changeHighlighted(o.key)},[o.isGroup?(e.openBlock(),e.createElementBlock("div",u,[o.icon?(e.openBlock(),e.createBlock(r,{key:0,disabled:o.disabled,name:o.icon,class:"neon-dropdown-menu__item-icon"},null,8,["disabled","name"])):e.createCommentVNode("",!0),e.createElementVNode("span",m,e.toDisplayString(o.label),1)])):o.href&&!o.disabled?(e.openBlock(),e.createBlock(d,{key:1,href:o.href,"no-style":!0,"outline-style":"none",role:"menuitem"},{default:e.withCtx(()=>[o.icon?(e.openBlock(),e.createBlock(r,{key:0,disabled:o.disabled,name:o.icon,class:"neon-dropdown-menu__item-icon"},null,8,["disabled","name"])):e.createCommentVNode("",!0),e.createElementVNode("span",_,e.toDisplayString(o.label),1)]),_:2},1032,["href"])):(e.openBlock(),e.createElementBlock("div",{key:2,class:"neon-dropdown-menu__item-container",role:"menuitem",onClick:t=>n.clickItem(o)},[o.icon?(e.openBlock(),e.createBlock(r,{key:0,disabled:o.disabled,name:o.icon,class:"neon-dropdown-menu__item-icon"},null,8,["disabled","name"])):e.createCommentVNode("",!0),e.createElementVNode("span",w,e.toDisplayString(o.label),1)],8,k))],42,c))),128))])]),_:1},16,["modelValue","class","color","disabled","openOnHover","placement","size","onDropdownPlacement"])}const B=p(a,[["render",b]]);module.exports=B;
1
+ "use strict";const a=require("./NeonDropdownMenu.cjs.js"),e=require("vue"),i=require("../../../_virtual/_plugin-vue_export-helper.cjs.js"),p={class:"no-style neon-dropdown-menu__items",role:"menu"},c=["onMouseover"],u={key:0,class:"neon-dropdown-menu__item-container"},m={class:"neon-dropdown-menu__item-label"},_={class:"neon-dropdown-menu__item-label"},k=["onClick"],w={class:"neon-dropdown-menu__item-label"};function b(n,l,g,y,h,v){const r=e.resolveComponent("neon-icon"),d=e.resolveComponent("neon-link"),s=e.resolveComponent("neon-dropdown");return e.openBlock(),e.createBlock(s,e.mergeProps({ref:"dropdown",modelValue:n.open,"onUpdate:modelValue":l[0]||(l[0]=o=>n.open=o),class:[`neon-dropdown-menu--${n.color}`,"neon-dropdown-menu"],color:n.color,disabled:n.disabled,openOnHover:n.openOnHover,placement:n.placement,size:n.size},n.attrs,{onBlur:l[1]||(l[1]=o=>n.onBlur()),onFocus:l[2]||(l[2]=o=>n.onFocus()),"onUpdate:modelValue":l[3]||(l[3]=o=>n.open=o),onDropdownPlacement:n.onPlacement}),{default:e.withCtx(()=>[e.createElementVNode("ul",p,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.model,o=>(e.openBlock(),e.createElementBlock("li",{key:o.key,ref_for:!0,ref:"items",class:e.normalizeClass([[{"neon-dropdown-menu__item--disabled":o.disabled,"neon-dropdown-menu__item--separator-before":o.separatorBefore,"neon-dropdown-menu__item--group-title":o.isGroup,"neon-dropdown-menu__item--grouped":o.grouped,"neon-dropdown-menu__item--highlighted":o.key===n.highlightedKey,"neon-dropdown-menu__item--icon-right":o.icon&&o.iconPosition===n.NeonHorizontalPosition.Right},`neon-dropdown-menu__item--${n.size}`],"neon-dropdown-menu__item"]),tabindex:"0",onMouseover:t=>n.changeHighlighted(o.key)},[o.isGroup?(e.openBlock(),e.createElementBlock("div",u,[o.icon?(e.openBlock(),e.createBlock(r,{key:0,disabled:o.disabled,name:o.icon,class:"neon-dropdown-menu__item-icon"},null,8,["disabled","name"])):e.createCommentVNode("",!0),e.createElementVNode("span",m,e.toDisplayString(o.label),1)])):o.href&&!o.disabled?(e.openBlock(),e.createBlock(d,{key:1,href:o.href,"no-style":!0,"outline-style":"none",role:"menuitem"},{default:e.withCtx(()=>[o.icon?(e.openBlock(),e.createBlock(r,{key:0,disabled:o.disabled,name:o.icon,class:"neon-dropdown-menu__item-icon"},null,8,["disabled","name"])):e.createCommentVNode("",!0),e.createElementVNode("span",_,e.toDisplayString(o.label),1)]),_:2},1032,["href"])):(e.openBlock(),e.createElementBlock("div",{key:2,class:"neon-dropdown-menu__item-container",role:"menuitem",onClick:t=>n.clickItem(o)},[o.icon?(e.openBlock(),e.createBlock(r,{key:0,disabled:o.disabled,name:o.icon,class:"neon-dropdown-menu__item-icon"},null,8,["disabled","name"])):e.createCommentVNode("",!0),e.createElementVNode("span",w,e.toDisplayString(o.label),1)],8,k))],42,c))),128))])]),_:1},16,["modelValue","class","color","disabled","openOnHover","placement","size","onDropdownPlacement"])}const B=i(a,[["render",b]]);module.exports=B;
2
2
  //# sourceMappingURL=NeonDropdownMenu.vue.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NeonDropdownMenu.vue.cjs.js","sources":["../../../../src/components/navigation/dropdown-menu/NeonDropdownMenu.vue"],"sourcesContent":["<template>\n <neon-dropdown\n ref=\"dropdown\"\n v-model=\"open\"\n :class=\"`neon-dropdown-menu--${color}`\"\n :color=\"color\"\n :disabled=\"disabled\"\n :openOnHover=\"openOnHover\"\n :placement=\"placement\"\n :size=\"size\"\n class=\"neon-dropdown-menu\"\n v-bind=\"attrs\"\n @blur=\"onBlur()\"\n @focus=\"onFocus()\"\n @update:modelValue=\"open = $event\"\n @dropdown-placement=\"onPlacement\"\n >\n <ul class=\"no-style neon-dropdown-menu__items\" role=\"menu\">\n <li\n v-for=\"item in model\"\n :key=\"item.key\"\n ref=\"items\"\n :class=\"[\n {\n 'neon-dropdown-menu__item--disabled': item.disabled,\n 'neon-dropdown-menu__item--separator-before': item.separatorBefore,\n 'neon-dropdown-menu__item--group-title': item.isGroup,\n 'neon-dropdown-menu__item--grouped': item.grouped,\n 'neon-dropdown-menu__item--highlighted': item.key === highlightedKey,\n },\n `neon-dropdown-menu__item--${size}`,\n ]\"\n class=\"neon-dropdown-menu__item\"\n tabindex=\"0\"\n @mouseover=\"changeHighlighted(item.key)\"\n >\n <div v-if=\"item.isGroup\" class=\"neon-dropdown-menu__item-container\">\n <neon-icon\n v-if=\"item.icon\"\n :disabled=\"item.disabled\"\n :name=\"item.icon\"\n class=\"neon-dropdown-menu__item-icon\"\n />\n <span class=\"neon-dropdown-menu__item-label\">{{ item.label }}</span>\n </div>\n <neon-link\n v-else-if=\"item.href && !item.disabled\"\n :href=\"item.href\"\n :no-style=\"true\"\n outline-style=\"none\"\n role=\"menuitem\"\n >\n <neon-icon\n v-if=\"item.icon\"\n :disabled=\"item.disabled\"\n :name=\"item.icon\"\n class=\"neon-dropdown-menu__item-icon\"\n />\n <span class=\"neon-dropdown-menu__item-label\">{{ item.label }}</span>\n </neon-link>\n <div v-else class=\"neon-dropdown-menu__item-container\" role=\"menuitem\" @click=\"clickItem(item)\">\n <neon-icon\n v-if=\"item.icon\"\n :disabled=\"item.disabled\"\n :name=\"item.icon\"\n class=\"neon-dropdown-menu__item-icon\"\n />\n <span class=\"neon-dropdown-menu__item-label\">{{ item.label }}</span>\n </div>\n </li>\n </ul>\n </neon-dropdown>\n</template>\n\n<script lang=\"ts\" src=\"./NeonDropdownMenu.ts\"></script>\n"],"names":["_hoisted_4","_hoisted_5","_hoisted_7","_openBlock","_createBlock","_component_neon_dropdown","_mergeProps","_ctx","$event","_cache","_createElementVNode","_hoisted_1","_createElementBlock","_Fragment","_renderList","item","_normalizeClass","_hoisted_3","_component_neon_icon","_toDisplayString","_component_neon_link"],"mappings":"8IAiBQ,MAAM,qCAAqC,KAAK,mCAmBvB,MAAM,sCAOvBA,EAAA,CAAA,MAAM,gCAAgC,EAetCC,EAAA,CAAA,MAAM,gCAAgC,gBAStCC,EAAA,CAAA,MAAM,gCAAgC,0IAlEpD,OAAAC,YAAA,EAAAC,cAsEgBC,EAtEhBC,EAAAA,WAsEgB,CArEd,IAAI,sBACKC,EAAA,0CAAAA,EAAA,KAAIC,GACZ,MAAK,CAAA,uBAAyBD,EAAA,KAAK,GAM9B,oBAAoB,EALzB,MAAOA,EAAA,MACP,SAAUA,EAAA,SACV,YAAaA,EAAA,YACb,UAAWA,EAAA,UACX,KAAMA,EAAA,MAECA,EAAA,MAAK,CACZ,sBAAMA,EAAA,OAAM,GACZ,uBAAOA,EAAA,QAAO,GACd,sBAAiBE,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAD,GAAED,EAAA,KAAOC,GAC1B,oBAAoBD,EAAA,iCAErB,IAqDK,CArDLG,EAAAA,mBAqDK,KArDLC,EAqDK,kBApDHC,EAAAA,mBAmDKC,EAAAA,SAAA,KAAAC,EAAAA,WAlDYP,EAAA,MAARQ,kBADTH,EAAAA,mBAmDK,KAAA,CAjDF,IAAKG,EAAK,eACX,IAAI,QACH,MAAKC,EAAAA,eAAA,CAAA,EAAkE,qCAAAD,EAAK,SAAoE,6CAAAA,EAAK,gBAAsE,wCAAAA,EAAK,QAA0D,oCAAAA,EAAK,gDAA8DA,EAAK,MAAQR,EAAA,6CAAoEA,EAAA,IAAI,IAU7a,0BAA0B,CAAA,EAChC,SAAS,IACR,YAASC,GAAED,EAAA,kBAAkBQ,EAAK,GAAG,IAE3BA,EAAK,SAAhBZ,EAAAA,YAAAS,EAAAA,mBAQM,MARNK,EAQM,CANIF,EAAK,oBADbX,EAAAA,YAKEc,EAAA,OAHC,SAAUH,EAAK,SACf,KAAMA,EAAK,KACZ,MAAM,0FAERL,EAAAA,mBAAoE,OAApEV,EAAoEmB,EAAAA,gBAApBJ,EAAK,KAAK,EAAA,CAAA,KAG/CA,EAAK,MAAI,CAAKA,EAAK,wBADhCX,EAAAA,YAcYgB,EAAA,OAZT,KAAML,EAAK,KACX,WAAU,GACX,gBAAc,OACd,KAAK,+BAEL,IAKE,CAJMA,EAAK,oBADbX,EAAAA,YAKEc,EAAA,OAHC,SAAUH,EAAK,SACf,KAAMA,EAAK,KACZ,MAAM,0FAERL,EAAAA,mBAAoE,OAApET,EAAoEkB,EAAAA,gBAApBJ,EAAK,KAAK,EAAA,CAAA,wCAE5DH,EAAAA,mBAQM,MAAA,OARM,MAAM,qCAAqC,KAAK,WAAY,QAAKJ,GAAED,EAAA,UAAUQ,CAAI,IAEnFA,EAAK,oBADbX,EAAAA,YAKEc,EAAA,OAHC,SAAUH,EAAK,SACf,KAAMA,EAAK,KACZ,MAAM,0FAERL,EAAAA,mBAAoE,OAApER,EAAoEiB,EAAAA,gBAApBJ,EAAK,KAAK,EAAA,CAAA"}
1
+ {"version":3,"file":"NeonDropdownMenu.vue.cjs.js","sources":["../../../../src/components/navigation/dropdown-menu/NeonDropdownMenu.vue"],"sourcesContent":["<template>\n <neon-dropdown\n ref=\"dropdown\"\n v-model=\"open\"\n :class=\"`neon-dropdown-menu--${color}`\"\n :color=\"color\"\n :disabled=\"disabled\"\n :openOnHover=\"openOnHover\"\n :placement=\"placement\"\n :size=\"size\"\n class=\"neon-dropdown-menu\"\n v-bind=\"attrs\"\n @blur=\"onBlur()\"\n @focus=\"onFocus()\"\n @update:modelValue=\"open = $event\"\n @dropdown-placement=\"onPlacement\"\n >\n <ul class=\"no-style neon-dropdown-menu__items\" role=\"menu\">\n <li\n v-for=\"item in model\"\n :key=\"item.key\"\n ref=\"items\"\n :class=\"[\n {\n 'neon-dropdown-menu__item--disabled': item.disabled,\n 'neon-dropdown-menu__item--separator-before': item.separatorBefore,\n 'neon-dropdown-menu__item--group-title': item.isGroup,\n 'neon-dropdown-menu__item--grouped': item.grouped,\n 'neon-dropdown-menu__item--highlighted': item.key === highlightedKey,\n 'neon-dropdown-menu__item--icon-right': item.icon && item.iconPosition === NeonHorizontalPosition.Right,\n },\n `neon-dropdown-menu__item--${size}`,\n ]\"\n class=\"neon-dropdown-menu__item\"\n tabindex=\"0\"\n @mouseover=\"changeHighlighted(item.key)\"\n >\n <div v-if=\"item.isGroup\" class=\"neon-dropdown-menu__item-container\">\n <neon-icon\n v-if=\"item.icon\"\n :disabled=\"item.disabled\"\n :name=\"item.icon\"\n class=\"neon-dropdown-menu__item-icon\"\n />\n <span class=\"neon-dropdown-menu__item-label\">{{ item.label }}</span>\n </div>\n <neon-link\n v-else-if=\"item.href && !item.disabled\"\n :href=\"item.href\"\n :no-style=\"true\"\n outline-style=\"none\"\n role=\"menuitem\"\n >\n <neon-icon\n v-if=\"item.icon\"\n :disabled=\"item.disabled\"\n :name=\"item.icon\"\n class=\"neon-dropdown-menu__item-icon\"\n />\n <span class=\"neon-dropdown-menu__item-label\">{{ item.label }}</span>\n </neon-link>\n <div v-else class=\"neon-dropdown-menu__item-container\" role=\"menuitem\" @click=\"clickItem(item)\">\n <neon-icon\n v-if=\"item.icon\"\n :disabled=\"item.disabled\"\n :name=\"item.icon\"\n class=\"neon-dropdown-menu__item-icon\"\n />\n <span class=\"neon-dropdown-menu__item-label\">{{ item.label }}</span>\n </div>\n </li>\n </ul>\n </neon-dropdown>\n</template>\n\n<script lang=\"ts\" src=\"./NeonDropdownMenu.ts\"></script>\n"],"names":["_hoisted_4","_hoisted_5","_hoisted_7","_openBlock","_createBlock","_component_neon_dropdown","_mergeProps","_ctx","$event","_cache","_createElementVNode","_hoisted_1","_createElementBlock","_Fragment","_renderList","item","_normalizeClass","_hoisted_3","_component_neon_icon","_toDisplayString","_component_neon_link"],"mappings":"8IAiBQ,MAAM,qCAAqC,KAAK,mCAoBvB,MAAM,sCAOvBA,EAAA,CAAA,MAAM,gCAAgC,EAetCC,EAAA,CAAA,MAAM,gCAAgC,gBAStCC,EAAA,CAAA,MAAM,gCAAgC,0IAnEpD,OAAAC,YAAA,EAAAC,cAuEgBC,EAvEhBC,EAAAA,WAuEgB,CAtEd,IAAI,sBACKC,EAAA,0CAAAA,EAAA,KAAIC,GACZ,MAAK,CAAA,uBAAyBD,EAAA,KAAK,GAM9B,oBAAoB,EALzB,MAAOA,EAAA,MACP,SAAUA,EAAA,SACV,YAAaA,EAAA,YACb,UAAWA,EAAA,UACX,KAAMA,EAAA,MAECA,EAAA,MAAK,CACZ,sBAAMA,EAAA,OAAM,GACZ,uBAAOA,EAAA,QAAO,GACd,sBAAiBE,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAD,GAAED,EAAA,KAAOC,GAC1B,oBAAoBD,EAAA,iCAErB,IAsDK,CAtDLG,EAAAA,mBAsDK,KAtDLC,EAsDK,kBArDHC,EAAAA,mBAoDKC,EAAAA,SAAA,KAAAC,EAAAA,WAnDYP,EAAA,MAARQ,kBADTH,EAAAA,mBAoDK,KAAA,CAlDF,IAAKG,EAAK,eACX,IAAI,QACH,MAAKC,EAAAA,eAAA,CAAA,EAAkE,qCAAAD,EAAK,SAAoE,6CAAAA,EAAK,gBAAsE,wCAAAA,EAAK,QAA0D,oCAAAA,EAAK,gDAA8DA,EAAK,MAAQR,EAAA,sDAAoEQ,EAAK,MAAQA,EAAK,eAAiBR,EAAA,uBAAuB,oCAA2DA,EAAA,IAAI,IAWliB,0BAA0B,CAAA,EAChC,SAAS,IACR,YAASC,GAAED,EAAA,kBAAkBQ,EAAK,GAAG,IAE3BA,EAAK,SAAhBZ,EAAAA,YAAAS,EAAAA,mBAQM,MARNK,EAQM,CANIF,EAAK,oBADbX,EAAAA,YAKEc,EAAA,OAHC,SAAUH,EAAK,SACf,KAAMA,EAAK,KACZ,MAAM,0FAERL,EAAAA,mBAAoE,OAApEV,EAAoEmB,EAAAA,gBAApBJ,EAAK,KAAK,EAAA,CAAA,KAG/CA,EAAK,MAAI,CAAKA,EAAK,wBADhCX,EAAAA,YAcYgB,EAAA,OAZT,KAAML,EAAK,KACX,WAAU,GACX,gBAAc,OACd,KAAK,+BAEL,IAKE,CAJMA,EAAK,oBADbX,EAAAA,YAKEc,EAAA,OAHC,SAAUH,EAAK,SACf,KAAMA,EAAK,KACZ,MAAM,0FAERL,EAAAA,mBAAoE,OAApET,EAAoEkB,EAAAA,gBAApBJ,EAAK,KAAK,EAAA,CAAA,wCAE5DH,EAAAA,mBAQM,MAAA,OARM,MAAM,qCAAqC,KAAK,WAAY,QAAKJ,GAAED,EAAA,UAAUQ,CAAI,IAEnFA,EAAK,oBADbX,EAAAA,YAKEc,EAAA,OAHC,SAAUH,EAAK,SACf,KAAMA,EAAK,KACZ,MAAM,0FAERL,EAAAA,mBAAoE,OAApER,EAAoEiB,EAAAA,gBAApBJ,EAAK,KAAK,EAAA,CAAA"}
@@ -1,96 +1,97 @@
1
1
  import w from "./NeonDropdownMenu.es.js";
2
- import { resolveComponent as i, openBlock as o, createBlock as l, mergeProps as b, withCtx as u, createElementVNode as r, createElementBlock as s, Fragment as f, renderList as k, normalizeClass as y, createCommentVNode as t, toDisplayString as p } from "vue";
3
- import h from "../../../_virtual/_plugin-vue_export-helper.es.js";
4
- const g = {
2
+ import { resolveComponent as a, openBlock as o, createBlock as l, mergeProps as b, withCtx as u, createElementVNode as r, createElementBlock as s, Fragment as f, renderList as k, normalizeClass as h, createCommentVNode as t, toDisplayString as p } from "vue";
3
+ import g from "../../../_virtual/_plugin-vue_export-helper.es.js";
4
+ const y = {
5
5
  class: "no-style neon-dropdown-menu__items",
6
6
  role: "menu"
7
7
  }, v = ["onMouseover"], $ = {
8
8
  key: 0,
9
9
  class: "neon-dropdown-menu__item-container"
10
- }, B = { class: "neon-dropdown-menu__item-label" }, C = { class: "neon-dropdown-menu__item-label" }, V = ["onClick"], z = { class: "neon-dropdown-menu__item-label" };
11
- function D(n, d, H, P, F, M) {
12
- const a = i("neon-icon"), m = i("neon-link"), _ = i("neon-dropdown");
10
+ }, z = { class: "neon-dropdown-menu__item-label" }, B = { class: "neon-dropdown-menu__item-label" }, C = ["onClick"], P = { class: "neon-dropdown-menu__item-label" };
11
+ function V(e, d, H, D, N, F) {
12
+ const i = a("neon-icon"), m = a("neon-link"), _ = a("neon-dropdown");
13
13
  return o(), l(_, b({
14
14
  ref: "dropdown",
15
- modelValue: n.open,
16
- "onUpdate:modelValue": d[0] || (d[0] = (e) => n.open = e),
17
- class: [`neon-dropdown-menu--${n.color}`, "neon-dropdown-menu"],
18
- color: n.color,
19
- disabled: n.disabled,
20
- openOnHover: n.openOnHover,
21
- placement: n.placement,
22
- size: n.size
23
- }, n.attrs, {
24
- onBlur: d[1] || (d[1] = (e) => n.onBlur()),
25
- onFocus: d[2] || (d[2] = (e) => n.onFocus()),
26
- "onUpdate:modelValue": d[3] || (d[3] = (e) => n.open = e),
27
- onDropdownPlacement: n.onPlacement
15
+ modelValue: e.open,
16
+ "onUpdate:modelValue": d[0] || (d[0] = (n) => e.open = n),
17
+ class: [`neon-dropdown-menu--${e.color}`, "neon-dropdown-menu"],
18
+ color: e.color,
19
+ disabled: e.disabled,
20
+ openOnHover: e.openOnHover,
21
+ placement: e.placement,
22
+ size: e.size
23
+ }, e.attrs, {
24
+ onBlur: d[1] || (d[1] = (n) => e.onBlur()),
25
+ onFocus: d[2] || (d[2] = (n) => e.onFocus()),
26
+ "onUpdate:modelValue": d[3] || (d[3] = (n) => e.open = n),
27
+ onDropdownPlacement: e.onPlacement
28
28
  }), {
29
29
  default: u(() => [
30
- r("ul", g, [
31
- (o(!0), s(f, null, k(n.model, (e) => (o(), s("li", {
32
- key: e.key,
30
+ r("ul", y, [
31
+ (o(!0), s(f, null, k(e.model, (n) => (o(), s("li", {
32
+ key: n.key,
33
33
  ref_for: !0,
34
34
  ref: "items",
35
- class: y([[
35
+ class: h([[
36
36
  {
37
- "neon-dropdown-menu__item--disabled": e.disabled,
38
- "neon-dropdown-menu__item--separator-before": e.separatorBefore,
39
- "neon-dropdown-menu__item--group-title": e.isGroup,
40
- "neon-dropdown-menu__item--grouped": e.grouped,
41
- "neon-dropdown-menu__item--highlighted": e.key === n.highlightedKey
37
+ "neon-dropdown-menu__item--disabled": n.disabled,
38
+ "neon-dropdown-menu__item--separator-before": n.separatorBefore,
39
+ "neon-dropdown-menu__item--group-title": n.isGroup,
40
+ "neon-dropdown-menu__item--grouped": n.grouped,
41
+ "neon-dropdown-menu__item--highlighted": n.key === e.highlightedKey,
42
+ "neon-dropdown-menu__item--icon-right": n.icon && n.iconPosition === e.NeonHorizontalPosition.Right
42
43
  },
43
- `neon-dropdown-menu__item--${n.size}`
44
+ `neon-dropdown-menu__item--${e.size}`
44
45
  ], "neon-dropdown-menu__item"]),
45
46
  tabindex: "0",
46
- onMouseover: (c) => n.changeHighlighted(e.key)
47
+ onMouseover: (c) => e.changeHighlighted(n.key)
47
48
  }, [
48
- e.isGroup ? (o(), s("div", $, [
49
- e.icon ? (o(), l(a, {
49
+ n.isGroup ? (o(), s("div", $, [
50
+ n.icon ? (o(), l(i, {
50
51
  key: 0,
51
- disabled: e.disabled,
52
- name: e.icon,
52
+ disabled: n.disabled,
53
+ name: n.icon,
53
54
  class: "neon-dropdown-menu__item-icon"
54
55
  }, null, 8, ["disabled", "name"])) : t("", !0),
55
- r("span", B, p(e.label), 1)
56
- ])) : e.href && !e.disabled ? (o(), l(m, {
56
+ r("span", z, p(n.label), 1)
57
+ ])) : n.href && !n.disabled ? (o(), l(m, {
57
58
  key: 1,
58
- href: e.href,
59
+ href: n.href,
59
60
  "no-style": !0,
60
61
  "outline-style": "none",
61
62
  role: "menuitem"
62
63
  }, {
63
64
  default: u(() => [
64
- e.icon ? (o(), l(a, {
65
+ n.icon ? (o(), l(i, {
65
66
  key: 0,
66
- disabled: e.disabled,
67
- name: e.icon,
67
+ disabled: n.disabled,
68
+ name: n.icon,
68
69
  class: "neon-dropdown-menu__item-icon"
69
70
  }, null, 8, ["disabled", "name"])) : t("", !0),
70
- r("span", C, p(e.label), 1)
71
+ r("span", B, p(n.label), 1)
71
72
  ]),
72
73
  _: 2
73
74
  }, 1032, ["href"])) : (o(), s("div", {
74
75
  key: 2,
75
76
  class: "neon-dropdown-menu__item-container",
76
77
  role: "menuitem",
77
- onClick: (c) => n.clickItem(e)
78
+ onClick: (c) => e.clickItem(n)
78
79
  }, [
79
- e.icon ? (o(), l(a, {
80
+ n.icon ? (o(), l(i, {
80
81
  key: 0,
81
- disabled: e.disabled,
82
- name: e.icon,
82
+ disabled: n.disabled,
83
+ name: n.icon,
83
84
  class: "neon-dropdown-menu__item-icon"
84
85
  }, null, 8, ["disabled", "name"])) : t("", !0),
85
- r("span", z, p(e.label), 1)
86
- ], 8, V))
86
+ r("span", P, p(n.label), 1)
87
+ ], 8, C))
87
88
  ], 42, v))), 128))
88
89
  ])
89
90
  ]),
90
91
  _: 1
91
92
  }, 16, ["modelValue", "class", "color", "disabled", "openOnHover", "placement", "size", "onDropdownPlacement"]);
92
93
  }
93
- const G = /* @__PURE__ */ h(w, [["render", D]]);
94
+ const G = /* @__PURE__ */ g(w, [["render", V]]);
94
95
  export {
95
96
  G as default
96
97
  };
@@ -1 +1 @@
1
- {"version":3,"file":"NeonDropdownMenu.vue.es.js","sources":["../../../../src/components/navigation/dropdown-menu/NeonDropdownMenu.vue"],"sourcesContent":["<template>\n <neon-dropdown\n ref=\"dropdown\"\n v-model=\"open\"\n :class=\"`neon-dropdown-menu--${color}`\"\n :color=\"color\"\n :disabled=\"disabled\"\n :openOnHover=\"openOnHover\"\n :placement=\"placement\"\n :size=\"size\"\n class=\"neon-dropdown-menu\"\n v-bind=\"attrs\"\n @blur=\"onBlur()\"\n @focus=\"onFocus()\"\n @update:modelValue=\"open = $event\"\n @dropdown-placement=\"onPlacement\"\n >\n <ul class=\"no-style neon-dropdown-menu__items\" role=\"menu\">\n <li\n v-for=\"item in model\"\n :key=\"item.key\"\n ref=\"items\"\n :class=\"[\n {\n 'neon-dropdown-menu__item--disabled': item.disabled,\n 'neon-dropdown-menu__item--separator-before': item.separatorBefore,\n 'neon-dropdown-menu__item--group-title': item.isGroup,\n 'neon-dropdown-menu__item--grouped': item.grouped,\n 'neon-dropdown-menu__item--highlighted': item.key === highlightedKey,\n },\n `neon-dropdown-menu__item--${size}`,\n ]\"\n class=\"neon-dropdown-menu__item\"\n tabindex=\"0\"\n @mouseover=\"changeHighlighted(item.key)\"\n >\n <div v-if=\"item.isGroup\" class=\"neon-dropdown-menu__item-container\">\n <neon-icon\n v-if=\"item.icon\"\n :disabled=\"item.disabled\"\n :name=\"item.icon\"\n class=\"neon-dropdown-menu__item-icon\"\n />\n <span class=\"neon-dropdown-menu__item-label\">{{ item.label }}</span>\n </div>\n <neon-link\n v-else-if=\"item.href && !item.disabled\"\n :href=\"item.href\"\n :no-style=\"true\"\n outline-style=\"none\"\n role=\"menuitem\"\n >\n <neon-icon\n v-if=\"item.icon\"\n :disabled=\"item.disabled\"\n :name=\"item.icon\"\n class=\"neon-dropdown-menu__item-icon\"\n />\n <span class=\"neon-dropdown-menu__item-label\">{{ item.label }}</span>\n </neon-link>\n <div v-else class=\"neon-dropdown-menu__item-container\" role=\"menuitem\" @click=\"clickItem(item)\">\n <neon-icon\n v-if=\"item.icon\"\n :disabled=\"item.disabled\"\n :name=\"item.icon\"\n class=\"neon-dropdown-menu__item-icon\"\n />\n <span class=\"neon-dropdown-menu__item-label\">{{ item.label }}</span>\n </div>\n </li>\n </ul>\n </neon-dropdown>\n</template>\n\n<script lang=\"ts\" src=\"./NeonDropdownMenu.ts\"></script>\n"],"names":["_hoisted_4","_hoisted_5","_hoisted_7","_openBlock","_createBlock","_component_neon_dropdown","_mergeProps","_ctx","$event","_cache","_createElementVNode","_hoisted_1","_createElementBlock","_Fragment","_renderList","item","_normalizeClass","_hoisted_3","_component_neon_icon","_toDisplayString","_component_neon_link"],"mappings":";;;;EAiBQ,OAAM;AAAA,EAAqC,MAAK;;;EAmBvB,OAAM;GAOvBA,IAAA,EAAA,OAAM,iCAAgC,GAetCC,IAAA,EAAA,OAAM,iCAAgC,oBAStCC,IAAA,EAAA,OAAM,iCAAgC;;;AAlEpD,SAAAC,EAAA,GAAAC,EAsEgBC,GAtEhBC,EAsEgB;AAAA,IArEd,KAAI;AAAA,gBACKC,EAAA;AAAA,kDAAAA,EAAA,OAAIC;AAAA,IACZ,OAAK,CAAA,uBAAyBD,EAAA,KAAK,IAM9B,oBAAoB;AAAA,IALzB,OAAOA,EAAA;AAAA,IACP,UAAUA,EAAA;AAAA,IACV,aAAaA,EAAA;AAAA,IACb,WAAWA,EAAA;AAAA,IACX,MAAMA,EAAA;AAAA,KAECA,EAAA,OAAK;AAAA,IACZ,+BAAMA,EAAA,OAAM;AAAA,IACZ,gCAAOA,EAAA,QAAO;AAAA,IACd,uBAAiBE,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAD,MAAED,EAAA,OAAOC;AAAA,IAC1B,qBAAoBD,EAAA;AAAA;eAErB,MAqDK;AAAA,MArDLG,EAqDK,MArDLC,GAqDK;AAAA,gBApDHC,EAmDKC,GAAA,MAAAC,EAlDYP,EAAA,OAAK,CAAbQ,YADTH,EAmDK,MAAA;AAAA,UAjDF,KAAKG,EAAK;AAAA;UACX,KAAI;AAAA,UACH,OAAKC,EAAA,CAAA;AAAA;cAAkE,sCAAAD,EAAK;AAAA,cAAoE,8CAAAA,EAAK;AAAA,cAAsE,yCAAAA,EAAK;AAAA,cAA0D,qCAAAA,EAAK;AAAA,uDAA8DA,EAAK,QAAQR,EAAA;AAAA;yCAAoEA,EAAA,IAAI;AAAA,aAU7a,0BAA0B,CAAA;AAAA,UAChC,UAAS;AAAA,UACR,aAAS,CAAAC,MAAED,EAAA,kBAAkBQ,EAAK,GAAG;AAAA;UAE3BA,EAAK,WAAhBZ,KAAAS,EAQM,OARNK,GAQM;AAAA,YANIF,EAAK,aADbX,EAKEc,GAAA;AAAA;cAHC,UAAUH,EAAK;AAAA,cACf,MAAMA,EAAK;AAAA,cACZ,OAAM;AAAA;YAERL,EAAoE,QAApEV,GAAoEmB,EAApBJ,EAAK,KAAK,GAAA,CAAA;AAAA,gBAG/CA,EAAK,QAAI,CAAKA,EAAK,iBADhCX,EAcYgB,GAAA;AAAA;YAZT,MAAML,EAAK;AAAA,YACX,YAAU;AAAA,YACX,iBAAc;AAAA,YACd,MAAK;AAAA;uBAEL,MAKE;AAAA,cAJMA,EAAK,aADbX,EAKEc,GAAA;AAAA;gBAHC,UAAUH,EAAK;AAAA,gBACf,MAAMA,EAAK;AAAA,gBACZ,OAAM;AAAA;cAERL,EAAoE,QAApET,GAAoEkB,EAApBJ,EAAK,KAAK,GAAA,CAAA;AAAA;;sCAE5DH,EAQM,OAAA;AAAA;YARM,OAAM;AAAA,YAAqC,MAAK;AAAA,YAAY,SAAK,CAAAJ,MAAED,EAAA,UAAUQ,CAAI;AAAA;YAEnFA,EAAK,aADbX,EAKEc,GAAA;AAAA;cAHC,UAAUH,EAAK;AAAA,cACf,MAAMA,EAAK;AAAA,cACZ,OAAM;AAAA;YAERL,EAAoE,QAApER,GAAoEiB,EAApBJ,EAAK,KAAK,GAAA,CAAA;AAAA;;;;;;;;"}
1
+ {"version":3,"file":"NeonDropdownMenu.vue.es.js","sources":["../../../../src/components/navigation/dropdown-menu/NeonDropdownMenu.vue"],"sourcesContent":["<template>\n <neon-dropdown\n ref=\"dropdown\"\n v-model=\"open\"\n :class=\"`neon-dropdown-menu--${color}`\"\n :color=\"color\"\n :disabled=\"disabled\"\n :openOnHover=\"openOnHover\"\n :placement=\"placement\"\n :size=\"size\"\n class=\"neon-dropdown-menu\"\n v-bind=\"attrs\"\n @blur=\"onBlur()\"\n @focus=\"onFocus()\"\n @update:modelValue=\"open = $event\"\n @dropdown-placement=\"onPlacement\"\n >\n <ul class=\"no-style neon-dropdown-menu__items\" role=\"menu\">\n <li\n v-for=\"item in model\"\n :key=\"item.key\"\n ref=\"items\"\n :class=\"[\n {\n 'neon-dropdown-menu__item--disabled': item.disabled,\n 'neon-dropdown-menu__item--separator-before': item.separatorBefore,\n 'neon-dropdown-menu__item--group-title': item.isGroup,\n 'neon-dropdown-menu__item--grouped': item.grouped,\n 'neon-dropdown-menu__item--highlighted': item.key === highlightedKey,\n 'neon-dropdown-menu__item--icon-right': item.icon && item.iconPosition === NeonHorizontalPosition.Right,\n },\n `neon-dropdown-menu__item--${size}`,\n ]\"\n class=\"neon-dropdown-menu__item\"\n tabindex=\"0\"\n @mouseover=\"changeHighlighted(item.key)\"\n >\n <div v-if=\"item.isGroup\" class=\"neon-dropdown-menu__item-container\">\n <neon-icon\n v-if=\"item.icon\"\n :disabled=\"item.disabled\"\n :name=\"item.icon\"\n class=\"neon-dropdown-menu__item-icon\"\n />\n <span class=\"neon-dropdown-menu__item-label\">{{ item.label }}</span>\n </div>\n <neon-link\n v-else-if=\"item.href && !item.disabled\"\n :href=\"item.href\"\n :no-style=\"true\"\n outline-style=\"none\"\n role=\"menuitem\"\n >\n <neon-icon\n v-if=\"item.icon\"\n :disabled=\"item.disabled\"\n :name=\"item.icon\"\n class=\"neon-dropdown-menu__item-icon\"\n />\n <span class=\"neon-dropdown-menu__item-label\">{{ item.label }}</span>\n </neon-link>\n <div v-else class=\"neon-dropdown-menu__item-container\" role=\"menuitem\" @click=\"clickItem(item)\">\n <neon-icon\n v-if=\"item.icon\"\n :disabled=\"item.disabled\"\n :name=\"item.icon\"\n class=\"neon-dropdown-menu__item-icon\"\n />\n <span class=\"neon-dropdown-menu__item-label\">{{ item.label }}</span>\n </div>\n </li>\n </ul>\n </neon-dropdown>\n</template>\n\n<script lang=\"ts\" src=\"./NeonDropdownMenu.ts\"></script>\n"],"names":["_hoisted_4","_hoisted_5","_hoisted_7","_openBlock","_createBlock","_component_neon_dropdown","_mergeProps","_ctx","$event","_cache","_createElementVNode","_hoisted_1","_createElementBlock","_Fragment","_renderList","item","_normalizeClass","_hoisted_3","_component_neon_icon","_toDisplayString","_component_neon_link"],"mappings":";;;;EAiBQ,OAAM;AAAA,EAAqC,MAAK;;;EAoBvB,OAAM;GAOvBA,IAAA,EAAA,OAAM,iCAAgC,GAetCC,IAAA,EAAA,OAAM,iCAAgC,oBAStCC,IAAA,EAAA,OAAM,iCAAgC;;;AAnEpD,SAAAC,EAAA,GAAAC,EAuEgBC,GAvEhBC,EAuEgB;AAAA,IAtEd,KAAI;AAAA,gBACKC,EAAA;AAAA,kDAAAA,EAAA,OAAIC;AAAA,IACZ,OAAK,CAAA,uBAAyBD,EAAA,KAAK,IAM9B,oBAAoB;AAAA,IALzB,OAAOA,EAAA;AAAA,IACP,UAAUA,EAAA;AAAA,IACV,aAAaA,EAAA;AAAA,IACb,WAAWA,EAAA;AAAA,IACX,MAAMA,EAAA;AAAA,KAECA,EAAA,OAAK;AAAA,IACZ,+BAAMA,EAAA,OAAM;AAAA,IACZ,gCAAOA,EAAA,QAAO;AAAA,IACd,uBAAiBE,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAD,MAAED,EAAA,OAAOC;AAAA,IAC1B,qBAAoBD,EAAA;AAAA;eAErB,MAsDK;AAAA,MAtDLG,EAsDK,MAtDLC,GAsDK;AAAA,gBArDHC,EAoDKC,GAAA,MAAAC,EAnDYP,EAAA,OAAK,CAAbQ,YADTH,EAoDK,MAAA;AAAA,UAlDF,KAAKG,EAAK;AAAA;UACX,KAAI;AAAA,UACH,OAAKC,EAAA,CAAA;AAAA;cAAkE,sCAAAD,EAAK;AAAA,cAAoE,8CAAAA,EAAK;AAAA,cAAsE,yCAAAA,EAAK;AAAA,cAA0D,qCAAAA,EAAK;AAAA,uDAA8DA,EAAK,QAAQR,EAAA;AAAA,sDAAoEQ,EAAK,QAAQA,EAAK,iBAAiBR,EAAA,uBAAuB;AAAA;yCAA2DA,EAAA,IAAI;AAAA,aAWliB,0BAA0B,CAAA;AAAA,UAChC,UAAS;AAAA,UACR,aAAS,CAAAC,MAAED,EAAA,kBAAkBQ,EAAK,GAAG;AAAA;UAE3BA,EAAK,WAAhBZ,KAAAS,EAQM,OARNK,GAQM;AAAA,YANIF,EAAK,aADbX,EAKEc,GAAA;AAAA;cAHC,UAAUH,EAAK;AAAA,cACf,MAAMA,EAAK;AAAA,cACZ,OAAM;AAAA;YAERL,EAAoE,QAApEV,GAAoEmB,EAApBJ,EAAK,KAAK,GAAA,CAAA;AAAA,gBAG/CA,EAAK,QAAI,CAAKA,EAAK,iBADhCX,EAcYgB,GAAA;AAAA;YAZT,MAAML,EAAK;AAAA,YACX,YAAU;AAAA,YACX,iBAAc;AAAA,YACd,MAAK;AAAA;uBAEL,MAKE;AAAA,cAJMA,EAAK,aADbX,EAKEc,GAAA;AAAA;gBAHC,UAAUH,EAAK;AAAA,gBACf,MAAMA,EAAK;AAAA,gBACZ,OAAM;AAAA;cAERL,EAAoE,QAApET,GAAoEkB,EAApBJ,EAAK,KAAK,GAAA,CAAA;AAAA;;sCAE5DH,EAQM,OAAA;AAAA;YARM,OAAM;AAAA,YAAqC,MAAK;AAAA,YAAY,SAAK,CAAAJ,MAAED,EAAA,UAAUQ,CAAI;AAAA;YAEnFA,EAAK,aADbX,EAKEc,GAAA;AAAA;cAHC,UAAUH,EAAK;AAAA,cACf,MAAMA,EAAK;AAAA,cACZ,OAAM;AAAA;YAERL,EAAoE,QAApER,GAAoEiB,EAApBJ,EAAK,KAAK,GAAA,CAAA;AAAA;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";const t=require("vue"),S=require("../../../model/common/accessibility/NeonOutlineStyle.cjs.js"),v=require("../../presentation/icon/NeonIcon.vue.cjs.js"),r=require("vue-router"),x=t.defineComponent({name:"NeonLink",components:{NeonIcon:v},props:{href:{type:String,default:null},noStyle:{type:Boolean,default:!1},outlineStyle:{type:String,default:S.NeonOutlineStyle.None},externalIndicator:{type:Boolean,default:!1}},emits:["click"],setup(e,{emit:s,expose:a}){const o=t.ref(null),f=t.useAttrs(),d=r.useRouter(),u=r.useRoute(),c=t.computed(()=>{var n;return((n=e.href)==null?void 0:n.indexOf("/"))===0?e.href:void 0}),i=t.computed(()=>e.href&&e.href.indexOf(u.fullPath)===0),h=t.computed(()=>i.value&&e.href===u.fullPath),m=t.computed(()=>{const{onClick:n,...k}=f;return k}),l=()=>{s("click")},y=async()=>{l(),c.value?await d.push(e.href):e.href&&window.location.replace(e.href)};return a({neonLink:o}),{neonLink:o,routerUrl:c,sanitizedAttributes:m,activeRoute:i,exactRoute:h,onClick:l,onSpace:y}}});module.exports=x;
1
+ "use strict";const e=require("vue"),k=require("../../../model/common/accessibility/NeonOutlineStyle.cjs.js"),p=require("../../presentation/icon/NeonIcon.vue.cjs.js"),r=require("vue-router"),S=e.defineComponent({name:"NeonLink",components:{NeonIcon:p},props:{href:{type:String,default:null},noStyle:{type:Boolean,default:!1},outlineStyle:{type:String,default:k.NeonOutlineStyle.None},externalIndicator:{type:Boolean,default:!1}},emits:["click"],setup(t,{emit:s,expose:a}){const u=e.ref(null),f=e.useAttrs(),d=r.useRouter(),c=r.useRoute(),n=e.computed(()=>{var o;return((o=t.href)==null?void 0:o.indexOf("/"))===0?t.href:void 0}),l=e.computed(()=>n.value&&c.fullPath.indexOf(n.value)===0),h=e.computed(()=>l.value&&t.href===c.fullPath),m=e.computed(()=>{const{onClick:o,...v}=f;return v}),i=()=>{s("click")},y=async()=>{i(),n.value?await d.push(t.href):t.href&&window.location.replace(t.href)};return a({neonLink:u}),{neonLink:u,routerUrl:n,sanitizedAttributes:m,activeRoute:l,exactRoute:h,onClick:i,onSpace:y}}});module.exports=S;
2
2
  //# sourceMappingURL=NeonLink.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NeonLink.cjs.js","sources":["../../../../src/components/navigation/link/NeonLink.ts?vue&type=script&src=true&lang.ts"],"sourcesContent":["import { computed, defineComponent, ref, useAttrs } from 'vue';\nimport { NeonOutlineStyle } from '@/model/common/accessibility/NeonOutlineStyle';\nimport NeonIcon from '@/components/presentation/icon/NeonIcon.vue';\nimport { useRoute, useRouter } from 'vue-router';\n\n/**\n * An HTML anchor component which handles VueRouter links (internal), href links (external) and clickable links (no href).\n */\nexport default defineComponent({\n name: 'NeonLink',\n components: {\n NeonIcon,\n },\n props: {\n /**\n * The href of the link, this can be an internal (relative or absolute) or an external link.\n */\n href: { type: String, default: null },\n /**\n * set to true if you would like a completely unstyled link. This is useful for creating a complex component which may use NeonLink.\n */\n noStyle: { type: Boolean, default: false },\n /**\n * Style of the outline to use when the link has focus, use this in combination with the <em>no-style</em> flag to\n * style the outline of non-text links.\n */\n outlineStyle: { type: String as () => NeonOutlineStyle, default: NeonOutlineStyle.None },\n /**\n * Display an external link icon to the right of the link indicating clicking it will take the user to another site.\n */\n externalIndicator: { type: Boolean, default: false },\n },\n emits: [\n /**\n * Emitted when the user triggers the link by clicking on it or hitting Enter or Space when the link has focus.\n * @type {void}\n */\n 'click',\n ],\n setup(props, { emit, expose }) {\n const neonLink = ref<HTMLAnchorElement | null>(null);\n const attrs = useAttrs();\n const router = useRouter();\n const route = useRoute();\n const routerUrl = computed(() => (props.href?.indexOf('/') === 0 ? props.href : undefined));\n\n const activeRoute = computed(() => props.href && props.href.indexOf(route.fullPath) === 0);\n const exactRoute = computed(() => activeRoute.value && props.href === route.fullPath);\n\n const sanitizedAttributes = computed(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { onClick, ...sanitized } = attrs;\n return sanitized;\n });\n\n const onClick = () => {\n emit('click');\n };\n\n const onSpace = async () => {\n onClick();\n\n if (routerUrl.value) {\n await router.push(props.href);\n } else if (props.href) {\n window.location.replace(props.href);\n }\n };\n\n expose({ neonLink });\n\n return {\n neonLink,\n routerUrl,\n sanitizedAttributes,\n activeRoute,\n exactRoute,\n onClick,\n onSpace,\n };\n },\n});\n"],"names":["_sfc_main","defineComponent","NeonIcon","NeonOutlineStyle","props","emit","expose","neonLink","ref","attrs","useAttrs","router","useRouter","route","useRoute","routerUrl","computed","_a","activeRoute","exactRoute","sanitizedAttributes","onClick","sanitized","onSpace"],"mappings":"8LAQAA,EAAeC,kBAAgB,CAC7B,KAAM,WACN,WAAY,CACV,SAAAC,CAAA,EAEF,MAAO,CAIL,KAAM,CAAE,KAAM,OAAQ,QAAS,IAAA,EAI/B,QAAS,CAAE,KAAM,QAAS,QAAS,EAAA,EAKnC,aAAc,CAAE,KAAM,OAAkC,QAASC,EAAAA,iBAAiB,IAAA,EAIlF,kBAAmB,CAAE,KAAM,QAAS,QAAS,EAAA,CAAM,EAErD,MAAO,CAKL,OAAA,EAEF,MAAMC,EAAO,CAAE,KAAAC,EAAM,OAAAC,GAAU,CAC7B,MAAMC,EAAWC,EAAAA,IAA8B,IAAI,EAC7CC,EAAQC,EAAAA,SAAA,EACRC,EAASC,EAAAA,UAAA,EACTC,EAAQC,EAAAA,SAAA,EACRC,EAAYC,EAAAA,SAAS,IAAA,OAAO,QAAAC,EAAAb,EAAM,OAAN,YAAAa,EAAY,QAAQ,QAAS,EAAIb,EAAM,KAAO,OAAU,EAEpFc,EAAcF,EAAAA,SAAS,IAAMZ,EAAM,MAAQA,EAAM,KAAK,QAAQS,EAAM,QAAQ,IAAM,CAAC,EACnFM,EAAaH,EAAAA,SAAS,IAAME,EAAY,OAASd,EAAM,OAASS,EAAM,QAAQ,EAE9EO,EAAsBJ,EAAAA,SAAS,IAAM,CAEzC,KAAM,CAAE,QAAAK,EAAS,GAAGC,GAAcb,EAClC,OAAOa,CACT,CAAC,EAEKD,EAAU,IAAM,CACpBhB,EAAK,OAAO,CACd,EAEMkB,EAAU,SAAY,CAC1BF,EAAA,EAEIN,EAAU,MACZ,MAAMJ,EAAO,KAAKP,EAAM,IAAI,EACnBA,EAAM,MACf,OAAO,SAAS,QAAQA,EAAM,IAAI,CAEtC,EAEA,OAAAE,EAAO,CAAE,SAAAC,EAAU,EAEZ,CACL,SAAAA,EACA,UAAAQ,EACA,oBAAAK,EACA,YAAAF,EACA,WAAAC,EACA,QAAAE,EACA,QAAAE,CAAA,CAEJ,CACF,CAAC"}
1
+ {"version":3,"file":"NeonLink.cjs.js","sources":["../../../../src/components/navigation/link/NeonLink.ts?vue&type=script&src=true&lang.ts"],"sourcesContent":["import { computed, defineComponent, ref, useAttrs } from 'vue';\nimport { NeonOutlineStyle } from '@/model/common/accessibility/NeonOutlineStyle';\nimport NeonIcon from '@/components/presentation/icon/NeonIcon.vue';\nimport { useRoute, useRouter } from 'vue-router';\n\n/**\n * An HTML anchor component which handles VueRouter links (internal), href links (external) and clickable links (no href).\n */\nexport default defineComponent({\n name: 'NeonLink',\n components: {\n NeonIcon,\n },\n props: {\n /**\n * The href of the link, this can be an internal (relative or absolute) or an external link.\n */\n href: { type: String, default: null },\n /**\n * set to true if you would like a completely unstyled link. This is useful for creating a complex component which may use NeonLink.\n */\n noStyle: { type: Boolean, default: false },\n /**\n * Style of the outline to use when the link has focus, use this in combination with the <em>no-style</em> flag to\n * style the outline of non-text links.\n */\n outlineStyle: { type: String as () => NeonOutlineStyle, default: NeonOutlineStyle.None },\n /**\n * Display an external link icon to the right of the link indicating clicking it will take the user to another site.\n */\n externalIndicator: { type: Boolean, default: false },\n },\n emits: [\n /**\n * Emitted when the user triggers the link by clicking on it or hitting Enter or Space when the link has focus.\n * @type {void}\n */\n 'click',\n ],\n setup(props, { emit, expose }) {\n const neonLink = ref<HTMLAnchorElement | null>(null);\n const attrs = useAttrs();\n const router = useRouter();\n const route = useRoute();\n const routerUrl = computed(() => (props.href?.indexOf('/') === 0 ? props.href : undefined));\n\n const activeRoute = computed(() => routerUrl.value && route.fullPath.indexOf(routerUrl.value) === 0);\n const exactRoute = computed(() => activeRoute.value && props.href === route.fullPath);\n\n const sanitizedAttributes = computed(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { onClick, ...sanitized } = attrs;\n return sanitized;\n });\n\n const onClick = () => {\n emit('click');\n };\n\n const onSpace = async () => {\n onClick();\n\n if (routerUrl.value) {\n await router.push(props.href);\n } else if (props.href) {\n window.location.replace(props.href);\n }\n };\n\n expose({ neonLink });\n\n return {\n neonLink,\n routerUrl,\n sanitizedAttributes,\n activeRoute,\n exactRoute,\n onClick,\n onSpace,\n };\n },\n});\n"],"names":["_sfc_main","defineComponent","NeonIcon","NeonOutlineStyle","props","emit","expose","neonLink","ref","attrs","useAttrs","router","useRouter","route","useRoute","routerUrl","computed","_a","activeRoute","exactRoute","sanitizedAttributes","onClick","sanitized","onSpace"],"mappings":"8LAQAA,EAAeC,kBAAgB,CAC7B,KAAM,WACN,WAAY,CACV,SAAAC,CAAA,EAEF,MAAO,CAIL,KAAM,CAAE,KAAM,OAAQ,QAAS,IAAA,EAI/B,QAAS,CAAE,KAAM,QAAS,QAAS,EAAA,EAKnC,aAAc,CAAE,KAAM,OAAkC,QAASC,EAAAA,iBAAiB,IAAA,EAIlF,kBAAmB,CAAE,KAAM,QAAS,QAAS,EAAA,CAAM,EAErD,MAAO,CAKL,OAAA,EAEF,MAAMC,EAAO,CAAE,KAAAC,EAAM,OAAAC,GAAU,CAC7B,MAAMC,EAAWC,EAAAA,IAA8B,IAAI,EAC7CC,EAAQC,EAAAA,SAAA,EACRC,EAASC,EAAAA,UAAA,EACTC,EAAQC,EAAAA,SAAA,EACRC,EAAYC,EAAAA,SAAS,IAAA,OAAO,QAAAC,EAAAb,EAAM,OAAN,YAAAa,EAAY,QAAQ,QAAS,EAAIb,EAAM,KAAO,OAAU,EAEpFc,EAAcF,EAAAA,SAAS,IAAMD,EAAU,OAASF,EAAM,SAAS,QAAQE,EAAU,KAAK,IAAM,CAAC,EAC7FI,EAAaH,EAAAA,SAAS,IAAME,EAAY,OAASd,EAAM,OAASS,EAAM,QAAQ,EAE9EO,EAAsBJ,EAAAA,SAAS,IAAM,CAEzC,KAAM,CAAE,QAAAK,EAAS,GAAGC,GAAcb,EAClC,OAAOa,CACT,CAAC,EAEKD,EAAU,IAAM,CACpBhB,EAAK,OAAO,CACd,EAEMkB,EAAU,SAAY,CAC1BF,EAAA,EAEIN,EAAU,MACZ,MAAMJ,EAAO,KAAKP,EAAM,IAAI,EACnBA,EAAM,MACf,OAAO,SAAS,QAAQA,EAAM,IAAI,CAEtC,EAEA,OAAAE,EAAO,CAAE,SAAAC,EAAU,EAEZ,CACL,SAAAA,EACA,UAAAQ,EACA,oBAAAK,EACA,YAAAF,EACA,WAAAC,EACA,QAAAE,EACA,QAAAE,CAAA,CAEJ,CACF,CAAC"}
@@ -1,11 +1,11 @@
1
- import { defineComponent as k, ref as S, useAttrs as x, computed as t } from "vue";
2
- import { NeonOutlineStyle as p } from "../../../model/common/accessibility/NeonOutlineStyle.es.js";
3
- import v from "../../presentation/icon/NeonIcon.vue.es.js";
1
+ import { defineComponent as y, ref as k, useAttrs as v, computed as n } from "vue";
2
+ import { NeonOutlineStyle as S } from "../../../model/common/accessibility/NeonOutlineStyle.es.js";
3
+ import x from "../../presentation/icon/NeonIcon.vue.es.js";
4
4
  import { useRouter as C, useRoute as N } from "vue-router";
5
- const z = k({
5
+ const z = y({
6
6
  name: "NeonLink",
7
7
  components: {
8
- NeonIcon: v
8
+ NeonIcon: x
9
9
  },
10
10
  props: {
11
11
  /**
@@ -20,7 +20,7 @@ const z = k({
20
20
  * Style of the outline to use when the link has focus, use this in combination with the <em>no-style</em> flag to
21
21
  * style the outline of non-text links.
22
22
  */
23
- outlineStyle: { type: String, default: p.None },
23
+ outlineStyle: { type: String, default: S.None },
24
24
  /**
25
25
  * Display an external link icon to the right of the link indicating clicking it will take the user to another site.
26
26
  */
@@ -33,25 +33,25 @@ const z = k({
33
33
  */
34
34
  "click"
35
35
  ],
36
- setup(e, { emit: a, expose: f }) {
37
- const o = S(null), u = x(), s = C(), l = N(), i = t(() => {
38
- var n;
39
- return ((n = e.href) == null ? void 0 : n.indexOf("/")) === 0 ? e.href : void 0;
40
- }), r = t(() => e.href && e.href.indexOf(l.fullPath) === 0), d = t(() => r.value && e.href === l.fullPath), m = t(() => {
41
- const { onClick: n, ...y } = u;
42
- return y;
43
- }), c = () => {
44
- a("click");
36
+ setup(e, { emit: u, expose: c }) {
37
+ const l = k(null), f = v(), s = C(), i = N(), t = n(() => {
38
+ var o;
39
+ return ((o = e.href) == null ? void 0 : o.indexOf("/")) === 0 ? e.href : void 0;
40
+ }), r = n(() => t.value && i.fullPath.indexOf(t.value) === 0), d = n(() => r.value && e.href === i.fullPath), m = n(() => {
41
+ const { onClick: o, ...p } = f;
42
+ return p;
43
+ }), a = () => {
44
+ u("click");
45
45
  }, h = async () => {
46
- c(), i.value ? await s.push(e.href) : e.href && window.location.replace(e.href);
46
+ a(), t.value ? await s.push(e.href) : e.href && window.location.replace(e.href);
47
47
  };
48
- return f({ neonLink: o }), {
49
- neonLink: o,
50
- routerUrl: i,
48
+ return c({ neonLink: l }), {
49
+ neonLink: l,
50
+ routerUrl: t,
51
51
  sanitizedAttributes: m,
52
52
  activeRoute: r,
53
53
  exactRoute: d,
54
- onClick: c,
54
+ onClick: a,
55
55
  onSpace: h
56
56
  };
57
57
  }