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.
- package/dist/style.css +1 -1
- package/dist/yuyeon.mjs +1239 -969
- package/dist/yuyeon.umd.js +1 -1
- package/lib/components/button/YButton.mjs +8 -5
- package/lib/components/button/YButton.mjs.map +1 -1
- package/lib/components/button/YButton.scss +117 -117
- package/lib/components/dialog/YDialog.mjs +4 -0
- package/lib/components/dialog/YDialog.mjs.map +1 -1
- package/lib/components/icons/YIconPageControl.mjs +32 -0
- package/lib/components/icons/YIconPageControl.mjs.map +1 -0
- package/lib/components/menu/YMenu.mjs +7 -9
- package/lib/components/menu/YMenu.mjs.map +1 -1
- package/lib/components/pagination/YPagination.mjs +202 -8
- package/lib/components/pagination/YPagination.mjs.map +1 -1
- package/lib/components/pagination/YPagination.scss +37 -0
- package/lib/components/progress-bar/YProgressBar.mjs +1 -0
- package/lib/components/progress-bar/YProgressBar.mjs.map +1 -1
- package/lib/components/table/YDataTable.mjs +16 -2
- package/lib/components/table/YDataTable.mjs.map +1 -1
- package/lib/components/table/YDataTableBody.mjs +11 -3
- package/lib/components/table/YDataTableBody.mjs.map +1 -1
- package/lib/components/table/YDataTableHead.mjs +11 -3
- package/lib/components/table/YDataTableHead.mjs.map +1 -1
- package/lib/components/table/YDataTableServer.mjs +8 -1
- package/lib/components/table/YDataTableServer.mjs.map +1 -1
- package/lib/components/tooltip/YTooltip.mjs +8 -10
- package/lib/components/tooltip/YTooltip.mjs.map +1 -1
- package/lib/composables/ref.mjs +13 -0
- package/lib/composables/ref.mjs.map +1 -0
- package/lib/util/common.mjs +6 -0
- package/lib/util/common.mjs.map +1 -1
- package/package.json +15 -1
- package/types/components/button/YButton.d.ts +1 -0
- package/types/components/dialog/YDialog.d.ts +9 -1
- package/types/components/icons/YIconPageControl.d.ts +20 -0
- package/types/components/menu/YMenu.d.ts +1 -1
- package/types/components/pagination/YPagination.d.ts +43 -10
- package/types/components/table/YDataTable.d.ts +14 -2
- package/types/components/table/YDataTableBody.d.ts +9 -1
- package/types/components/table/YDataTableHead.d.ts +9 -1
- package/types/components/table/YDataTableServer.d.ts +15 -0
- package/types/components/tooltip/YTooltip.d.ts +1 -1
- package/types/composables/ref.d.ts +5 -0
- package/types/util/common.d.ts +1 -0
- 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: #
|
|
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":";AAAA,SAAmBA,QAAQ,EAAEC,eAAe,EAAWC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAC,SAEtEC,SAAS;AAAA,SACTC,WAAW;AAAA,SACXC,KAAK;AAAA,SACLC,MAAM;AAEf;AAEA,OAAO,MAAMC,OAAO,GAAGP,eAAe,CAAC;EACrCQ,IAAI,EAAE,SAAS;EACfC,UAAU,EAAE;IACVH,MAAM;IACND;EACF,CAAC;EACDK,KAAK,EAAE;IACLC,UAAU,EAAE;MACVC,IAAI,EAAEC;IACR,CAAC;IACDC,aAAa,EAAE;MACbF,IAAI,EAAE,CAACG,KAAK,EAAEC,MAAM,EAAEC,MAAM;IAG9B;EACF,CAAC;
|
|
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
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
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":"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"}
|
|
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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"}
|