yuyeon 0.0.42-test21 → 0.0.42

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 (74) hide show
  1. package/dist/style.css +1 -1
  2. package/dist/yuyeon.js +3566 -3269
  3. package/dist/yuyeon.umd.cjs +6 -6
  4. package/lib/components/button/YButton.mjs +4 -1
  5. package/lib/components/button/YButton.mjs.map +1 -1
  6. package/lib/components/checkbox/YCheckbox.mjs +2 -1
  7. package/lib/components/checkbox/YCheckbox.mjs.map +1 -1
  8. package/lib/components/date-picker/YDateCalendar.mjs +5 -5
  9. package/lib/components/date-picker/YDateCalendar.mjs.map +1 -1
  10. package/lib/components/date-picker/YDatePicker.mjs +112 -4
  11. package/lib/components/date-picker/YDatePicker.mjs.map +1 -1
  12. package/lib/components/date-picker/YDatePicker.scss +3 -0
  13. package/lib/components/date-picker/YDatePickerControl.mjs +84 -6
  14. package/lib/components/date-picker/YDatePickerControl.mjs.map +1 -1
  15. package/lib/components/date-picker/YDatePickerControl.scss +33 -1
  16. package/lib/components/date-picker/YMonthPicker.mjs +57 -0
  17. package/lib/components/date-picker/YMonthPicker.mjs.map +1 -0
  18. package/lib/components/date-picker/YMonthPicker.scss +25 -0
  19. package/lib/components/date-picker/YYearPicker.mjs +82 -0
  20. package/lib/components/date-picker/YYearPicker.mjs.map +1 -0
  21. package/lib/components/date-picker/YYearPicker.scss +23 -0
  22. package/lib/components/date-picker/index.mjs +2 -0
  23. package/lib/components/date-picker/index.mjs.map +1 -1
  24. package/lib/components/dialog/YDialog.mjs +36 -41
  25. package/lib/components/dialog/YDialog.mjs.map +1 -1
  26. package/lib/components/dialog/YDialog.scss +0 -1
  27. package/lib/components/field-input/YFieldInput.scss +1 -0
  28. package/lib/components/icons/index.mjs +12 -0
  29. package/lib/components/icons/index.mjs.map +1 -1
  30. package/lib/components/layer/YLayer.mjs +15 -31
  31. package/lib/components/layer/YLayer.mjs.map +1 -1
  32. package/lib/components/layer/base.mjs +36 -0
  33. package/lib/components/layer/base.mjs.map +1 -0
  34. package/lib/components/select/YSelect.mjs +14 -8
  35. package/lib/components/select/YSelect.mjs.map +1 -1
  36. package/lib/components/select/YSelect.scss +4 -0
  37. package/lib/components/textarea/YTextarea.mjs +3 -1
  38. package/lib/components/textarea/YTextarea.mjs.map +1 -1
  39. package/lib/components/tree-view/util.mjs +2 -1
  40. package/lib/components/tree-view/util.mjs.map +1 -1
  41. package/lib/composables/choice.mjs +2 -1
  42. package/lib/composables/choice.mjs.map +1 -1
  43. package/lib/composables/coordinate/index.mjs.map +1 -1
  44. package/lib/composables/layer-group.mjs +10 -3
  45. package/lib/composables/layer-group.mjs.map +1 -1
  46. package/lib/composables/list-items.mjs +13 -9
  47. package/lib/composables/list-items.mjs.map +1 -1
  48. package/lib/styles/util/_mixin.scss +0 -1
  49. package/package.json +1 -1
  50. package/types/components/button/YButton.d.ts +3 -1
  51. package/types/components/checkbox/YCheckbox.d.ts +2 -2
  52. package/types/components/checkbox/YInputCheckbox.d.ts +2 -2
  53. package/types/components/date-picker/YDatePicker.d.ts +117 -0
  54. package/types/components/date-picker/YDatePickerControl.d.ts +128 -0
  55. package/types/components/date-picker/YMonthPicker.d.ts +28 -0
  56. package/types/components/date-picker/YYearPicker.d.ts +43 -0
  57. package/types/components/date-picker/index.d.ts +2 -0
  58. package/types/components/dialog/YDialog.d.ts +419 -15
  59. package/types/components/dropdown/YDropdown.d.ts +13 -13
  60. package/types/components/field-input/YFieldInput.d.ts +2 -2
  61. package/types/components/icons/index.d.ts +36 -0
  62. package/types/components/input/YInput.d.ts +2 -2
  63. package/types/components/layer/YLayer.d.ts +19 -19
  64. package/types/components/layer/base.d.ts +13 -0
  65. package/types/components/menu/YMenu.d.ts +12 -12
  66. package/types/components/pagination/YPagination.d.ts +2 -2
  67. package/types/components/select/YSelect.d.ts +58 -58
  68. package/types/components/tab/YTabs.d.ts +7 -0
  69. package/types/components/textarea/YTextarea.d.ts +6 -6
  70. package/types/components/tooltip/YTooltip.d.ts +14 -14
  71. package/types/composables/choice.d.ts +5 -0
  72. package/types/composables/coordinate/index.d.ts +8 -8
  73. package/types/composables/list-items.d.ts +3 -10
  74. package/types/shims.d.ts +4 -0
@@ -1,3 +1,35 @@
1
1
  .y-date-picker-control {
2
- //
2
+ display: flex;
3
+ padding: 8px 8px 12px;
4
+ font-weight: 500;
5
+
6
+ &__display {
7
+ font-size: 1rem;
8
+ font-weight: 600;
9
+ align-self: center;
10
+ border-radius: 4px;
11
+
12
+ &:first-child {
13
+ margin: 0 4px 0 10px;
14
+ }
15
+
16
+ .y-button__content {
17
+ padding: 0 2px;
18
+ }
19
+ }
20
+
21
+ &__page-button {
22
+ height: 32px;
23
+
24
+ .y-button__content {
25
+ padding: 4px;
26
+ }
27
+
28
+ .y-icon {
29
+ > svg {
30
+ width: 24px;
31
+ height: 24px;
32
+ }
33
+ }
34
+ }
3
35
  }
