yuyeon 0.0.3 → 0.0.6

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 (45) hide show
  1. package/dist/style.css +1 -1
  2. package/dist/yuyeon.mjs +1239 -969
  3. package/dist/yuyeon.umd.js +1 -1
  4. package/lib/components/button/YButton.mjs +8 -5
  5. package/lib/components/button/YButton.mjs.map +1 -1
  6. package/lib/components/button/YButton.scss +117 -117
  7. package/lib/components/dialog/YDialog.mjs +4 -0
  8. package/lib/components/dialog/YDialog.mjs.map +1 -1
  9. package/lib/components/icons/YIconPageControl.mjs +32 -0
  10. package/lib/components/icons/YIconPageControl.mjs.map +1 -0
  11. package/lib/components/menu/YMenu.mjs +7 -9
  12. package/lib/components/menu/YMenu.mjs.map +1 -1
  13. package/lib/components/pagination/YPagination.mjs +202 -8
  14. package/lib/components/pagination/YPagination.mjs.map +1 -1
  15. package/lib/components/pagination/YPagination.scss +37 -0
  16. package/lib/components/progress-bar/YProgressBar.mjs +1 -0
  17. package/lib/components/progress-bar/YProgressBar.mjs.map +1 -1
  18. package/lib/components/table/YDataTable.mjs +16 -2
  19. package/lib/components/table/YDataTable.mjs.map +1 -1
  20. package/lib/components/table/YDataTableBody.mjs +11 -3
  21. package/lib/components/table/YDataTableBody.mjs.map +1 -1
  22. package/lib/components/table/YDataTableHead.mjs +11 -3
  23. package/lib/components/table/YDataTableHead.mjs.map +1 -1
  24. package/lib/components/table/YDataTableServer.mjs +8 -1
  25. package/lib/components/table/YDataTableServer.mjs.map +1 -1
  26. package/lib/components/tooltip/YTooltip.mjs +8 -10
  27. package/lib/components/tooltip/YTooltip.mjs.map +1 -1
  28. package/lib/composables/ref.mjs +13 -0
  29. package/lib/composables/ref.mjs.map +1 -0
  30. package/lib/util/common.mjs +6 -0
  31. package/lib/util/common.mjs.map +1 -1
  32. package/package.json +15 -1
  33. package/types/components/button/YButton.d.ts +1 -0
  34. package/types/components/dialog/YDialog.d.ts +9 -1
  35. package/types/components/icons/YIconPageControl.d.ts +20 -0
  36. package/types/components/menu/YMenu.d.ts +1 -1
  37. package/types/components/pagination/YPagination.d.ts +43 -10
  38. package/types/components/table/YDataTable.d.ts +14 -2
  39. package/types/components/table/YDataTableBody.d.ts +9 -1
  40. package/types/components/table/YDataTableHead.d.ts +9 -1
  41. package/types/components/table/YDataTableServer.d.ts +15 -0
  42. package/types/components/tooltip/YTooltip.d.ts +1 -1
  43. package/types/composables/ref.d.ts +5 -0
  44. package/types/util/common.d.ts +1 -0
  45. package/types/vite-env.d.ts +0 -1
