@evance/evance-ui 1.1.2 → 1.1.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 (111) hide show
  1. package/components.d.ts +100 -99
  2. package/dist/cjs/evance-ui.css +226 -172
  3. package/dist/cjs/fonts/Inter/Inter-Bold.woff2 +0 -0
  4. package/dist/cjs/fonts/Inter/Inter-Medium.woff2 +0 -0
  5. package/dist/cjs/fonts/Inter/Inter-Regular.woff2 +0 -0
  6. package/dist/cjs/fonts/Inter/Inter-SemiBold.woff2 +0 -0
  7. package/dist/cjs/fonts/JetBrainsMono/JetBrainsMono-Bold.woff2 +0 -0
  8. package/dist/cjs/fonts/JetBrainsMono/JetBrainsMono-Medium.woff2 +0 -0
  9. package/dist/cjs/fonts/JetBrainsMono/JetBrainsMono-Regular.woff2 +0 -0
  10. package/dist/cjs/fonts/JetBrainsMono/JetBrainsMono-SemiBold.woff2 +0 -0
  11. package/dist/cjs/index.cjs +1 -0
  12. package/dist/cjs/index.cjs.map +1 -1
  13. package/dist/cjs/src/components/EvList/EvList.cjs +3 -2
  14. package/dist/cjs/src/components/EvList/EvList.cjs.map +1 -1
  15. package/dist/cjs/src/components/EvList/EvList.vue.cjs +5 -2
  16. package/dist/cjs/src/components/EvList/EvList.vue.cjs.map +1 -1
  17. package/dist/cjs/src/components/EvList/EvListChildren.vue.cjs +35 -4
  18. package/dist/cjs/src/components/EvList/EvListChildren.vue.cjs.map +1 -1
  19. package/dist/cjs/src/components/EvListItem/EvListItem.cjs +8 -5
  20. package/dist/cjs/src/components/EvListItem/EvListItem.cjs.map +1 -1
  21. package/dist/cjs/src/components/EvListItem/EvListItem.vue.cjs +153 -92
  22. package/dist/cjs/src/components/EvListItem/EvListItem.vue.cjs.map +1 -1
  23. package/dist/cjs/src/components/EvTooltip/EvTooltip.vue.cjs.map +1 -1
  24. package/dist/cjs/src/composables/lists/list-items.cjs +2 -0
  25. package/dist/cjs/src/composables/lists/list-items.cjs.map +1 -1
  26. package/dist/cjs/src/composables/lists/nested.cjs +26 -8
  27. package/dist/cjs/src/composables/lists/nested.cjs.map +1 -1
  28. package/dist/cjs/src/icons/glyph/DotIcon.svg.cjs +1 -1
  29. package/dist/cjs/src/icons/glyph/DotIcon.svg.cjs.map +1 -1
  30. package/dist/esm/evance-ui.css +226 -172
  31. package/dist/esm/fonts/Inter/Inter-Bold.woff2 +0 -0
  32. package/dist/esm/fonts/Inter/Inter-Medium.woff2 +0 -0
  33. package/dist/esm/fonts/Inter/Inter-Regular.woff2 +0 -0
  34. package/dist/esm/fonts/Inter/Inter-SemiBold.woff2 +0 -0
  35. package/dist/esm/fonts/JetBrainsMono/JetBrainsMono-Bold.woff2 +0 -0
  36. package/dist/esm/fonts/JetBrainsMono/JetBrainsMono-Medium.woff2 +0 -0
  37. package/dist/esm/fonts/JetBrainsMono/JetBrainsMono-Regular.woff2 +0 -0
  38. package/dist/esm/fonts/JetBrainsMono/JetBrainsMono-SemiBold.woff2 +0 -0
  39. package/dist/esm/index.mjs +1 -0
  40. package/dist/esm/index.mjs.map +1 -1
  41. package/dist/esm/src/components/EvList/EvList.mjs +3 -2
  42. package/dist/esm/src/components/EvList/EvList.mjs.map +1 -1
  43. package/dist/esm/src/components/EvList/EvList.vue.mjs +5 -2
  44. package/dist/esm/src/components/EvList/EvList.vue.mjs.map +1 -1
  45. package/dist/esm/src/components/EvList/EvListChildren.vue.mjs +37 -6
  46. package/dist/esm/src/components/EvList/EvListChildren.vue.mjs.map +1 -1
  47. package/dist/esm/src/components/EvListItem/EvListItem.mjs +8 -5
  48. package/dist/esm/src/components/EvListItem/EvListItem.mjs.map +1 -1
  49. package/dist/esm/src/components/EvListItem/EvListItem.vue.mjs +157 -96
  50. package/dist/esm/src/components/EvListItem/EvListItem.vue.mjs.map +1 -1
  51. package/dist/esm/src/components/EvTooltip/EvTooltip.vue.mjs.map +1 -1
  52. package/dist/esm/src/composables/lists/list-items.mjs +2 -0
  53. package/dist/esm/src/composables/lists/list-items.mjs.map +1 -1
  54. package/dist/esm/src/composables/lists/nested.mjs +27 -9
  55. package/dist/esm/src/composables/lists/nested.mjs.map +1 -1
  56. package/dist/esm/src/icons/glyph/DotIcon.svg.mjs +1 -1
  57. package/dist/esm/src/icons/glyph/DotIcon.svg.mjs.map +1 -1
  58. package/dist/evance-ui.css +1 -1
  59. package/dist/evance-ui.js +2 -2
  60. package/dist/evance-ui.js.map +1 -1
  61. package/dist/evance-ui.mjs +4553 -4443
  62. package/dist/evance-ui.mjs.map +1 -1
  63. package/dist/fonts/Inter/Inter-Bold.woff2 +0 -0
  64. package/dist/fonts/Inter/Inter-Medium.woff2 +0 -0
  65. package/dist/fonts/Inter/Inter-Regular.woff2 +0 -0
  66. package/dist/fonts/Inter/Inter-SemiBold.woff2 +0 -0
  67. package/dist/fonts/JetBrainsMono/JetBrainsMono-Bold.woff2 +0 -0
  68. package/dist/fonts/JetBrainsMono/JetBrainsMono-Medium.woff2 +0 -0
  69. package/dist/fonts/JetBrainsMono/JetBrainsMono-Regular.woff2 +0 -0
  70. package/dist/fonts/JetBrainsMono/JetBrainsMono-SemiBold.woff2 +0 -0
  71. package/dist/types/components/EvDataTable/EvDataTable.vue.d.ts +1 -1
  72. package/dist/types/components/EvEmptyState/EvEmptyState.vue.d.ts +1 -1
  73. package/dist/types/components/EvList/EvList.d.ts +5 -0
  74. package/dist/types/components/EvList/EvList.d.ts.map +1 -1
  75. package/dist/types/components/EvList/EvListChildren.vue.d.ts +11 -1
  76. package/dist/types/components/EvList/EvListChildren.vue.d.ts.map +1 -1
  77. package/dist/types/components/EvListItem/EvListItem.d.ts +33 -16
  78. package/dist/types/components/EvListItem/EvListItem.d.ts.map +1 -1
  79. package/dist/types/components/EvListItem/EvListItem.vue.d.ts +20 -11
  80. package/dist/types/components/EvListItem/EvListItem.vue.d.ts.map +1 -1
  81. package/dist/types/components/EvTooltip/EvTooltip.vue.d.ts +4 -1
  82. package/dist/types/components/EvTooltip/EvTooltip.vue.d.ts.map +1 -1
  83. package/dist/types/composables/lists/list-items.d.ts +1 -0
  84. package/dist/types/composables/lists/list-items.d.ts.map +1 -1
  85. package/dist/types/composables/lists/nested.d.ts +6 -6
  86. package/dist/types/composables/lists/nested.d.ts.map +1 -1
  87. package/dist/types/index.d.ts.map +1 -1
  88. package/package.json +1 -1
  89. package/dist/cjs/EvListGroup.cjs +0 -8
  90. package/dist/cjs/EvListGroup.cjs.map +0 -1
  91. package/dist/cjs/src/components/EvListGroup/EvListGroup.cjs +0 -13
  92. package/dist/cjs/src/components/EvListGroup/EvListGroup.cjs.map +0 -1
  93. package/dist/cjs/src/components/EvListGroup/EvListGroup.vue.cjs +0 -96
  94. package/dist/cjs/src/components/EvListGroup/EvListGroup.vue.cjs.map +0 -1
  95. package/dist/cjs/src/components/EvListGroup/EvListGroup.vue2.cjs +0 -6
  96. package/dist/cjs/src/components/EvListGroup/EvListGroup.vue2.cjs.map +0 -1
  97. package/dist/esm/EvListGroup.mjs +0 -8
  98. package/dist/esm/EvListGroup.mjs.map +0 -1
  99. package/dist/esm/src/components/EvListGroup/EvListGroup.mjs +0 -13
  100. package/dist/esm/src/components/EvListGroup/EvListGroup.mjs.map +0 -1
  101. package/dist/esm/src/components/EvListGroup/EvListGroup.vue.mjs +0 -96
  102. package/dist/esm/src/components/EvListGroup/EvListGroup.vue.mjs.map +0 -1
  103. package/dist/esm/src/components/EvListGroup/EvListGroup.vue2.mjs +0 -6
  104. package/dist/esm/src/components/EvListGroup/EvListGroup.vue2.mjs.map +0 -1
  105. package/dist/types/EvListGroup.d.ts +0 -1
  106. package/dist/types/components/EvListGroup/EvListGroup.d.ts +0 -155
  107. package/dist/types/components/EvListGroup/EvListGroup.d.ts.map +0 -1
  108. package/dist/types/components/EvListGroup/EvListGroup.vue.d.ts +0 -118
  109. package/dist/types/components/EvListGroup/EvListGroup.vue.d.ts.map +0 -1
  110. package/dist/types/components/EvListGroup/index.d.ts +0 -3
  111. package/dist/types/components/EvListGroup/index.d.ts.map +0 -1
@@ -1,5 +1,6 @@
1
1
  /*! Evance UI v1.1.2 | MIT License */
2
2
  /* empty css */
3
+ /* empty css */
3
4
  import * as index from "./src/components/index.mjs";
4
5
  import * as index$1 from "./src/directives/index.mjs";