@@ -0,0 +1,57 @@
1
+ import { createVNode as _createVNode } from "vue";
2
+ import { computed, defineComponent } from 'vue';
3
+ import { useModelDuplex } from "../../composables/communication.mjs";
4
+ import { useRender } from "../../composables/component.mjs";
5
+ import { useDate } from "../../composables/date/index.mjs";
6
+ import { getRangeArr } from "../../util/index.mjs";
7
+ import { propsFactory } from "../../util/vue-component.mjs";
8
+ import { YButton } from "../button/index.mjs";
9
+ import "./YMonthPicker.scss";
10
+ export const pressYMonthPickerPropsOptions = propsFactory({
11
+ modelValue: Number,
12
+ color: String,
13
+ height: [String, Number]
14
+ }, 'YMonthPicker');
15
+ export const YMonthPicker = defineComponent({
16
+ name: 'YMonthPicker',
17
+ props: pressYMonthPickerPropsOptions(),
18
+ setup(props) {
19
+ const dateUtil = useDate();
20
+ const model = useModelDuplex(props, 'modelValue');
21
+ const months = computed(() => {
22
+ let date = dateUtil.startOfYear(dateUtil.date());
23
+ return getRangeArr(12).map(i => {
24
+ const text = dateUtil.format(date, 'monthShort');
25
+ date = dateUtil.getNextMonth(date);
26
+ return {
27
+ text,
28
+ value: i
29
+ };
30
+ });
31
+ });
32
+ function onClick(index) {
33
+ model.value = index;
34
+ }
35
+ useRender(() => {
36
+ return _createVNode("div", {
37
+ "class": ['y-month-picker']
38
+ }, [months.value.map((month, index) => {
39
+ const item = {
40
+ active: index === model.value
41
+ };
42
+ return _createVNode("div", {
43
+ "class": ['y-month-picker__cell', 'y-month-picker__month']
44
+ }, [_createVNode(YButton, {
45
+ "variation": ['rounded', 'text'].join(','),
46
+ "active": item.active,
47
+ "color": props.color,
48
+ "onClick": () => onClick(index)
49
+ }, {
50
+ default: () => [month.text]
51
+ })]);
52
+ })]);
53
+ });
54
+ return {};
55
+ }
56
+ });
57
+ //# sourceMappingURL=YMonthPicker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YMonthPicker.mjs","names":["computed","defineComponent","useModelDuplex","useRender","useDate","getRangeArr","propsFactory","YButton","pressYMonthPickerPropsOptions","modelValue","Number","color","String","height","YMonthPicker","name","props","setup","dateUtil","model","months","date","startOfYear","map","i","text","format","getNextMonth","value","onClick","index","_createVNode","month","item","active","join","default"],"sources":["../../../src/components/date-picker/YMonthPicker.tsx"],"sourcesContent":["import { computed, defineComponent } from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { useDate } from '../../composables/date';\nimport { getRangeArr } from '../../util';\nimport { propsFactory } from '../../util/vue-component';\nimport { YButton } from '../button';\n\nimport './YMonthPicker.scss';\n\nexport const pressYMonthPickerPropsOptions = propsFactory(\n {\n modelValue: Number,\n color: String,\n height: [String, Number],\n },\n 'YMonthPicker',\n);\n\nexport const YMonthPicker = defineComponent({\n name: 'YMonthPicker',\n props: pressYMonthPickerPropsOptions(),\n setup(props) {\n const dateUtil = useDate();\n const model = useModelDuplex(props, 'modelValue');\n\n const months = computed(() => {\n let date = dateUtil.startOfYear(dateUtil.date());\n\n return getRangeArr(12).map((i) => {\n const text = dateUtil.format(date, 'monthShort');\n date = dateUtil.getNextMonth(date);\n\n return {\n text,\n value: i,\n };\n });\n });\n\n function onClick(index: number) {\n model.value = index;\n }\n\n useRender(() => {\n return (\n <div class={['y-month-picker']}>\n {months.value.map((month, index) => {\n const item = {\n active: index === model.value\n }\n return (\n <div class={['y-month-picker__cell', 'y-month-picker__month']}>\n <YButton\n variation={['rounded', 'text'].join(',')}\n active={item.active}\n color={props.color}\n onClick={() => onClick(index)}\n >\n {month.text}\n </YButton>\n </div>\n );\n })}\n </div>\n );\n });\n\n return {};\n },\n});\n\nexport type YMonthPicker = InstanceType<typeof YMonthPicker>;\n"],"mappings":";AAAA,SAASA,QAAQ,EAAEC,eAAe,QAAQ,KAAK;AAAC,SAEvCC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,OAAO;AAAA,SACPC,WAAW;AAAA,SACXC,YAAY;AAAA,SACZC,OAAO;AAEhB;AAEA,OAAO,MAAMC,6BAA6B,GAAGF,YAAY,CACvD;EACEG,UAAU,EAAEC,MAAM;EAClBC,KAAK,EAAEC,MAAM;EACbC,MAAM,EAAE,CAACD,MAAM,EAAEF,MAAM;AACzB,CAAC,EACD,cACF,CAAC;AAED,OAAO,MAAMI,YAAY,GAAGb,eAAe,CAAC;EAC1Cc,IAAI,EAAE,cAAc;EACpBC,KAAK,EAAER,6BAA6B,CAAC,CAAC;EACtCS,KAAKA,CAACD,KAAK,EAAE;IACX,MAAME,QAAQ,GAAGd,OAAO,CAAC,CAAC;IAC1B,MAAMe,KAAK,GAAGjB,cAAc,CAACc,KAAK,EAAE,YAAY,CAAC;IAEjD,MAAMI,MAAM,GAAGpB,QAAQ,CAAC,MAAM;MAC5B,IAAIqB,IAAI,GAAGH,QAAQ,CAACI,WAAW,CAACJ,QAAQ,CAACG,IAAI,CAAC,CAAC,CAAC;MAEhD,OAAOhB,WAAW,CAAC,EAAE,CAAC,CAACkB,GAAG,CAAEC,CAAC,IAAK;QAChC,MAAMC,IAAI,GAAGP,QAAQ,CAACQ,MAAM,CAACL,IAAI,EAAE,YAAY,CAAC;QAChDA,IAAI,GAAGH,QAAQ,CAACS,YAAY,CAACN,IAAI,CAAC;QAElC,OAAO;UACLI,IAAI;UACJG,KAAK,EAAEJ;QACT,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,SAASK,OAAOA,CAACC,KAAa,EAAE;MAC9BX,KAAK,CAACS,KAAK,GAAGE,KAAK;IACrB;IAEA3B,SAAS,CAAC,MAAM;MACd,OAAA4B,YAAA;QAAA,SACc,CAAC,gBAAgB;MAAC,IAC3BX,MAAM,CAACQ,KAAK,CAACL,GAAG,CAAC,CAACS,KAAK,EAAEF,KAAK,KAAK;QAClC,MAAMG,IAAI,GAAG;UACXC,MAAM,EAAEJ,KAAK,KAAKX,KAAK,CAACS;QAC1B,CAAC;QACD,OAAAG,YAAA;UAAA,SACc,CAAC,sBAAsB,EAAE,uBAAuB;QAAC,IAAAA,YAAA,CAAAxB,OAAA;UAAA,aAE9C,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC4B,IAAI,CAAC,GAAG,CAAC;UAAA,UAChCF,IAAI,CAACC,MAAM;UAAA,SACZlB,KAAK,CAACL,KAAK;UAAA,WACTkB,CAAA,KAAMA,OAAO,CAACC,KAAK;QAAC;UAAAM,OAAA,EAAAA,CAAA,MAE5BJ,KAAK,CAACP,IAAI;QAAA;MAInB,CAAC,CAAC;IAGR,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ .y-month-picker {
2
+ --y-month-picker-cols: 3;
3
+
4
+ display: grid;
5
+ grid-template-columns: repeat(var(--y-month-picker-cols, 3), 1fr);
6
+ min-height: 280px;
7
+
8
+ &__cell {
9
+ display: flex;
10
+ justify-content: center;
11
+
12
+ > .y-button {
13
+ width: 70px;
14
+ height: 70px;
15
+
16
+ &--active.y-button--text {
17
+ color: var(--y-button__color);
18
+ --y-button__color: var(--y-theme-primary);
19
+ &:before {
20
+ opacity: 0.3;
21
+ }
22
+ }
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,82 @@
1
+ import { createVNode as _createVNode } from "vue";
2
+ import { computed, defineComponent, ref } from 'vue';
3
+ import { useModelDuplex } from "../../composables/communication.mjs";
4
+ import { useRender } from "../../composables/component.mjs";
5
+ import { useDate } from "../../composables/date/index.mjs";
6
+ import { getRangeArr } from "../../util/index.mjs";
7
+ import { propsFactory } from "../../util/vue-component.mjs";
8
+ import { YButton } from "../button/index.mjs";
9
+ import "./YYearPicker.scss";
10
+ export const pressYYearPickerPropsOptions = propsFactory({
11
+ modelValue: Number,
12
+ color: String,
13
+ height: [String, Number],
14
+ min: null,
15
+ max: null
16
+ }, 'YYearPicker');
17
+ const interval = 20;
18
+ export const YYearPicker = defineComponent({
19
+ name: 'YYearPicker',
20
+ props: pressYYearPickerPropsOptions(),
21
+ setup(props, _ref) {
22
+ let {
23
+ emit,
24
+ expose
25
+ } = _ref;
26
+ const dateUtil = useDate();
27
+ const model = useModelDuplex(props, 'modelValue');
28
+ const tempYear = model.value;
29
+ const startYear = ref(tempYear - tempYear % interval - (tempYear < 0 ? interval : 0));
30
+ const years = computed(() => {
31
+ let date = dateUtil.startOfYear(dateUtil.date());
32
+ return getRangeArr(interval + 1, startYear.value).map(value => {
33
+ date = dateUtil.setYear(date, value);
34
+ return {
35
+ text: dateUtil.format(date, 'year'),
36
+ value,
37
+ active: model.value === value
38
+ };
39
+ });
40
+ });
41
+ function onClick(value) {
42
+ model.value = value;
43
+ }
44
+ function changePage() {
45
+ let dir = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
46
+ let change = startYear.value + interval * dir;
47
+ if (change < 0) {
48
+ change = 0;
49
+ }
50
+ startYear.value = change;
51
+ }
52
+ expose({
53
+ changePage
54
+ });
55
+ useRender(() => {
56
+ return _createVNode("div", {
57
+ "class": ['y-year-picker']
58
+ }, [years.value.map(year => {
59
+ const scopedProps = {
60
+ item: year,
61
+ props: {
62
+ onClick: () => {
63
+ onClick(year.value);
64
+ }
65
+ }
66
+ };
67
+ return _createVNode("div", {
68
+ "class": ['y-year-picker__cell']
69
+ }, [_createVNode(YButton, {
70
+ "variation": ['rounded', 'text'].join(','),
71
+ "active": year.active,
72
+ "color": props.color,
73
+ "onClick": () => onClick(year.value)
74
+ }, {
75
+ default: () => [year.text]
76
+ })]);
77
+ })]);
78
+ });
79
+ return {};
80
+ }
81
+ });
82
+ //# sourceMappingURL=YYearPicker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YYearPicker.mjs","names":["computed","defineComponent","ref","useModelDuplex","useRender","useDate","getRangeArr","propsFactory","YButton","pressYYearPickerPropsOptions","modelValue","Number","color","String","height","min","max","interval","YYearPicker","name","props","setup","_ref","emit","expose","dateUtil","model","tempYear","value","startYear","years","date","startOfYear","map","setYear","text","format","active","onClick","changePage","dir","arguments","length","undefined","change","_createVNode","year","scopedProps","item","join","default"],"sources":["../../../src/components/date-picker/YYearPicker.tsx"],"sourcesContent":["import { PropType, computed, defineComponent, ref } from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { useDate } from '../../composables/date';\nimport { getRangeArr } from '../../util';\nimport { propsFactory } from '../../util/vue-component';\nimport { YButton } from '../button';\n\nimport './YYearPicker.scss';\n\nexport const pressYYearPickerPropsOptions = propsFactory(\n {\n modelValue: Number,\n color: String,\n height: [String, Number],\n min: null as any as PropType<unknown>,\n max: null as any as PropType<unknown>,\n },\n 'YYearPicker',\n);\n\nconst interval = 20;\n\nexport const YYearPicker = defineComponent({\n name: 'YYearPicker',\n props: pressYYearPickerPropsOptions(),\n setup(props, { emit, expose }) {\n const dateUtil = useDate();\n const model = useModelDuplex(props, 'modelValue');\n const tempYear = model.value;\n const startYear = ref(\n tempYear - (tempYear % interval) - (tempYear < 0 ? interval : 0),\n );\n const years = computed(() => {\n let date = dateUtil.startOfYear(dateUtil.date());\n\n return getRangeArr(interval + 1, startYear.value).map((value) => {\n date = dateUtil.setYear(date, value);\n return {\n text: dateUtil.format(date, 'year'),\n value,\n active: model.value === value,\n };\n });\n });\n\n function onClick(value: number) {\n model.value = value;\n }\n\n function changePage(dir = 1) {\n let change = startYear.value + interval * dir;\n if (change < 0) {\n change = 0;\n }\n startYear.value = change;\n }\n\n expose({\n changePage,\n });\n\n useRender(() => {\n return (\n <div class={['y-year-picker']}>\n {years.value.map((year) => {\n const scopedProps = {\n item: year,\n props: {\n onClick: () => {\n onClick(year.value)\n }\n }\n }\n return (\n <div class={['y-year-picker__cell']}>\n <YButton\n variation={['rounded', 'text'].join(',')}\n active={year.active}\n color={props.color}\n onClick={() => onClick(year.value)}\n >\n {year.text}\n </YButton>\n </div>\n );\n })}\n </div>\n );\n });\n\n return {};\n },\n});\n\nexport type YYearPicker = InstanceType<typeof YYearPicker>;\n"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ .y-year-picker {
2
+ --y-year-picker-cols: 3;
3
+
4
+ display: grid;
5
+ grid-template-columns: repeat(var(--y-year-picker-cols, 3), 1fr);
6
+ min-height: 280px;
7
+
8
+ &__cell {
9
+ display: flex;
10
+ justify-content: center;
11
+ align-items: center;
12
+
13
+ > .y-button {
14
+ &--active.y-button--text {
15
+ color: var(--y-button__color);
16
+ --y-button__color: var(--y-theme-primary);
17
+ &:before {
18
+ opacity: 0.3;
19
+ }
20
+ }
21
+ }
22
+ }
23
+ }
@@ -1,2 +1,4 @@
1
1
  export * from "./YDateCalendar.mjs";
2
+ export * from "./YMonthPicker.mjs";
3
+ export * from "./YDatePicker.mjs";
2
4
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/date-picker/index.ts"],"sourcesContent":["export * from './YDateCalendar';\r\n"],"mappings":""}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/date-picker/index.ts"],"sourcesContent":["export * from './YDateCalendar';\r\nexport * from './YMonthPicker';\r\nexport * from './YDatePicker';\r\n"],"mappings":""}
@@ -1,43 +1,37 @@
1
- import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
- import { computed, defineComponent, getCurrentInstance, ref, shallowRef, watch } from 'vue';
1
+ import { createVNode as _createVNode, mergeProps as _mergeProps, Fragment as _Fragment } from "vue";
2
+ import { computed, defineComponent, getCurrentInstance, onBeforeUnmount, ref, shallowRef, watch } from 'vue';
3
3
  import { useModelDuplex } from "../../composables/communication.mjs";