@@ -1,117 +1,117 @@
1
- @use '../../styles/variables';
2
- @use '../../styles/palette';
3
-
4
- $button-border-radius: variables.$border-radius-root !default;
5
- $button-before-opacity: 0.06 !default;
6
- $button-disabled-background: #b3b3b3 !default;
7
-
8
- .y-button {
9
- --y-button__color: var(--y-theme--primary);
10
-
11
- cursor: pointer;
12
- display: inline-flex;
13
- align-items: center;
14
- justify-content: center;
15
- position: relative;
16
- border-radius: $button-border-radius;
17
- font-weight: 500;
18
- transition: all 240ms cubic-bezier(0.42, 0.5, 0.51, 1.02);
19
-
20
- &:before {
21
- background-color: currentColor;
22
- border-radius: inherit;
23
- bottom: 0;
24
- color: inherit;
25
- content: '';
26
- left: 0;
27
- opacity: 0;
28
- pointer-events: none;
29
- position: absolute;
30
- right: 0;
31
- top: 0;
32
- transition: opacity 0.2s cubic-bezier(0.4, 0, 0.6, 1);
33
- }
34
-
35
- &:hover:before {
36
- opacity: 0.06;
37
- }
38
-
39
- &:not(&--disabled):not(&--outlined):not(&--loading):not(&--filled):not(
40
- &--text
41
- ):not(&--icon) {
42
- box-shadow: 1px 1px 4px 1px rgba(0, 0, 0, 0.14);
43
- &:active {
44
- box-shadow: 1px 1px 1px 1px rgba(0, 0, 0, 0.24);
45
- }
46
- }
47
-
48
- &--filled {
49
- background-color: var(--y-button__color);
50
- color: #ffffff;
51
- }
52
-
53
- &:not(&--outlined):disabled,
54
- &--disabled:not(&--outlined) {
55
- background-color: $button-disabled-background;
56
- opacity: 0.4;
57
- cursor: default;
58
- }
59
-
60
- &--rounded {
61
- border-radius: 10vh;
62
- }
63
-
64
- &--outlined {
65
- color: rgba(var(--y-button__color), 1);
66
- border-width: 1px;
67
- border-style: solid;
68
- border-color: currentColor;
69
- }
70
-
71
- &--color:not(&--filled) {
72
- color: var(--y-button__color);
73
- }
74
-
75
- &--loading {
76
- cursor: wait;
77
- .y-spinner-ring {
78
- margin-right: 0.4em;
79
- }
80
- }
81
-
82
- &:active:not(&--loading) {
83
- box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.14);
84
- }
85
-
86
- &--small {
87
- height: 24px;
88
- font-size: 0.4rem;
89
- }
90
-
91
- &--small & {
92
- &__content {
93
- padding: 4px 6px;
94
- }
95
- }
96
-
97
- &--icon {
98
- width: 48px;
99
- height: 48px;
100
- border-radius: 50%;
101
-
102
- @at-root &.y-button--small {
103
- width: 24px;
104
- height: 24px;
105
-
106
- .y-button__content {
107
- padding: 4px;
108
- }
109
- }
110
- }
111
-
112
- &__content {
113
- display: flex;
114
- align-items: center;
115
- padding: 4px 8px;
116
- }
117
- }
1
+ @use '../../styles/variables';
2
+ @use '../../styles/palette';
3
+
4
+ $button-border-radius: variables.$border-radius-root !default;
5
+ $button-before-opacity: 0.06 !default;
6
+ $button-disabled-background: #d3d3d3 !default;
7
+
8
+ .y-button {
9
+ --y-button__color: var(--y-theme--primary);
10
+
11
+ cursor: pointer;
12
+ display: inline-flex;
13
+ align-items: center;
14
+ justify-content: center;
15
+ position: relative;
16
+ border-radius: $button-border-radius;
17
+ font-weight: 500;
18
+ transition: all 240ms cubic-bezier(0.42, 0.5, 0.51, 1.02);
19
+
20
+ &:before {
21
+ background-color: currentColor;
22
+ border-radius: inherit;
23
+ bottom: 0;
24
+ color: inherit;
25
+ content: '';
26
+ left: 0;
27
+ opacity: 0;
28
+ pointer-events: none;
29
+ position: absolute;
30
+ right: 0;
31
+ top: 0;
32
+ transition: opacity 0.2s cubic-bezier(0.4, 0, 0.6, 1);
33
+ }
34
+
35
+ &:hover:before {
36
+ opacity: 0.06;
37
+ }
38
+
39
+ &:not(&--disabled):not(&--outlined):not(&--loading):not(&--filled):not(
40
+ &--text
41
+ ):not(&--icon) {
42
+ box-shadow: 1px 1px 4px 1px rgba(0, 0, 0, 0.14);
43
+ &:active {
44
+ box-shadow: 1px 1px 1px 1px rgba(0, 0, 0, 0.24);
45
+ }
46
+ }
47
+
48
+ &--filled {
49
+ background-color: var(--y-button__color);
50
+ color: #ffffff;
51
+ }
52
+
53
+ &:not(&--outlined):disabled,
54
+ &--disabled:not(&--outlined) {
55
+ background-color: $button-disabled-background;
56
+ opacity: 0.4;
57
+ cursor: default;
58
+ }
59
+
60
+ &--rounded {
61
+ border-radius: 10vh;
62
+ }
63
+
64
+ &--outlined {
65
+ color: rgba(var(--y-button__color), 1);
66
+ border-width: 1px;
67
+ border-style: solid;
68
+ border-color: currentColor;
69
+ }
70
+
71
+ &--color:not(&--filled) {
72
+ color: var(--y-button__color);
73
+ }
74
+
75
+ &--loading {
76
+ cursor: wait;
77
+ .y-spinner-ring {
78
+ margin-right: 0.4em;
79
+ }
80
+ }
81
+
82
+ &:active:not(&--loading) {
83
+ box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.14);
84
+ }
85
+
86
+ &--small {
87
+ height: 24px;
88
+ font-size: 0.4rem;
89
+ }
90
+
91
+ &--small & {
92
+ &__content {
93
+ padding: 4px 6px;
94
+ }
95
+ }
96
+
97
+ &--icon {
98
+ width: 48px;
99
+ height: 48px;
100
+ border-radius: 50%;
101
+
102
+ @at-root &.y-button--small {
103
+ width: 24px;
104
+ height: 24px;
105
+
106
+ .y-button__content {
107
+ padding: 4px;
108
+ }
109
+ }
110
+ }
111
+
112
+ &__content {
113
+ display: flex;
114
+ align-items: center;
115
+ padding: 4px 8px;
116
+ }
117
+ }
@@ -17,6 +17,9 @@ export const YDialog = defineComponent({
17
17
  },
18
18
  dialogClasses: {
19
19
  type: [Array, String, Object]
20
+ },
21
+ persistent: {
22
+ type: Boolean
20
23
  }
21
24
  },
22
25
  emits: ['update:modelValue'],