5
6
  import * as index$2 from "./src/services/index.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/index.ts"],"sourcesContent":["import \"./css/core.scss\";\r\n\r\nimport * as components from \"./components\";\r\nimport * as directives from \"./directives\";\r\nimport * as services from \"./services\";\r\nimport { createEvanceUi as _createEvanceUi } from \"./framework\";\r\n\r\nimport type { EvanceUiOptions } from \"./framework\";\r\n\r\nexport const createEvanceUi = (options: EvanceUiOptions = {}) => {\r\n return _createEvanceUi({ components, directives, services, ...options });\r\n};\r\n\r\nexport { components, directives, services };\r\n\r\nexport * from \"./composables\";\r\nexport * from \"./components\";\r\nexport * from \"./directives\";\r\nexport * from \"./services\";\r\nexport * from \"./util\";\r\n"],"names":["_createEvanceUi","components","directives","services"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASO,MAAM,iBAAiB,CAAC,UAA2B,OAAO;AAC7D,SAAOA,iBAAgB,EAAA,YAAEC,OAAA,YAAYC,mBAAYC,SAAU,GAAG,SAAS;AAC3E;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/index.ts"],"sourcesContent":["import \"./css/core.scss\";\r\nimport \"./css/runtime.scss\";\r\n\r\nimport * as components from \"./components\";\r\nimport * as directives from \"./directives\";\r\nimport * as services from \"./services\";\r\nimport { createEvanceUi as _createEvanceUi } from \"./framework\";\r\n\r\nimport type { EvanceUiOptions } from \"./framework\";\r\n\r\nexport const createEvanceUi = (options: EvanceUiOptions = {}) => {\r\n return _createEvanceUi({ components, directives, services, ...options });\r\n};\r\n\r\nexport { components, directives, services };\r\n\r\nexport * from \"./composables\";\r\nexport * from \"./components\";\r\nexport * from \"./directives\";\r\nexport * from \"./services\";\r\nexport * from \"./util\";\r\n"],"names":["_createEvanceUi","components","directives","services"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,MAAM,iBAAiB,CAAC,UAA2B,OAAO;AAC7D,SAAOA,iBAAgB,EAAA,YAAEC,OAAA,YAAYC,mBAAYC,SAAU,GAAG,SAAS;AAC3E;"}
@@ -9,7 +9,7 @@ const makeEvListProps = propsFactory(
9
9
  disabled: Boolean,
10
10
  tag: {
11
11
  type: String,
12
- default: "div"
12
+ default: "ul"
13
13
  },
14
14
  itemType: {
15
15
  type: String,
@@ -26,7 +26,8 @@ const makeEvListProps = propsFactory(
26
26
  );
27
27
  const makeEvListChildrenProps = propsFactory(
28
28
  {
29
- items: Array
29
+ items: Array,
30
+ returnObject: Boolean
30
31
  },
31
32
  "EvListChildren"
32
33
  );
@@ -1 +1 @@
1
- {"version":3,"file":"EvList.mjs","sources":["../../../../../src/components/EvList/EvList.ts"],"sourcesContent":["import { propsFactory } from \"@/util\";\nimport {\n ListItem as DefaultListItem,\n ListItemsProps as DefaultListItemProps,\n makeListItemsProps,\n makeNestedProps,\n} from \"@/composables/lists\";\nimport { PropType } from \"vue\";\nimport { makeComponentProps } from \"@/composables/component\";\nimport { makeDimensionsProps } from \"@/composables/dimensions\";\n\n/**\n * # List Item Types\n */\nexport type ListItemType = \"item\" | \"subheader\" | \"divider\";\n\n/**\n * # List Item\n */\nexport interface ListItem extends DefaultListItem {\n type?: ListItemType;\n}\n\n/**\n * # List Item Props\n */\nexport interface ListItemProps extends DefaultListItemProps {\n itemType: string;\n}\n\n/**\n * # Make EvList Props\n */\nexport const makeEvListProps = propsFactory(\n {\n disabled: Boolean,\n tag: {\n type: String,\n default: \"div\",\n },\n itemType: {\n type: String,\n default: \"type\",\n },\n\n ...makeListItemsProps(),\n ...makeNestedProps({\n selectStrategy: \"multi-any\",\n }),\n ...makeComponentProps(),\n ...makeDimensionsProps(),\n },\n \"EvList\",\n);\n\n/**\n * # Make EvListChildren Props\n */\nexport const makeEvListChildrenProps = propsFactory(\n {\n items: Array as PropType<readonly ListItem[]>,\n },\n \"EvListChildren\",\n);\n"],"names":[],"mappings":";;;;;;AAiCO,MAAM,kBAAkB;AAAA,EAC3B;AAAA,IACI,UAAU;AAAA,IACV,KAAK;AAAA,MACD,MAAM;AAAA,MACN,SAAS;AAAA,IACb;AAAA,IACA,UAAU;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACb;AAAA,IAEA,GAAG,mBAAmB;AAAA,IACtB,GAAG,gBAAgB;AAAA,MACf,gBAAgB;AAAA,IAAA,CACnB;AAAA,IACD,GAAG,mBAAmB;AAAA,IACtB,GAAG,oBAAoB;AAAA,EAC3B;AAAA,EACA;AACJ;AAKO,MAAM,0BAA0B;AAAA,EACnC;AAAA,IACI,OAAO;AAAA,EACX;AAAA,EACA;AACJ;"}
1
+ {"version":3,"file":"EvList.mjs","sources":["../../../../../src/components/EvList/EvList.ts"],"sourcesContent":["import { propsFactory } from \"@/util\";\nimport {\n ListItem as DefaultListItem,\n ListItemsProps as DefaultListItemProps,\n makeListItemsProps,\n makeNestedProps,\n} from \"@/composables/lists\";\nimport { PropType } from \"vue\";\nimport { makeComponentProps } from \"@/composables/component\";\nimport { makeDimensionsProps } from \"@/composables/dimensions\";\n\n/**\n * # List Item Types\n */\nexport type ListItemType = \"item\" | \"subheader\" | \"divider\";\n\n/**\n * # List Item\n */\nexport interface ListItem extends DefaultListItem {\n type?: ListItemType;\n}\n\n/**\n * # List Item Props\n */\nexport interface ListItemProps extends DefaultListItemProps {\n itemType: string;\n}\n\n/**\n * # Make EvList Props\n */\nexport const makeEvListProps = propsFactory(\n {\n disabled: Boolean,\n tag: {\n type: String,\n default: \"ul\",\n },\n itemType: {\n type: String,\n default: \"type\",\n },\n\n ...makeListItemsProps(),\n ...makeNestedProps({\n selectStrategy: \"multi-any\",\n }),\n ...makeComponentProps(),\n ...makeDimensionsProps(),\n },\n \"EvList\",\n);\n\n/**\n * # Make EvListChildren Props\n */\nexport const makeEvListChildrenProps = propsFactory(\n {\n items: Array as PropType<readonly ListItem[]>,\n returnObject: Boolean,\n },\n \"EvListChildren\",\n);\n"],"names":[],"mappings":";;;;;;AAiCO,MAAM,kBAAkB;AAAA,EAC3B;AAAA,IACI,UAAU;AAAA,IACV,KAAK;AAAA,MACD,MAAM;AAAA,MACN,SAAS;AAAA,IACb;AAAA,IACA,UAAU;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACb;AAAA,IAEA,GAAG,mBAAmB;AAAA,IACtB,GAAG,gBAAgB;AAAA,MACf,gBAAgB;AAAA,IAAA,CACnB;AAAA,IACD,GAAG,mBAAmB;AAAA,IACtB,GAAG,oBAAoB;AAAA,EAC3B;AAAA,EACA;AACJ;AAKO,MAAM,0BAA0B;AAAA,EACnC;AAAA,IACI,OAAO;AAAA,IACP,cAAc;AAAA,EAClB;AAAA,EACA;AACJ;"}
@@ -82,12 +82,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
82
82
  onFocusout: onFocusOut
83
83
  }, {
84
84
  default: withCtx(() => [
85
- createVNode(_sfc_main$1, { items: unref(items) }, {
85
+ createVNode(_sfc_main$1, {
86
+ items: unref(items),
87
+ "return-object": props.returnObject
88
+ }, {
86
89
  default: withCtx(() => [
87
90
  renderSlot(_ctx.$slots, "default")
88
91
  ]),
89
92
  _: 3
90
- }, 8, ["items"])
93
+ }, 8, ["items", "return-object"])
91
94
  ]),
92
95
  _: 3
93
96
  }, 40, ["class", "style", "tabindex"]);
@@ -1 +1 @@
1
- {"version":3,"file":"EvList.vue.mjs","sources":["../../../../../src/components/EvList/EvList.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * # EvList\n *\n * `<ev-list>`\n *\n * Uses:\n * - EvListItem - `<ev-list-item>`\n *\n * @todo: Nested items\n *\n * @see EvListItem\n */\nimport \"./EvList.scss\";\nimport { makeEvListProps } from \"./EvList\";\nimport { computed, ref, shallowRef } from \"vue\";\nimport { focusChild, FocusPosition } from \"@/util\";\nimport {\n createList,\n NestedProps,\n useItems,\n useNestedList,\n} from \"@/composables/lists\";\nimport { useDimensions } from \"@/composables/dimensions\";\nimport EvListChildren from \"./EvListChildren.vue\";\n\ndefineEmits([\"update:selected\", \"click:select\"]);\n\nconst props = defineProps({\n ...makeEvListProps(),\n});\nconst { items } = useItems(props);\nconst { select } = useNestedList(props as NestedProps);\nconst containerRef = ref<HTMLElement | undefined>(undefined);\nconst isFocused = shallowRef(false);\nconst lastFocus = shallowRef<HTMLElement | undefined>(undefined);\nconst tabindex = computed(() => {\n return props.disabled || isFocused.value ? -1 : 0;\n});\nconst dimensions = useDimensions(props);\n\n/**\n * Establish provide() and inject() functionality for list items.\n */\ncreateList();\n\n/**\n * # On Focus\n * Set or restore focus\n * @param e\n */\nfunction onFocus(e: FocusEvent): void {\n if (\n !isFocused.value &&\n !(\n e.relatedTarget &&\n containerRef.value?.contains(e.relatedTarget as Node)\n ) &&\n containerRef.value\n ) {\n if (lastFocus.value) {\n lastFocus.value.focus();\n } else {\n focus();\n }\n }\n}\n\n/**\n * # On Focus In\n * @param e\n */\nfunction onFocusIn(e: FocusEvent): void {\n isFocused.value = true;\n}\n\n/**\n * # On Focus Out\n * @param e\n */\nfunction onFocusOut(e: FocusEvent): void {\n isFocused.value = false;\n}\n\n/**\n * # On Key Down\n * @see https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values\n * @param e\n */\nfunction onKeyDown(e: KeyboardEvent): void {\n const keys: { [key: string]: string } = {\n ArrowDown: \"next\",\n ArrowUp: \"previous\",\n Home: \"first\",\n End: \"last\",\n };\n const position = keys[e.key];\n if (position && containerRef.value) {\n focus(position as FocusPosition);\n e.preventDefault();\n }\n}\n\n/**\n * # Set Focus\n * @param position\n */\nfunction focus(position?: FocusPosition): void {\n lastFocus.value = focusChild(containerRef?.value, position);\n}\n\ndefineExpose({\n focus,\n select,\n});\n</script>\n\n<template>\n <component\n :is=\"props.tag\"\n ref=\"containerRef\"\n role=\"listbox\"\n :class=\"[\n 'ev-list',\n {\n 'is-disabled': props.disabled,\n },\n props.class,\n ]\"\n :style=\"[props.style, dimensions]\"\n :tabindex=\"tabindex\"\n @keydown=\"onKeyDown\"\n @focus=\"onFocus\"\n @focusin=\"onFocusIn\"\n @focusout=\"onFocusOut\">\n <ev-list-children :items=\"items\">\n <slot />\n </ev-list-children>\n </component>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AA+BA,UAAM,EAAE,MAAA,IAAU,SAAS,KAAK;AAChC,UAAM,EAAE,OAAA,IAAW,cAAc,KAAoB;AAC/C,UAAA,eAAe,IAA6B,MAAS;AACrD,UAAA,YAAY,WAAW,KAAK;AAC5B,UAAA,YAAY,WAAoC,MAAS;AACzD,UAAA,WAAW,SAAS,MAAM;AAC5B,aAAO,MAAM,YAAY,UAAU,QAAQ,KAAK;AAAA,IAAA,CACnD;AACK,UAAA,aAAa,cAAc,KAAK;AAK3B,eAAA;AAOX,aAAS,QAAQ,GAAqB;;AAClC,UACI,CAAC,UAAU,SACX,EACI,EAAE,mBACF,kBAAa,UAAb,mBAAoB,SAAS,EAAE,oBAEnC,aAAa,OACf;AACE,YAAI,UAAU,OAAO;AACjB,oBAAU,MAAM,MAAM;AAAA,QAAA,OACnB;AACG,gBAAA;AAAA,QAAA;AAAA,MACV;AAAA,IACJ;AAOJ,aAAS,UAAU,GAAqB;AACpC,gBAAU,QAAQ;AAAA,IAAA;AAOtB,aAAS,WAAW,GAAqB;AACrC,gBAAU,QAAQ;AAAA,IAAA;AAQtB,aAAS,UAAU,GAAwB;AACvC,YAAM,OAAkC;AAAA,QACpC,WAAW;AAAA,QACX,SAAS;AAAA,QACT,MAAM;AAAA,QACN,KAAK;AAAA,MACT;AACM,YAAA,WAAW,KAAK,EAAE,GAAG;AACvB,UAAA,YAAY,aAAa,OAAO;AAChC,cAAM,QAAyB;AAC/B,UAAE,eAAe;AAAA,MAAA;AAAA,IACrB;AAOJ,aAAS,MAAM,UAAgC;AAC3C,gBAAU,QAAQ,WAAW,6CAAc,OAAO,QAAQ;AAAA,IAAA;AAGjD,aAAA;AAAA,MACT;AAAA,MACA;AAAA,IAAA,CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"EvList.vue.mjs","sources":["../../../../../src/components/EvList/EvList.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * # EvList\n *\n * `<ev-list>`\n *\n * Uses:\n * - EvListItem - `<ev-list-item>`\n *\n * @todo: Nested items\n *\n * @see EvListItem\n */\nimport \"./EvList.scss\";\nimport { makeEvListProps } from \"./EvList\";\nimport { computed, ref, shallowRef } from \"vue\";\nimport { focusChild, FocusPosition } from \"@/util\";\nimport {\n createList,\n NestedProps,\n useItems,\n useNestedList,\n} from \"@/composables/lists\";\nimport { useDimensions } from \"@/composables/dimensions\";\nimport EvListChildren from \"./EvListChildren.vue\";\n\ndefineEmits([\"update:selected\", \"click:select\"]);\n\nconst props = defineProps({\n ...makeEvListProps(),\n});\nconst { items } = useItems(props);\nconst { select } = useNestedList(props as NestedProps);\nconst containerRef = ref<HTMLElement | undefined>(undefined);\nconst isFocused = shallowRef(false);\nconst lastFocus = shallowRef<HTMLElement | undefined>(undefined);\nconst tabindex = computed(() => {\n return props.disabled || isFocused.value ? -1 : 0;\n});\nconst dimensions = useDimensions(props);\n\n/**\n * Establish provide() and inject() functionality for list items.\n */\ncreateList();\n\n/**\n * # On Focus\n * Set or restore focus\n * @param e\n */\nfunction onFocus(e: FocusEvent): void {\n if (\n !isFocused.value &&\n !(\n e.relatedTarget &&\n containerRef.value?.contains(e.relatedTarget as Node)\n ) &&\n containerRef.value\n ) {\n if (lastFocus.value) {\n lastFocus.value.focus();\n } else {\n focus();\n }\n }\n}\n\n/**\n * # On Focus In\n * @param e\n */\nfunction onFocusIn(e: FocusEvent): void {\n isFocused.value = true;\n}\n\n/**\n * # On Focus Out\n * @param e\n */\nfunction onFocusOut(e: FocusEvent): void {\n isFocused.value = false;\n}\n\n/**\n * # On Key Down\n * @see https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values\n * @param e\n */\nfunction onKeyDown(e: KeyboardEvent): void {\n const keys: { [key: string]: string } = {\n ArrowDown: \"next\",\n ArrowUp: \"previous\",\n Home: \"first\",\n End: \"last\",\n };\n const position = keys[e.key];\n if (position && containerRef.value) {\n focus(position as FocusPosition);\n e.preventDefault();\n }\n}\n\n/**\n * # Set Focus\n * @param position\n */\nfunction focus(position?: FocusPosition): void {\n lastFocus.value = focusChild(containerRef?.value, position);\n}\n\ndefineExpose({\n focus,\n select,\n});\n</script>\n\n<template>\n <component\n :is=\"props.tag\"\n ref=\"containerRef\"\n role=\"listbox\"\n :class=\"[\n 'ev-list',\n {\n 'is-disabled': props.disabled,\n },\n props.class,\n ]\"\n :style=\"[props.style, dimensions]\"\n :tabindex=\"tabindex\"\n @keydown=\"onKeyDown\"\n @focus=\"onFocus\"\n @focusin=\"onFocusIn\"\n @focusout=\"onFocusOut\">\n <ev-list-children :items=\"items\" :return-object=\"props.returnObject\">\n <slot name=\"default\" />\n </ev-list-children>\n </component>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AA+BA,UAAM,EAAE,MAAA,IAAU,SAAS,KAAK;AAChC,UAAM,EAAE,OAAA,IAAW,cAAc,KAAoB;AAC/C,UAAA,eAAe,IAA6B,MAAS;AACrD,UAAA,YAAY,WAAW,KAAK;AAC5B,UAAA,YAAY,WAAoC,MAAS;AACzD,UAAA,WAAW,SAAS,MAAM;AAC5B,aAAO,MAAM,YAAY,UAAU,QAAQ,KAAK;AAAA,IAAA,CACnD;AACK,UAAA,aAAa,cAAc,KAAK;AAK3B,eAAA;AAOX,aAAS,QAAQ,GAAqB;;AAClC,UACI,CAAC,UAAU,SACX,EACI,EAAE,mBACF,kBAAa,UAAb,mBAAoB,SAAS,EAAE,oBAEnC,aAAa,OACf;AACE,YAAI,UAAU,OAAO;AACjB,oBAAU,MAAM,MAAM;AAAA,QAAA,OACnB;AACG,gBAAA;AAAA,QAAA;AAAA,MACV;AAAA,IACJ;AAOJ,aAAS,UAAU,GAAqB;AACpC,gBAAU,QAAQ;AAAA,IAAA;AAOtB,aAAS,WAAW,GAAqB;AACrC,gBAAU,QAAQ;AAAA,IAAA;AAQtB,aAAS,UAAU,GAAwB;AACvC,YAAM,OAAkC;AAAA,QACpC,WAAW;AAAA,QACX,SAAS;AAAA,QACT,MAAM;AAAA,QACN,KAAK;AAAA,MACT;AACM,YAAA,WAAW,KAAK,EAAE,GAAG;AACvB,UAAA,YAAY,aAAa,OAAO;AAChC,cAAM,QAAyB;AAC/B,UAAE,eAAe;AAAA,MAAA;AAAA,IACrB;AAOJ,aAAS,MAAM,UAAgC;AAC3C,gBAAU,QAAQ,WAAW,6CAAc,OAAO,QAAQ;AAAA,IAAA;AAGjD,aAAA;AAAA,MACT;AAAA,MACA;AAAA,IAAA,CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,8 +1,11 @@
1
1
  /*! Evance UI v1.1.2 | MIT License */
2
- import { defineComponent, renderSlot, createElementBlock, openBlock, Fragment, renderList, normalizeProps, mergeProps, createVNode, guardReactiveProps } from "vue";
3
- import _sfc_main$1 from "../EvListItem/EvListItem.vue.mjs";
2
+ import { defineComponent, useSlots, resolveComponent, renderSlot, createElementBlock, openBlock, Fragment, renderList, normalizeProps, mergeProps, createVNode, unref, guardReactiveProps, withCtx, createSlots, toRaw } from "vue";
3
+ import _sfc_main$3 from "../EvListItem/EvListItem.vue.mjs";
4
4
  import { makeEvListChildrenProps } from "./EvList.mjs";
5
5
  import { createList } from "../../composables/lists/list.mjs";
6
+ import _sfc_main$1 from "../EvDivider/EvDivider.vue.mjs";
7
+ /* empty css */
8
+ import _sfc_main$2 from "../EvSection/EvSection.vue.mjs";
6
9
  const _sfc_main = /* @__PURE__ */ defineComponent({
7
10
  __name: "EvListChildren",
8
11
  props: {
@@ -10,15 +13,43 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
10
13
  },
11
14
  setup(__props) {
12
15
  const props = __props;
16
+ const slots = useSlots();
13
17
  createList();
14
18
  return (_ctx, _cache) => {
19
+ const _component_ev_list_children = resolveComponent("ev-list-children", true);
15
20
  return renderSlot(_ctx.$slots, "default", {}, () => [
16
21
  (openBlock(true), createElementBlock(Fragment, null, renderList(props.items, (item) => {
17
- return renderSlot(_ctx.$slots, "item", normalizeProps(mergeProps({
22
+ return openBlock(), createElementBlock(Fragment, {
18
23
  key: item.key
19
- }, { item, props: item.props })), () => [
20
- createVNode(_sfc_main$1, normalizeProps(guardReactiveProps(item.props)), null, 16)
21
- ]);
24
+ }, [
25
+ item.type === "divider" ? renderSlot(_ctx.$slots, "divider", normalizeProps(mergeProps({ key: 0 }, { props: item.props })), () => [
26
+ createVNode(unref(_sfc_main$1), normalizeProps(guardReactiveProps(item.props)), null, 16)
27
+ ]) : item.type === "subheader" ? renderSlot(_ctx.$slots, "subheader", normalizeProps(mergeProps({ key: 1 }, { props: item.props })), () => [
28
+ createVNode(unref(_sfc_main$2), normalizeProps(guardReactiveProps(item.props)), {
29
+ default: withCtx(() => [
30
+ createVNode(_component_ev_list_children, {
31
+ items: item.children,
32
+ "return-object": props.returnObject
33
+ }, createSlots({ _: 2 }, [
34
+ unref(slots).item ? {
35
+ name: "item",
36
+ fn: withCtx(({ item: item2, props: props2 }) => [
37
+ renderSlot(_ctx.$slots, "item", normalizeProps(guardReactiveProps({ item: item2, props: props2 })))
38
+ ]),
39
+ key: "0"
40
+ } : void 0
41
+ ]), 1032, ["items", "return-object"])
42
+ ]),
43
+ _: 2
44
+ }, 1040)
45
+ ]) : renderSlot(_ctx.$slots, "item", normalizeProps(mergeProps({ key: 2 }, { item, props: item.props })), () => [
46
+ createVNode(_sfc_main$3, mergeProps(item.props, {
47
+ value: props.returnObject ? toRaw(item.raw) : item.props.value,
48
+ "return-object": props.returnObject,
49
+ children: item.children
50
+ }), null, 16, ["value", "return-object", "children"])
51
+ ])
52
+ ], 64);
22
53
  }), 128))
23
54
  ]);
24
55
  };
@@ -1 +1 @@
1
- {"version":3,"file":"EvListChildren.vue.mjs","sources":["../../../../../src/components/EvList/EvListChildren.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * # EvListChildren\n *\n * A management component for rendering child items recursively.\n *\n * @todo: nested children + groups\n * v-for=\"{ children, props: itemProps, type, raw: item } in props.items\"\n */\nimport EvListItem from \"../EvListItem/EvListItem.vue\";\nimport { ListItem, makeEvListChildrenProps } from \"./EvList\";\nimport { createList } from \"@/composables/lists\";\n\nconst props = defineProps({\n ...makeEvListChildrenProps(),\n});\n\ndefineSlots<{\n default(): never;\n item(props: { item: ListItem; props: any }): never;\n}>();\n\ncreateList();\n</script>\n\n<template>\n <slot>\n <template v-for=\"item in props.items\" :key=\"item.key\">\n <slot name=\"item\" v-bind=\"{ item, props: item.props }\">\n <ev-list-item v-bind=\"item.props\" />\n </slot>\n </template>\n </slot>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;AAsBW,eAAA;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"EvListChildren.vue.mjs","sources":["../../../../../src/components/EvList/EvListChildren.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * # EvListChildren\n *\n * A management component for rendering child items recursively.\n */\nimport EvListItem from \"../EvListItem/EvListItem.vue\";\nimport { ListItem, makeEvListChildrenProps } from \"./EvList\";\nimport { createList } from \"@/composables/lists\";\nimport { EvDivider } from \"@/components/EvDivider\";\nimport { EvSection } from \"@/components/EvSection\";\nimport { toRaw } from \"vue\";\n\nconst props = defineProps({\n ...makeEvListChildrenProps(),\n});\n\nconst slots = defineSlots<{\n default(): never;\n divider(props: { props: any }): never;\n subheader(props: { props: any }): never;\n item(props: { item: ListItem; props: any }): never;\n}>();\n\ncreateList();\n</script>\n\n<template>\n <slot name=\"default\">\n <template v-for=\"item in props.items\" :key=\"item.key\">\n <slot\n v-if=\"item.type === 'divider'\"\n name=\"divider\"\n v-bind=\"{ props: item.props }\">\n <ev-divider v-bind=\"item.props\" />\n </slot>\n <slot\n v-else-if=\"item.type === 'subheader'\"\n name=\"subheader\"\n v-bind=\"{ props: item.props }\">\n <ev-section v-bind=\"item.props\">\n <ev-list-children\n :items=\"item.children\"\n :return-object=\"props.returnObject\">\n <template v-if=\"slots.item\" #item=\"{ item, props }\">\n <slot name=\"item\" v-bind=\"{ item, props }\" />\n </template>\n </ev-list-children>\n </ev-section>\n </slot>\n <template v-else>\n <slot name=\"item\" v-bind=\"{ item, props: item.props }\">\n <ev-list-item\n v-bind=\"item.props\"\n :value=\"\n props.returnObject\n ? toRaw(item.raw)\n : item.props.value\n \"\n :return-object=\"props.returnObject\"\n :children=\"item.children\" />\n </slot>\n </template>\n </template>\n </slot>\n</template>\n"],"names":["_useSlots"],"mappings":";;;;;;;;;;;;;;;AAiBA,UAAM,QAAQA;AAOH,eAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -18,6 +18,7 @@ const makeEvListItemProps = propsFactory(
18
18
  type: Array,
19
19
  default: () => []
20
20
  },
21
+ children: Array,
21
22
  disabled: Boolean,
22
23
  iconEnd: IconProp,
23
24
  iconStart: IconProp,
@@ -25,6 +26,13 @@ const makeEvListItemProps = propsFactory(
25
26
  type: Boolean,
26
27
  default: void 0
27
28
  },
29
+ loading: Boolean,
30
+ returnObject: Boolean,
31
+ subtitle: [String, Number, Boolean],
32
+ subtitleProps: {
33
+ type: Object,
34
+ default: () => ({})
35
+ },
28
36
  tag: {
29
37
  type: String,
30
38
  default: "div"
@@ -34,11 +42,6 @@ const makeEvListItemProps = propsFactory(
34
42
  type: Object,
35
43
  default: () => ({})
36
44
  },
37
- subtitle: [String, Number, Boolean],
38
- subtitleProps: {
39
- type: Object,
40
- default: () => ({})
41
- },
42
45
  value: null,
43
46
  onClick: EventProp(),
44
47
  ...makeRouterLinkOrHrefProps({
@@ -1 +1 @@
1
- {"version":3,"file":"EvListItem.mjs","sources":["../../../../../src/components/EvListItem/EvListItem.ts"],"sourcesContent":["import { EventProp, propsFactory } from \"@/util\";\nimport {\n makeRouterLinkOrHrefProps,\n RouterLinkOrHrefProps,\n} from \"@/composables/router\";\nimport { IconProp, IconValue } from \"@/composables/icons\";\nimport { ComponentProps, makeComponentProps } from \"@/composables/component\";\nimport { EvTextProps } from \"@/components/EvText\";\nimport { EvButtonProps } from \"@/components/EvButton\";\nimport { PropType } from \"vue\";\n\nexport interface EvListItemProps extends ComponentProps, RouterLinkOrHrefProps {\n active?: boolean;\n actions?: EvButtonProps[];\n actionsOnHover?: EvButtonProps[];\n disabled?: boolean;\n iconEnd?: IconValue;\n iconStart?: IconValue;\n link?: boolean;\n tag?: string;\n title?: string | number | boolean;\n subtitle?: string | number | boolean;\n value?: any;\n}\n\nexport const makeEvListItemProps = propsFactory(\n {\n active: {\n type: Boolean,\n default: undefined,\n },\n actions: {\n type: Array as PropType<readonly EvButtonProps[]>,\n default: () => [],\n },\n actionsOnHover: {\n type: Array as PropType<readonly EvButtonProps[]>,\n default: () => [],\n },\n disabled: Boolean,\n iconEnd: IconProp,\n iconStart: IconProp,\n link: {\n type: Boolean,\n default: undefined,\n },\n tag: {\n type: String,\n default: \"div\",\n },\n title: [String, Number, Boolean],\n titleProps: {\n type: Object as PropType<EvTextProps>,\n default: () => ({}),\n },\n subtitle: [String, Number, Boolean],\n subtitleProps: {\n type: Object as PropType<EvTextProps>,\n default: () => ({}),\n },\n value: null,\n onClick: EventProp<[MouseEvent]>(),\n\n ...makeRouterLinkOrHrefProps({\n exact: undefined,\n }),\n ...makeComponentProps(),\n },\n \"EvListItem\",\n);\n"],"names":[],"mappings":";;;;;;AAyBO,MAAM,sBAAsB;AAAA,EAC/B;AAAA,IACI,QAAQ;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACb;AAAA,IACA,SAAS;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM,CAAA;AAAA,IACnB;AAAA,IACA,gBAAgB;AAAA,MACZ,MAAM;AAAA,MACN,SAAS,MAAM,CAAA;AAAA,IACnB;AAAA,IACA,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,MAAM;AAAA,MACF,MAAM;AAAA,MACN,SAAS;AAAA,IACb;AAAA,IACA,KAAK;AAAA,MACD,MAAM;AAAA,MACN,SAAS;AAAA,IACb;AAAA,IACA,OAAO,CAAC,QAAQ,QAAQ,OAAO;AAAA,IAC/B,YAAY;AAAA,MACR,MAAM;AAAA,MACN,SAAS,OAAO,CAAC;AAAA,IACrB;AAAA,IACA,UAAU,CAAC,QAAQ,QAAQ,OAAO;AAAA,IAClC,eAAe;AAAA,MACX,MAAM;AAAA,MACN,SAAS,OAAO,CAAC;AAAA,IACrB;AAAA,IACA,OAAO;AAAA,IACP,SAAS,UAAwB;AAAA,IAEjC,GAAG,0BAA0B;AAAA,MACzB,OAAO;AAAA,IAAA,CACV;AAAA,IACD,GAAG,mBAAmB;AAAA,EAC1B;AAAA,EACA;AACJ;"}
1
+ {"version":3,"file":"EvListItem.mjs","sources":["../../../../../src/components/EvListItem/EvListItem.ts"],"sourcesContent":["import { EventProp, propsFactory } from \"@/util\";\nimport {\n makeRouterLinkOrHrefProps,\n RouterLinkOrHrefProps,\n} from \"@/composables/router\";\nimport { IconProp, IconValue } from \"@/composables/icons\";\nimport { ComponentProps, makeComponentProps } from \"@/composables/component\";\nimport { EvTextProps } from \"@/components/EvText\";\nimport { EvButtonProps } from \"@/components/EvButton\";\nimport { PropType } from \"vue\";\nimport { ListItem } from \"@/composables/lists\";\n\nexport interface EvListItemProps extends ComponentProps, RouterLinkOrHrefProps {\n active?: boolean;\n actions?: EvButtonProps[];\n actionsOnHover?: EvButtonProps[];\n children?: ListItem[];\n disabled?: boolean;\n iconEnd?: IconValue;\n iconStart?: IconValue;\n link?: boolean;\n tag?: string;\n title?: string | number | boolean;\n subtitle?: string | number | boolean;\n value?: any;\n}\n\nexport const makeEvListItemProps = propsFactory(\n {\n active: {\n type: Boolean,\n default: undefined,\n },\n actions: {\n type: Array as PropType<readonly EvButtonProps[]>,\n default: () => [],\n },\n actionsOnHover: {\n type: Array as PropType<readonly EvButtonProps[]>,\n default: () => [],\n },\n children: Array as PropType<readonly ListItem[]>,\n disabled: Boolean,\n iconEnd: IconProp,\n iconStart: IconProp,\n link: {\n type: Boolean,\n default: undefined,\n },\n loading: Boolean,\n returnObject: Boolean,\n subtitle: [String, Number, Boolean],\n subtitleProps: {\n type: Object as PropType<EvTextProps>,\n default: () => ({}),\n },\n tag: {\n type: String,\n default: \"div\",\n },\n title: [String, Number, Boolean],\n titleProps: {\n type: Object as PropType<EvTextProps>,\n default: () => ({}),\n },\n value: null,\n onClick: EventProp<[MouseEvent]>(),\n\n ...makeRouterLinkOrHrefProps({\n exact: undefined,\n }),\n ...makeComponentProps(),\n },\n \"EvListItem\",\n);\n"],"names":[],"mappings":";;;;;;AA2BO,MAAM,sBAAsB;AAAA,EAC/B;AAAA,IACI,QAAQ;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACb;AAAA,IACA,SAAS;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM,CAAA;AAAA,IACnB;AAAA,IACA,gBAAgB;AAAA,MACZ,MAAM;AAAA,MACN,SAAS,MAAM,CAAA;AAAA,IACnB;AAAA,IACA,UAAU;AAAA,IACV,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,MAAM;AAAA,MACF,MAAM;AAAA,MACN,SAAS;AAAA,IACb;AAAA,IACA,SAAS;AAAA,IACT,cAAc;AAAA,IACd,UAAU,CAAC,QAAQ,QAAQ,OAAO;AAAA,IAClC,eAAe;AAAA,MACX,MAAM;AAAA,MACN,SAAS,OAAO,CAAC;AAAA,IACrB;AAAA,IACA,KAAK;AAAA,MACD,MAAM;AAAA,MACN,SAAS;AAAA,IACb;AAAA,IACA,OAAO,CAAC,QAAQ,QAAQ,OAAO;AAAA,IAC/B,YAAY;AAAA,MACR,MAAM;AAAA,MACN,SAAS,OAAO,CAAC;AAAA,IACrB;AAAA,IACA,OAAO;AAAA,IACP,SAAS,UAAwB;AAAA,IAEjC,GAAG,0BAA0B;AAAA,MACzB,OAAO;AAAA,IAAA,CACV;AAAA,IACD,GAAG,mBAAmB;AAAA,EAC1B;AAAA,EACA;AACJ;"}
@@ -1,42 +1,57 @@
1
1
  /*! Evance UI v1.1.2 | MIT License */
2
- import { defineComponent, useSlots, useAttrs, computed, mergeProps, toDisplayString, createElementBlock, openBlock, normalizeStyle, normalizeClass, createBlock, createCommentVNode, resolveDynamicComponent, withKeys, unref, withCtx, createElementVNode, renderSlot, createVNode, Fragment, renderList } from "vue";
2
+ import { defineComponent, useSlots, useAttrs, computed, mergeProps, toDisplayString, createElementBlock, openBlock, createElementVNode, createBlock, createCommentVNode, normalizeStyle, normalizeClass, unref, resolveDynamicComponent, withKeys, withCtx, renderSlot, createVNode, Fragment, renderList, withDirectives, vShow } from "vue";
3
3
  /* empty css */
4
4
  import { makeEvListItemProps } from "./EvListItem.mjs";
5
5
  import { useRouterLinkOrHref } from "../../composables/router.mjs";
6
6
  import { useList } from "../../composables/lists/list.mjs";
7
7
  import { useNestedListItem } from "../../composables/lists/nested.mjs";
8
- import _sfc_main$2 from "../EvIcon/EvIcon.vue.mjs";
8
+ import _sfc_main$3 from "../EvIcon/EvIcon.vue.mjs";
9
9
  /* empty css */
10
- import _sfc_main$4 from "../EvButton/EvButton.vue.mjs";
11
- import _sfc_main$3 from "../EvButtonGroup/EvButtonGroup.vue.mjs";
10
+ import _sfc_main$2 from "../EvButton/EvButton.vue.mjs";
11
+ import _sfc_main$4 from "../EvButtonGroup/EvButtonGroup.vue.mjs";
12
12
  import _sfc_main$1 from "../EvText/EvText.vue.mjs";
13
13
  /* empty css */
14
+ import ChevronRightIcon from "../../icons/glyph/ChevronRightIcon.svg.mjs";
15
+ import DotIcon from "../../icons/glyph/DotIcon.svg.mjs";
16
+ import _sfc_main$5 from "../EvList/EvListChildren.vue.mjs";
17
+ import ExpandTransitionGenerator from "../EvTransition/transitions/expandTransition.mjs";
18
+ import { useModelProxy } from "../../composables/modelProxy.mjs";
14
19
  import { getNextId } from "../../util/helpers.mjs";
15
- const _hoisted_1 = { class: "ev-list-item--content" };
16
- const _hoisted_2 = /* @__PURE__ */ createElementVNode("div", {
20
+ import { EvTransition } from "../EvTransition/EvTransition.mjs";
21
+ const _hoisted_1 = { class: "ev-list-item" };
22
+ const _hoisted_2 = { class: "ev-list-item--label" };
23
+ const _hoisted_3 = /* @__PURE__ */ createElementVNode("div", {
17
24
  "aria-hidden": "true",
18
25
  class: "ev-list-item--indicator"
19
26
  }, null, -1);
20
- const _hoisted_3 = {
27
+ const _hoisted_4 = {
21
28
  key: 0,
22
- class: "ev-list-item--icon-start"
29
+ class: "ev-list-item--caret"
23
30
  };
24
- const _hoisted_4 = {
31
+ const _hoisted_5 = {
25
32
  key: 1,
26
- class: "ev-list-item--prefix"
33
+ class: "ev-list-item--icon-start"
27
34
  };
28
- const _hoisted_5 = {
35
+ const _hoisted_6 = {
29
36
  key: 2,
30
- class: "ev-list-item--suffix"
37
+ class: "ev-list-item--prefix"
31
38
  };
32
- const _hoisted_6 = {
39
+ const _hoisted_7 = {
33
40
  key: 3,
34
- class: "ev-list-item--actions"
41
+ class: "ev-list-item--suffix"
35
42
  };
36
- const _hoisted_7 = {
43
+ const _hoisted_8 = {
37
44
  key: 4,
45
+ class: "ev-list-item--actions"
46
+ };
47
+ const _hoisted_9 = {
48
+ key: 5,
38
49
  class: "ev-list-item--icon-end"
39
50
  };
51
+ const _hoisted_10 = {
52
+ class: "ev-list-item-children",
53
+ role: "group"
54
+ };
40
55
  const _sfc_main = /* @__PURE__ */ defineComponent({
41
56
  __name: "EvListItem",
42
57
  props: {
@@ -52,7 +67,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
52
67
  const id = computed(
53
68
  () => props.value === void 0 ? link.href.value : props.value
54
69
  );
55
- const { select, isSelected } = useNestedListItem(id, false);
70
+ const isLoading = useModelProxy(props, "loading");
71
+ const hasChildren = computed(() => {
72
+ return !!slots.children || !!props.children;
73
+ });
74
+ const { select, isSelected, isOpen, open, root } = useNestedListItem(id, hasChildren.value);
56
75
  const isLink = computed(() => props.link !== false && link.isLink.value);
57
76
  const isClickable = computed(() => {
58
77
  return !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!list);
@@ -123,91 +142,133 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
123
142
  }))
124
143
  );
125
144
  const hasActionsOnHover = computed(() => !!parsedActionsOnHover.value.length);
145
+ const transition = ExpandTransitionGenerator("", false);
146
+ const showCaret = computed(() => {
147
+ return isLoading.value || hasChildren.value || root.isNested.value;
148
+ });
149
+ function onClickOpener(e) {
150
+ open(!isOpen.value, e);
151
+ }
126
152
  return (_ctx, _cache) => {
127
- return openBlock(), createElementBlock("div", {
128
- role: "listitem",
129
- class: normalizeClass([
130
- "ev-list-item",
131
- {
132
- "is-active": isActive.value,
133
- "is-active--exact": isActiveExact.value,
134
- "is-clickable": isClickable.value || hasClickListener.value,
135
- "is-disabled": props.disabled,
136
- "is-actions-on-hover": hasActionsOnHover.value
137
- },
138
- props.class
139
- ]),
140
- style: normalizeStyle(props.style)
141
- }, [
142
- (openBlock(), createBlock(resolveDynamicComponent(itemElement.value), {
143
- href: unref(link).href.value,
144
- tabindex: tabIndex.value,
145
- class: "ev-list-item--button",
146
- onClick,
147
- onKeydown: [
148
- withKeys(onKeyDown, ["enter"]),
149
- withKeys(onKeyDown, ["space"])
150
- ]
151
- }, {
152
- default: withCtx(() => [
153
- createElementVNode("div", _hoisted_1, [
154
- renderSlot(_ctx.$slots, "default", {}, () => [
155
- createVNode(unref(_sfc_main$1), mergeProps({
156
- tag: "div",
157
- class: "ev-list-item--title"
158
- }, titleProps.value), null, 16),
159
- props.subtitle ? (openBlock(), createBlock(unref(_sfc_main$1), mergeProps({
160
- key: 0,
161
- tag: "div",
162
- class: "ev-list-item--subtitle"
163
- }, subtitleProps.value), null, 16)) : createCommentVNode("", true)
164
- ])
165
- ]),
166
- _hoisted_2
153
+ return openBlock(), createElementBlock("li", _hoisted_1, [
154
+ createElementVNode("div", {
155
+ role: "listitem",
156
+ class: normalizeClass([
157
+ "ev-list-item-content",
158
+ {
159
+ "is-active": isActive.value,
160
+ "is-active--exact": isActiveExact.value,
161
+ "is-clickable": isClickable.value || hasClickListener.value,
162
+ "is-disabled": props.disabled,
163
+ "is-actions-on-hover": hasActionsOnHover.value,
164
+ "is-open": unref(isOpen)
165
+ },
166
+ props.class
167
167
  ]),
168
- _: 3
169
- }, 40, ["href", "tabindex", "onKeydown"])),
170
- unref(slots).iconStart || props.iconStart ? (openBlock(), createElementBlock("div", _hoisted_3, [
171
- renderSlot(_ctx.$slots, "iconStart", {}, () => [
172
- createVNode(unref(_sfc_main$2), {
173
- glyph: props.iconStart
174
- }, null, 8, ["glyph"])
175
- ])
176
- ])) : createCommentVNode("", true),
177
- unref(slots).prefix ? (openBlock(), createElementBlock("div", _hoisted_4, [
178
- renderSlot(_ctx.$slots, "prefix")
179
- ])) : createCommentVNode("", true),
180
- unref(slots).suffix ? (openBlock(), createElementBlock("div", _hoisted_5, [
181
- renderSlot(_ctx.$slots, "suffix")
182
- ])) : createCommentVNode("", true),
183
- hasActions.value || hasActionsOnHover.value ? (openBlock(), createElementBlock("div", _hoisted_6, [
184
- createVNode(unref(_sfc_main$3), {
185
- size: "x-small",
186
- variant: "subtle"
168
+ style: normalizeStyle(props.style)
169
+ }, [
170
+ (openBlock(), createBlock(resolveDynamicComponent(itemElement.value), {
171
+ href: unref(link).href.value,
172
+ tabindex: tabIndex.value,
173
+ class: "ev-list-item--button",
174
+ onClick,
175
+ onKeydown: [
176
+ withKeys(onKeyDown, ["enter"]),
177
+ withKeys(onKeyDown, ["space"])
178
+ ]
187
179
  }, {
188
180
  default: withCtx(() => [
189
- (openBlock(true), createElementBlock(Fragment, null, renderList(parsedActionsOnHover.value, (action) => {
190
- return openBlock(), createBlock(unref(_sfc_main$4), mergeProps({
191
- key: action.id
192
- }, action.props, { class: "is-show-on-hover" }), null, 16);
193
- }), 128)),
194
- (openBlock(true), createElementBlock(Fragment, null, renderList(parsedActions.value, (action) => {
195
- return openBlock(), createBlock(unref(_sfc_main$4), mergeProps({
196
- key: action.id
197
- }, action.props), null, 16);
198
- }), 128))
181
+ createElementVNode("div", _hoisted_2, [
182
+ renderSlot(_ctx.$slots, "default", {}, () => [
183
+ createVNode(unref(_sfc_main$1), mergeProps({
184
+ tag: "div",
185
+ class: "ev-list-item--title"
186
+ }, titleProps.value), null, 16),
187
+ props.subtitle ? (openBlock(), createBlock(unref(_sfc_main$1), mergeProps({
188
+ key: 0,
189
+ tag: "div",
190
+ class: "ev-list-item--subtitle"
191
+ }, subtitleProps.value), null, 16)) : createCommentVNode("", true)
192
+ ])
193
+ ]),
194
+ _hoisted_3
199
195
  ]),
200
- _: 1
201
- })
202
- ])) : createCommentVNode("", true),
203
- unref(slots).iconEnd || props.iconEnd ? (openBlock(), createElementBlock("div", _hoisted_7, [
204
- renderSlot(_ctx.$slots, "iconEnd", {}, () => [
205
- createVNode(unref(_sfc_main$2), {
206
- glyph: props.iconEnd
207
- }, null, 8, ["glyph"])
208
- ])
209
- ])) : createCommentVNode("", true)
210
- ], 6);
196
+ _: 3
197
+ }, 40, ["href", "tabindex", "onKeydown"])),
198
+ showCaret.value ? (openBlock(), createElementBlock("div", _hoisted_4, [
199
+ hasChildren.value ? (openBlock(), createBlock(unref(_sfc_main$2), {
200
+ key: 0,
201
+ icon: "",
202
+ size: "x-small",
203
+ variant: "subtle",
204
+ loading: unref(isLoading),
205
+ "icon-start": unref(ChevronRightIcon),
206
+ onClick: onClickOpener
207
+ }, null, 8, ["loading", "icon-start"])) : (openBlock(), createBlock(unref(_sfc_main$3), {
208
+ key: 1,
209
+ glyph: unref(DotIcon)
210
+ }, null, 8, ["glyph"]))
211
+ ])) : createCommentVNode("", true),
212
+ unref(slots).iconStart || props.iconStart ? (openBlock(), createElementBlock("div", _hoisted_5, [
213
+ renderSlot(_ctx.$slots, "iconStart", {}, () => [
214
+ createVNode(unref(_sfc_main$3), {
215
+ glyph: props.iconStart
216
+ }, null, 8, ["glyph"])
217
+ ])
218
+ ])) : createCommentVNode("", true),
219
+ unref(slots).prefix ? (openBlock(), createElementBlock("div", _hoisted_6, [
220
+ renderSlot(_ctx.$slots, "prefix")
221
+ ])) : createCommentVNode("", true),
222
+ unref(slots).suffix ? (openBlock(), createElementBlock("div", _hoisted_7, [
223
+ renderSlot(_ctx.$slots, "suffix")
224
+ ])) : createCommentVNode("", true),
225
+ hasActions.value || hasActionsOnHover.value ? (openBlock(), createElementBlock("div", _hoisted_8, [
226
+ createVNode(unref(_sfc_main$4), {
227
+ size: "x-small",
228
+ variant: "subtle"
229
+ }, {
230
+ default: withCtx(() => [
231
+ (openBlock(true), createElementBlock(Fragment, null, renderList(parsedActionsOnHover.value, (action) => {
232
+ return openBlock(), createBlock(unref(_sfc_main$2), mergeProps({
233
+ key: action.id
234
+ }, action.props, { class: "is-show-on-hover" }), null, 16);
235
+ }), 128)),
236
+ (openBlock(true), createElementBlock(Fragment, null, renderList(parsedActions.value, (action) => {
237
+ return openBlock(), createBlock(unref(_sfc_main$2), mergeProps({
238
+ key: action.id
239
+ }, action.props), null, 16);
240
+ }), 128))
241
+ ]),
242
+ _: 1
243
+ })
244
+ ])) : createCommentVNode("", true),
245
+ unref(slots).iconEnd || props.iconEnd ? (openBlock(), createElementBlock("div", _hoisted_9, [
246
+ renderSlot(_ctx.$slots, "iconEnd", {}, () => [
247
+ createVNode(unref(_sfc_main$3), {
248
+ glyph: props.iconEnd
249
+ }, null, 8, ["glyph"])
250
+ ])
251
+ ])) : createCommentVNode("", true)
252
+ ], 6),
253
+ hasChildren.value ? (openBlock(), createBlock(unref(EvTransition), mergeProps({
254
+ key: 0,
255
+ name: "ev-list-group-transition"
256
+ }, unref(transition)), {
257
+ default: withCtx(() => [
258
+ withDirectives(createElementVNode("ul", _hoisted_10, [
259
+ renderSlot(_ctx.$slots, "children", {}, () => [
260
+ createVNode(_sfc_main$5, {
261
+ items: props.children,
262
+ "return-object": props.returnObject
263
+ }, null, 8, ["items", "return-object"])
264
+ ])
265
+ ], 512), [
266
+ [vShow, unref(isOpen)]
267
+ ])
268
+ ]),
269
+ _: 3
270
+ }, 16)) : createCommentVNode("", true)
271
+ ]);
211
272
  };
212
273
  }
213
274
  });
@@ -1 +1 @@
1
- {"version":3,"file":"EvListItem.vue.mjs","sources":["../../../../../src/components/EvListItem/EvListItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport \"./EvListItem.scss\";\nimport { makeEvListItemProps } from \"./EvListItem\";\nimport { computed, mergeProps, toDisplayString, useAttrs } from \"vue\";\nimport {\n RouterLinkOrHrefProps,\n useRouterLinkOrHref,\n} from \"@/composables/router\";\nimport { useList, useNestedListItem } from \"@/composables/lists\";\nimport { EvIcon } from \"@/components/EvIcon\";\nimport { EvButton } from \"@/components/EvButton\";\nimport { EvButtonGroup } from \"@/components/EvButtonGroup\";\nimport { EvText } from \"@/components/EvText\";\nimport { getNextId } from \"@/util\";\n\n// Emit\nconst emit = defineEmits([\"click\"]);\n\nconst props = defineProps({\n ...makeEvListItemProps(),\n});\nconst slots = defineSlots<{\n default(): never;\n iconStart(): never;\n iconEnd(): never;\n prefix(): never;\n suffix(): never;\n}>();\n\nconst attrs = useAttrs();\nconst link = useRouterLinkOrHref(props as RouterLinkOrHrefProps, attrs);\nconst list = useList();\nconst id = computed(() =>\n props.value === undefined ? link.href.value : props.value,\n);\nconst { select, isSelected } = useNestedListItem(id, false);\nconst isLink = computed(() => props.link !== false && link.isLink.value);\nconst isClickable = computed(() => {\n return (\n !props.disabled &&\n props.link !== false &&\n (props.link ||\n link.isClickable.value ||\n (props.value != null && !!list))\n );\n});\nconst isActive = computed(() => {\n return props.active !== false && (props.active || link.isActive?.value);\n});\nconst isActiveExact = computed(() => {\n return (\n props.exact !== false &&\n (props.exact || link.isExactActive?.value || isSelected.value)\n );\n});\nconst itemElement = computed(() => {\n return isLink.value ? \"a\" : props.tag;\n});\nconst tabIndex = computed(() => {\n return isClickable.value ? (list ? -2 : 0) : null;\n});\n\n/**\n * # onClick Handler\n * @param e\n */\nfunction onClick(e: MouseEvent): void {\n emit(\"click\", e);\n if (!isClickable.value) {\n return;\n }\n link.navigate?.(e);\n if (props.value != null) {\n select(!isSelected.value, e);\n }\n}\n\n/**\n * # onKeyDown Handler\n * @param e\n */\nfunction onKeyDown(e: KeyboardEvent): void {\n e.preventDefault();\n onClick(e as any as MouseEvent);\n}\n\nconst hasClickListener = computed(\n () => !!link.isClickable.value || !!props.onClick,\n);\n\nconst titleProps = computed(() => {\n return mergeProps(\n {\n truncate: true,\n text: toDisplayString(props.title),\n },\n props.titleProps,\n );\n});\n\nconst subtitleProps = computed(() => {\n return mergeProps(\n {\n appearance: \"subtle\",\n size: \"small\",\n truncate: true,\n text: toDisplayString(props.subtitle),\n },\n props.subtitleProps,\n );\n});\n\nconst parsedActions = computed(() =>\n props.actions.map((action) => ({\n props: action,\n id: getNextId(),\n })),\n);\nconst hasActions = computed(() => !!parsedActions.value.length);\nconst parsedActionsOnHover = computed(() =>\n props.actionsOnHover.map((action) => ({\n props: action,\n id: getNextId(),\n })),\n);\nconst hasActionsOnHover = computed(() => !!parsedActionsOnHover.value.length);\n</script>\n\n<template>\n <div\n role=\"listitem\"\n :class=\"[\n 'ev-list-item',\n {\n 'is-active': isActive,\n 'is-active--exact': isActiveExact,\n 'is-clickable': isClickable || hasClickListener,\n 'is-disabled': props.disabled,\n 'is-actions-on-hover': hasActionsOnHover,\n },\n props.class,\n ]\"\n :style=\"props.style\">\n <component\n :is=\"itemElement\"\n :href=\"link.href.value\"\n :tabindex=\"tabIndex\"\n class=\"ev-list-item--button\"\n @click=\"onClick\"\n @keydown.enter=\"onKeyDown\"\n @keydown.space=\"onKeyDown\">\n <div class=\"ev-list-item--content\">\n <slot name=\"default\">\n <ev-text\n tag=\"div\"\n class=\"ev-list-item--title\"\n v-bind=\"titleProps\" />\n <ev-text\n v-if=\"props.subtitle\"\n tag=\"div\"\n class=\"ev-list-item--subtitle\"\n v-bind=\"subtitleProps\" />\n </slot>\n </div>\n <div aria-hidden=\"true\" class=\"ev-list-item--indicator\"></div>\n </component>\n <div\n v-if=\"slots.iconStart || props.iconStart\"\n class=\"ev-list-item--icon-start\">\n <slot name=\"iconStart\">\n <ev-icon :glyph=\"props.iconStart\" />\n </slot>\n </div>\n <div v-if=\"slots.prefix\" class=\"ev-list-item--prefix\">\n <slot name=\"prefix\" />\n </div>\n <div v-if=\"slots.suffix\" class=\"ev-list-item--suffix\">\n <slot name=\"suffix\" />\n </div>\n <div\n v-if=\"hasActions || hasActionsOnHover\"\n class=\"ev-list-item--actions\">\n <ev-button-group size=\"x-small\" variant=\"subtle\">\n <ev-button\n v-for=\"action in parsedActionsOnHover\"\n :key=\"action.id\"\n v-bind=\"action.props\"\n class=\"is-show-on-hover\" />\n <ev-button\n v-for=\"action in parsedActions\"\n :key=\"action.id\"\n v-bind=\"action.props\" />\n </ev-button-group>\n </div>\n <div\n v-if=\"slots.iconEnd || props.iconEnd\"\n class=\"ev-list-item--icon-end\">\n <slot name=\"iconEnd\">\n <ev-icon :glyph=\"props.iconEnd\" />\n </slot>\n </div>\n </div>\n</template>\n"],"names":["_useSlots"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,UAAM,QAAQA;AAQd,UAAM,QAAQ,SAAS;AACjB,UAAA,OAAO,oBAAoB,OAAgC,KAAK;AACtE,UAAM,OAAO,QAAQ;AACrB,UAAM,KAAK;AAAA,MAAS,MAChB,MAAM,UAAU,SAAY,KAAK,KAAK,QAAQ,MAAM;AAAA,IACxD;AACA,UAAM,EAAE,QAAQ,WAAA,IAAe,kBAAkB,IAAI,KAAK;AACpD,UAAA,SAAS,SAAS,MAAM,MAAM,SAAS,SAAS,KAAK,OAAO,KAAK;AACjE,UAAA,cAAc,SAAS,MAAM;AAC/B,aACI,CAAC,MAAM,YACP,MAAM,SAAS,UACd,MAAM,QACH,KAAK,YAAY,SAChB,MAAM,SAAS,QAAQ,CAAC,CAAC;AAAA,IAAA,CAErC;AACK,UAAA,WAAW,SAAS,MAAM;;AAC5B,aAAO,MAAM,WAAW,UAAU,MAAM,YAAU,UAAK,aAAL,mBAAe;AAAA,IAAA,CACpE;AACK,UAAA,gBAAgB,SAAS,MAAM;;AAE7B,aAAA,MAAM,UAAU,UACf,MAAM,WAAS,UAAK,kBAAL,mBAAoB,UAAS,WAAW;AAAA,IAAA,CAE/D;AACK,UAAA,cAAc,SAAS,MAAM;AACxB,aAAA,OAAO,QAAQ,MAAM,MAAM;AAAA,IAAA,CACrC;AACK,UAAA,WAAW,SAAS,MAAM;AAC5B,aAAO,YAAY,QAAS,OAAO,KAAK,IAAK;AAAA,IAAA,CAChD;AAMD,aAAS,QAAQ,GAAqB;;AAClC,WAAK,SAAS,CAAC;AACX,UAAA,CAAC,YAAY,OAAO;AACpB;AAAA,MAAA;AAEJ,iBAAK,aAAL,8BAAgB;AACZ,UAAA,MAAM,SAAS,MAAM;AACd,eAAA,CAAC,WAAW,OAAO,CAAC;AAAA,MAAA;AAAA,IAC/B;AAOJ,aAAS,UAAU,GAAwB;AACvC,QAAE,eAAe;AACjB,cAAQ,CAAsB;AAAA,IAAA;AAGlC,UAAM,mBAAmB;AAAA,MACrB,MAAM,CAAC,CAAC,KAAK,YAAY,SAAS,CAAC,CAAC,MAAM;AAAA,IAC9C;AAEM,UAAA,aAAa,SAAS,MAAM;AACvB,aAAA;AAAA,QACH;AAAA,UACI,UAAU;AAAA,UACV,MAAM,gBAAgB,MAAM,KAAK;AAAA,QACrC;AAAA,QACA,MAAM;AAAA,MACV;AAAA,IAAA,CACH;AAEK,UAAA,gBAAgB,SAAS,MAAM;AAC1B,aAAA;AAAA,QACH;AAAA,UACI,YAAY;AAAA,UACZ,MAAM;AAAA,UACN,UAAU;AAAA,UACV,MAAM,gBAAgB,MAAM,QAAQ;AAAA,QACxC;AAAA,QACA,MAAM;AAAA,MACV;AAAA,IAAA,CACH;AAED,UAAM,gBAAgB;AAAA,MAAS,MAC3B,MAAM,QAAQ,IAAI,CAAC,YAAY;AAAA,QAC3B,OAAO;AAAA,QACP,IAAI,UAAU;AAAA,MAAA,EAChB;AAAA,IACN;AACA,UAAM,aAAa,SAAS,MAAM,CAAC,CAAC,cAAc,MAAM,MAAM;AAC9D,UAAM,uBAAuB;AAAA,MAAS,MAClC,MAAM,eAAe,IAAI,CAAC,YAAY;AAAA,QAClC,OAAO;AAAA,QACP,IAAI,UAAU;AAAA,MAAA,EAChB;AAAA,IACN;AACA,UAAM,oBAAoB,SAAS,MAAM,CAAC,CAAC,qBAAqB,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"EvListItem.vue.mjs","sources":["../../../../../src/components/EvListItem/EvListItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport \"./EvListItem.scss\";\nimport { makeEvListItemProps } from \"./EvListItem\";\nimport { computed, mergeProps, toDisplayString, useAttrs } from \"vue\";\nimport {\n RouterLinkOrHrefProps,\n useRouterLinkOrHref,\n} from \"@/composables/router\";\nimport { useList, useNestedListItem } from \"@/composables/lists\";\nimport { EvIcon } from \"@/components/EvIcon\";\nimport { EvButton } from \"@/components/EvButton\";\nimport { EvButtonGroup } from \"@/components/EvButtonGroup\";\nimport { EvText } from \"@/components/EvText\";\nimport { getNextId } from \"@/util\";\nimport { ChevronRightIcon, DotIcon } from \"@/icons\";\nimport { useModelProxy } from \"@/composables\";\nimport EvListChildren from \"@/components/EvList/EvListChildren.vue\";\nimport { EvTransition } from \"@/components/EvTransition\";\nimport ExpandTransitionGenerator from \"@/components/EvTransition/transitions/expandTransition\";\n\n// Emit\nconst emit = defineEmits([\"click\"]);\n\nconst props = defineProps({\n ...makeEvListItemProps(),\n});\nconst slots = defineSlots<{\n default(): never;\n iconStart(): never;\n iconEnd(): never;\n prefix(): never;\n suffix(): never;\n children(): never;\n}>();\n\nconst attrs = useAttrs();\nconst link = useRouterLinkOrHref(props as RouterLinkOrHrefProps, attrs);\nconst list = useList();\nconst id = computed(() =>\n props.value === undefined ? link.href.value : props.value,\n);\nconst isLoading = useModelProxy(props, \"loading\");\nconst hasChildren = computed(() => {\n return !!slots.children || !!props.children;\n});\nconst { select, isSelected, isOpen, open, root } = useNestedListItem(id, hasChildren.value);\nconst isLink = computed(() => props.link !== false && link.isLink.value);\nconst isClickable = computed(() => {\n return (\n !props.disabled &&\n props.link !== false &&\n (props.link ||\n link.isClickable.value ||\n (props.value != null && !!list))\n );\n});\nconst isActive = computed(() => {\n return props.active !== false && (props.active || link.isActive?.value);\n});\nconst isActiveExact = computed(() => {\n return (\n props.exact !== false &&\n (props.exact || link.isExactActive?.value || isSelected.value)\n );\n});\nconst itemElement = computed(() => {\n return isLink.value ? \"a\" : props.tag;\n});\nconst tabIndex = computed(() => {\n return isClickable.value ? (list ? -2 : 0) : null;\n});\n\n/**\n * # onClick Handler\n * @param e\n */\nfunction onClick(e: MouseEvent): void {\n emit(\"click\", e);\n if (!isClickable.value) {\n return;\n }\n link.navigate?.(e);\n if (props.value != null) {\n select(!isSelected.value, e);\n }\n}\n\n/**\n * # onKeyDown Handler\n * @param e\n */\nfunction onKeyDown(e: KeyboardEvent): void {\n e.preventDefault();\n onClick(e as any as MouseEvent);\n}\n\nconst hasClickListener = computed(\n () => !!link.isClickable.value || !!props.onClick,\n);\n\nconst titleProps = computed(() => {\n return mergeProps(\n {\n truncate: true,\n text: toDisplayString(props.title),\n },\n props.titleProps,\n );\n});\n\nconst subtitleProps = computed(() => {\n return mergeProps(\n {\n appearance: \"subtle\",\n size: \"small\",\n truncate: true,\n text: toDisplayString(props.subtitle),\n },\n props.subtitleProps,\n );\n});\n\nconst parsedActions = computed(() =>\n props.actions.map((action) => ({\n props: action,\n id: getNextId(),\n })),\n);\nconst hasActions = computed(() => !!parsedActions.value.length);\nconst parsedActionsOnHover = computed(() =>\n props.actionsOnHover.map((action) => ({\n props: action,\n id: getNextId(),\n })),\n);\nconst hasActionsOnHover = computed(() => !!parsedActionsOnHover.value.length);\n\nconst transition = ExpandTransitionGenerator(\"\", false);\nconst showCaret = computed(() => {\n return isLoading.value || hasChildren.value || root.isNested.value;\n});\n\nfunction onClickOpener(e: Event) {\n open(!isOpen.value, e);\n}\n\n</script>\n\n<template>\n <li class=\"ev-list-item\">\n <div\n role=\"listitem\"\n :class=\"[\n 'ev-list-item-content',\n {\n 'is-active': isActive,\n 'is-active--exact': isActiveExact,\n 'is-clickable': isClickable || hasClickListener,\n 'is-disabled': props.disabled,\n 'is-actions-on-hover': hasActionsOnHover,\n 'is-open': isOpen,\n },\n props.class,\n ]\"\n :style=\"props.style\">\n <component\n :is=\"itemElement\"\n :href=\"link.href.value\"\n :tabindex=\"tabIndex\"\n class=\"ev-list-item--button\"\n @click=\"onClick\"\n @keydown.enter=\"onKeyDown\"\n @keydown.space=\"onKeyDown\">\n <div class=\"ev-list-item--label\">\n <slot name=\"default\">\n <ev-text\n tag=\"div\"\n class=\"ev-list-item--title\"\n v-bind=\"titleProps\" />\n <ev-text\n v-if=\"props.subtitle\"\n tag=\"div\"\n class=\"ev-list-item--subtitle\"\n v-bind=\"subtitleProps\" />\n </slot>\n </div>\n <div aria-hidden=\"true\" class=\"ev-list-item--indicator\"></div>\n </component>\n <div v-if=\"showCaret\" class=\"ev-list-item--caret\">\n <ev-button\n v-if=\"hasChildren\"\n icon\n size=\"x-small\"\n variant=\"subtle\"\n :loading=\"isLoading\"\n :icon-start=\"ChevronRightIcon\"\n @click=\"onClickOpener\" />\n <ev-icon v-else :glyph=\"DotIcon\" />\n </div>\n <div\n v-if=\"slots.iconStart || props.iconStart\"\n class=\"ev-list-item--icon-start\">\n <slot name=\"iconStart\">\n <ev-icon :glyph=\"props.iconStart\" />\n </slot>\n </div>\n <div v-if=\"slots.prefix\" class=\"ev-list-item--prefix\">\n <slot name=\"prefix\" />\n </div>\n <div v-if=\"slots.suffix\" class=\"ev-list-item--suffix\">\n <slot name=\"suffix\" />\n </div>\n <div\n v-if=\"hasActions || hasActionsOnHover\"\n class=\"ev-list-item--actions\">\n <ev-button-group size=\"x-small\" variant=\"subtle\">\n <ev-button\n v-for=\"action in parsedActionsOnHover\"\n :key=\"action.id\"\n v-bind=\"action.props\"\n class=\"is-show-on-hover\" />\n <ev-button\n v-for=\"action in parsedActions\"\n :key=\"action.id\"\n v-bind=\"action.props\" />\n </ev-button-group>\n </div>\n <div\n v-if=\"slots.iconEnd || props.iconEnd\"\n class=\"ev-list-item--icon-end\">\n <slot name=\"iconEnd\">\n <ev-icon :glyph=\"props.iconEnd\" />\n </slot>\n </div>\n </div>\n\n <template v-if=\"hasChildren\">\n <ev-transition name=\"ev-list-group-transition\" v-bind=\"transition\">\n <ul v-show=\"isOpen\" class=\"ev-list-item-children\" role=\"group\">\n <slot name=\"children\">\n <ev-list-children\n :items=\"props.children\"\n :return-object=\"props.returnObject\" />\n </slot>\n </ul>\n </ev-transition>\n </template>\n </li>\n</template>\n"],"names":["_useSlots"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,UAAM,QAAQA;AASd,UAAM,QAAQ,SAAS;AACjB,UAAA,OAAO,oBAAoB,OAAgC,KAAK;AACtE,UAAM,OAAO,QAAQ;AACrB,UAAM,KAAK;AAAA,MAAS,MAChB,MAAM,UAAU,SAAY,KAAK,KAAK,QAAQ,MAAM;AAAA,IACxD;AACM,UAAA,YAAY,cAAc,OAAO,SAAS;AAC1C,UAAA,cAAc,SAAS,MAAM;AAC/B,aAAO,CAAC,CAAC,MAAM,YAAY,CAAC,CAAC,MAAM;AAAA,IAAA,CACtC;AACK,UAAA,EAAE,QAAQ,YAAY,QAAQ,MAAM,KAAS,IAAA,kBAAkB,IAAI,YAAY,KAAK;AACpF,UAAA,SAAS,SAAS,MAAM,MAAM,SAAS,SAAS,KAAK,OAAO,KAAK;AACjE,UAAA,cAAc,SAAS,MAAM;AAC/B,aACI,CAAC,MAAM,YACP,MAAM,SAAS,UACd,MAAM,QACH,KAAK,YAAY,SAChB,MAAM,SAAS,QAAQ,CAAC,CAAC;AAAA,IAAA,CAErC;AACK,UAAA,WAAW,SAAS,MAAM;;AAC5B,aAAO,MAAM,WAAW,UAAU,MAAM,YAAU,UAAK,aAAL,mBAAe;AAAA,IAAA,CACpE;AACK,UAAA,gBAAgB,SAAS,MAAM;;AAE7B,aAAA,MAAM,UAAU,UACf,MAAM,WAAS,UAAK,kBAAL,mBAAoB,UAAS,WAAW;AAAA,IAAA,CAE/D;AACK,UAAA,cAAc,SAAS,MAAM;AACxB,aAAA,OAAO,QAAQ,MAAM,MAAM;AAAA,IAAA,CACrC;AACK,UAAA,WAAW,SAAS,MAAM;AAC5B,aAAO,YAAY,QAAS,OAAO,KAAK,IAAK;AAAA,IAAA,CAChD;AAMD,aAAS,QAAQ,GAAqB;;AAClC,WAAK,SAAS,CAAC;AACX,UAAA,CAAC,YAAY,OAAO;AACpB;AAAA,MAAA;AAEJ,iBAAK,aAAL,8BAAgB;AACZ,UAAA,MAAM,SAAS,MAAM;AACd,eAAA,CAAC,WAAW,OAAO,CAAC;AAAA,MAAA;AAAA,IAC/B;AAOJ,aAAS,UAAU,GAAwB;AACvC,QAAE,eAAe;AACjB,cAAQ,CAAsB;AAAA,IAAA;AAGlC,UAAM,mBAAmB;AAAA,MACrB,MAAM,CAAC,CAAC,KAAK,YAAY,SAAS,CAAC,CAAC,MAAM;AAAA,IAC9C;AAEM,UAAA,aAAa,SAAS,MAAM;AACvB,aAAA;AAAA,QACH;AAAA,UACI,UAAU;AAAA,UACV,MAAM,gBAAgB,MAAM,KAAK;AAAA,QACrC;AAAA,QACA,MAAM;AAAA,MACV;AAAA,IAAA,CACH;AAEK,UAAA,gBAAgB,SAAS,MAAM;AAC1B,aAAA;AAAA,QACH;AAAA,UACI,YAAY;AAAA,UACZ,MAAM;AAAA,UACN,UAAU;AAAA,UACV,MAAM,gBAAgB,MAAM,QAAQ;AAAA,QACxC;AAAA,QACA,MAAM;AAAA,MACV;AAAA,IAAA,CACH;AAED,UAAM,gBAAgB;AAAA,MAAS,MAC3B,MAAM,QAAQ,IAAI,CAAC,YAAY;AAAA,QAC3B,OAAO;AAAA,QACP,IAAI,UAAU;AAAA,MAAA,EAChB;AAAA,IACN;AACA,UAAM,aAAa,SAAS,MAAM,CAAC,CAAC,cAAc,MAAM,MAAM;AAC9D,UAAM,uBAAuB;AAAA,MAAS,MAClC,MAAM,eAAe,IAAI,CAAC,YAAY;AAAA,QAClC,OAAO;AAAA,QACP,IAAI,UAAU;AAAA,MAAA,EAChB;AAAA,IACN;AACA,UAAM,oBAAoB,SAAS,MAAM,CAAC,CAAC,qBAAqB,MAAM,MAAM;AAEtE,UAAA,aAAa,0BAA0B,IAAI,KAAK;AAChD,UAAA,YAAY,SAAS,MAAM;AAC7B,aAAO,UAAU,SAAS,YAAY,SAAS,KAAK,SAAS;AAAA,IAAA,CAChE;AAED,aAAS,cAAc,GAAU;AACxB,WAAA,CAAC,OAAO,OAAO,CAAC;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"EvTooltip.vue.mjs","sources":["../../../../../src/components/EvTooltip/EvTooltip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport \"./EvTooltip.scss\";\nimport { makeEvTooltipProps } from \"./EvTooltip\";\nimport { useModelProxy } from \"@/composables/modelProxy\";\nimport { filterComponentProps, getNextId } from \"@/util\";\nimport { EvOverlay, PositionStrategyProps } from \"@/components/EvOverlay\";\nimport { computed, mergeProps, ref } from \"vue\";\n\nconst props = defineProps({\n ...makeEvTooltipProps(),\n});\n\nconst slots = defineSlots<{\n activator(): never;\n default(): never;\n}>();\n\nconst isActive = useModelProxy(props, \"modelValue\");\nconst uid = getNextId();\n\nconst id = computed(() => {\n return props.id || `ev-tooltip-${uid}`;\n});\n\nconst overlayRef = ref<typeof EvOverlay>();\nconst overlayProps = computed(() => filterComponentProps(EvOverlay, props));\n\nconst position = computed(() => {\n return props.position.split(\" \").length > 1\n ? props.position\n : ((props.position + \" center\") as PositionStrategyProps[\"position\"]);\n});\n\nconst origin = computed(() => {\n return props.origin === \"auto\" ||\n props.origin === \"overlap\" ||\n props.origin.split(\" \").length > 1 ||\n props.position.split(\" \").length > 1\n ? props.origin\n : ((props.origin + \" center\") as PositionStrategyProps[\"origin\"]);\n});\n\nconst transition = computed(() => {\n if (props.transition) {\n return props.transition;\n }\n return isActive.value ? \"transition-scale\" : \"transition-fade\";\n});\n\nconst activatorProps = computed(() => {\n return mergeProps(\n {\n \"aria-describedby\": id.value,\n },\n props.activatorProps,\n );\n});\n</script>\n\n<template>\n <ev-overlay\n :id=\"id\"\n ref=\"overlayRef\"\n v-bind=\"overlayProps\"\n v-model=\"isActive\"\n role=\"tooltip\"\n :class=\"['ev-tooltip', props.class]\"\n :style=\"props.style\"\n :transition=\"transition\"\n :position=\"position\"\n :origin=\"origin\"\n :activator-props=\"activatorProps\"\n absolute\n disable-global-stack>\n <template v-if=\"slots.activator\" #activator=\"activatorSlotProps\">\n <slot name=\"activator\" v-bind=\"activatorSlotProps\" />\n </template>\n <template #pointer>\n <div class=\"ev-tooltip--pointer\"></div>\n </template>\n <slot name=\"default\">{{ props.text }}</slot>\n </ev-overlay>\n</template>\n"],"names":["_useSlots","EvOverlay"],"mappings":";;;;;;;;;;;;;;;AAYA,UAAM,QAAQA;AAKR,UAAA,WAAW,cAAc,OAAO,YAAY;AAClD,UAAM,MAAM,UAAU;AAEhB,UAAA,KAAK,SAAS,MAAM;AACf,aAAA,MAAM,MAAM,cAAc,GAAG;AAAA,IAAA,CACvC;AAED,UAAM,aAAa,IAAsB;AACzC,UAAM,eAAe,SAAS,MAAM,qBAAqBC,aAAW,KAAK,CAAC;AAEpE,UAAA,WAAW,SAAS,MAAM;AACrB,aAAA,MAAM,SAAS,MAAM,GAAG,EAAE,SAAS,IACpC,MAAM,WACJ,MAAM,WAAW;AAAA,IAAA,CAC5B;AAEK,UAAA,SAAS,SAAS,MAAM;AACnB,aAAA,MAAM,WAAW,UACpB,MAAM,WAAW,aACjB,MAAM,OAAO,MAAM,GAAG,EAAE,SAAS,KACjC,MAAM,SAAS,MAAM,GAAG,EAAE,SAAS,IACjC,MAAM,SACJ,MAAM,SAAS;AAAA,IAAA,CAC1B;AAEK,UAAA,aAAa,SAAS,MAAM;AAC9B,UAAI,MAAM,YAAY;AAClB,eAAO,MAAM;AAAA,MAAA;AAEV,aAAA,SAAS,QAAQ,qBAAqB;AAAA,IAAA,CAChD;AAEK,UAAA,iBAAiB,SAAS,MAAM;AAC3B,aAAA;AAAA,QACH;AAAA,UACI,oBAAoB,GAAG;AAAA,QAC3B;AAAA,QACA,MAAM;AAAA,MACV;AAAA,IAAA,CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"EvTooltip.vue.mjs","sources":["../../../../../src/components/EvTooltip/EvTooltip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport \"./EvTooltip.scss\";\nimport { makeEvTooltipProps } from \"./EvTooltip\";\nimport { useModelProxy } from \"@/composables/modelProxy\";\nimport { filterComponentProps, getNextId } from \"@/util\";\nimport { EvOverlay, PositionStrategyProps } from \"@/components/EvOverlay\";\nimport { computed, mergeProps, ref } from \"vue\";\n\nconst props = defineProps({\n ...makeEvTooltipProps(),\n});\n\nconst slots = defineSlots<{\n activator(props: { isActive: boolean; props: any }): never;\n default(): never;\n}>();\n\nconst isActive = useModelProxy(props, \"modelValue\");\nconst uid = getNextId();\n\nconst id = computed(() => {\n return props.id || `ev-tooltip-${uid}`;\n});\n\nconst overlayRef = ref<typeof EvOverlay>();\nconst overlayProps = computed(() => filterComponentProps(EvOverlay, props));\n\nconst position = computed(() => {\n return props.position.split(\" \").length > 1\n ? props.position\n : ((props.position + \" center\") as PositionStrategyProps[\"position\"]);\n});\n\nconst origin = computed(() => {\n return props.origin === \"auto\" ||\n props.origin === \"overlap\" ||\n props.origin.split(\" \").length > 1 ||\n props.position.split(\" \").length > 1\n ? props.origin\n : ((props.origin + \" center\") as PositionStrategyProps[\"origin\"]);\n});\n\nconst transition = computed(() => {\n if (props.transition) {\n return props.transition;\n }\n return isActive.value ? \"transition-scale\" : \"transition-fade\";\n});\n\nconst activatorProps = computed(() => {\n return mergeProps(\n {\n \"aria-describedby\": id.value,\n },\n props.activatorProps,\n );\n});\n</script>\n\n<template>\n <ev-overlay\n :id=\"id\"\n ref=\"overlayRef\"\n v-bind=\"overlayProps\"\n v-model=\"isActive\"\n role=\"tooltip\"\n :class=\"['ev-tooltip', props.class]\"\n :style=\"props.style\"\n :transition=\"transition\"\n :position=\"position\"\n :origin=\"origin\"\n :activator-props=\"activatorProps\"\n absolute\n disable-global-stack>\n <template v-if=\"slots.activator\" #activator=\"activatorSlotProps\">\n <slot name=\"activator\" v-bind=\"activatorSlotProps\" />\n </template>\n <template #pointer>\n <div class=\"ev-tooltip--pointer\"></div>\n </template>\n <slot name=\"default\">{{ props.text }}</slot>\n </ev-overlay>\n</template>\n"],"names":["_useSlots","EvOverlay"],"mappings":";;;;;;;;;;;;;;;AAYA,UAAM,QAAQA;AAKR,UAAA,WAAW,cAAc,OAAO,YAAY;AAClD,UAAM,MAAM,UAAU;AAEhB,UAAA,KAAK,SAAS,MAAM;AACf,aAAA,MAAM,MAAM,cAAc,GAAG;AAAA,IAAA,CACvC;AAED,UAAM,aAAa,IAAsB;AACzC,UAAM,eAAe,SAAS,MAAM,qBAAqBC,aAAW,KAAK,CAAC;AAEpE,UAAA,WAAW,SAAS,MAAM;AACrB,aAAA,MAAM,SAAS,MAAM,GAAG,EAAE,SAAS,IACpC,MAAM,WACJ,MAAM,WAAW;AAAA,IAAA,CAC5B;AAEK,UAAA,SAAS,SAAS,MAAM;AACnB,aAAA,MAAM,WAAW,UACpB,MAAM,WAAW,aACjB,MAAM,OAAO,MAAM,GAAG,EAAE,SAAS,KACjC,MAAM,SAAS,MAAM,GAAG,EAAE,SAAS,IACjC,MAAM,SACJ,MAAM,SAAS;AAAA,IAAA,CAC1B;AAEK,UAAA,aAAa,SAAS,MAAM;AAC9B,UAAI,MAAM,YAAY;AAClB,eAAO,MAAM;AAAA,MAAA;AAEV,aAAA,SAAS,QAAQ,qBAAqB;AAAA,IAAA,CAChD;AAEK,UAAA,iBAAiB,SAAS,MAAM;AAC3B,aAAA;AAAA,QACH;AAAA,UACI,oBAAoB,GAAG;AAAA,QAC3B;AAAA,QACA,MAAM;AAAA,MACV;AAAA,IAAA,CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}