4
4
  import { useRender } from "../../composables/component.mjs";
5
- import { toStyleSizeValue } from "../../util/index.mjs";
6
- import { bindClasses } from "../../util/vue-component.mjs";
5
+ import { chooseProps, omit } from "../../util/index.mjs";
6
+ import { toStyleSizeValue } from "../../util/ui.mjs";
7
+ import { bindClasses, propsFactory } from "../../util/vue-component.mjs";
7
8
  import { YCard } from "../card/index.mjs";
8
- import { YLayer } from "../layer/index.mjs";
9
+ import { YLayer, pressYLayerProps } from "../layer/index.mjs";
9
10
  import { useActiveStack } from "../layer/active-stack.mjs";
10
11
  import "./YDialog.scss";
12
+ export const pressYDialogPropsOptions = propsFactory({
13
+ persistent: {
14
+ type: Boolean,
15
+ default: true
16
+ },
17
+ dialogClasses: {
18
+ type: [Array, String, Object]
19
+ },
20
+ maximized: Boolean,
21
+ offset: {
22
+ type: String
23
+ },
24
+ ...omit(pressYLayerProps({
25
+ scrim: true
26
+ }), ['offset', 'classes'])
27
+ }, 'YDialog');
11
28
  export const YDialog = defineComponent({
12
29
  name: 'YDialog',
13
30
  components: {
14
31
  YLayer,
15
32
  YCard
16
33
  },
17
- props: {
18
- modelValue: {
19
- type: Boolean
20
- },
21
- persistent: {
22
- type: Boolean,
23
- default: true
24
- },
25
- dialogClasses: {
26
- type: [Array, String, Object]
27
- },
28
- closeClickScrim: {
29
- type: Boolean
30
- },
31
- disabled: Boolean,
32
- maximized: Boolean,
33
- scrim: {
34
- type: Boolean,
35
- default: true
36
- },
37
- offset: {
38
- type: String
39
- }
40
- },
34
+ props: pressYDialogPropsOptions(),
41
35
  emits: ['update:modelValue'],
42
36
  setup(props, _ref) {
43
37
  let {
@@ -55,14 +49,10 @@ export const YDialog = defineComponent({
55
49
  'y-dialog--maximized': props.maximized
56
50
  };
57
51
  });
58
- const computedOffset = computed(() => {
59
- return {
60
- paddingTop: toStyleSizeValue(props.offset)
61
- };
62
- });
63
52
  const styles = computed(() => {
64
53
  return {
65
- ...computedOffset.value
54
+ ...(props.contentStyles ?? {}),
55
+ paddingTop: toStyleSizeValue(props.offset)
66
56
  };
67
57
  });
68
58
  const layer$ = ref();
@@ -77,13 +67,15 @@ export const YDialog = defineComponent({
77
67
  return !layer.content$?.contains(target);
78
68
  });
79
69
  }
80
- console.log(layer$.value?.content$.contains(target), target);
81
70
  if (prevTarget !== target && layer$.value?.content$ && ![document, layer$.value?.content$].includes(target) && !layer$.value?.content$.contains(target) && !testChildrenContains(children.value)) {
82
71
  const focusableSelector = 'button, [href], input:not([type="hidden"]), select, textarea, [tabindex]:not([tabindex="-1"])';
83
72
  const focusables = [...layer$.value.content$.querySelectorAll(focusableSelector)].filter(el => !el.hasAttribute('disabled') && !el.matches('[tabindex="-1"]'));
84
73
  if (!focusables.length) return;
85
74
  const firstChild = focusables[0];
86
75
  const lastChild = focusables[focusables.length - 1];
76
+ if (target?.isSameNode(firstChild) || target?.isSameNode(lastChild)) {
77
+ return;
78
+ }
87
79
  if (firstChild === lastChild) {
88
80
  lastChild.focus();
89
81
  } else {
@@ -111,7 +103,9 @@ export const YDialog = defineComponent({
111
103
  const scrollLeft = document.documentElement.scrollLeft;
112
104
  tempScrollTop.value = scrollTop;
113
105
  tempScrollLeft.value = scrollLeft;
114
- document.documentElement.classList.add('y-dialog--prevent-scroll');
106
+ if (props.maximized) {
107
+ document.documentElement.classList.add('y-dialog--prevent-scroll');
108
+ }
115
109
  root$.classList.add('y-dialog--virtual-scroll');
116
110
  root$.style.top = toStyleSizeValue(-1 * scrollTop) || '';
117
111
  root$.style.left = toStyleSizeValue(-1 * scrollLeft) || '';
@@ -152,17 +146,18 @@ export const YDialog = defineComponent({
152
146
  }, {
153
147
  immediate: true
154
148
  });
149
+ onBeforeUnmount(() => {
150
+ preventInteractionBackground(false);
151
+ });
155
152
  useRender(() => {
156
- return _createVNode(_Fragment, null, [_createVNode(YLayer, {
153
+ return _createVNode(_Fragment, null, [_createVNode(YLayer, _mergeProps({
157
154
  "modelValue": active.value,
158
155
  "onUpdate:modelValue": $event => active.value = $event,
159
156
  "classes": classes.value,
160
157
  "content-styles": styles.value,
161
- "scrim": props.scrim,
162
158
  "modal": true,
163
- "close-click-scrim": props.closeClickScrim,
164
159
  "ref": layer$
165
- }, {
160
+ }, omit(chooseProps(props, YLayer.props), ['contentStyles'])), {
166
161
  default: function () {
167
162
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
168
163
  args[_key] = arguments[_key];
@@ -1 +1 @@
1
- {"version":3,"file":"YDialog.mjs","names":["computed","defineComponent","getCurrentInstance","ref","shallowRef","watch","useModelDuplex","useRender","toStyleSizeValue","bindClasses","YCard","YLayer","useActiveStack","YDialog","name","components","props","modelValue","type","Boolean","persistent","default","dialogClasses","Array","String","Object","closeClickScrim","disabled","maximized","scrim","offset","emits","setup","_ref","emit","slots","vm","$yuyeon","appContext","config","globalProperties","active","classes","boundClasses","computedOffset","paddingTop","styles","value","layer$","children","onFocusin","e","prevTarget","relatedTarget","target","testChildrenContains","layers","some","layer","content$","contains","console","log","document","includes","focusableSelector","focusables","querySelectorAll","filter","el","hasAttribute","matches","length","firstChild","lastChild","focus","installFocusTrap","addEventListener","dismantleFocusTrap","removeEventListener","tempScrollTop","tempScrollLeft","preventInteractionBackground","toggle","root$","root","activeLayers","getActiveLayers","filtered","ctx","modal","classList","scrollTop","documentElement","scrollLeft","add","style","top","left","isMe","remove","onUpdate","v","onClick","currentActive","baseEl","neo","old","immediate","_createVNode","_Fragment","$event","_len","arguments","args","_key","base"],"sources":["../../../src/components/dialog/YDialog.tsx"],"sourcesContent":["import type { PropType } from 'vue';\nimport { computed, defineComponent, getCurrentInstance, nextTick, ref, shallowRef, watch } from 'vue';\n\n\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { toStyleSizeValue } from '../../util';\nimport { bindClasses } from '../../util/vue-component';\nimport { YCard } from '../card';\nimport { YLayer } from '../layer';\nimport { useActiveStack } from '../layer/active-stack';\n\n\n\nimport './YDialog.scss';\n\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 persistent: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n dialogClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n closeClickScrim: {\n type: Boolean as PropType<boolean>,\n },\n disabled: Boolean as PropType<boolean>,\n maximized: Boolean as PropType<boolean>,\n scrim: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n offset: {\n type: String as PropType<string>,\n },\n },\n emits: ['update:modelValue'],\n setup(props, { emit, slots }) {\n const vm = getCurrentInstance();\n const $yuyeon = vm?.appContext.config.globalProperties.$yuyeon;\n const active = useModelDuplex(props);\n\n const classes = computed(() => {\n const boundClasses = bindClasses(props.dialogClasses);\n return {\n ...boundClasses,\n 'y-dialog': true,\n 'y-dialog--maximized': props.maximized,\n };\n });\n\n const computedOffset = computed(() => {\n return {\n paddingTop: toStyleSizeValue(props.offset),\n };\n });\n\n const styles = computed(() => {\n return {\n ...computedOffset.value,\n };\n });\n\n const layer$ = ref<typeof YLayer>();\n const { children } = useActiveStack(layer$, active, shallowRef(true));\n\n function onFocusin(e: FocusEvent) {\n const prevTarget = e.relatedTarget as HTMLElement | null;\n const target = e.target as HTMLElement | null;\n\n function testChildrenContains(layers: YLayer[]) {\n return layers.some((layer) => {\n return !layer.content$?.contains(target);\n });\n }\n\n console.log(layer$.value?.content$.contains(target), target)\n if (\n prevTarget !== target &&\n layer$.value?.content$ &&\n ![document, layer$.value?.content$].includes(target) &&\n !layer$.value?.content$.contains(target) &&\n !testChildrenContains(children.value)\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 const tempScrollTop = ref(0);\n const tempScrollLeft = ref(0);\n\n function preventInteractionBackground(toggle: boolean) {\n const root$ = $yuyeon.root as HTMLElement;\n const activeLayers = layer$.value?.getActiveLayers();\n if (toggle) {\n const filtered = activeLayers?.filter((layer: any) => {\n return layer.ctx.modal;\n });\n if (\n (filtered && !filtered.length) ||\n !root$.classList.contains('y-dialog--virtual-scroll')\n ) {\n const scrollTop = document.documentElement.scrollTop;\n const scrollLeft = document.documentElement.scrollLeft;\n tempScrollTop.value = scrollTop;\n tempScrollLeft.value = scrollLeft;\n document.documentElement.classList.add('y-dialog--prevent-scroll');\n root$.classList.add('y-dialog--virtual-scroll');\n root$.style.top = toStyleSizeValue(-1 * scrollTop) || '';\n root$.style.left = toStyleSizeValue(-1 * scrollLeft) || '';\n }\n } else {\n const filtered = activeLayers?.filter((layer: any) => {\n return !layer$.value?.isMe(layer) && layer.ctx.modal;\n });\n if (filtered && !filtered.length) {\n root$.classList.remove('y-dialog--virtual-scroll');\n document.documentElement.classList.remove('y-dialog--prevent-scroll');\n root$.style.top = '';\n root$.style.left = '';\n document.documentElement.scrollTop = tempScrollTop.value;\n document.documentElement.scrollLeft = tempScrollLeft.value;\n }\n }\n }\n\n function onUpdate(v: boolean) {\n active.value = v;\n }\n\n function onClick(e: MouseEvent) {\n const currentActive = active.value;\n if (!props.disabled) {\n active.value = !currentActive;\n }\n }\n\n watch(\n () => layer$.value?.baseEl,\n (neo, old) => {\n if (neo) {\n neo.addEventListener('click', onClick);\n } else if (old) {\n old.removeEventListener('click', onClick);\n }\n },\n );\n\n watch(\n () => active.value,\n (neo) => {\n neo ? installFocusTrap() : dismantleFocusTrap();\n preventInteractionBackground(neo);\n },\n { immediate: true },\n );\n\n useRender(() => {\n return (\n <>\n <YLayer\n v-model={active.value}\n classes={classes.value}\n content-styles={styles.value}\n scrim={props.scrim}\n modal\n close-click-scrim={props.closeClickScrim}\n ref={layer$}\n >\n {{\n default: (...args: any[]) => slots.default?.(...args),\n base: slots.base,\n }}\n </YLayer>\n </>\n );\n });\n\n return {\n active,\n layer: layer$,\n classes,\n };\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"YDialog.mjs","names":["computed","defineComponent","getCurrentInstance","onBeforeUnmount","ref","shallowRef","watch","useModelDuplex","useRender","chooseProps","omit","toStyleSizeValue","bindClasses","propsFactory","YCard","YLayer","pressYLayerProps","useActiveStack","pressYDialogPropsOptions","persistent","type","Boolean","default","dialogClasses","Array","String","Object","maximized","offset","scrim","YDialog","name","components","props","emits","setup","_ref","emit","slots","vm","$yuyeon","appContext","config","globalProperties","active","classes","boundClasses","styles","contentStyles","paddingTop","layer$","children","onFocusin","e","prevTarget","relatedTarget","target","testChildrenContains","layers","some","layer","content$","contains","value","document","includes","focusableSelector","focusables","querySelectorAll","filter","el","hasAttribute","matches","length","firstChild","lastChild","isSameNode","focus","installFocusTrap","addEventListener","dismantleFocusTrap","removeEventListener","tempScrollTop","tempScrollLeft","preventInteractionBackground","toggle","root$","root","activeLayers","getActiveLayers","filtered","ctx","modal","classList","scrollTop","documentElement","scrollLeft","add","style","top","left","isMe","remove","onUpdate","v","onClick","currentActive","disabled","baseEl","neo","old","immediate","_createVNode","_Fragment","_mergeProps","$event","_len","arguments","args","_key","base"],"sources":["../../../src/components/dialog/YDialog.tsx"],"sourcesContent":["import type { PropType } from 'vue';\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n onBeforeUnmount,\n ref,\n shallowRef,\n watch,\n} from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { chooseProps, omit } from '../../util';\nimport { toStyleSizeValue } from '../../util/ui';\nimport { bindClasses, propsFactory } from '../../util/vue-component';\nimport { YCard } from '../card';\nimport { YLayer, pressYLayerProps } from '../layer';\nimport { useActiveStack } from '../layer/active-stack';\n\nimport './YDialog.scss';\n\nexport const pressYDialogPropsOptions = propsFactory(\n {\n persistent: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n dialogClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n maximized: Boolean as PropType<boolean>,\n offset: {\n type: String as PropType<string>,\n },\n ...omit(\n pressYLayerProps({\n scrim: true,\n }),\n ['offset', 'classes'],\n ),\n },\n 'YDialog',\n);\n\nexport const YDialog = defineComponent({\n name: 'YDialog',\n components: {\n YLayer,\n YCard,\n },\n props: pressYDialogPropsOptions(),\n emits: ['update:modelValue'],\n setup(props, { emit, slots }) {\n const vm = getCurrentInstance();\n const $yuyeon = vm?.appContext.config.globalProperties.$yuyeon;\n const active = useModelDuplex(props);\n\n const classes = computed(() => {\n const boundClasses = bindClasses(props.dialogClasses);\n return {\n ...boundClasses,\n 'y-dialog': true,\n 'y-dialog--maximized': props.maximized,\n };\n });\n\n const styles = computed(() => {\n return {\n ...(props.contentStyles ?? {}),\n paddingTop: toStyleSizeValue(props.offset),\n };\n });\n\n const layer$ = ref<typeof YLayer>();\n const { children } = useActiveStack(layer$, active, shallowRef(true));\n\n function onFocusin(e: FocusEvent) {\n const prevTarget = e.relatedTarget as HTMLElement | null;\n const target = e.target as HTMLElement | null;\n\n function testChildrenContains(layers: YLayer[]) {\n return layers.some((layer) => {\n return !layer.content$?.contains(target);\n });\n }\n\n if (\n prevTarget !== target &&\n layer$.value?.content$ &&\n ![document, layer$.value?.content$].includes(target) &&\n !layer$.value?.content$.contains(target) &&\n !testChildrenContains(children.value)\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 (target?.isSameNode(firstChild) || target?.isSameNode(lastChild)) {\n return;\n }\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 const tempScrollTop = ref(0);\n const tempScrollLeft = ref(0);\n\n function preventInteractionBackground(toggle: boolean) {\n const root$ = $yuyeon.root as HTMLElement;\n const activeLayers = layer$.value?.getActiveLayers();\n if (toggle) {\n const filtered = activeLayers?.filter((layer: any) => {\n return layer.ctx.modal;\n });\n if (\n (filtered && !filtered.length) ||\n !root$.classList.contains('y-dialog--virtual-scroll')\n ) {\n const scrollTop = document.documentElement.scrollTop;\n const scrollLeft = document.documentElement.scrollLeft;\n tempScrollTop.value = scrollTop;\n tempScrollLeft.value = scrollLeft;\n if (props.maximized) {\n document.documentElement.classList.add('y-dialog--prevent-scroll');\n }\n root$.classList.add('y-dialog--virtual-scroll');\n root$.style.top = toStyleSizeValue(-1 * scrollTop) || '';\n root$.style.left = toStyleSizeValue(-1 * scrollLeft) || '';\n }\n } else {\n const filtered = activeLayers?.filter((layer: any) => {\n return !layer$.value?.isMe(layer) && layer.ctx.modal;\n });\n if (filtered && !filtered.length) {\n root$.classList.remove('y-dialog--virtual-scroll');\n document.documentElement.classList.remove('y-dialog--prevent-scroll');\n root$.style.top = '';\n root$.style.left = '';\n document.documentElement.scrollTop = tempScrollTop.value;\n document.documentElement.scrollLeft = tempScrollLeft.value;\n }\n }\n }\n\n function onUpdate(v: boolean) {\n active.value = v;\n }\n\n function onClick(e: MouseEvent) {\n const currentActive = active.value;\n if (!props.disabled) {\n active.value = !currentActive;\n }\n }\n\n watch(\n () => layer$.value?.baseEl,\n (neo, old) => {\n if (neo) {\n neo.addEventListener('click', onClick);\n } else if (old) {\n old.removeEventListener('click', onClick);\n }\n },\n );\n\n watch(\n () => active.value,\n (neo) => {\n neo ? installFocusTrap() : dismantleFocusTrap();\n preventInteractionBackground(neo);\n },\n { immediate: true },\n );\n\n onBeforeUnmount(() => {\n preventInteractionBackground(false);\n });\n\n useRender(() => {\n return (\n <>\n <YLayer\n v-model={active.value}\n classes={classes.value}\n content-styles={styles.value}\n modal\n ref={layer$}\n {...omit(chooseProps(props, YLayer.props), ['contentStyles'])}\n >\n {{\n default: (...args: any[]) => slots.default?.(...args),\n base: slots.base,\n }}\n </YLayer>\n </>\n );\n });\n\n return {\n active,\n layer: layer$,\n classes,\n };\n },\n});\n"],"mappings":"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"}
@@ -47,5 +47,4 @@
47
47
  .y-dialog--virtual-scroll {
48
48
  position: fixed !important;
49
49
  width: 100%;
50
- height: 100%;
51
50
  }
@@ -6,6 +6,7 @@
6
6
  .y-input {
7
7
  &__display {
8
8
  padding: 0 2px;
9
+ flex: 0 0 auto;
9
10
  }
10
11
 
11
12
  &__plate {
@@ -15,6 +15,18 @@ export const builtSet = {
15
15
  clear: YIconClear,
16
16
  checkbox: YIconCheckbox,
17
17
  pageControl: YIconPageControl,
18
+ next: {
19
+ component: YIconPageControl,
20
+ props: {
21
+ type: 'next'
22
+ }
23
+ },
24
+ prev: {
25
+ component: YIconPageControl,
26
+ props: {
27
+ type: 'prev'
28
+ }
29
+ },
18
30
  sort: YIconSort
19
31
  };
20
32
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["YIconCheckbox","YIconClear","YIconExpand","YIconPageControl","YIconSort","YIconDropdown","builtSet","expand","dropdown","clear","checkbox","pageControl","sort"],"sources":["../../../src/components/icons/index.ts"],"sourcesContent":["import { YIconCheckbox } from './YIconCheckbox';\nimport { YIconClear } from './YIconClear';\nimport { YIconExpand } from './YIconExpand';\nimport { YIconPageControl } from './YIconPageControl';\nimport { YIconSort } from './YIconSort';\nimport {YIconDropdown} from \"./YIconDropdown\";\n\nexport * from './YIconExpand';\nexport * from './YIconClear';\nexport * from './YIconCheckbox';\nexport * from './YIconPageControl';\nexport * from './YIconSort';\n\nexport const builtSet = {\n expand: YIconExpand,\n dropdown: YIconDropdown,\n clear: YIconClear,\n checkbox: YIconCheckbox,\n pageControl: YIconPageControl,\n sort: YIconSort,\n};\n"],"mappings":"SAASA,aAAa;AAAA,SACbC,UAAU;AAAA,SACVC,WAAW;AAAA,SACXC,gBAAgB;AAAA,SAChBC,SAAS;AAAA,SACVC,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAQrB,OAAO,MAAMC,QAAQ,GAAG;EACtBC,MAAM,EAAEL,WAAW;EACnBM,QAAQ,EAAEH,aAAa;EACvBI,KAAK,EAAER,UAAU;EACjBS,QAAQ,EAAEV,aAAa;EACvBW,WAAW,EAAER,gBAAgB;EAC7BS,IAAI,EAAER;AACR,CAAC"}
1
+ {"version":3,"file":"index.mjs","names":["YIconCheckbox","YIconClear","YIconExpand","YIconPageControl","YIconSort","YIconDropdown","builtSet","expand","dropdown","clear","checkbox","pageControl","next","component","props","type","prev","sort"],"sources":["../../../src/components/icons/index.ts"],"sourcesContent":["import { YIconCheckbox } from './YIconCheckbox';\nimport { YIconClear } from './YIconClear';\nimport { YIconExpand } from './YIconExpand';\nimport { YIconPageControl } from './YIconPageControl';\nimport { YIconSort } from './YIconSort';\nimport {YIconDropdown} from \"./YIconDropdown\";\n\nexport * from './YIconExpand';\nexport * from './YIconClear';\nexport * from './YIconCheckbox';\nexport * from './YIconPageControl';\nexport * from './YIconSort';\n\nexport const builtSet = {\n expand: YIconExpand,\n dropdown: YIconDropdown,\n clear: YIconClear,\n checkbox: YIconCheckbox,\n pageControl: YIconPageControl,\n next: {\n component: YIconPageControl,\n props: {\n type: 'next'\n }\n },\n prev: {\n component: YIconPageControl,\n props: {\n type: 'prev'\n }\n },\n sort: YIconSort,\n};\n"],"mappings":"SAASA,aAAa;AAAA,SACbC,UAAU;AAAA,SACVC,WAAW;AAAA,SACXC,gBAAgB;AAAA,SAChBC,SAAS;AAAA,SACVC,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAQrB,OAAO,MAAMC,QAAQ,GAAG;EACtBC,MAAM,EAAEL,WAAW;EACnBM,QAAQ,EAAEH,aAAa;EACvBI,KAAK,EAAER,UAAU;EACjBS,QAAQ,EAAEV,aAAa;EACvBW,WAAW,EAAER,gBAAgB;EAC7BS,IAAI,EAAE;IACJC,SAAS,EAAEV,gBAAgB;IAC3BW,KAAK,EAAE;MACLC,IAAI,EAAE;IACR;EACF,CAAC;EACDC,IAAI,EAAE;IACJH,SAAS,EAAEV,gBAAgB;IAC3BW,KAAK,EAAE;MACLC,IAAI,EAAE;IACR;EACF,CAAC;EACDE,IAAI,EAAEb;AACR,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { mergeProps as _mergeProps, withDirectives as _withDirectives, resolveDirective as _resolveDirective, vShow as _vShow, createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
- import { Teleport, Transition, computed, defineComponent, getCurrentInstance, mergeProps, reactive, ref, shallowRef, toRef, watchEffect } from 'vue';
2
+ import { Teleport, Transition, computed, defineComponent, getCurrentInstance, mergeProps, reactive, ref, shallowRef, toRef } from 'vue';
3
3
  import { useRender } from "../../composables/component.mjs";
4
4
  import { pressCoordinateProps, useCoordinate } from "../../composables/coordinate/index.mjs";
5
5
  import { pressDimensionPropsOptions, useDimension } from "../../composables/dimension.mjs";
@@ -10,6 +10,7 @@ import { PolyTransition, polyTransitionPropOptions, usePolyTransition } from "..
10
10
  import { ComplementClick } from "../../directives/complement-click/index.mjs";
11
11
  import { bindClasses, propsFactory } from "../../util/vue-component.mjs";
12
12
  import "./YLayer.scss";
13
+ import { useBase } from "./base.mjs";
13
14
  export const pressYLayerProps = propsFactory({
14
15
  modelValue: {
15
16
  type: Boolean
@@ -84,11 +85,13 @@ export const YLayer = defineComponent({
84
85
  slots
85
86
  } = _ref;
86
87
  const vm = getCurrentInstance();
87
- const base$ = ref();
88
88
  const scrim$ = ref();
89
89
  const content$ = ref();
90
- const baseSlot = ref();
91
- const baseEl = ref();
90
+ const {
91
+ base$,
92
+ baseEl,
93
+ baseSlot
94
+ } = useBase();
92
95
  const {
93
96
  themeClasses
94
97
  } = useLocalTheme(props);
@@ -112,6 +115,7 @@ export const YLayer = defineComponent({
112
115
  }
113
116
  });
114
117
  const finish = shallowRef(false);
118
+ const hovered = ref(false);
115
119
  const disabled = toRef(props, 'disabled');
116
120
  const {
117
121
  lazyValue,
@@ -158,25 +162,12 @@ export const YLayer = defineComponent({
158
162
  active.value = false;
159
163
  }
160
164
  }
161
- const baseFromSlotEl = computed(() => {
162
- return baseSlot.value?.[0]?.el;
163
- });
164
- watchEffect(() => {
165
- if (!base$.value) {
166
- baseEl.value = baseFromSlotEl.value;
167
- return;
168
- }
169
- let base = base$.value;
170
- if (base.baseEl) {
171
- base = base.baseEl;
172
- }
173
- if (base$.value?.$el) {
174
- if (base$.value.$el.nodeType === 1) {
175
- base = base$.value.$el;
176
- }
177
- }
178
- baseEl.value = base;
179
- });
165
+ function onMouseenter(event) {
166
+ hovered.value = true;
167
+ }
168
+ function onMouseleave(event) {
169
+ hovered.value = false;
170
+ }
180
171
  const computedStyle = computed(() => {
181
172
  return {
182
173
  zIndex: '2000'
@@ -198,17 +189,10 @@ export const YLayer = defineComponent({
198
189
  ...boundClasses
199
190
  };
200
191
  });
201
- const hovered = ref(false);
202
- function onMouseenter(event) {
203
- hovered.value = true;
204
- }
205
- function onMouseleave(event) {
206
- hovered.value = false;
207
- }
208
192
  expose({
209
193
  scrim$,
210
194
  base$,
211
- content$,
195
+ content$: computed(() => content$.value),
212
196
  baseEl,
213
197
  active,
214
198
  onAfterUpdate,