@@ -77,6 +80,7 @@ export const YDialog = defineComponent({
77
80
  "onUpdate:modelValue": onUpdate,
78
81
  "scrim": true,
79
82
  "classes": classes.value,
83
+ "persistent": props.persistent,
80
84
  "ref": layer
81
85
  }, {
82
86
  default: function () {
@@ -1 +1 @@
1
- {"version":3,"file":"YDialog.mjs","names":["computed","defineComponent","ref","watch","useRender","bindClasses","YCard","YLayer","YDialog","name","components","props","modelValue","type","Boolean","dialogClasses","Array","String","Object","emits","setup","_ref","emit","slots","active","get","set","v","classes","boundClasses","layer","onFocusin","e","prevTarget","relatedTarget","target","value","content$","document","includes","contains","focusableSelector","focusables","querySelectorAll","filter","el","hasAttribute","matches","length","firstChild","lastChild","focus","installFocusTrap","addEventListener","dismantleFocusTrap","removeEventListener","onUpdate","neo","immediate","_createVNode","_Fragment","base","default","_len","arguments","args","_key"],"sources":["../../../src/components/dialog/YDialog.tsx"],"sourcesContent":["import { PropType, computed, defineComponent, provide, ref, watch } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { bindClasses } from '../../util/vue-component';\nimport { YCard } from '../card';\nimport { YLayer } from '../layer';\n\nimport './YDialog.scss';\n\nexport const YDialog = defineComponent({\n name: 'YDialog',\n components: {\n YLayer,\n YCard,\n },\n props: {\n modelValue: {\n type: Boolean as PropType<boolean>,\n },\n dialogClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n },\n emits: ['update:modelValue'],\n setup(props, { emit, slots }) {\n const active = computed({\n get: (): boolean => {\n return !!props.modelValue;\n },\n set: (v: boolean) => {\n emit('update:modelValue', v);\n },\n });\n\n const classes = computed(() => {\n const boundClasses = bindClasses(props.dialogClasses);\n return {\n ...boundClasses,\n 'y-dialog': true,\n };\n });\n\n const layer = ref<typeof YLayer>();\n\n function onFocusin(e: FocusEvent) {\n const prevTarget = e.relatedTarget as HTMLElement | null;\n const target = e.target as HTMLElement | null;\n if (\n prevTarget !== target &&\n layer.value?.content$ &&\n ![document, layer.value?.content$].includes(target) &&\n !layer.value?.content$.contains(target)\n ) {\n const focusableSelector =\n 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n const focusables = [\n ...layer.value.content$.querySelectorAll(focusableSelector),\n ].filter(\n (el) =>\n !el.hasAttribute('disabled') && !el.matches('[tabindex=\"-1\"]'),\n ) as HTMLElement[];\n if (!focusables.length) return;\n const firstChild = focusables[0];\n const lastChild = focusables[focusables.length - 1];\n if (firstChild === lastChild) {\n lastChild.focus();\n } else {\n firstChild.focus();\n }\n }\n }\n\n function installFocusTrap() {\n document.addEventListener('focusin', onFocusin);\n }\n\n function dismantleFocusTrap() {\n document.removeEventListener('focusin', onFocusin);\n }\n\n function onUpdate(v: boolean) {\n active.value = v;\n }\n\n watch(\n () => active.value,\n (neo) => {\n neo ? installFocusTrap() : dismantleFocusTrap();\n },\n { immediate: true },\n );\n\n useRender(() => {\n return (\n <>\n {slots.base?.()}\n <YLayer\n model-value={active.value}\n onUpdate:modelValue={onUpdate}\n scrim\n classes={classes.value}\n ref={layer}\n >\n {{\n default: (...args: any[]) => slots.default?.(...args),\n }}\n </YLayer>\n </>\n );\n });\n\n return {\n active,\n layer,\n classes,\n };\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"YDialog.mjs","names":["computed","defineComponent","ref","watch","useRender","bindClasses","YCard","YLayer","YDialog","name","components","props","modelValue","type","Boolean","dialogClasses","Array","String","Object","persistent","emits","setup","_ref","emit","slots","active","get","set","v","classes","boundClasses","layer","onFocusin","e","prevTarget","relatedTarget","target","value","content$","document","includes","contains","focusableSelector","focusables","querySelectorAll","filter","el","hasAttribute","matches","length","firstChild","lastChild","focus","installFocusTrap","addEventListener","dismantleFocusTrap","removeEventListener","onUpdate","neo","immediate","_createVNode","_Fragment","base","default","_len","arguments","args","_key"],"sources":["../../../src/components/dialog/YDialog.tsx"],"sourcesContent":["import { PropType, computed, defineComponent, provide, ref, watch } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { bindClasses } from '../../util/vue-component';\nimport { YCard } from '../card';\nimport { YLayer } from '../layer';\n\nimport './YDialog.scss';\n\nexport const YDialog = defineComponent({\n name: 'YDialog',\n components: {\n YLayer,\n YCard,\n },\n props: {\n modelValue: {\n type: Boolean as PropType<boolean>,\n },\n dialogClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n persistent: {\n type: Boolean,\n }\n },\n emits: ['update:modelValue'],\n setup(props, { emit, slots }) {\n const active = computed({\n get: (): boolean => {\n return !!props.modelValue;\n },\n set: (v: boolean) => {\n emit('update:modelValue', v);\n },\n });\n\n const classes = computed(() => {\n const boundClasses = bindClasses(props.dialogClasses);\n return {\n ...boundClasses,\n 'y-dialog': true,\n };\n });\n\n const layer = ref<typeof YLayer>();\n\n function onFocusin(e: FocusEvent) {\n const prevTarget = e.relatedTarget as HTMLElement | null;\n const target = e.target as HTMLElement | null;\n if (\n prevTarget !== target &&\n layer.value?.content$ &&\n ![document, layer.value?.content$].includes(target) &&\n !layer.value?.content$.contains(target)\n ) {\n const focusableSelector =\n 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n const focusables = [\n ...layer.value.content$.querySelectorAll(focusableSelector),\n ].filter(\n (el) =>\n !el.hasAttribute('disabled') && !el.matches('[tabindex=\"-1\"]'),\n ) as HTMLElement[];\n if (!focusables.length) return;\n const firstChild = focusables[0];\n const lastChild = focusables[focusables.length - 1];\n if (firstChild === lastChild) {\n lastChild.focus();\n } else {\n firstChild.focus();\n }\n }\n }\n\n function installFocusTrap() {\n document.addEventListener('focusin', onFocusin);\n }\n\n function dismantleFocusTrap() {\n document.removeEventListener('focusin', onFocusin);\n }\n\n function onUpdate(v: boolean) {\n active.value = v;\n }\n\n watch(\n () => active.value,\n (neo) => {\n neo ? installFocusTrap() : dismantleFocusTrap();\n },\n { immediate: true },\n );\n\n useRender(() => {\n return (\n <>\n {slots.base?.()}\n <YLayer\n model-value={active.value}\n onUpdate:modelValue={onUpdate}\n scrim\n classes={classes.value}\n persistent={props.persistent}\n ref={layer}\n >\n {{\n default: (...args: any[]) => slots.default?.(...args),\n }}\n </YLayer>\n </>\n );\n });\n\n return {\n active,\n layer,\n classes,\n };\n },\n});\n"],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { createVNode as _createVNode } from "vue";
2
+ import { defineComponent } from 'vue';
3
+ export const PageControlPaths = {
4
+ next: 'm12.392 26.896 7.2156-10.843-7.0545-10.948',
5
+ prev: 'm19.608 26.896-7.2156-10.843 7.0545-10.948',
6
+ last: 'm10.696 26.936 7.2156-10.843-7.0545-10.948m0 0zm10.447-0.105v21.921',
7
+ first: 'm21.304 26.936-7.2156-10.843 7.0545-10.948m0 0zm-10.447-0.105v21.921'
8
+ };
9
+ export const YIconPageControl = defineComponent({
10
+ name: 'YIconPageControl',
11
+ props: {
12
+ type: {
13
+ type: String,
14
+ default: 'next'
15
+ }
16
+ },
17
+ render() {
18
+ return _createVNode("svg", {
19
+ "version": "1.1",
20
+ "viewBox": "0 0 32 32",
21
+ "xmlns": "http://www.w3.org/2000/svg"
22
+ }, [_createVNode("path", {
23
+ "d": this.$props.type in PageControlPaths ? PageControlPaths[this.$props.type] : PageControlPaths.next,
24
+ "fill": "none",
25
+ "stroke": "currentColor",
26
+ "stroke-linecap": "round",
27
+ "stroke-linejoin": "round",
28
+ "stroke-width": "3"
29
+ }, null)]);
30
+ }
31
+ });
32
+ //# sourceMappingURL=YIconPageControl.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YIconPageControl.mjs","names":["defineComponent","PageControlPaths","next","prev","last","first","YIconPageControl","name","props","type","String","default","render","_createVNode","$props"],"sources":["../../../src/components/icons/YIconPageControl.tsx"],"sourcesContent":["import { PropType, defineComponent } from 'vue';\n\nexport const PageControlPaths = {\n next: 'm12.392 26.896 7.2156-10.843-7.0545-10.948',\n prev: 'm19.608 26.896-7.2156-10.843 7.0545-10.948',\n last: 'm10.696 26.936 7.2156-10.843-7.0545-10.948m0 0zm10.447-0.105v21.921',\n first: 'm21.304 26.936-7.2156-10.843 7.0545-10.948m0 0zm-10.447-0.105v21.921',\n};\n\nexport const YIconPageControl = defineComponent({\n name: 'YIconPageControl',\n props: {\n type: {\n type: String as PropType<'next' | 'prev' | 'first' | 'last'>,\n default: 'next',\n },\n },\n render() {\n return (\n <svg version=\"1.1\" viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d={\n this.$props.type in PageControlPaths\n ? PageControlPaths[this.$props.type]\n : PageControlPaths.next\n }\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"3\"\n />\n </svg>\n );\n },\n});\n"],"mappings":";AAAA,SAAmBA,eAAe,QAAQ,KAAK;AAE/C,OAAO,MAAMC,gBAAgB,GAAG;EAC9BC,IAAI,EAAE,4CAA4C;EAClDC,IAAI,EAAE,4CAA4C;EAClDC,IAAI,EAAE,qEAAqE;EAC3EC,KAAK,EAAE;AACT,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAGN,eAAe,CAAC;EAC9CO,IAAI,EAAE,kBAAkB;EACxBC,KAAK,EAAE;IACLC,IAAI,EAAE;MACJA,IAAI,EAAEC,MAAsD;MAC5DC,OAAO,EAAE;IACX;EACF,CAAC;EACDC,MAAMA,CAAA,EAAG;IACP,OAAAC,YAAA;MAAA,WACe,KAAK;MAAA,WAAS,WAAW;MAAA,SAAO;IAA4B,IAAAA,YAAA;MAAA,KAGnE,IAAI,CAACC,MAAM,CAACL,IAAI,IAAIR,gBAAgB,GAChCA,gBAAgB,CAAC,IAAI,CAACa,MAAM,CAACL,IAAI,CAAC,GAClCR,gBAAgB,CAACC,IAAI;MAAA,QAEtB,MAAM;MAAA,UACJ,cAAc;MAAA,kBACN,OAAO;MAAA,mBACN,OAAO;MAAA,gBACV;IAAG;EAIxB;AACF,CAAC,CAAC"}
@@ -225,15 +225,13 @@ export const YMenu = defineComponent({
225
225
  }
226
226
  })]);
227
227
  });
