@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.
- package/components.d.ts +100 -99
- package/dist/cjs/evance-ui.css +226 -172
- package/dist/cjs/fonts/Inter/Inter-Bold.woff2 +0 -0
- package/dist/cjs/fonts/Inter/Inter-Medium.woff2 +0 -0
- package/dist/cjs/fonts/Inter/Inter-Regular.woff2 +0 -0
- package/dist/cjs/fonts/Inter/Inter-SemiBold.woff2 +0 -0
- package/dist/cjs/fonts/JetBrainsMono/JetBrainsMono-Bold.woff2 +0 -0
- package/dist/cjs/fonts/JetBrainsMono/JetBrainsMono-Medium.woff2 +0 -0
- package/dist/cjs/fonts/JetBrainsMono/JetBrainsMono-Regular.woff2 +0 -0
- package/dist/cjs/fonts/JetBrainsMono/JetBrainsMono-SemiBold.woff2 +0 -0
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/src/components/EvList/EvList.cjs +3 -2
- package/dist/cjs/src/components/EvList/EvList.cjs.map +1 -1
- package/dist/cjs/src/components/EvList/EvList.vue.cjs +5 -2
- package/dist/cjs/src/components/EvList/EvList.vue.cjs.map +1 -1
- package/dist/cjs/src/components/EvList/EvListChildren.vue.cjs +35 -4
- package/dist/cjs/src/components/EvList/EvListChildren.vue.cjs.map +1 -1
- package/dist/cjs/src/components/EvListItem/EvListItem.cjs +8 -5
- package/dist/cjs/src/components/EvListItem/EvListItem.cjs.map +1 -1
- package/dist/cjs/src/components/EvListItem/EvListItem.vue.cjs +153 -92
- package/dist/cjs/src/components/EvListItem/EvListItem.vue.cjs.map +1 -1
- package/dist/cjs/src/components/EvTooltip/EvTooltip.vue.cjs.map +1 -1
- package/dist/cjs/src/composables/lists/list-items.cjs +2 -0
- package/dist/cjs/src/composables/lists/list-items.cjs.map +1 -1
- package/dist/cjs/src/composables/lists/nested.cjs +26 -8
- package/dist/cjs/src/composables/lists/nested.cjs.map +1 -1
- package/dist/cjs/src/icons/glyph/DotIcon.svg.cjs +1 -1
- package/dist/cjs/src/icons/glyph/DotIcon.svg.cjs.map +1 -1
- package/dist/esm/evance-ui.css +226 -172
- package/dist/esm/fonts/Inter/Inter-Bold.woff2 +0 -0
- package/dist/esm/fonts/Inter/Inter-Medium.woff2 +0 -0
- package/dist/esm/fonts/Inter/Inter-Regular.woff2 +0 -0
- package/dist/esm/fonts/Inter/Inter-SemiBold.woff2 +0 -0
- package/dist/esm/fonts/JetBrainsMono/JetBrainsMono-Bold.woff2 +0 -0
- package/dist/esm/fonts/JetBrainsMono/JetBrainsMono-Medium.woff2 +0 -0
- package/dist/esm/fonts/JetBrainsMono/JetBrainsMono-Regular.woff2 +0 -0
- package/dist/esm/fonts/JetBrainsMono/JetBrainsMono-SemiBold.woff2 +0 -0
- package/dist/esm/index.mjs +1 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/src/components/EvList/EvList.mjs +3 -2
- package/dist/esm/src/components/EvList/EvList.mjs.map +1 -1
- package/dist/esm/src/components/EvList/EvList.vue.mjs +5 -2
- package/dist/esm/src/components/EvList/EvList.vue.mjs.map +1 -1
- package/dist/esm/src/components/EvList/EvListChildren.vue.mjs +37 -6
- package/dist/esm/src/components/EvList/EvListChildren.vue.mjs.map +1 -1
- package/dist/esm/src/components/EvListItem/EvListItem.mjs +8 -5
- package/dist/esm/src/components/EvListItem/EvListItem.mjs.map +1 -1
- package/dist/esm/src/components/EvListItem/EvListItem.vue.mjs +157 -96
- package/dist/esm/src/components/EvListItem/EvListItem.vue.mjs.map +1 -1
- package/dist/esm/src/components/EvTooltip/EvTooltip.vue.mjs.map +1 -1
- package/dist/esm/src/composables/lists/list-items.mjs +2 -0
- package/dist/esm/src/composables/lists/list-items.mjs.map +1 -1
- package/dist/esm/src/composables/lists/nested.mjs +27 -9
- package/dist/esm/src/composables/lists/nested.mjs.map +1 -1
- package/dist/esm/src/icons/glyph/DotIcon.svg.mjs +1 -1
- package/dist/esm/src/icons/glyph/DotIcon.svg.mjs.map +1 -1
- package/dist/evance-ui.css +1 -1
- package/dist/evance-ui.js +2 -2
- package/dist/evance-ui.js.map +1 -1
- package/dist/evance-ui.mjs +4553 -4443
- package/dist/evance-ui.mjs.map +1 -1
- package/dist/fonts/Inter/Inter-Bold.woff2 +0 -0
- package/dist/fonts/Inter/Inter-Medium.woff2 +0 -0
- package/dist/fonts/Inter/Inter-Regular.woff2 +0 -0
- package/dist/fonts/Inter/Inter-SemiBold.woff2 +0 -0
- package/dist/fonts/JetBrainsMono/JetBrainsMono-Bold.woff2 +0 -0
- package/dist/fonts/JetBrainsMono/JetBrainsMono-Medium.woff2 +0 -0
- package/dist/fonts/JetBrainsMono/JetBrainsMono-Regular.woff2 +0 -0
- package/dist/fonts/JetBrainsMono/JetBrainsMono-SemiBold.woff2 +0 -0
- package/dist/types/components/EvDataTable/EvDataTable.vue.d.ts +1 -1
- package/dist/types/components/EvEmptyState/EvEmptyState.vue.d.ts +1 -1
- package/dist/types/components/EvList/EvList.d.ts +5 -0
- package/dist/types/components/EvList/EvList.d.ts.map +1 -1
- package/dist/types/components/EvList/EvListChildren.vue.d.ts +11 -1
- package/dist/types/components/EvList/EvListChildren.vue.d.ts.map +1 -1
- package/dist/types/components/EvListItem/EvListItem.d.ts +33 -16
- package/dist/types/components/EvListItem/EvListItem.d.ts.map +1 -1
- package/dist/types/components/EvListItem/EvListItem.vue.d.ts +20 -11
- package/dist/types/components/EvListItem/EvListItem.vue.d.ts.map +1 -1
- package/dist/types/components/EvTooltip/EvTooltip.vue.d.ts +4 -1
- package/dist/types/components/EvTooltip/EvTooltip.vue.d.ts.map +1 -1
- package/dist/types/composables/lists/list-items.d.ts +1 -0
- package/dist/types/composables/lists/list-items.d.ts.map +1 -1
- package/dist/types/composables/lists/nested.d.ts +6 -6
- package/dist/types/composables/lists/nested.d.ts.map +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/EvListGroup.cjs +0 -8
- package/dist/cjs/EvListGroup.cjs.map +0 -1
- package/dist/cjs/src/components/EvListGroup/EvListGroup.cjs +0 -13
- package/dist/cjs/src/components/EvListGroup/EvListGroup.cjs.map +0 -1
- package/dist/cjs/src/components/EvListGroup/EvListGroup.vue.cjs +0 -96
- package/dist/cjs/src/components/EvListGroup/EvListGroup.vue.cjs.map +0 -1
- package/dist/cjs/src/components/EvListGroup/EvListGroup.vue2.cjs +0 -6
- package/dist/cjs/src/components/EvListGroup/EvListGroup.vue2.cjs.map +0 -1
- package/dist/esm/EvListGroup.mjs +0 -8
- package/dist/esm/EvListGroup.mjs.map +0 -1
- package/dist/esm/src/components/EvListGroup/EvListGroup.mjs +0 -13
- package/dist/esm/src/components/EvListGroup/EvListGroup.mjs.map +0 -1
- package/dist/esm/src/components/EvListGroup/EvListGroup.vue.mjs +0 -96
- package/dist/esm/src/components/EvListGroup/EvListGroup.vue.mjs.map +0 -1
- package/dist/esm/src/components/EvListGroup/EvListGroup.vue2.mjs +0 -6
- package/dist/esm/src/components/EvListGroup/EvListGroup.vue2.mjs.map +0 -1
- package/dist/types/EvListGroup.d.ts +0 -1
- package/dist/types/components/EvListGroup/EvListGroup.d.ts +0 -155
- package/dist/types/components/EvListGroup/EvListGroup.d.ts.map +0 -1
- package/dist/types/components/EvListGroup/EvListGroup.vue.d.ts +0 -118
- package/dist/types/components/EvListGroup/EvListGroup.vue.d.ts.map +0 -1
- package/dist/types/components/EvListGroup/index.d.ts +0 -3
- package/dist/types/components/EvListGroup/index.d.ts.map +0 -1
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
/*! Evance UI v1.1.2 | MIT License */
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
4
4
|
;/* empty css */
|
|
5
|
+
;/* empty css */
|
|
5
6
|
const index = require("./src/components/index.cjs");
|
|
6
7
|
const index$1 = require("./src/directives/index.cjs");
|
|
7
8
|
const index$2 = require("./src/services/index.cjs");
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","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":"
|
|
1
|
+
{"version":3,"file":"index.cjs","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,UAAAA,eAAgB,EAAA,YAAEC,OAAA,YAAYC,mBAAYC,SAAU,GAAG,SAAS;AAC3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -11,7 +11,7 @@ const makeEvListProps = props.propsFactory(
|
|
|
11
11
|
disabled: Boolean,
|
|
12
12
|
tag: {
|
|
13
13
|
type: String,
|
|
14
|
-
default: "
|
|
14
|
+
default: "ul"
|
|
15
15
|
},
|
|
16
16
|
itemType: {
|
|
17
17
|
type: String,
|
|
@@ -28,7 +28,8 @@ const makeEvListProps = props.propsFactory(
|
|
|
28
28
|
);
|
|
29
29
|
const makeEvListChildrenProps = props.propsFactory(
|
|
30
30
|
{
|
|
31
|
-
items: Array
|
|
31
|
+
items: Array,
|
|
32
|
+
returnObject: Boolean
|
|
32
33
|
},
|
|
33
34
|
"EvListChildren"
|
|
34
35
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EvList.cjs","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: \"
|
|
1
|
+
{"version":3,"file":"EvList.cjs","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":["propsFactory","makeListItemsProps","makeNestedProps","makeComponentProps","makeDimensionsProps"],"mappings":";;;;;;;;AAiCO,MAAM,kBAAkBA,MAAA;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,GAAGC,6BAAmB;AAAA,IACtB,GAAGC,uBAAgB;AAAA,MACf,gBAAgB;AAAA,IAAA,CACnB;AAAA,IACD,GAAGC,6BAAmB;AAAA,IACtB,GAAGC,WAAoB,oBAAA;AAAA,EAC3B;AAAA,EACA;AACJ;AAKO,MAAM,0BAA0BJ,MAAA;AAAA,EACnC;AAAA,IACI,OAAO;AAAA,IACP,cAAc;AAAA,EAClB;AAAA,EACA;AACJ;;;"}
|
|
@@ -84,12 +84,15 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
84
84
|
onFocusout: onFocusOut
|
|
85
85
|
}, {
|
|
86
86
|
default: vue.withCtx(() => [
|
|
87
|
-
vue.createVNode(EvListChildren_vue_vue_type_script_setup_true_lang.default, {
|
|
87
|
+
vue.createVNode(EvListChildren_vue_vue_type_script_setup_true_lang.default, {
|
|
88
|
+
items: vue.unref(items),
|
|
89
|
+
"return-object": props.returnObject
|
|
90
|
+
}, {
|
|
88
91
|
default: vue.withCtx(() => [
|
|
89
92
|
vue.renderSlot(_ctx.$slots, "default")
|
|
90
93
|
]),
|
|
91
94
|
_: 3
|
|
92
|
-
}, 8, ["items"])
|
|
95
|
+
}, 8, ["items", "return-object"])
|
|
93
96
|
]),
|
|
94
97
|
_: 3
|
|
95
98
|
}, 40, ["class", "style", "tabindex"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EvList.vue.cjs","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":["useItems","useNestedList","ref","shallowRef","computed","dimensions","useDimensions","createList","focusChild"],"mappings":";;;;;;;;;;;;;;;;;;;;AA+BA,UAAM,EAAE,MAAA,IAAUA,UAAA,SAAS,KAAK;AAChC,UAAM,EAAE,OAAA,IAAWC,OAAA,cAAc,KAAoB;AAC/C,UAAA,eAAeC,QAA6B,MAAS;AACrD,UAAA,YAAYC,eAAW,KAAK;AAC5B,UAAA,YAAYA,eAAoC,MAAS;AACzD,UAAA,WAAWC,IAAAA,SAAS,MAAM;AAC5B,aAAO,MAAM,YAAY,UAAU,QAAQ,KAAK;AAAA,IAAA,CACnD;AACK,UAAAC,eAAaC,yBAAc,KAAK;AAK3BC,oBAAA;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,QAAQC,OAAAA,WAAW,6CAAc,OAAO,QAAQ;AAAA,IAAA;AAGjD,aAAA;AAAA,MACT;AAAA,MACA;AAAA,IAAA,CACH
|
|
1
|
+
{"version":3,"file":"EvList.vue.cjs","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":["useItems","useNestedList","ref","shallowRef","computed","dimensions","useDimensions","createList","focusChild"],"mappings":";;;;;;;;;;;;;;;;;;;;AA+BA,UAAM,EAAE,MAAA,IAAUA,UAAA,SAAS,KAAK;AAChC,UAAM,EAAE,OAAA,IAAWC,OAAA,cAAc,KAAoB;AAC/C,UAAA,eAAeC,QAA6B,MAAS;AACrD,UAAA,YAAYC,eAAW,KAAK;AAC5B,UAAA,YAAYA,eAAoC,MAAS;AACzD,UAAA,WAAWC,IAAAA,SAAS,MAAM;AAC5B,aAAO,MAAM,YAAY,UAAU,QAAQ,KAAK;AAAA,IAAA,CACnD;AACK,UAAAC,eAAaC,yBAAc,KAAK;AAK3BC,oBAAA;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,QAAQC,OAAAA,WAAW,6CAAc,OAAO,QAAQ;AAAA,IAAA;AAGjD,aAAA;AAAA,MACT;AAAA,MACA;AAAA,IAAA,CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -5,6 +5,9 @@ const vue = require("vue");
|
|
|
5
5
|
const EvListItem_vue_vue_type_script_setup_true_lang = require("../EvListItem/EvListItem.vue.cjs");
|
|
6
6
|
const EvList = require("./EvList.cjs");
|
|
7
7
|
const list = require("../../composables/lists/list.cjs");
|
|
8
|
+
const EvDivider_vue_vue_type_script_setup_true_lang = require("../EvDivider/EvDivider.vue.cjs");
|
|
9
|
+
;/* empty css */
|
|
10
|
+
const EvSection_vue_vue_type_script_setup_true_lang = require("../EvSection/EvSection.vue.cjs");
|
|
8
11
|
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
9
12
|
__name: "EvListChildren",
|
|
10
13
|
props: {
|
|
@@ -12,15 +15,43 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
12
15
|
},
|
|
13
16
|
setup(__props) {
|
|
14
17
|
const props = __props;
|
|
18
|
+
const slots = vue.useSlots();
|
|
15
19
|
list.createList();
|
|
16
20
|
return (_ctx, _cache) => {
|
|
21
|
+
const _component_ev_list_children = vue.resolveComponent("ev-list-children", true);
|
|
17
22
|
return vue.renderSlot(_ctx.$slots, "default", {}, () => [
|
|
18
23
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(props.items, (item) => {
|
|
19
|
-
return vue.
|
|
24
|
+
return vue.openBlock(), vue.createElementBlock(vue.Fragment, {
|
|
20
25
|
key: item.key
|
|
21
|
-
},
|
|
22
|
-
vue.
|
|
23
|
-
|
|
26
|
+
}, [
|
|
27
|
+
item.type === "divider" ? vue.renderSlot(_ctx.$slots, "divider", vue.normalizeProps(vue.mergeProps({ key: 0 }, { props: item.props })), () => [
|
|
28
|
+
vue.createVNode(vue.unref(EvDivider_vue_vue_type_script_setup_true_lang.default), vue.normalizeProps(vue.guardReactiveProps(item.props)), null, 16)
|
|
29
|
+
]) : item.type === "subheader" ? vue.renderSlot(_ctx.$slots, "subheader", vue.normalizeProps(vue.mergeProps({ key: 1 }, { props: item.props })), () => [
|
|
30
|
+
vue.createVNode(vue.unref(EvSection_vue_vue_type_script_setup_true_lang.default), vue.normalizeProps(vue.guardReactiveProps(item.props)), {
|
|
31
|
+
default: vue.withCtx(() => [
|
|
32
|
+
vue.createVNode(_component_ev_list_children, {
|
|
33
|
+
items: item.children,
|
|
34
|
+
"return-object": props.returnObject
|
|
35
|
+
}, vue.createSlots({ _: 2 }, [
|
|
36
|
+
vue.unref(slots).item ? {
|
|
37
|
+
name: "item",
|
|
38
|
+
fn: vue.withCtx(({ item: item2, props: props2 }) => [
|
|
39
|
+
vue.renderSlot(_ctx.$slots, "item", vue.normalizeProps(vue.guardReactiveProps({ item: item2, props: props2 })))
|
|
40
|
+
]),
|
|
41
|
+
key: "0"
|
|
42
|
+
} : void 0
|
|
43
|
+
]), 1032, ["items", "return-object"])
|
|
44
|
+
]),
|
|
45
|
+
_: 2
|
|
46
|
+
}, 1040)
|
|
47
|
+
]) : vue.renderSlot(_ctx.$slots, "item", vue.normalizeProps(vue.mergeProps({ key: 2 }, { item, props: item.props })), () => [
|
|
48
|
+
vue.createVNode(EvListItem_vue_vue_type_script_setup_true_lang.default, vue.mergeProps(item.props, {
|
|
49
|
+
value: props.returnObject ? vue.toRaw(item.raw) : item.props.value,
|
|
50
|
+
"return-object": props.returnObject,
|
|
51
|
+
children: item.children
|
|
52
|
+
}), null, 16, ["value", "return-object", "children"])
|
|
53
|
+
])
|
|
54
|
+
], 64);
|
|
24
55
|
}), 128))
|
|
25
56
|
]);
|
|
26
57
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EvListChildren.vue.cjs","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
|
|
1
|
+
{"version":3,"file":"EvListChildren.vue.cjs","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","createList"],"mappings":";;;;;;;;;;;;;;;;;AAiBA,UAAM,QAAQA,IAAAA;AAOHC,oBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -20,6 +20,7 @@ const makeEvListItemProps = props.propsFactory(
|
|
|
20
20
|
type: Array,
|
|
21
21
|
default: () => []
|
|
22
22
|
},
|
|
23
|
+
children: Array,
|
|
23
24
|
disabled: Boolean,
|
|
24
25
|
iconEnd: icons.IconProp,
|
|
25
26
|
iconStart: icons.IconProp,
|
|
@@ -27,6 +28,13 @@ const makeEvListItemProps = props.propsFactory(
|
|
|
27
28
|
type: Boolean,
|
|
28
29
|
default: void 0
|
|
29
30
|
},
|
|
31
|
+
loading: Boolean,
|
|
32
|
+
returnObject: Boolean,
|
|
33
|
+
subtitle: [String, Number, Boolean],
|
|
34
|
+
subtitleProps: {
|
|
35
|
+
type: Object,
|
|
36
|
+
default: () => ({})
|
|
37
|
+
},
|
|
30
38
|
tag: {
|
|
31
39
|
type: String,
|
|
32
40
|
default: "div"
|
|
@@ -36,11 +44,6 @@ const makeEvListItemProps = props.propsFactory(
|
|
|
36
44
|
type: Object,
|
|
37
45
|
default: () => ({})
|
|
38
46
|
},
|
|
39
|
-
subtitle: [String, Number, Boolean],
|
|
40
|
-
subtitleProps: {
|
|
41
|
-
type: Object,
|
|
42
|
-
default: () => ({})
|
|
43
|
-
},
|
|
44
47
|
value: null,
|
|
45
48
|
onClick: events.EventProp(),
|
|
46
49
|
...router.makeRouterLinkOrHrefProps({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EvListItem.cjs","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
|
|
1
|
+
{"version":3,"file":"EvListItem.cjs","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":["propsFactory","IconProp","EventProp","makeRouterLinkOrHrefProps","makeComponentProps"],"mappings":";;;;;;;;AA2BO,MAAM,sBAAsBA,MAAA;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,SAASC,MAAA;AAAA,IACT,WAAWA,MAAA;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,SAASC,OAAAA,UAAwB;AAAA,IAEjC,GAAGC,iCAA0B;AAAA,MACzB,OAAO;AAAA,IAAA,CACV;AAAA,IACD,GAAGC,UAAmB,mBAAA;AAAA,EAC1B;AAAA,EACA;AACJ;;"}
|
|
@@ -13,32 +13,47 @@ const EvButton_vue_vue_type_script_setup_true_lang = require("../EvButton/EvButt
|
|
|
13
13
|
const EvButtonGroup_vue_vue_type_script_setup_true_lang = require("../EvButtonGroup/EvButtonGroup.vue.cjs");
|
|
14
14
|
const EvText_vue_vue_type_script_setup_true_lang = require("../EvText/EvText.vue.cjs");
|
|
15
15
|
;/* empty css */
|
|
16
|
+
const ChevronRightIcon = require("../../icons/glyph/ChevronRightIcon.svg.cjs");
|
|
17
|
+
const DotIcon = require("../../icons/glyph/DotIcon.svg.cjs");
|
|
18
|
+
const EvListChildren_vue_vue_type_script_setup_true_lang = require("../EvList/EvListChildren.vue.cjs");
|
|
19
|
+
const expandTransition = require("../EvTransition/transitions/expandTransition.cjs");
|
|
20
|
+
const modelProxy = require("../../composables/modelProxy.cjs");
|
|
16
21
|
const helpers = require("../../util/helpers.cjs");
|
|
17
|
-
const
|
|
18
|
-
const
|
|
22
|
+
const EvTransition = require("../EvTransition/EvTransition.cjs");
|
|
23
|
+
const _hoisted_1 = { class: "ev-list-item" };
|
|
24
|
+
const _hoisted_2 = { class: "ev-list-item--label" };
|
|
25
|
+
const _hoisted_3 = /* @__PURE__ */ vue.createElementVNode("div", {
|
|
19
26
|
"aria-hidden": "true",
|
|
20
27
|
class: "ev-list-item--indicator"
|
|
21
28
|
}, null, -1);
|
|
22
|
-
const
|
|
29
|
+
const _hoisted_4 = {
|
|
23
30
|
key: 0,
|
|
24
|
-
class: "ev-list-item--
|
|
31
|
+
class: "ev-list-item--caret"
|
|
25
32
|
};
|
|
26
|
-
const
|
|
33
|
+
const _hoisted_5 = {
|
|
27
34
|
key: 1,
|
|
28
|
-
class: "ev-list-item--
|
|
35
|
+
class: "ev-list-item--icon-start"
|
|
29
36
|
};
|
|
30
|
-
const
|
|
37
|
+
const _hoisted_6 = {
|
|
31
38
|
key: 2,
|
|
32
|
-
class: "ev-list-item--
|
|
39
|
+
class: "ev-list-item--prefix"
|
|
33
40
|
};
|
|
34
|
-
const
|
|
41
|
+
const _hoisted_7 = {
|
|
35
42
|
key: 3,
|
|
36
|
-
class: "ev-list-item--
|
|
43
|
+
class: "ev-list-item--suffix"
|
|
37
44
|
};
|
|
38
|
-
const
|
|
45
|
+
const _hoisted_8 = {
|
|
39
46
|
key: 4,
|
|
47
|
+
class: "ev-list-item--actions"
|
|
48
|
+
};
|
|
49
|
+
const _hoisted_9 = {
|
|
50
|
+
key: 5,
|
|
40
51
|
class: "ev-list-item--icon-end"
|
|
41
52
|
};
|
|
53
|
+
const _hoisted_10 = {
|
|
54
|
+
class: "ev-list-item-children",
|
|
55
|
+
role: "group"
|
|
56
|
+
};
|
|
42
57
|
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
43
58
|
__name: "EvListItem",
|
|
44
59
|
props: {
|
|
@@ -54,7 +69,11 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
54
69
|
const id = vue.computed(
|
|
55
70
|
() => props.value === void 0 ? link.href.value : props.value
|
|
56
71
|
);
|
|
57
|
-
const
|
|
72
|
+
const isLoading = modelProxy.useModelProxy(props, "loading");
|
|
73
|
+
const hasChildren = vue.computed(() => {
|
|
74
|
+
return !!slots.children || !!props.children;
|
|
75
|
+
});
|
|
76
|
+
const { select, isSelected, isOpen, open, root } = nested.useNestedListItem(id, hasChildren.value);
|
|
58
77
|
const isLink = vue.computed(() => props.link !== false && link.isLink.value);
|
|
59
78
|
const isClickable = vue.computed(() => {
|
|
60
79
|
return !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!list$1);
|
|
@@ -125,91 +144,133 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
125
144
|
}))
|
|
126
145
|
);
|
|
127
146
|
const hasActionsOnHover = vue.computed(() => !!parsedActionsOnHover.value.length);
|
|
147
|
+
const transition = expandTransition.default("", false);
|
|
148
|
+
const showCaret = vue.computed(() => {
|
|
149
|
+
return isLoading.value || hasChildren.value || root.isNested.value;
|
|
150
|
+
});
|
|
151
|
+
function onClickOpener(e) {
|
|
152
|
+
open(!isOpen.value, e);
|
|
153
|
+
}
|
|
128
154
|
return (_ctx, _cache) => {
|
|
129
|
-
return vue.openBlock(), vue.createElementBlock("
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
}, [
|
|
144
|
-
(vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(itemElement.value), {
|
|
145
|
-
href: vue.unref(link).href.value,
|
|
146
|
-
tabindex: tabIndex.value,
|
|
147
|
-
class: "ev-list-item--button",
|
|
148
|
-
onClick,
|
|
149
|
-
onKeydown: [
|
|
150
|
-
vue.withKeys(onKeyDown, ["enter"]),
|
|
151
|
-
vue.withKeys(onKeyDown, ["space"])
|
|
152
|
-
]
|
|
153
|
-
}, {
|
|
154
|
-
default: vue.withCtx(() => [
|
|
155
|
-
vue.createElementVNode("div", _hoisted_1, [
|
|
156
|
-
vue.renderSlot(_ctx.$slots, "default", {}, () => [
|
|
157
|
-
vue.createVNode(vue.unref(EvText_vue_vue_type_script_setup_true_lang.default), vue.mergeProps({
|
|
158
|
-
tag: "div",
|
|
159
|
-
class: "ev-list-item--title"
|
|
160
|
-
}, titleProps.value), null, 16),
|
|
161
|
-
props.subtitle ? (vue.openBlock(), vue.createBlock(vue.unref(EvText_vue_vue_type_script_setup_true_lang.default), vue.mergeProps({
|
|
162
|
-
key: 0,
|
|
163
|
-
tag: "div",
|
|
164
|
-
class: "ev-list-item--subtitle"
|
|
165
|
-
}, subtitleProps.value), null, 16)) : vue.createCommentVNode("", true)
|
|
166
|
-
])
|
|
167
|
-
]),
|
|
168
|
-
_hoisted_2
|
|
155
|
+
return vue.openBlock(), vue.createElementBlock("li", _hoisted_1, [
|
|
156
|
+
vue.createElementVNode("div", {
|
|
157
|
+
role: "listitem",
|
|
158
|
+
class: vue.normalizeClass([
|
|
159
|
+
"ev-list-item-content",
|
|
160
|
+
{
|
|
161
|
+
"is-active": isActive.value,
|
|
162
|
+
"is-active--exact": isActiveExact.value,
|
|
163
|
+
"is-clickable": isClickable.value || hasClickListener.value,
|
|
164
|
+
"is-disabled": props.disabled,
|
|
165
|
+
"is-actions-on-hover": hasActionsOnHover.value,
|
|
166
|
+
"is-open": vue.unref(isOpen)
|
|
167
|
+
},
|
|
168
|
+
props.class
|
|
169
169
|
]),
|
|
170
|
-
|
|
171
|
-
},
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
])) : vue.createCommentVNode("", true),
|
|
182
|
-
vue.unref(slots).suffix ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5, [
|
|
183
|
-
vue.renderSlot(_ctx.$slots, "suffix")
|
|
184
|
-
])) : vue.createCommentVNode("", true),
|
|
185
|
-
hasActions.value || hasActionsOnHover.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6, [
|
|
186
|
-
vue.createVNode(vue.unref(EvButtonGroup_vue_vue_type_script_setup_true_lang.default), {
|
|
187
|
-
size: "x-small",
|
|
188
|
-
variant: "subtle"
|
|
170
|
+
style: vue.normalizeStyle(props.style)
|
|
171
|
+
}, [
|
|
172
|
+
(vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(itemElement.value), {
|
|
173
|
+
href: vue.unref(link).href.value,
|
|
174
|
+
tabindex: tabIndex.value,
|
|
175
|
+
class: "ev-list-item--button",
|
|
176
|
+
onClick,
|
|
177
|
+
onKeydown: [
|
|
178
|
+
vue.withKeys(onKeyDown, ["enter"]),
|
|
179
|
+
vue.withKeys(onKeyDown, ["space"])
|
|
180
|
+
]
|
|
189
181
|
}, {
|
|
190
182
|
default: vue.withCtx(() => [
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
183
|
+
vue.createElementVNode("div", _hoisted_2, [
|
|
184
|
+
vue.renderSlot(_ctx.$slots, "default", {}, () => [
|
|
185
|
+
vue.createVNode(vue.unref(EvText_vue_vue_type_script_setup_true_lang.default), vue.mergeProps({
|
|
186
|
+
tag: "div",
|
|
187
|
+
class: "ev-list-item--title"
|
|
188
|
+
}, titleProps.value), null, 16),
|
|
189
|
+
props.subtitle ? (vue.openBlock(), vue.createBlock(vue.unref(EvText_vue_vue_type_script_setup_true_lang.default), vue.mergeProps({
|
|
190
|
+
key: 0,
|
|
191
|
+
tag: "div",
|
|
192
|
+
class: "ev-list-item--subtitle"
|
|
193
|
+
}, subtitleProps.value), null, 16)) : vue.createCommentVNode("", true)
|
|
194
|
+
])
|
|
195
|
+
]),
|
|
196
|
+
_hoisted_3
|
|
201
197
|
]),
|
|
202
|
-
_:
|
|
203
|
-
})
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
198
|
+
_: 3
|
|
199
|
+
}, 40, ["href", "tabindex", "onKeydown"])),
|
|
200
|
+
showCaret.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, [
|
|
201
|
+
hasChildren.value ? (vue.openBlock(), vue.createBlock(vue.unref(EvButton_vue_vue_type_script_setup_true_lang.default), {
|
|
202
|
+
key: 0,
|
|
203
|
+
icon: "",
|
|
204
|
+
size: "x-small",
|
|
205
|
+
variant: "subtle",
|
|
206
|
+
loading: vue.unref(isLoading),
|
|
207
|
+
"icon-start": vue.unref(ChevronRightIcon.default),
|
|
208
|
+
onClick: onClickOpener
|
|
209
|
+
}, null, 8, ["loading", "icon-start"])) : (vue.openBlock(), vue.createBlock(vue.unref(EvIcon_vue_vue_type_script_setup_true_lang.default), {
|
|
210
|
+
key: 1,
|
|
211
|
+
glyph: vue.unref(DotIcon.default)
|
|
212
|
+
}, null, 8, ["glyph"]))
|
|
213
|
+
])) : vue.createCommentVNode("", true),
|
|
214
|
+
vue.unref(slots).iconStart || props.iconStart ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5, [
|
|
215
|
+
vue.renderSlot(_ctx.$slots, "iconStart", {}, () => [
|
|
216
|
+
vue.createVNode(vue.unref(EvIcon_vue_vue_type_script_setup_true_lang.default), {
|
|
217
|
+
glyph: props.iconStart
|
|
218
|
+
}, null, 8, ["glyph"])
|
|
219
|
+
])
|
|
220
|
+
])) : vue.createCommentVNode("", true),
|
|
221
|
+
vue.unref(slots).prefix ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6, [
|
|
222
|
+
vue.renderSlot(_ctx.$slots, "prefix")
|
|
223
|
+
])) : vue.createCommentVNode("", true),
|
|
224
|
+
vue.unref(slots).suffix ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7, [
|
|
225
|
+
vue.renderSlot(_ctx.$slots, "suffix")
|
|
226
|
+
])) : vue.createCommentVNode("", true),
|
|
227
|
+
hasActions.value || hasActionsOnHover.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8, [
|
|
228
|
+
vue.createVNode(vue.unref(EvButtonGroup_vue_vue_type_script_setup_true_lang.default), {
|
|
229
|
+
size: "x-small",
|
|
230
|
+
variant: "subtle"
|
|
231
|
+
}, {
|
|
232
|
+
default: vue.withCtx(() => [
|
|
233
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(parsedActionsOnHover.value, (action) => {
|
|
234
|
+
return vue.openBlock(), vue.createBlock(vue.unref(EvButton_vue_vue_type_script_setup_true_lang.default), vue.mergeProps({
|
|
235
|
+
key: action.id
|
|
236
|
+
}, action.props, { class: "is-show-on-hover" }), null, 16);
|
|
237
|
+
}), 128)),
|
|
238
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(parsedActions.value, (action) => {
|
|
239
|
+
return vue.openBlock(), vue.createBlock(vue.unref(EvButton_vue_vue_type_script_setup_true_lang.default), vue.mergeProps({
|
|
240
|
+
key: action.id
|
|
241
|
+
}, action.props), null, 16);
|
|
242
|
+
}), 128))
|
|
243
|
+
]),
|
|
244
|
+
_: 1
|
|
245
|
+
})
|
|
246
|
+
])) : vue.createCommentVNode("", true),
|
|
247
|
+
vue.unref(slots).iconEnd || props.iconEnd ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_9, [
|
|
248
|
+
vue.renderSlot(_ctx.$slots, "iconEnd", {}, () => [
|
|
249
|
+
vue.createVNode(vue.unref(EvIcon_vue_vue_type_script_setup_true_lang.default), {
|
|
250
|
+
glyph: props.iconEnd
|
|
251
|
+
}, null, 8, ["glyph"])
|
|
252
|
+
])
|
|
253
|
+
])) : vue.createCommentVNode("", true)
|
|
254
|
+
], 6),
|
|
255
|
+
hasChildren.value ? (vue.openBlock(), vue.createBlock(vue.unref(EvTransition.EvTransition), vue.mergeProps({
|
|
256
|
+
key: 0,
|
|
257
|
+
name: "ev-list-group-transition"
|
|
258
|
+
}, vue.unref(transition)), {
|
|
259
|
+
default: vue.withCtx(() => [
|
|
260
|
+
vue.withDirectives(vue.createElementVNode("ul", _hoisted_10, [
|
|
261
|
+
vue.renderSlot(_ctx.$slots, "children", {}, () => [
|
|
262
|
+
vue.createVNode(EvListChildren_vue_vue_type_script_setup_true_lang.default, {
|
|
263
|
+
items: props.children,
|
|
264
|
+
"return-object": props.returnObject
|
|
265
|
+
}, null, 8, ["items", "return-object"])
|
|
266
|
+
])
|
|
267
|
+
], 512), [
|
|
268
|
+
[vue.vShow, vue.unref(isOpen)]
|
|
269
|
+
])
|
|
270
|
+
]),
|
|
271
|
+
_: 3
|
|
272
|
+
}, 16)) : vue.createCommentVNode("", true)
|
|
273
|
+
]);
|
|
213
274
|
};
|
|
214
275
|
}
|
|
215
276
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EvListItem.vue.cjs","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","useAttrs","useRouterLinkOrHref","list","useList","computed","useNestedListItem","mergeProps","toDisplayString","getNextId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EvListItem.vue.cjs","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","useAttrs","useRouterLinkOrHref","list","useList","computed","useModelProxy","useNestedListItem","mergeProps","toDisplayString","getNextId","ExpandTransitionGenerator"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EvTooltip.vue.cjs","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","useModelProxy","getNextId","computed","ref","filterComponentProps","EvOverlay","mergeProps"],"mappings":";;;;;;;;;;;;;;;;;AAYA,UAAM,QAAQA,IAAAA;AAKR,UAAA,WAAWC,WAAAA,cAAc,OAAO,YAAY;AAClD,UAAM,MAAMC,QAAAA,UAAU;AAEhB,UAAA,KAAKC,IAAAA,SAAS,MAAM;AACf,aAAA,MAAM,MAAM,cAAc,GAAG;AAAA,IAAA,CACvC;AAED,UAAM,aAAaC,IAAAA,IAAsB;AACzC,UAAM,eAAeD,IAAAA,SAAS,MAAME,QAAqB,qBAAAC,8CAAA,SAAW,KAAK,CAAC;AAEpE,UAAA,WAAWH,IAAAA,SAAS,MAAM;AACrB,aAAA,MAAM,SAAS,MAAM,GAAG,EAAE,SAAS,IACpC,MAAM,WACJ,MAAM,WAAW;AAAA,IAAA,CAC5B;AAEK,UAAA,SAASA,IAAAA,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,aAAaA,IAAAA,SAAS,MAAM;AAC9B,UAAI,MAAM,YAAY;AAClB,eAAO,MAAM;AAAA,MAAA;AAEV,aAAA,SAAS,QAAQ,qBAAqB;AAAA,IAAA,CAChD;AAEK,UAAA,iBAAiBA,IAAAA,SAAS,MAAM;AAC3B,aAAAI,IAAA;AAAA,QACH;AAAA,UACI,oBAAoB,GAAG;AAAA,QAC3B;AAAA,QACA,MAAM;AAAA,MACV;AAAA,IAAA,CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"EvTooltip.vue.cjs","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","useModelProxy","getNextId","computed","ref","filterComponentProps","EvOverlay","mergeProps"],"mappings":";;;;;;;;;;;;;;;;;AAYA,UAAM,QAAQA,IAAAA;AAKR,UAAA,WAAWC,WAAAA,cAAc,OAAO,YAAY;AAClD,UAAM,MAAMC,QAAAA,UAAU;AAEhB,UAAA,KAAKC,IAAAA,SAAS,MAAM;AACf,aAAA,MAAM,MAAM,cAAc,GAAG;AAAA,IAAA,CACvC;AAED,UAAM,aAAaC,IAAAA,IAAsB;AACzC,UAAM,eAAeD,IAAAA,SAAS,MAAME,QAAqB,qBAAAC,8CAAA,SAAW,KAAK,CAAC;AAEpE,UAAA,WAAWH,IAAAA,SAAS,MAAM;AACrB,aAAA,MAAM,SAAS,MAAM,GAAG,EAAE,SAAS,IACpC,MAAM,WACJ,MAAM,WAAW;AAAA,IAAA,CAC5B;AAEK,UAAA,SAASA,IAAAA,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,aAAaA,IAAAA,SAAS,MAAM;AAC9B,UAAI,MAAM,YAAY;AAClB,eAAO,MAAM;AAAA,MAAA;AAEV,aAAA,SAAS,QAAQ,qBAAqB;AAAA,IAAA,CAChD;AAEK,UAAA,iBAAiBA,IAAAA,SAAS,MAAM;AAC3B,aAAAI,IAAA;AAAA,QACH;AAAA,UACI,oBAAoB,GAAG;AAAA,QAC3B;AAAA,QACA,MAAM;AAAA,MACV;AAAA,IAAA,CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|