228
- if (import.meta.env.DEV) {
229
- return {
230
- base$,
231
- el$,
232
- baseEl,
233
- coordinatesStyles: coordinateStyles,
234
- baseSlot
235
- };
236
- }
228
+ return {
229
+ base$,
230
+ el$,
231
+ baseEl,
232
+ coordinatesStyles: coordinateStyles,
233
+ baseSlot
234
+ };
237
235
  }
238
236
  });
239
237
  //# sourceMappingURL=YMenu.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"YMenu.mjs","names":["computed","defineComponent","mergeProps","nextTick","ref","toRef","watch","watchEffect","useModelDuplex","useRender","polyTransitionPropOptions","toKebabCase","bindClasses","YLayer","toStyleSizeValue","NAME","CLASS_NAME","YMenuPropOptions","modelValue","type","Boolean","default","menuClasses","Array","String","Object","disabled","position","align","openOnHover","closeOnClick","preventClip","offsetY","Number","YMenu","name","props","transition","emits","setup","_ref","slots","emit","expose","el$","base$","baseSlot","baseEl","contentEl","classes","boundClasses","model","active","get","value","set","v","coordinate","coordinateStyles","computeCoordinates","$base","actived","$content","rect","getBoundingClientRect","top","left","width","clientHeight","height","clientWidth","right","minWidth","baseFromSlotEl","el","base","$el","neo","content$","onMouseenter","e","onMouseleave","onClick","currentActive","onComplementClick","bindHover","addEventListener","unbindHover","removeEventListener","old","slotBase","class","_createVNode","_Fragment","$event","_len","arguments","length","args","_key","import","meta","env","DEV","coordinatesStyles"],"sources":["../../../src/components/menu/YMenu.tsx"],"sourcesContent":["import type { CSSProperties, PropType } from 'vue';\nimport {\n computed,\n defineComponent,\n mergeProps,\n nextTick,\n ref,\n toRef,\n watch,\n watchEffect,\n} from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { polyTransitionPropOptions } from '../../composables/transition';\nimport { toKebabCase } from '../../util/string';\nimport { bindClasses } from '../../util/vue-component';\nimport { YLayer } from '../layer';\nimport './YMenu.scss';\nimport { toStyleSizeValue } from \"../../util/ui\";\n\nconst NAME = 'YMenu';\nconst CLASS_NAME = toKebabCase(NAME);\n\nexport const YMenuPropOptions = {\n modelValue: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n menuClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n disabled: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n position: {\n type: String as PropType<'default' | 'top' | 'bottom' | 'left' | 'right'>,\n default: 'default',\n },\n align: {\n type: String as PropType<'center' | 'start' | 'end'>,\n default: 'start',\n },\n openOnHover: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n closeOnClick: {\n type: Boolean,\n },\n preventClip: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n offsetY: {\n type: [Number, String],\n }\n};\n\n/**\n * # Component\n */\nexport const YMenu = defineComponent({\n name: NAME,\n props: {\n ...YMenuPropOptions,\n transition: {\n ...polyTransitionPropOptions.transition,\n default: 'fade',\n },\n },\n emits: ['update:modelValue'],\n setup(props, { slots, emit, expose }) {\n const el$ = ref<typeof YLayer>();\n const base$ = ref();\n const baseSlot = ref();\n const baseEl = ref<HTMLElement>();\n const contentEl = ref<HTMLElement>();\n\n const classes = computed(() => {\n const boundClasses = bindClasses(props.menuClasses);\n return {\n ...boundClasses,\n 'y-menu': true,\n };\n });\n\n const model = useModelDuplex(props);\n\n const active = computed({\n get: (): boolean => {\n return !!model.value;\n },\n set: (v: boolean) => {\n if (!(v && props.disabled)) model.value = v;\n },\n });\n\n const position = toRef(props, 'position');\n const align = toRef(props, 'align');\n const coordinate = ref<CSSProperties>();\n const coordinateStyles = computed<CSSProperties>(() => {\n return coordinate.value ?? {};\n });\n\n function computeCoordinates() {\n const $base = baseEl.value;\n const actived = active.value;\n if ($base && actived) {\n const $content = contentEl.value;\n const rect = $base.getBoundingClientRect();\n\n let top = rect.top;\n let left = rect.left + rect.width / 2;\n if ($content) {\n if (position.value === 'top' || position.value === 'bottom') {\n if (position.value === 'top') {\n top -= $content.clientHeight;\n top -= 8; // Offset\n }\n if (position.value === 'bottom') {\n top += rect.height;\n top += 8; // Offset\n }\n }\n\n if (align.value === 'center') {\n left -= $content.clientWidth / 2;\n } else if (align.value === 'start') {\n left = rect.left;\n } else if (align.value === 'end') {\n left = rect.right;\n left -= $content.clientWidth;\n }\n }\n\n if (props.offsetY) {\n top += +(props.offsetY);\n }\n\n return {\n top: `${top}px`,\n left: `${left}px`,\n minWidth: toStyleSizeValue(rect.width),\n };\n }\n return {};\n }\n\n const baseFromSlotEl = computed(() => {\n return baseSlot.value?.[0]?.el;\n });\n\n watchEffect(() => {\n if (!base$.value) {\n baseEl.value = baseFromSlotEl.value;\n return;\n }\n const base = base$.value;\n baseEl.value = base$.value?.$el ? base$.value?.$el : base;\n });\n\n watch(active, (neo) => {\n if (neo) {\n nextTick(() => {\n const $content = el$.value?.content$;\n contentEl.value = $content;\n coordinate.value = computeCoordinates();\n });\n }\n });\n\n function onMouseenter(e: MouseEvent) {\n if (props.openOnHover) {\n active.value = true;\n }\n }\n\n function onMouseleave(e: MouseEvent) {\n if (props.openOnHover) {\n active.value = false;\n }\n }\n\n function onClick(e: MouseEvent) {\n const currentActive = active.value;\n if (!props.disabled) {\n active.value = !currentActive;\n }\n }\n\n function onComplementClick(e: MouseEvent) {\n if (active.value) {\n active.value = false;\n }\n }\n\n function bindHover(el: HTMLElement) {\n el.addEventListener('mouseenter', onMouseenter);\n el.addEventListener('mouseleave', onMouseleave);\n }\n\n function unbindHover(el: HTMLElement) {\n el.removeEventListener('mouseenter', onMouseenter);\n el.removeEventListener('mouseleave', onMouseleave);\n }\n\n watch(baseEl, (neo, old) => {\n if (neo) {\n bindHover(neo);\n neo.addEventListener('click', onClick);\n } else if (old) {\n unbindHover(old);\n old.removeEventListener('click', onClick);\n }\n });\n\n useRender(() => {\n const slotBase = slots.base?.({\n active: active.value,\n props: mergeProps({\n ref: base$,\n class: {\n 'y-menu-base': true,\n 'y-menu-base--active': active.value,\n }\n }),\n });\n baseSlot.value = slotBase;\n return (\n <>\n {slotBase}\n <YLayer\n v-model={active.value}\n ref={el$}\n classes={classes.value}\n scrim={false}\n disabled={props.disabled}\n content-styles={{ ...coordinateStyles.value }}\n content-classes={['y-menu__content']}\n transition={props.transition}\n onClick:complement={onComplementClick}\n >\n {{\n default: (...args: any) => {\n return <>{slots.default?.(...args) ?? ''}</>;\n },\n }}\n </YLayer>\n </>\n );\n });\n\n if (import.meta.env.DEV) {\n return {\n base$,\n el$,\n baseEl,\n coordinatesStyles: coordinateStyles,\n baseSlot,\n };\n }\n },\n});\n\nexport type YMenu = InstanceType<typeof YMenu>;\n"],"mappings":";AACA,SACEA,QAAQ,EACRC,eAAe,EACfC,UAAU,EACVC,QAAQ,EACRC,GAAG,EACHC,KAAK,EACLC,KAAK,EACLC,WAAW,QACN,KAAK;AAAC,SAEJC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,yBAAyB;AAAA,SACzBC,WAAW;AAAA,SACXC,WAAW;AAAA,SACXC,MAAM;AACf;AAAsB,SACbC,gBAAgB;AAEzB,MAAMC,IAAI,GAAG,OAAO;AACpB,MAAMC,UAAU,GAAGL,WAAW,CAACI,IAAI,CAAC;AAEpC,OAAO,MAAME,gBAAgB,GAAG;EAC9BC,UAAU,EAAE;IACVC,IAAI,EAAEC,OAA4B;IAClCC,OAAO,EAAE;EACX,CAAC;EACDC,WAAW,EAAE;IACXH,IAAI,EAAE,CAACI,KAAK,EAAEC,MAAM,EAAEC,MAAM;EAG9B,CAAC;EACDC,QAAQ,EAAE;IACRP,IAAI,EAAEC,OAA4B;IAClCC,OAAO,EAAE;EACX,CAAC;EACDM,QAAQ,EAAE;IACRR,IAAI,EAAEK,MAAmE;IACzEH,OAAO,EAAE;EACX,CAAC;EACDO,KAAK,EAAE;IACLT,IAAI,EAAEK,MAA8C;IACpDH,OAAO,EAAE;EACX,CAAC;EACDQ,WAAW,EAAE;IACXV,IAAI,EAAEC,OAA4B;IAClCC,OAAO,EAAE;EACX,CAAC;EACDS,YAAY,EAAE;IACZX,IAAI,EAAEC;EACR,CAAC;EACDW,WAAW,EAAE;IACXZ,IAAI,EAAEC,OAA4B;IAClCC,OAAO,EAAE;EACX,CAAC;EACDW,OAAO,EAAE;IACPb,IAAI,EAAE,CAACc,MAAM,EAAET,MAAM;EACvB;AACF,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMU,KAAK,GAAGjC,eAAe,CAAC;EACnCkC,IAAI,EAAEpB,IAAI;EACVqB,KAAK,EAAE;IACL,GAAGnB,gBAAgB;IACnBoB,UAAU,EAAE;MACV,GAAG3B,yBAAyB,CAAC2B,UAAU;MACvChB,OAAO,EAAE;IACX;EACF,CAAC;EACDiB,KAAK,EAAE,CAAC,mBAAmB,CAAC;EAC5BC,KAAKA,CAACH,KAAK,EAAAI,IAAA,EAA2B;IAAA,IAAzB;MAAEC,KAAK;MAAEC,IAAI;MAAEC;IAAO,CAAC,GAAAH,IAAA;IAClC,MAAMI,GAAG,GAAGxC,GAAG,CAAgB,CAAC;IAChC,MAAMyC,KAAK,GAAGzC,GAAG,CAAC,CAAC;IACnB,MAAM0C,QAAQ,GAAG1C,GAAG,CAAC,CAAC;IACtB,MAAM2C,MAAM,GAAG3C,GAAG,CAAc,CAAC;IACjC,MAAM4C,SAAS,GAAG5C,GAAG,CAAc,CAAC;IAEpC,MAAM6C,OAAO,GAAGjD,QAAQ,CAAC,MAAM;MAC7B,MAAMkD,YAAY,GAAGtC,WAAW,CAACwB,KAAK,CAACd,WAAW,CAAC;MACnD,OAAO;QACL,GAAG4B,YAAY;QACf,QAAQ,EAAE;MACZ,CAAC;IACH,CAAC,CAAC;IAEF,MAAMC,KAAK,GAAG3C,cAAc,CAAC4B,KAAK,CAAC;IAEnC,MAAMgB,MAAM,GAAGpD,QAAQ,CAAC;MACtBqD,GAAG,EAAEA,CAAA,KAAe;QAClB,OAAO,CAAC,CAACF,KAAK,CAACG,KAAK;MACtB,CAAC;MACDC,GAAG,EAAGC,CAAU,IAAK;QACnB,IAAI,EAAEA,CAAC,IAAIpB,KAAK,CAACV,QAAQ,CAAC,EAAEyB,KAAK,CAACG,KAAK,GAAGE,CAAC;MAC7C;IACF,CAAC,CAAC;IAEF,MAAM7B,QAAQ,GAAGtB,KAAK,CAAC+B,KAAK,EAAE,UAAU,CAAC;IACzC,MAAMR,KAAK,GAAGvB,KAAK,CAAC+B,KAAK,EAAE,OAAO,CAAC;IACnC,MAAMqB,UAAU,GAAGrD,GAAG,CAAgB,CAAC;IACvC,MAAMsD,gBAAgB,GAAG1D,QAAQ,CAAgB,MAAM;MACrD,OAAOyD,UAAU,CAACH,KAAK,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,SAASK,kBAAkBA,CAAA,EAAG;MAC5B,MAAMC,KAAK,GAAGb,MAAM,CAACO,KAAK;MAC1B,MAAMO,OAAO,GAAGT,MAAM,CAACE,KAAK;MAC5B,IAAIM,KAAK,IAAIC,OAAO,EAAE;QACpB,MAAMC,QAAQ,GAAGd,SAAS,CAACM,KAAK;QAChC,MAAMS,IAAI,GAAGH,KAAK,CAACI,qBAAqB,CAAC,CAAC;QAE1C,IAAIC,GAAG,GAAGF,IAAI,CAACE,GAAG;QAClB,IAAIC,IAAI,GAAGH,IAAI,CAACG,IAAI,GAAGH,IAAI,CAACI,KAAK,GAAG,CAAC;QACrC,IAAIL,QAAQ,EAAE;UACZ,IAAInC,QAAQ,CAAC2B,KAAK,KAAK,KAAK,IAAI3B,QAAQ,CAAC2B,KAAK,KAAK,QAAQ,EAAE;YAC3D,IAAI3B,QAAQ,CAAC2B,KAAK,KAAK,KAAK,EAAE;cAC5BW,GAAG,IAAIH,QAAQ,CAACM,YAAY;cAC5BH,GAAG,IAAI,CAAC,CAAC,CAAC;YACZ;;YACA,IAAItC,QAAQ,CAAC2B,KAAK,KAAK,QAAQ,EAAE;cAC/BW,GAAG,IAAIF,IAAI,CAACM,MAAM;cAClBJ,GAAG,IAAI,CAAC,CAAC,CAAC;YACZ;UACF;;UAEA,IAAIrC,KAAK,CAAC0B,KAAK,KAAK,QAAQ,EAAE;YAC5BY,IAAI,IAAIJ,QAAQ,CAACQ,WAAW,GAAG,CAAC;UAClC,CAAC,MAAM,IAAI1C,KAAK,CAAC0B,KAAK,KAAK,OAAO,EAAE;YAClCY,IAAI,GAAGH,IAAI,CAACG,IAAI;UAClB,CAAC,MAAM,IAAItC,KAAK,CAAC0B,KAAK,KAAK,KAAK,EAAE;YAChCY,IAAI,GAAGH,IAAI,CAACQ,KAAK;YACjBL,IAAI,IAAIJ,QAAQ,CAACQ,WAAW;UAC9B;QACF;QAEA,IAAIlC,KAAK,CAACJ,OAAO,EAAE;UACjBiC,GAAG,IAAI,CAAE7B,KAAK,CAACJ,OAAQ;QACzB;QAEA,OAAO;UACLiC,GAAG,EAAG,GAAEA,GAAI,IAAG;UACfC,IAAI,EAAG,GAAEA,IAAK,IAAG;UACjBM,QAAQ,EAAE1D,gBAAgB,CAACiD,IAAI,CAACI,KAAK;QACvC,CAAC;MACH;MACA,OAAO,CAAC,CAAC;IACX;IAEA,MAAMM,cAAc,GAAGzE,QAAQ,CAAC,MAAM;MACpC,OAAO8C,QAAQ,CAACQ,KAAK,GAAG,CAAC,CAAC,EAAEoB,EAAE;IAChC,CAAC,CAAC;IAEFnE,WAAW,CAAC,MAAM;MAChB,IAAI,CAACsC,KAAK,CAACS,KAAK,EAAE;QAChBP,MAAM,CAACO,KAAK,GAAGmB,cAAc,CAACnB,KAAK;QACnC;MACF;MACA,MAAMqB,IAAI,GAAG9B,KAAK,CAACS,KAAK;MACxBP,MAAM,CAACO,KAAK,GAAGT,KAAK,CAACS,KAAK,EAAEsB,GAAG,GAAG/B,KAAK,CAACS,KAAK,EAAEsB,GAAG,GAAGD,IAAI;IAC3D,CAAC,CAAC;IAEFrE,KAAK,CAAC8C,MAAM,EAAGyB,GAAG,IAAK;MACrB,IAAIA,GAAG,EAAE;QACP1E,QAAQ,CAAC,MAAM;UACb,MAAM2D,QAAQ,GAAGlB,GAAG,CAACU,KAAK,EAAEwB,QAAQ;UACpC9B,SAAS,CAACM,KAAK,GAAGQ,QAAQ;UAC1BL,UAAU,CAACH,KAAK,GAAGK,kBAAkB,CAAC,CAAC;QACzC,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;IAEF,SAASoB,YAAYA,CAACC,CAAa,EAAE;MACnC,IAAI5C,KAAK,CAACP,WAAW,EAAE;QACrBuB,MAAM,CAACE,KAAK,GAAG,IAAI;MACrB;IACF;IAEA,SAAS2B,YAAYA,CAACD,CAAa,EAAE;MACnC,IAAI5C,KAAK,CAACP,WAAW,EAAE;QACrBuB,MAAM,CAACE,KAAK,GAAG,KAAK;MACtB;IACF;IAEA,SAAS4B,OAAOA,CAACF,CAAa,EAAE;MAC9B,MAAMG,aAAa,GAAG/B,MAAM,CAACE,KAAK;MAClC,IAAI,CAAClB,KAAK,CAACV,QAAQ,EAAE;QACnB0B,MAAM,CAACE,KAAK,GAAG,CAAC6B,aAAa;MAC/B;IACF;IAEA,SAASC,iBAAiBA,CAACJ,CAAa,EAAE;MACxC,IAAI5B,MAAM,CAACE,KAAK,EAAE;QAChBF,MAAM,CAACE,KAAK,GAAG,KAAK;MACtB;IACF;IAEA,SAAS+B,SAASA,CAACX,EAAe,EAAE;MAClCA,EAAE,CAACY,gBAAgB,CAAC,YAAY,EAAEP,YAAY,CAAC;MAC/CL,EAAE,CAACY,gBAAgB,CAAC,YAAY,EAAEL,YAAY,CAAC;IACjD;IAEA,SAASM,WAAWA,CAACb,EAAe,EAAE;MACpCA,EAAE,CAACc,mBAAmB,CAAC,YAAY,EAAET,YAAY,CAAC;MAClDL,EAAE,CAACc,mBAAmB,CAAC,YAAY,EAAEP,YAAY,CAAC;IACpD;IAEA3E,KAAK,CAACyC,MAAM,EAAE,CAAC8B,GAAG,EAAEY,GAAG,KAAK;MAC1B,IAAIZ,GAAG,EAAE;QACPQ,SAAS,CAACR,GAAG,CAAC;QACdA,GAAG,CAACS,gBAAgB,CAAC,OAAO,EAAEJ,OAAO,CAAC;MACxC,CAAC,MAAM,IAAIO,GAAG,EAAE;QACdF,WAAW,CAACE,GAAG,CAAC;QAChBA,GAAG,CAACD,mBAAmB,CAAC,OAAO,EAAEN,OAAO,CAAC;MAC3C;IACF,CAAC,CAAC;IAEFzE,SAAS,CAAC,MAAM;MACd,MAAMiF,QAAQ,GAAGjD,KAAK,CAACkC,IAAI,GAAG;QAC5BvB,MAAM,EAAEA,MAAM,CAACE,KAAK;QACpBlB,KAAK,EAAElC,UAAU,CAAC;UAChBE,GAAG,EAAEyC,KAAK;UACV8C,KAAK,EAAE;YACL,aAAa,EAAE,IAAI;YACnB,qBAAqB,EAAEvC,MAAM,CAACE;UAChC;QACF,CAAC;MACH,CAAC,CAAC;MACFR,QAAQ,CAACQ,KAAK,GAAGoC,QAAQ;MACzB,OAAAE,YAAA,CAAAC,SAAA,SAEKH,QAAQ,EAAAE,YAAA,CAAA/E,MAAA;QAAA,cAEEuC,MAAM,CAACE,KAAK;QAAA,uBAAAwC,MAAA,IAAZ1C,MAAM,CAACE,KAAK,GAAAwC,MAAA;QAAA,OAChBlD,GAAG;QAAA,WACCK,OAAO,CAACK,KAAK;QAAA,SACf,KAAK;QAAA,YACFlB,KAAK,CAACV,QAAQ;QAAA,kBACR;UAAE,GAAGgC,gBAAgB,CAACJ;QAAM,CAAC;QAAA,mBAC5B,CAAC,iBAAiB,CAAC;QAAA,cACxBlB,KAAK,CAACC,UAAU;QAAA,sBACR+C;MAAiB;QAGnC/D,OAAO,EAAE,SAAAA,CAAA,EAAkB;UAAA,SAAA0E,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAdC,IAAI,OAAA3E,KAAA,CAAAwE,IAAA,GAAAI,IAAA,MAAAA,IAAA,GAAAJ,IAAA,EAAAI,IAAA;YAAJD,IAAI,CAAAC,IAAA,IAAAH,SAAA,CAAAG,IAAA;UAAA;UACf,OAAAP,YAAA,CAAAC,SAAA,SAAUpD,KAAK,CAACpB,OAAO,GAAG,GAAG6E,IAAI,CAAC,IAAI,EAAE;QAC1C;MAAC;IAKX,CAAC,CAAC;IAEF,IAAIE,MAAM,CAACC,IAAI,CAACC,GAAG,CAACC,GAAG,EAAE;MACvB,OAAO;QACL1D,KAAK;QACLD,GAAG;QACHG,MAAM;QACNyD,iBAAiB,EAAE9C,gBAAgB;QACnCZ;MACF,CAAC;IACH;EACF;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YMenu.mjs","names":["computed","defineComponent","mergeProps","nextTick","ref","toRef","watch","watchEffect","useModelDuplex","useRender","polyTransitionPropOptions","toKebabCase","bindClasses","YLayer","toStyleSizeValue","NAME","CLASS_NAME","YMenuPropOptions","modelValue","type","Boolean","default","menuClasses","Array","String","Object","disabled","position","align","openOnHover","closeOnClick","preventClip","offsetY","Number","YMenu","name","props","transition","emits","setup","_ref","slots","emit","expose","el$","base$","baseSlot","baseEl","contentEl","classes","boundClasses","model","active","get","value","set","v","coordinate","coordinateStyles","computeCoordinates","$base","actived","$content","rect","getBoundingClientRect","top","left","width","clientHeight","height","clientWidth","right","minWidth","baseFromSlotEl","el","base","$el","neo","content$","onMouseenter","e","onMouseleave","onClick","currentActive","onComplementClick","bindHover","addEventListener","unbindHover","removeEventListener","old","slotBase","class","_createVNode","_Fragment","$event","_len","arguments","length","args","_key","coordinatesStyles"],"sources":["../../../src/components/menu/YMenu.tsx"],"sourcesContent":["import type { CSSProperties, PropType } from 'vue';\nimport {\n computed,\n defineComponent,\n mergeProps,\n nextTick,\n ref,\n toRef,\n watch,\n watchEffect,\n} from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { polyTransitionPropOptions } from '../../composables/transition';\nimport { toKebabCase } from '../../util/string';\nimport { bindClasses } from '../../util/vue-component';\nimport { YLayer } from '../layer';\nimport './YMenu.scss';\nimport { toStyleSizeValue } from \"../../util/ui\";\n\nconst NAME = 'YMenu';\nconst CLASS_NAME = toKebabCase(NAME);\n\nexport const YMenuPropOptions = {\n modelValue: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n menuClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n disabled: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n position: {\n type: String as PropType<'default' | 'top' | 'bottom' | 'left' | 'right'>,\n default: 'default',\n },\n align: {\n type: String as PropType<'center' | 'start' | 'end'>,\n default: 'start',\n },\n openOnHover: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n closeOnClick: {\n type: Boolean,\n },\n preventClip: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n offsetY: {\n type: [Number, String],\n }\n};\n\n/**\n * # Component\n */\nexport const YMenu = defineComponent({\n name: NAME,\n props: {\n ...YMenuPropOptions,\n transition: {\n ...polyTransitionPropOptions.transition,\n default: 'fade',\n },\n },\n emits: ['update:modelValue'],\n setup(props, { slots, emit, expose }) {\n const el$ = ref<typeof YLayer>();\n const base$ = ref();\n const baseSlot = ref();\n const baseEl = ref<HTMLElement>();\n const contentEl = ref<HTMLElement>();\n\n const classes = computed(() => {\n const boundClasses = bindClasses(props.menuClasses);\n return {\n ...boundClasses,\n 'y-menu': true,\n };\n });\n\n const model = useModelDuplex(props);\n\n const active = computed({\n get: (): boolean => {\n return !!model.value;\n },\n set: (v: boolean) => {\n if (!(v && props.disabled)) model.value = v;\n },\n });\n\n const position = toRef(props, 'position');\n const align = toRef(props, 'align');\n const coordinate = ref<CSSProperties>();\n const coordinateStyles = computed<CSSProperties>(() => {\n return coordinate.value ?? {};\n });\n\n function computeCoordinates() {\n const $base = baseEl.value;\n const actived = active.value;\n if ($base && actived) {\n const $content = contentEl.value;\n const rect = $base.getBoundingClientRect();\n\n let top = rect.top;\n let left = rect.left + rect.width / 2;\n if ($content) {\n if (position.value === 'top' || position.value === 'bottom') {\n if (position.value === 'top') {\n top -= $content.clientHeight;\n top -= 8; // Offset\n }\n if (position.value === 'bottom') {\n top += rect.height;\n top += 8; // Offset\n }\n }\n\n if (align.value === 'center') {\n left -= $content.clientWidth / 2;\n } else if (align.value === 'start') {\n left = rect.left;\n } else if (align.value === 'end') {\n left = rect.right;\n left -= $content.clientWidth;\n }\n }\n\n if (props.offsetY) {\n top += +(props.offsetY);\n }\n\n return {\n top: `${top}px`,\n left: `${left}px`,\n minWidth: toStyleSizeValue(rect.width),\n };\n }\n return {};\n }\n\n const baseFromSlotEl = computed(() => {\n return baseSlot.value?.[0]?.el;\n });\n\n watchEffect(() => {\n if (!base$.value) {\n baseEl.value = baseFromSlotEl.value;\n return;\n }\n const base = base$.value;\n baseEl.value = base$.value?.$el ? base$.value?.$el : base;\n });\n\n watch(active, (neo) => {\n if (neo) {\n nextTick(() => {\n const $content = el$.value?.content$;\n contentEl.value = $content;\n coordinate.value = computeCoordinates();\n });\n }\n });\n\n function onMouseenter(e: MouseEvent) {\n if (props.openOnHover) {\n active.value = true;\n }\n }\n\n function onMouseleave(e: MouseEvent) {\n if (props.openOnHover) {\n active.value = false;\n }\n }\n\n function onClick(e: MouseEvent) {\n const currentActive = active.value;\n if (!props.disabled) {\n active.value = !currentActive;\n }\n }\n\n function onComplementClick(e: MouseEvent) {\n if (active.value) {\n active.value = false;\n }\n }\n\n function bindHover(el: HTMLElement) {\n el.addEventListener('mouseenter', onMouseenter);\n el.addEventListener('mouseleave', onMouseleave);\n }\n\n function unbindHover(el: HTMLElement) {\n el.removeEventListener('mouseenter', onMouseenter);\n el.removeEventListener('mouseleave', onMouseleave);\n }\n\n watch(baseEl, (neo, old) => {\n if (neo) {\n bindHover(neo);\n neo.addEventListener('click', onClick);\n } else if (old) {\n unbindHover(old);\n old.removeEventListener('click', onClick);\n }\n });\n\n useRender(() => {\n const slotBase = slots.base?.({\n active: active.value,\n props: mergeProps({\n ref: base$,\n class: {\n 'y-menu-base': true,\n 'y-menu-base--active': active.value,\n }\n }),\n });\n baseSlot.value = slotBase;\n return (\n <>\n {slotBase}\n <YLayer\n v-model={active.value}\n ref={el$}\n classes={classes.value}\n scrim={false}\n disabled={props.disabled}\n content-styles={{ ...coordinateStyles.value }}\n content-classes={['y-menu__content']}\n transition={props.transition}\n onClick:complement={onComplementClick}\n >\n {{\n default: (...args: any) => {\n return <>{slots.default?.(...args) ?? ''}</>;\n },\n }}\n </YLayer>\n </>\n );\n });\n\n return {\n base$,\n el$,\n baseEl,\n coordinatesStyles: coordinateStyles,\n baseSlot,\n };\n },\n});\n\nexport type YMenu = InstanceType<typeof YMenu>;\n"],"mappings":"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"}