yuyeon 0.0.42-rc2 → 0.0.42-rc24

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 (114) hide show
  1. package/dist/style.css +1 -1
  2. package/dist/yuyeon.js +3762 -3475
  3. package/dist/yuyeon.umd.cjs +6 -6
  4. package/lib/components/date-picker/YDateCalendar.scss +82 -82
  5. package/lib/components/date-picker/YDatePickerControl.mjs.map +1 -1
  6. package/lib/components/dialog/YDialog.mjs +4 -1
  7. package/lib/components/dialog/YDialog.mjs.map +1 -1
  8. package/lib/components/dialog/YDialog.scss +2 -0
  9. package/lib/components/divider/YDivider.mjs.map +1 -1
  10. package/lib/components/dropdown/YDropdown.mjs +11 -5
  11. package/lib/components/dropdown/YDropdown.mjs.map +1 -1
  12. package/lib/components/dropdown/YDropdown.scss +3 -8
  13. package/lib/components/field-input/YFieldInput.mjs +22 -15
  14. package/lib/components/field-input/YFieldInput.mjs.map +1 -1
  15. package/lib/components/icon/YIcon.mjs +62 -0
  16. package/lib/components/icon/YIcon.mjs.map +1 -0
  17. package/lib/components/icon/YIcon.scss +18 -0
  18. package/lib/components/icon/index.mjs +2 -0
  19. package/lib/components/icon/index.mjs.map +1 -0
  20. package/lib/components/icon/poly.mjs +57 -0
  21. package/lib/components/icon/poly.mjs.map +1 -0
  22. package/lib/components/icons/index.mjs +14 -0
  23. package/lib/components/icons/index.mjs.map +1 -1
  24. package/lib/components/index.mjs +2 -1
  25. package/lib/components/index.mjs.map +1 -1
  26. package/lib/components/input/YInput.mjs +173 -308
  27. package/lib/components/input/YInput.mjs.map +1 -1
  28. package/lib/components/input/index.mjs.map +1 -1
  29. package/lib/components/layer/YLayer.mjs +3 -1
  30. package/lib/components/layer/YLayer.mjs.map +1 -1
  31. package/lib/components/layer/active-stack.mjs.map +1 -1
  32. package/lib/components/menu/YMenu.mjs +16 -4
  33. package/lib/components/menu/YMenu.mjs.map +1 -1
  34. package/lib/components/select/YSelect.mjs +27 -12
  35. package/lib/components/select/YSelect.mjs.map +1 -1
  36. package/lib/components/select/YSelect.scss +3 -8
  37. package/lib/components/tab/types.mjs.map +1 -1
  38. package/lib/components/textarea/YTextarea.mjs +159 -0
  39. package/lib/components/textarea/YTextarea.mjs.map +1 -0
  40. package/lib/components/textarea/YTextarea.scss +25 -0
  41. package/lib/components/textarea/index.mjs +2 -0
  42. package/lib/components/textarea/index.mjs.map +1 -0
  43. package/lib/components/tree-view/YTreeView.mjs.map +1 -1
  44. package/lib/components/tree-view/YTreeViewNode.mjs.map +1 -1
  45. package/lib/composables/communication.mjs.map +1 -1
  46. package/lib/composables/icon.mjs +161 -0
  47. package/lib/composables/icon.mjs.map +1 -1
  48. package/lib/composables/theme/index.mjs.map +1 -1
  49. package/lib/composables/validation.mjs +101 -0
  50. package/lib/composables/validation.mjs.map +1 -0
  51. package/lib/index.mjs +3 -0
  52. package/lib/index.mjs.map +1 -1
  53. package/lib/styles/util/_mixin.scss +34 -34
  54. package/lib/types/index.mjs.map +1 -1
  55. package/lib/util/date/adapters/yuyeon-date-adapter.mjs +1 -1
  56. package/lib/util/date/adapters/yuyeon-date-adapter.mjs.map +1 -1
  57. package/lib/util/date/built-in.mjs +6 -2
  58. package/lib/util/date/built-in.mjs.map +1 -1
  59. package/package.json +2 -2
  60. package/types/abstract/items.d.ts +4 -4
  61. package/types/components/button/YButton.d.ts +10 -10
  62. package/types/components/checkbox/YInputCheckbox.d.ts +2 -2
  63. package/types/components/date-picker/YDateCalendar.d.ts +10 -4
  64. package/types/components/dialog/YDialog.d.ts +4 -1
  65. package/types/components/dropdown/YDropdown.d.ts +34 -13
  66. package/types/components/field-input/YFieldInput.d.ts +121 -53
  67. package/types/components/form/YForm.d.ts +1 -1
  68. package/types/components/icon/YIcon.d.ts +81 -0
  69. package/types/components/icon/index.d.ts +1 -0
  70. package/types/components/icons/YIconCheckbox.d.ts +2 -2
  71. package/types/components/icons/YIconSort.d.ts +2 -2
  72. package/types/components/icons/index.d.ts +48 -0
  73. package/types/components/index.d.ts +2 -1
  74. package/types/components/input/YInput.d.ts +120 -91
  75. package/types/components/layer/YLayer.d.ts +20 -19
  76. package/types/components/layer/active-stack.d.ts +1 -2
  77. package/types/components/list/YListItem.d.ts +2 -2
  78. package/types/components/menu/YMenu.d.ts +8 -3
  79. package/types/components/pagination/YPagination.d.ts +8 -6
  80. package/types/components/progress-bar/YProgressBar.d.ts +1 -1
  81. package/types/components/select/YSelect.d.ts +1483 -272
  82. package/types/components/snackbar/YSnackbar.d.ts +3 -1
  83. package/types/components/switch/YSwitch.d.ts +1 -1
  84. package/types/components/tab/YTab.d.ts +15 -15
  85. package/types/components/tab/YTabs.d.ts +5 -5
  86. package/types/components/tab/types.d.ts +1 -0
  87. package/types/components/table/YDataTable.d.ts +18 -18
  88. package/types/components/table/YDataTableBody.d.ts +5 -5
  89. package/types/components/table/YDataTableControl.d.ts +2 -2
  90. package/types/components/table/YDataTableHead.d.ts +2 -2
  91. package/types/components/table/YDataTableServer.d.ts +21 -21
  92. package/types/components/table/YTable.d.ts +4 -4
  93. package/types/components/table/composibles/header.d.ts +1 -1
  94. package/types/components/table/composibles/items.d.ts +3 -3
  95. package/types/components/table/composibles/pagination.d.ts +8 -4
  96. package/types/components/table/composibles/selection.d.ts +2 -2
  97. package/types/components/table/composibles/sorting.d.ts +4 -2
  98. package/types/components/textarea/YTextarea.d.ts +664 -0
  99. package/types/components/textarea/index.d.ts +1 -0
  100. package/types/components/tooltip/YTooltip.d.ts +9 -8
  101. package/types/components/tree-view/YTreeView.d.ts +4 -4
  102. package/types/components/tree-view/YTreeViewNode.d.ts +9 -9
  103. package/types/composables/choice.d.ts +1 -1
  104. package/types/composables/communication.d.ts +7 -2
  105. package/types/composables/coordinate/index.d.ts +6 -6
  106. package/types/composables/focus.d.ts +3 -1
  107. package/types/composables/icon.d.ts +96 -0
  108. package/types/composables/list-items.d.ts +10 -10
  109. package/types/composables/theme/index.d.ts +2 -2
  110. package/types/composables/validation.d.ts +75 -0
  111. package/types/globals.d.ts +12 -7
  112. package/types/shims.d.ts +88 -85
  113. package/types/types/index.d.ts +5 -0
  114. package/types/util/date/built-in.d.ts +2 -2
@@ -1,82 +1,82 @@
1
- @use '../../styles/util/mixin';
2
-
3
- .y-date-calendar {
4
- padding: 0 8px;
5
-
6
- &__header {
7
- display: flex;
8
- padding: 0 12px 12px;
9
- font-weight: 500;
10
- }
11
-
12
- &__week {
13
- display: grid;
14
- grid-template-columns: repeat(7, min-content);
15
- }
16
-
17
- &__cell {
18
- width: 40px;
19
- height: 40px;
20
- display: flex;
21
- flex-direction: column;
22
- justify-content: center;
23
- align-items: center;
24
- }
25
-
26
- &__weekday {
27
- font-size: 0.875rem;
28
- font-weight: 600;
29
- }
30
-
31
- &__day {
32
- position: relative;
33
-
34
- .y-button {
35
- width: 36px;
36
- height: 36px;
37
- --y-button__disabled-background: transparent;
38
- }
39
-
40
- &--adjacent {
41
- color: var(--y-theme-on-surface-variant);
42
- opacity: 0.5;
43
- }
44
-
45
- &:before {
46
- content: '';
47
- position: absolute;
48
- right: 0;
49
- left: 0;
50
- top: calc((40px - 36px) / 2);
51
- bottom: calc((40px - 36px) / 2);
52
- }
53
-
54
- &--range-interval:before {
55
- background: rgba(var(--y-theme-primary-rgb), 0.3);
56
- }
57
-
58
- &--range-start:before,
59
- &--range-end:before {
60
- background: rgba(var(--y-theme-primary-rgb), 0.3);
61
- }
62
-
63
- &--range-start:before, &--week-start:before {
64
- left: calc((40px - 36px) / 2);
65
- }
66
-
67
- &--range-end:before, &--week-end:before {
68
- right: calc((40px - 36px) / 2);
69
- }
70
-
71
- &--range-interval#{&}--week-start:before,
72
- &--range-start:before {
73
- @include mixin.borderRadius(50%, 'left');
74
- }
75
-
76
- &--range-interval#{&}--week-end:before,
77
- &--range-start#{&}--week-end:before,
78
- &--range-end:before {
79
- @include mixin.borderRadius(50%, 'right');
80
- }
81
- }
82
- }
1
+ @use '../../styles/util/mixin';
2
+
3
+ .y-date-calendar {
4
+ padding: 0 8px;
5
+
6
+ &__header {
7
+ display: flex;
8
+ padding: 0 12px 12px;
9
+ font-weight: 500;
10
+ }
11
+
12
+ &__week {
13
+ display: grid;
14
+ grid-template-columns: repeat(7, min-content);
15
+ }
16
+
17
+ &__cell {
18
+ width: 40px;
19
+ height: 40px;
20
+ display: flex;
21
+ flex-direction: column;
22
+ justify-content: center;
23
+ align-items: center;
24
+ }
25
+
26
+ &__weekday {
27
+ font-size: 0.875rem;
28
+ font-weight: 600;
29
+ }
30
+
31
+ &__day {
32
+ position: relative;
33
+
34
+ .y-button {
35
+ width: 36px;
36
+ height: 36px;
37
+ --y-button__disabled-background: transparent;
38
+ }
39
+
40
+ &--adjacent {
41
+ color: var(--y-theme-on-surface-variant);
42
+ opacity: 0.5;
43
+ }
44
+
45
+ &:before {
46
+ content: '';
47
+ position: absolute;
48
+ right: 0;
49
+ left: 0;
50
+ top: calc((40px - 36px) / 2);
51
+ bottom: calc((40px - 36px) / 2);
52
+ }
53
+
54
+ &--range-interval:before {
55
+ background: rgba(var(--y-theme-primary-rgb), 0.3);
56
+ }
57
+
58
+ &--range-start:before,
59
+ &--range-end:before {
60
+ background: rgba(var(--y-theme-primary-rgb), 0.3);
61
+ }
62
+
63
+ &--range-start:before, &--week-start:before {
64
+ left: calc((40px - 36px) / 2);
65
+ }
66
+
67
+ &--range-end:before, &--week-end:before {
68
+ right: calc((40px - 36px) / 2);
69
+ }
70
+
71
+ &--range-interval#{&}--week-start:before,
72
+ &--range-start:before {
73
+ @include mixin.borderRadius(50%, 'left');
74
+ }
75
+
76
+ &--range-interval#{&}--week-end:before,
77
+ &--range-start#{&}--week-end:before,
78
+ &--range-end:before {
79
+ @include mixin.borderRadius(50%, 'right');
80
+ }
81
+ }
82
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"YDatePickerControl.mjs","names":["defineComponent","useRender","propsFactory","pressYDatePickerControlPropsOptions","disabled","type","Boolean","String","Array","default","nextIcon","Object","prevIcon","dropdownIcon","YDatePickerControl","name","setup","_createVNode"],"sources":["../../../src/components/date-picker/YDatePickerControl.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\nimport type { PropType } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { propsFactory } from '../../util/vue-component';\n\nimport './YDatePickerControl.scss';\n\nexport const pressYDatePickerControlPropsOptions = propsFactory(\n {\n disabled: {\n type: [Boolean, String, Array] as PropType<boolean | string | string[]>,\n default: false,\n },\n nextIcon: {\n type: [String, Object],\n },\n prevIcon: {\n type: [String, Object],\n },\n dropdownIcon: {\n type: [String, Object],\n },\n },\n 'YDataPickerControl',\n);\n\nexport const YDatePickerControl = defineComponent({\n name: 'YDatePickerControl',\n setup() {\n useRender(() => <div class={['y-date-picker-control']}></div>);\n },\n});\n\nexport type YDatePickerControl = InstanceType<typeof YDatePickerControl>;\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,KAAK;AAAC,SAG7BC,SAAS;AAAA,SACTC,YAAY;AAErB;AAEA,OAAO,MAAMC,mCAAmC,GAAGD,YAAY,CAC7D;EACEE,QAAQ,EAAE;IACRC,IAAI,EAAE,CAACC,OAAO,EAAEC,MAAM,EAAEC,KAAK,CAA0C;IACvEC,OAAO,EAAE;EACX,CAAC;EACDC,QAAQ,EAAE;IACRL,IAAI,EAAE,CAACE,MAAM,EAAEI,MAAM;EACvB,CAAC;EACDC,QAAQ,EAAE;IACRP,IAAI,EAAE,CAACE,MAAM,EAAEI,MAAM;EACvB,CAAC;EACDE,YAAY,EAAE;IACZR,IAAI,EAAE,CAACE,MAAM,EAAEI,MAAM;EACvB;AACF,CAAC,EACD,oBACF,CAAC;AAED,OAAO,MAAMG,kBAAkB,GAAGd,eAAe,CAAC;EAChDe,IAAI,EAAE,oBAAoB;EAC1BC,KAAKA,CAAA,EAAG;IACNf,SAAS,CAAC,MAAAgB,YAAA;MAAA,SAAkB,CAAC,uBAAuB;IAAC,QAAQ,CAAC;EAChE;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDatePickerControl.mjs","names":["defineComponent","useRender","propsFactory","pressYDatePickerControlPropsOptions","disabled","type","Boolean","String","Array","default","nextIcon","Object","prevIcon","dropdownIcon","YDatePickerControl","name","setup","_createVNode"],"sources":["../../../src/components/date-picker/YDatePickerControl.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\r\nimport type { PropType } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { propsFactory } from '../../util/vue-component';\r\n\r\nimport './YDatePickerControl.scss';\r\n\r\nexport const pressYDatePickerControlPropsOptions = propsFactory(\r\n {\r\n disabled: {\r\n type: [Boolean, String, Array] as PropType<boolean | string | string[]>,\r\n default: false,\r\n },\r\n nextIcon: {\r\n type: [String, Object],\r\n },\r\n prevIcon: {\r\n type: [String, Object],\r\n },\r\n dropdownIcon: {\r\n type: [String, Object],\r\n },\r\n },\r\n 'YDataPickerControl',\r\n);\r\n\r\nexport const YDatePickerControl = defineComponent({\r\n name: 'YDatePickerControl',\r\n setup() {\r\n useRender(() => <div class={['y-date-picker-control']}></div>);\r\n },\r\n});\r\n\r\nexport type YDatePickerControl = InstanceType<typeof YDatePickerControl>;\r\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,KAAK;AAAC,SAG7BC,SAAS;AAAA,SACTC,YAAY;AAErB;AAEA,OAAO,MAAMC,mCAAmC,GAAGD,YAAY,CAC7D;EACEE,QAAQ,EAAE;IACRC,IAAI,EAAE,CAACC,OAAO,EAAEC,MAAM,EAAEC,KAAK,CAA0C;IACvEC,OAAO,EAAE;EACX,CAAC;EACDC,QAAQ,EAAE;IACRL,IAAI,EAAE,CAACE,MAAM,EAAEI,MAAM;EACvB,CAAC;EACDC,QAAQ,EAAE;IACRP,IAAI,EAAE,CAACE,MAAM,EAAEI,MAAM;EACvB,CAAC;EACDE,YAAY,EAAE;IACZR,IAAI,EAAE,CAACE,MAAM,EAAEI,MAAM;EACvB;AACF,CAAC,EACD,oBACF,CAAC;AAED,OAAO,MAAMG,kBAAkB,GAAGd,eAAe,CAAC;EAChDe,IAAI,EAAE,oBAAoB;EAC1BC,KAAKA,CAAA,EAAG;IACNf,SAAS,CAAC,MAAAgB,YAAA;MAAA,SAAkB,CAAC,uBAAuB;IAAC,QAAQ,CAAC;EAChE;AACF,CAAC,CAAC"}
@@ -83,6 +83,9 @@ export const YDialog = defineComponent({
83
83
  if (!focusables.length) return;
84
84
  const firstChild = focusables[0];
85
85
  const lastChild = focusables[focusables.length - 1];
86
+ if (target?.isSameNode(firstChild) || target?.isSameNode(lastChild)) {
87
+ return;
88
+ }
86
89
  if (firstChild === lastChild) {
87
90
  lastChild.focus();
88
91
  } else {
@@ -105,7 +108,7 @@ export const YDialog = defineComponent({
105
108
  const filtered = activeLayers?.filter(layer => {
106
109
  return layer.ctx.modal;
107
110
  });
108
- if (filtered && !filtered.length) {
111
+ if (filtered && !filtered.length || !root$.classList.contains('y-dialog--virtual-scroll')) {
109
112
  const scrollTop = document.documentElement.scrollTop;
110
113
  const scrollLeft = document.documentElement.scrollLeft;
111
114
  tempScrollTop.value = scrollTop;
@@ -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","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","scrollTop","documentElement","scrollLeft","classList","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';\r\nimport {\r\n computed,\r\n defineComponent,\r\n getCurrentInstance,\r\n ref,\r\n shallowRef,\r\n watch,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { toStyleSizeValue } from '../../util';\r\nimport { bindClasses } from '../../util/vue-component';\r\nimport { YCard } from '../card';\r\nimport { YLayer } from '../layer';\r\nimport { useActiveStack } from '../layer/active-stack';\r\n\r\nimport './YDialog.scss';\r\n\r\nexport const YDialog = defineComponent({\r\n name: 'YDialog',\r\n components: {\r\n YLayer,\r\n YCard,\r\n },\r\n props: {\r\n modelValue: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n persistent: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n dialogClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n closeClickScrim: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n disabled: Boolean as PropType<boolean>,\r\n maximized: Boolean as PropType<boolean>,\r\n scrim: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n offset: {\r\n type: String as PropType<string>,\r\n },\r\n },\r\n emits: ['update:modelValue'],\r\n setup(props, { emit, slots }) {\r\n const vm = getCurrentInstance();\r\n const $yuyeon = vm?.appContext.config.globalProperties.$yuyeon;\r\n const active = useModelDuplex(props);\r\n\r\n const classes = computed(() => {\r\n const boundClasses = bindClasses(props.dialogClasses);\r\n return {\r\n ...boundClasses,\r\n 'y-dialog': true,\r\n 'y-dialog--maximized': props.maximized,\r\n };\r\n });\r\n\r\n const computedOffset = computed(() => {\r\n return {\r\n paddingTop: toStyleSizeValue(props.offset),\r\n };\r\n });\r\n\r\n const styles = computed(() => {\r\n return {\r\n ...computedOffset.value,\r\n };\r\n });\r\n\r\n const layer$ = ref<typeof YLayer>();\r\n const { children } = useActiveStack(layer$, active, shallowRef(true));\r\n function onFocusin(e: FocusEvent) {\r\n const prevTarget = e.relatedTarget as HTMLElement | null;\r\n const target = e.target as HTMLElement | null;\r\n\r\n function testChildrenContains(layers: YLayer[]) {\r\n return layers.some((layer) => {\r\n return !layer.content$?.contains(target);\r\n });\r\n }\r\n\r\n if (\r\n prevTarget !== target &&\r\n layer$.value?.content$ &&\r\n ![document, layer$.value?.content$].includes(target) &&\r\n !layer$.value?.content$.contains(target) &&\r\n !testChildrenContains(children.value)\r\n ) {\r\n const focusableSelector =\r\n 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\r\n const focusables = [\r\n ...layer$.value.content$.querySelectorAll(focusableSelector),\r\n ].filter(\r\n (el) =>\r\n !el.hasAttribute('disabled') && !el.matches('[tabindex=\"-1\"]'),\r\n ) as HTMLElement[];\r\n if (!focusables.length) return;\r\n const firstChild = focusables[0];\r\n const lastChild = focusables[focusables.length - 1];\r\n if (firstChild === lastChild) {\r\n lastChild.focus();\r\n } else {\r\n firstChild.focus();\r\n }\r\n }\r\n }\r\n\r\n function installFocusTrap() {\r\n document.addEventListener('focusin', onFocusin);\r\n }\r\n\r\n function dismantleFocusTrap() {\r\n document.removeEventListener('focusin', onFocusin);\r\n }\r\n\r\n const tempScrollTop = ref(0);\r\n const tempScrollLeft = ref(0);\r\n\r\n function preventInteractionBackground(toggle: boolean) {\r\n const root$ = $yuyeon.root as HTMLElement;\r\n const activeLayers = layer$.value?.getActiveLayers();\r\n if (toggle) {\r\n const filtered = activeLayers?.filter((layer: any) => {\r\n return layer.ctx.modal;\r\n });\r\n if (filtered && !filtered.length) {\r\n const scrollTop = document.documentElement.scrollTop;\r\n const scrollLeft = document.documentElement.scrollLeft;\r\n tempScrollTop.value = scrollTop;\r\n tempScrollLeft.value = scrollLeft;\r\n document.documentElement.classList.add('y-dialog--prevent-scroll');\r\n root$.classList.add('y-dialog--virtual-scroll');\r\n root$.style.top = toStyleSizeValue(-1 * scrollTop) || '';\r\n root$.style.left = toStyleSizeValue(-1 * scrollLeft) || '';\r\n }\r\n } else {\r\n const filtered = activeLayers?.filter((layer: any) => {\r\n return !layer$.value?.isMe(layer) && layer.ctx.modal;\r\n });\r\n if (filtered && !filtered.length) {\r\n root$.classList.remove('y-dialog--virtual-scroll');\r\n document.documentElement.classList.remove('y-dialog--prevent-scroll');\r\n root$.style.top = '';\r\n root$.style.left = '';\r\n document.documentElement.scrollTop = tempScrollTop.value;\r\n document.documentElement.scrollLeft = tempScrollLeft.value;\r\n }\r\n }\r\n }\r\n\r\n function onUpdate(v: boolean) {\r\n active.value = v;\r\n }\r\n\r\n function onClick(e: MouseEvent) {\r\n const currentActive = active.value;\r\n if (!props.disabled) {\r\n active.value = !currentActive;\r\n }\r\n }\r\n\r\n watch(\r\n () => layer$.value?.baseEl,\r\n (neo, old) => {\r\n if (neo) {\r\n neo.addEventListener('click', onClick);\r\n } else if (old) {\r\n old.removeEventListener('click', onClick);\r\n }\r\n },\r\n );\r\n\r\n watch(\r\n () => active.value,\r\n (neo) => {\r\n neo ? installFocusTrap() : dismantleFocusTrap();\r\n preventInteractionBackground(neo);\r\n },\r\n { immediate: true },\r\n );\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n <YLayer\r\n v-model={active.value}\r\n classes={classes.value}\r\n content-styles={styles.value}\r\n scrim={props.scrim}\r\n modal\r\n close-click-scrim={props.closeClickScrim}\r\n ref={layer$}\r\n >\r\n {{\r\n default: (...args: any[]) => slots.default?.(...args),\r\n base: slots.base,\r\n }}\r\n </YLayer>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n active,\r\n layer: layer$,\r\n classes,\r\n };\r\n },\r\n});\r\n"],"mappings":"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"}
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","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","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 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 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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"}
@@ -46,4 +46,6 @@
46
46
  }
47
47
  .y-dialog--virtual-scroll {
48
48
  position: fixed !important;
49
+ width: 100%;
50
+ height: 100%;
49
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"YDivider.mjs","names":["defineComponent","useRender","propsFactory","pressYDividerPropsOptions","vertical","Boolean","YDivider","props","setup","_withDirectives","_createVNode","_resolveDirective"],"sources":["../../../src/components/divider/YDivider.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\nimport type { PropType } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { propsFactory } from '../../util';\n\nexport const pressYDividerPropsOptions = propsFactory(\n {\n vertical: Boolean as PropType<boolean>,\n },\n 'YDivider',\n);\n\nexport const YDivider = defineComponent({\n props: pressYDividerPropsOptions(),\n setup(props) {\n useRender(() => {\n return (\n <hr\n class={['y-divider', { 'y-divider--vertical': props.vertical }]}\n v-theme\n />\n );\n });\n },\n});\n\nexport type YDivider = InstanceType<typeof YDivider>;\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,KAAK;AAAC,SAG7BC,SAAS;AAAA,SACTC,YAAY;AAErB,OAAO,MAAMC,yBAAyB,GAAGD,YAAY,CACnD;EACEE,QAAQ,EAAEC;AACZ,CAAC,EACD,UACF,CAAC;AAED,OAAO,MAAMC,QAAQ,GAAGN,eAAe,CAAC;EACtCO,KAAK,EAAEJ,yBAAyB,CAAC,CAAC;EAClCK,KAAKA,CAACD,KAAK,EAAE;IACXN,SAAS,CAAC,MAAM;MACd,OAAAQ,eAAA,CAAAC,YAAA;QAAA,SAEW,CAAC,WAAW,EAAE;UAAE,qBAAqB,EAAEH,KAAK,CAACH;QAAS,CAAC;MAAC,YAAAO,iBAAA;IAIrE,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDivider.mjs","names":["defineComponent","useRender","propsFactory","pressYDividerPropsOptions","vertical","Boolean","YDivider","props","setup","_withDirectives","_createVNode","_resolveDirective"],"sources":["../../../src/components/divider/YDivider.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\r\nimport type { PropType } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { propsFactory } from '../../util';\r\n\r\nexport const pressYDividerPropsOptions = propsFactory(\r\n {\r\n vertical: Boolean as PropType<boolean>,\r\n },\r\n 'YDivider',\r\n);\r\n\r\nexport const YDivider = defineComponent({\r\n props: pressYDividerPropsOptions(),\r\n setup(props) {\r\n useRender(() => {\r\n return (\r\n <hr\r\n class={['y-divider', { 'y-divider--vertical': props.vertical }]}\r\n v-theme\r\n />\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YDivider = InstanceType<typeof YDivider>;\r\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,KAAK;AAAC,SAG7BC,SAAS;AAAA,SACTC,YAAY;AAErB,OAAO,MAAMC,yBAAyB,GAAGD,YAAY,CACnD;EACEE,QAAQ,EAAEC;AACZ,CAAC,EACD,UACF,CAAC;AAED,OAAO,MAAMC,QAAQ,GAAGN,eAAe,CAAC;EACtCO,KAAK,EAAEJ,yBAAyB,CAAC,CAAC;EAClCK,KAAKA,CAACD,KAAK,EAAE;IACXN,SAAS,CAAC,MAAM;MACd,OAAAQ,eAAA,CAAAC,YAAA;QAAA,SAEW,CAAC,WAAW,EAAE;UAAE,qBAAqB,EAAEH,KAAK,CAACH;QAAS,CAAC;MAAC,YAAAO,iBAAA;IAIrE,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { createTextVNode as _createTextVNode, mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
- import { defineComponent } from 'vue';
2
+ import { defineComponent, mergeProps } from 'vue';
3
3
  import { pressItemsPropsOptions } from "../../abstract/items.mjs";
4
4
  import { useModelDuplex } from "../../composables/communication.mjs";
5
5
  import { useRender } from "../../composables/component.mjs";
@@ -8,7 +8,7 @@ import { getObjectValueByPath, omit } from "../../util/common.mjs";
8
8
  import { chooseProps, propsFactory } from "../../util/vue-component.mjs";
9
9
  import { YButton } from "../button/index.mjs";
10
10
  import { YCard } from "../card/index.mjs";
11
- import { YIconDropdown } from "../icons/YIconDropdown.mjs";
11
+ import { YIcon } from "../icon/index.mjs";
12
12
  import { YList, YListItem } from "../list/index.mjs";
13
13
  import { YMenu } from "../menu/index.mjs";
14
14
  import "./YDropdown.scss";
@@ -19,6 +19,10 @@ export const pressYDropdownPropsOptions = propsFactory({
19
19
  ...omit(pressCoordinateProps({
20
20
  position: 'bottom'
21
21
  }), ['coordinateStrategy']),
22
+ dropdownIcon: {
23
+ type: [String, Array, Object],
24
+ default: '$dropdown'
25
+ },
22
26
  ...pressItemsPropsOptions()
23
27
  }, 'YDropdown');
24
28
  export const YDropdown = defineComponent({
@@ -44,6 +48,7 @@ export const YDropdown = defineComponent({
44
48
  }
45
49
  useRender(() => {
46
50
  const menuProps = chooseProps(props, YMenu.props);
51
+ const dropdownIconProps = chooseProps(typeof props.dropdownIcon === 'object' ? props.dropdownIcon : {}, YIcon.props);
47
52
  return _createVNode(_Fragment, null, [_createVNode(YMenu, _mergeProps(menuProps, {
48
53
  "modelValue": opened.value,
49
54
  "onUpdate:modelValue": $event => opened.value = $event,
@@ -62,9 +67,10 @@ export const YDropdown = defineComponent({
62
67
  }, attrs), {
63
68
  default: () => [_createVNode("span", {
64
69
  "class": "y-dropdown__default"
65
- }, [slots.default?.()]), slots['expand-icon'] ? slots['expand-icon']() : _createVNode("i", {
66
- "class": "y-dropdown__icon"
67
- }, [_createVNode(YIconDropdown, null, null)])]
70
+ }, [slots.default?.()]), slots['dropdown-icon'] ? slots['dropdown-icon']() : _createVNode(YIcon, _mergeProps(mergeProps(dropdownIconProps), {
71
+ "icon": props.dropdownIcon,
72
+ "class": ['y-dropdown__icon']
73
+ }), null)]
68
74
  });
69
75
  },
70
76
  default: () => slots.menu ? slots.menu() : _createVNode(YCard, null, {
@@ -1 +1 @@
1
- {"version":3,"file":"YDropdown.mjs","names":["defineComponent","pressItemsPropsOptions","useModelDuplex","useRender","pressCoordinateProps","getObjectValueByPath","omit","chooseProps","propsFactory","YButton","YCard","YIconDropdown","YList","YListItem","YMenu","pressYDropdownPropsOptions","modelValue","Boolean","variation","String","color","position","YDropdown","name","inheritAttrs","components","props","emits","setup","_ref","slots","attrs","emit","opened","onClickItem","item","value","menuProps","_createVNode","_Fragment","_mergeProps","$event","base","_len","arguments","length","args","Array","_key","default","menu","isArray","items","map","text","itemText","e","_createTextVNode"],"sources":["../../../src/components/dropdown/YDropdown.tsx"],"sourcesContent":["import { PropType, defineComponent, mergeProps } from 'vue';\r\n\r\nimport { pressItemsPropsOptions } from '../../abstract/items';\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { pressCoordinateProps } from '../../composables/coordinate';\r\nimport { getObjectValueByPath, omit } from '../../util/common';\r\nimport { chooseProps, propsFactory } from '../../util/vue-component';\r\nimport { YButton } from '../button';\r\nimport { YCard } from '../card';\r\nimport { YIconDropdown } from '../icons/YIconDropdown';\r\nimport { YList, YListItem } from '../list';\r\nimport { YMenu } from '../menu';\r\n\r\nimport './YDropdown.scss';\r\n\r\nexport const pressYDropdownPropsOptions = propsFactory(\r\n {\r\n modelValue: Boolean as PropType<boolean>,\r\n variation: String as PropType<string>,\r\n color: String as PropType<string>,\r\n ...omit(pressCoordinateProps({ position: 'bottom' as 'bottom' }), [\r\n 'coordinateStrategy',\r\n ]),\r\n ...pressItemsPropsOptions(),\r\n },\r\n 'YDropdown',\r\n);\r\n\r\nexport const YDropdown = defineComponent({\r\n name: 'YDropdown',\r\n inheritAttrs: false,\r\n components: {\r\n YMenu,\r\n },\r\n props: {\r\n ...pressYDropdownPropsOptions(),\r\n },\r\n emits: ['update:modelValue', 'click'],\r\n setup(props, { slots, attrs, emit }) {\r\n const opened = useModelDuplex(props);\r\n\r\n function onClickItem(item: any) {\r\n opened.value = false;\r\n emit('click', item);\r\n }\r\n\r\n useRender(() => {\r\n const menuProps = chooseProps(props, YMenu.props);\r\n return (\r\n <>\r\n <YMenu\r\n {...menuProps}\r\n v-model={opened.value}\r\n content-classes={['y-dropdown__content']}\r\n >\r\n {{\r\n base: (...args: any[]) =>\r\n slots.base ? (\r\n slots.base?.(...args)\r\n ) : (\r\n <YButton\r\n variation={props.variation}\r\n color={props.color}\r\n class={[\r\n 'y-dropdown',\r\n { 'y-dropdown--opened': opened.value },\r\n ]}\r\n {...attrs}\r\n >\r\n {\r\n <span class=\"y-dropdown__default\">\r\n {slots.default?.()}\r\n </span>\r\n }\r\n {slots['expand-icon'] ? (\r\n slots['expand-icon']()\r\n ) : (\r\n <i class=\"y-dropdown__icon\">\r\n <YIconDropdown></YIconDropdown>\r\n </i>\r\n )}\r\n </YButton>\r\n ),\r\n default: () =>\r\n slots.menu ? (\r\n slots.menu()\r\n ) : (\r\n <YCard>\r\n {Array.isArray(props.items) && props.items.length > 0 ? (\r\n <YList>\r\n {props.items.map((item) => {\r\n const text = getObjectValueByPath(\r\n item,\r\n props.itemText,\r\n );\r\n return (\r\n <YListItem onClick={(e) => onClickItem(item)}>\r\n {text}\r\n </YListItem>\r\n );\r\n })}\r\n </YList>\r\n ) : (\r\n <div class=\"y-dropdown__no-options\">항목이 없습니다.</div>\r\n )}\r\n </YCard>\r\n ),\r\n }}\r\n </YMenu>\r\n </>\r\n );\r\n });\r\n },\r\n});\r\n"],"mappings":";AAAA,SAAmBA,eAAe,QAAoB,KAAK;AAAC,SAEnDC,sBAAsB;AAAA,SACtBC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,oBAAoB;AAAA,SACpBC,oBAAoB,EAAEC,IAAI;AAAA,SAC1BC,WAAW,EAAEC,YAAY;AAAA,SACzBC,OAAO;AAAA,SACPC,KAAK;AAAA,SACLC,aAAa;AAAA,SACbC,KAAK,EAAEC,SAAS;AAAA,SAChBC,KAAK;AAEd;AAEA,OAAO,MAAMC,0BAA0B,GAAGP,YAAY,CACpD;EACEQ,UAAU,EAAEC,OAA4B;EACxCC,SAAS,EAAEC,MAA0B;EACrCC,KAAK,EAAED,MAA0B;EACjC,GAAGb,IAAI,CAACF,oBAAoB,CAAC;IAAEiB,QAAQ,EAAE;EAAqB,CAAC,CAAC,EAAE,CAChE,oBAAoB,CACrB,CAAC;EACF,GAAGpB,sBAAsB,CAAC;AAC5B,CAAC,EACD,WACF,CAAC;AAED,OAAO,MAAMqB,SAAS,GAAGtB,eAAe,CAAC;EACvCuB,IAAI,EAAE,WAAW;EACjBC,YAAY,EAAE,KAAK;EACnBC,UAAU,EAAE;IACVX;EACF,CAAC;EACDY,KAAK,EAAE;IACL,GAAGX,0BAA0B,CAAC;EAChC,CAAC;EACDY,KAAK,EAAE,CAAC,mBAAmB,EAAE,OAAO,CAAC;EACrCC,KAAKA,CAACF,KAAK,EAAAG,IAAA,EAA0B;IAAA,IAAxB;MAAEC,KAAK;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAH,IAAA;IACjC,MAAMI,MAAM,GAAG/B,cAAc,CAACwB,KAAK,CAAC;IAEpC,SAASQ,WAAWA,CAACC,IAAS,EAAE;MAC9BF,MAAM,CAACG,KAAK,GAAG,KAAK;MACpBJ,IAAI,CAAC,OAAO,EAAEG,IAAI,CAAC;IACrB;IAEAhC,SAAS,CAAC,MAAM;MACd,MAAMkC,SAAS,GAAG9B,WAAW,CAACmB,KAAK,EAAEZ,KAAK,CAACY,KAAK,CAAC;MACjD,OAAAY,YAAA,CAAAC,SAAA,SAAAD,YAAA,CAAAxB,KAAA,EAAA0B,WAAA,CAGUH,SAAS;QAAA,cACJJ,MAAM,CAACG,KAAK;QAAA,uBAAAK,MAAA,IAAZR,MAAM,CAACG,KAAK,GAAAK,MAAA;QAAA,mBACJ,CAAC,qBAAqB;MAAC;QAGtCC,IAAI,EAAE,SAAAA,CAAA;UAAA,SAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAIC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;YAAJF,IAAI,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;UAAA;UAAA,OACZlB,KAAK,CAACY,IAAI,GACRZ,KAAK,CAACY,IAAI,GAAG,GAAGI,IAAI,CAAC,GAAAR,YAAA,CAAA7B,OAAA,EAAA+B,WAAA;YAAA,aAGRd,KAAK,CAACR,SAAS;YAAA,SACnBQ,KAAK,CAACN,KAAK;YAAA,SACX,CACL,YAAY,EACZ;cAAE,oBAAoB,EAAEa,MAAM,CAACG;YAAM,CAAC;UACvC,GACGL,KAAK;YAAAkB,OAAA,EAAAA,CAAA,MAAAX,YAAA;cAAA,SAGK;YAAqB,IAC9BR,KAAK,CAACmB,OAAO,GAAG,CAAC,IAGrBnB,KAAK,CAAC,aAAa,CAAC,GACnBA,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GAAAQ,YAAA;cAAA,SAEb;YAAkB,IAAAA,YAAA,CAAA3B,aAAA,eAG5B;UAAA,EAEJ;QAAA;QACHsC,OAAO,EAAEA,CAAA,KACPnB,KAAK,CAACoB,IAAI,GACRpB,KAAK,CAACoB,IAAI,CAAC,CAAC,GAAAZ,YAAA,CAAA5B,KAAA;UAAAuC,OAAA,EAAAA,CAAA,MAGTF,KAAK,CAACI,OAAO,CAACzB,KAAK,CAAC0B,KAAK,CAAC,IAAI1B,KAAK,CAAC0B,KAAK,CAACP,MAAM,GAAG,CAAC,GAAAP,YAAA,CAAA1B,KAAA;YAAAqC,OAAA,EAAAA,CAAA,MAEhDvB,KAAK,CAAC0B,KAAK,CAACC,GAAG,CAAElB,IAAI,IAAK;cACzB,MAAMmB,IAAI,GAAGjD,oBAAoB,CAC/B8B,IAAI,EACJT,KAAK,CAAC6B,QACR,CAAC;cACD,OAAAjB,YAAA,CAAAzB,SAAA;gBAAA,WACuB2C,CAAC,IAAKtB,WAAW,CAACC,IAAI;cAAC;gBAAAc,OAAA,EAAAA,CAAA,MACzCK,IAAI;cAAA;YAGX,CAAC,CAAC;UAAA,KAAAhB,YAAA;YAAA,SAGO;UAAwB,IAAAmB,gBAAA,kDACpC;QAAA;MAEJ;IAKb,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDropdown.mjs","names":["defineComponent","mergeProps","pressItemsPropsOptions","useModelDuplex","useRender","pressCoordinateProps","getObjectValueByPath","omit","chooseProps","propsFactory","YButton","YCard","YIcon","YList","YListItem","YMenu","pressYDropdownPropsOptions","modelValue","Boolean","variation","String","color","position","dropdownIcon","type","Array","Object","default","YDropdown","name","inheritAttrs","components","props","emits","setup","_ref","slots","attrs","emit","opened","onClickItem","item","value","menuProps","dropdownIconProps","_createVNode","_Fragment","_mergeProps","$event","base","_len","arguments","length","args","_key","menu","isArray","items","map","text","itemText","e","_createTextVNode"],"sources":["../../../src/components/dropdown/YDropdown.tsx"],"sourcesContent":["import { PropType, defineComponent, mergeProps } from 'vue';\n\nimport { pressItemsPropsOptions } from '../../abstract/items';\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { pressCoordinateProps } from '../../composables/coordinate';\nimport { getObjectValueByPath, omit } from '../../util/common';\nimport { chooseProps, propsFactory } from '../../util/vue-component';\nimport { YButton } from '../button';\nimport { YCard } from '../card';\nimport { YIcon, YIconIconProp } from '../icon';\nimport { YIconDropdown } from '../icons/YIconDropdown';\nimport { YList, YListItem } from '../list';\nimport { YMenu } from '../menu';\n\nimport './YDropdown.scss';\n\nexport const pressYDropdownPropsOptions = propsFactory(\n {\n modelValue: Boolean as PropType<boolean>,\n variation: String as PropType<string>,\n color: String as PropType<string>,\n ...omit(pressCoordinateProps({ position: 'bottom' as 'bottom' }), [\n 'coordinateStrategy',\n ]),\n dropdownIcon: {\n type: [String, Array, Object] as PropType<YIconIconProp>,\n default: '$dropdown',\n },\n ...pressItemsPropsOptions(),\n },\n 'YDropdown',\n);\n\nexport const YDropdown = defineComponent({\n name: 'YDropdown',\n inheritAttrs: false,\n components: {\n YMenu,\n },\n props: {\n ...pressYDropdownPropsOptions(),\n },\n emits: ['update:modelValue', 'click'],\n setup(props, { slots, attrs, emit }) {\n const opened = useModelDuplex(props);\n\n function onClickItem(item: any) {\n opened.value = false;\n emit('click', item);\n }\n\n useRender(() => {\n const menuProps = chooseProps(props, YMenu.props);\n const dropdownIconProps = chooseProps(\n typeof props.dropdownIcon === 'object' ? props.dropdownIcon : {},\n YIcon.props,\n );\n return (\n <>\n <YMenu\n {...menuProps}\n v-model={opened.value}\n content-classes={['y-dropdown__content']}\n >\n {{\n base: (...args: any[]) =>\n slots.base ? (\n slots.base?.(...args)\n ) : (\n <YButton\n variation={props.variation}\n color={props.color}\n class={[\n 'y-dropdown',\n { 'y-dropdown--opened': opened.value },\n ]}\n {...attrs}\n >\n {\n <span class=\"y-dropdown__default\">\n {slots.default?.()}\n </span>\n }\n {slots['dropdown-icon'] ? (\n slots['dropdown-icon']()\n ) : (\n <YIcon\n {...mergeProps(dropdownIconProps)}\n icon={props.dropdownIcon}\n class={['y-dropdown__icon']}\n ></YIcon>\n )}\n </YButton>\n ),\n default: () =>\n slots.menu ? (\n slots.menu()\n ) : (\n <YCard>\n {Array.isArray(props.items) && props.items.length > 0 ? (\n <YList>\n {props.items.map((item) => {\n const text = getObjectValueByPath(\n item,\n props.itemText,\n );\n return (\n <YListItem onClick={(e) => onClickItem(item)}>\n {text}\n </YListItem>\n );\n })}\n </YList>\n ) : (\n <div class=\"y-dropdown__no-options\">항목이 없습니다.</div>\n )}\n </YCard>\n ),\n }}\n </YMenu>\n </>\n );\n });\n },\n});\n"],"mappings":"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"}
@@ -10,17 +10,12 @@
10
10
 
11
11
  &__icon {
12
12
  transition: 200ms ease;
13
- width: 1.5em;
14
- height: 1.5em;
15
-
16
- > svg {
17
- width: 1.5em;
18
- height: 1.5em;
19
- }
13
+ width: 24px;
14
+ height: 24px;
20
15
  }
21
16
 
22
17
  &--opened &__icon {
23
- transform: rotate3d(1, 0, 0, 180deg) translateY(0.1em);
18
+ transform: rotate3d(1, 0, 0, 180deg);
24
19
  }
25
20
 
26
21
 
@@ -30,6 +30,7 @@ export const YFieldInput = defineComponent({
30
30
  ...pressYFieldInputPropsOptions()
31
31
  },
32
32
  emits: ['update:modelValue', 'update:focused', 'input', 'change', 'click', 'mousedown', 'mouseup', 'keydown', 'keyup', 'focus', 'blur', 'mousedown:display'],
33
+ slots: Object,
33
34
  setup(props, _ref) {
34
35
  let {
35
36
  attrs,
@@ -37,8 +38,8 @@ export const YFieldInput = defineComponent({
37
38
  emit,
38
39
  slots
39
40
  } = _ref;
40
- const yInputRef = ref();
41
- const inputRef = ref();
41
+ const yInput$ = ref();
42
+ const input$ = ref();
42
43
  const {
43
44
  focused,
44
45
  whenFocus,
@@ -96,10 +97,10 @@ export const YFieldInput = defineComponent({
96
97
  }
97
98
  }
98
99
  function focus() {
99
- inputRef.value?.focus();
100
+ input$.value?.focus();
100
101
  }
101
102
  function select() {
102
- inputRef.value?.select();
103
+ input$.value?.select();
103
104
  }
104
105
  function clear() {
105
106
  inValue.value = '';
@@ -141,14 +142,14 @@ export const YFieldInput = defineComponent({
141
142
  focus,
142
143
  select,
143
144
  clear,
144
- inputRef
145
+ input$
145
146
  });
146
147
  function onUpdateModel(value) {
147
148
  emit('update:modelValue', value);
148
149
  }
149
150
  useRender(() => _createVNode(YInput, _mergeProps({
150
151
  "class": classes.value,
151
- "ref": yInputRef
152
+ "ref": yInput$
152
153
  }, chooseProps(props, YInput.props), {
153
154
  "modelValue": inValue.value,
154
155
  "onUpdate:modelValue": onUpdateModel,
@@ -156,12 +157,9 @@ export const YFieldInput = defineComponent({
156
157
  "onClick": onClick,
157
158
  "onMousedown:display": $event => emit('mousedown:display', $event)
158
159
  }), {
159
- leading: slots.leading ? function () {
160
+ leading: slots.leading ? args => {
160
161
  const leadingChildren = [];
161
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
162
- args[_key] = arguments[_key];
163
- }
164
- const slot = slots.leading?.(...args);
162
+ const slot = slots.leading?.(args);
165
163
  if (slot) {
166
164
  leadingChildren.push(slot);
167
165
  } else {
@@ -173,8 +171,8 @@ export const YFieldInput = defineComponent({
173
171
  "class": [`${NAME}__field`],
174
172
  "data-id": defaultProps.attrId,
175
173
  "ref": 'field'
176
- }, [props.floating ? yInputRef.value && YInput.methods.createLabel.call(yInputRef.value) : undefined, slots.default?.(), _createVNode("input", {
177
- "ref": inputRef,
174
+ }, [props.floating ? yInput$.value?.createLabel?.() : undefined, slots.default?.(defaultProps), _createVNode("input", {
175
+ "ref": input$,
178
176
  "value": displayValue.value,
179
177
  "name": props.name,
180
178
  "id": defaultProps.attrId,
@@ -207,8 +205,17 @@ export const YFieldInput = defineComponent({
207
205
  }, [_createVNode(YIconClear, null, null)])]), slots.trailing && _createVNode("div", {
208
206
  "class": ['y-input__trailing']
209
207
  }, [slots.trailing()])]) : undefined,
210
- label: slots.label?.(),
211
- 'helper-text': slots['helper-text']?.()
208
+ label: slots.label ? () => slots.label?.() : undefined,
209
+ 'helper-text': slots['helper-text'] ? _ref2 => {
210
+ let {
211
+ error,
212
+ errorResult
213
+ } = _ref2;
214
+ return slots['helper-text']?.({
215
+ error,
216
+ errorResult
217
+ });
218
+ } : undefined
212
219
  }));
213
220
  return {
214
221
  focused,
@@ -1 +1 @@
1
- {"version":3,"file":"YFieldInput.mjs","names":["computed","defineComponent","getCurrentInstance","nextTick","ref","toRef","watch","useRender","useFocus","chooseProps","propsFactory","YIconClear","YInput","pressYInputPropsOptions","NAME","pressYFieldInputPropsOptions","enableClear","Boolean","inputAlign","String","displayText","Function","whenInputValid","Number","tabindex","type","default","variation","YFieldInput","name","props","emits","setup","_ref","attrs","expose","emit","slots","yInputRef","inputRef","focused","whenFocus","whenBlur","inValue","displayValue","inputType","classes","invokeValidators","onClick","event","onFocus","value","onBlur","changeDisplay","onInput","target","onChange","onKeydown","onKeyup","onClickClear","clear","onKeydownClear","code","focus","select","vm","undefined","text","call","modelValue","neo","immediate","onUpdateModel","_createVNode","_mergeProps","$event","leading","leadingChildren","_len","arguments","length","args","Array","_key","slot","push","defaultProps","attrId","floating","methods","createLabel","readonly","loading","formLoading","placeholder","disabled","autocomplete","maxlength","min","max","style","textAlign","trailing","_Fragment","label"],"sources":["../../../src/components/field-input/YFieldInput.tsx"],"sourcesContent":["import type { PropType } from 'vue';\r\nimport {\r\n computed,\r\n defineComponent,\r\n getCurrentInstance,\r\n nextTick,\r\n ref,\r\n toRef,\r\n watch,\r\n} from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { useFocus } from '../../composables/focus';\r\nimport { chooseProps, propsFactory } from '../../util/vue-component';\r\nimport { YIconClear } from '../icons/YIconClear';\r\nimport { YInput, pressYInputPropsOptions } from '../input';\r\n\r\nimport './YFieldInput.scss';\r\n\r\nconst NAME = 'y-field-input';\r\n\r\nexport const pressYFieldInputPropsOptions = propsFactory(\r\n {\r\n enableClear: Boolean as PropType<boolean>,\r\n inputAlign: String as PropType<string>,\r\n displayText: [String, Function] as PropType<\r\n string | ((value: any) => string)\r\n >,\r\n whenInputValid: [Boolean, Number] as PropType<boolean | number>,\r\n tabindex: {\r\n type: String as PropType<string>,\r\n default: '0',\r\n },\r\n type: {\r\n type: String as PropType<string>,\r\n default: 'text',\r\n },\r\n ...pressYInputPropsOptions({\r\n variation: 'filled',\r\n }),\r\n },\r\n 'YFieldInput',\r\n);\r\n\r\nexport const YFieldInput = defineComponent({\r\n name: 'YFieldInput',\r\n props: {\r\n ...pressYFieldInputPropsOptions(),\r\n },\r\n emits: [\r\n 'update:modelValue',\r\n 'update:focused',\r\n 'input',\r\n 'change',\r\n 'click',\r\n 'mousedown',\r\n 'mouseup',\r\n 'keydown',\r\n 'keyup',\r\n 'focus',\r\n 'blur',\r\n 'mousedown:display',\r\n ],\r\n setup(props, { attrs, expose, emit, slots }) {\r\n const yInputRef = ref<YInput>();\r\n const inputRef = ref<HTMLInputElement>();\r\n const { focused, whenFocus, whenBlur } = useFocus(props, 'y-field-input');\r\n const inValue = ref<any>('');\r\n const displayValue = ref('');\r\n const inputType = toRef(props, 'type');\r\n\r\n const classes = computed(() => {\r\n return {\r\n [NAME]: true,\r\n };\r\n });\r\n\r\n const invokeValidators = () => {\r\n //\r\n };\r\n\r\n function onClick(event: MouseEvent) {\r\n emit('click', event);\r\n }\r\n\r\n function onFocus(event: FocusEvent) {\r\n whenFocus();\r\n displayValue.value = inValue.value as string;\r\n emit('focus', event);\r\n }\r\n\r\n function onBlur(event: FocusEvent) {\r\n whenBlur();\r\n invokeValidators();\r\n emit('blur', event);\r\n changeDisplay();\r\n }\r\n\r\n function onInput(event: Event) {\r\n emit('input', event);\r\n const target = event.target as HTMLInputElement | null;\r\n inValue.value = target?.value;\r\n displayValue.value = target?.value as string;\r\n if (props.whenInputValid) {\r\n invokeValidators();\r\n }\r\n }\r\n\r\n function onChange(event: Event) {\r\n emit('change', inValue.value);\r\n }\r\n\r\n function onKeydown(event: KeyboardEvent) {\r\n emit('keydown', event);\r\n }\r\n\r\n function onKeyup(event: KeyboardEvent) {\r\n emit('keyup', event);\r\n }\r\n\r\n function onClickClear(event: MouseEvent) {\r\n clear();\r\n }\r\n\r\n function onKeydownClear(event: KeyboardEvent) {\r\n if (event.code === 'Space' || event.code === 'Enter') {\r\n clear();\r\n }\r\n }\r\n\r\n function focus() {\r\n inputRef.value?.focus();\r\n }\r\n\r\n function select() {\r\n inputRef.value?.select();\r\n }\r\n\r\n function clear() {\r\n inValue.value = '';\r\n displayValue.value = '';\r\n emit('update:modelValue', inValue.value);\r\n }\r\n\r\n function changeDisplay() {\r\n const vm = getCurrentInstance();\r\n const { displayText } = props;\r\n if (displayText !== undefined) {\r\n let text = inValue.value;\r\n if (typeof displayText === 'string') {\r\n text = displayText;\r\n }\r\n if (displayText && typeof displayText === 'function') {\r\n text = (displayText as any).call(vm, text);\r\n }\r\n nextTick(() => {\r\n displayValue.value = text as string;\r\n });\r\n }\r\n }\r\n\r\n watch(\r\n () => props.modelValue,\r\n (neo: any) => {\r\n inValue.value = neo;\r\n displayValue.value = neo;\r\n },\r\n {\r\n immediate: true,\r\n },\r\n );\r\n\r\n watch(inValue, (neo: string) => {\r\n if (!focused.value) {\r\n changeDisplay();\r\n } else {\r\n displayValue.value = neo;\r\n }\r\n });\r\n\r\n expose({\r\n focus,\r\n select,\r\n clear,\r\n inputRef,\r\n });\r\n\r\n function onUpdateModel(value: any) {\r\n emit('update:modelValue', value);\r\n }\r\n\r\n useRender(() => (\r\n <YInput\r\n class={classes.value}\r\n ref={yInputRef}\r\n {...chooseProps(props, YInput.props)}\r\n modelValue={inValue.value}\r\n onUpdate:modelValue={onUpdateModel}\r\n focused={focused.value}\r\n onClick={onClick}\r\n onMousedown:display={($event) => emit('mousedown:display', $event)}\r\n >\r\n {{\r\n leading: slots.leading\r\n ? (...args: any[]) => {\r\n const leadingChildren = [];\r\n const slot = slots.leading?.(...args);\r\n if (slot) {\r\n leadingChildren.push(slot);\r\n } else {\r\n return undefined;\r\n }\r\n return leadingChildren;\r\n }\r\n : undefined,\r\n default: (defaultProps: any) => (\r\n <div\r\n class={[`${NAME}__field`]}\r\n data-id={defaultProps.attrId}\r\n ref={'field'}\r\n >\r\n {props.floating\r\n ? yInputRef.value &&\r\n YInput.methods!.createLabel.call(yInputRef.value)\r\n : undefined}\r\n {slots.default?.()}\r\n {\r\n <input\r\n ref={inputRef}\r\n value={displayValue.value}\r\n name={props.name}\r\n id={defaultProps.attrId}\r\n type={inputType.value}\r\n readonly={\r\n props.readonly || props.loading || defaultProps.formLoading\r\n }\r\n placeholder={props.placeholder}\r\n disabled={props.disabled}\r\n tabindex={props.tabindex || '0'}\r\n autocomplete={attrs.autocomplete as string}\r\n maxlength={attrs.maxlength as number | string}\r\n min={attrs.min as number | string}\r\n max={attrs.max as number | string}\r\n style={[attrs?.style, { textAlign: props.inputAlign } as any]}\r\n onInput={onInput}\r\n onFocus={onFocus}\r\n onBlur={onBlur}\r\n onChange={onChange}\r\n onKeydown={onKeydown}\r\n onKeyup={onKeyup}\r\n />\r\n }\r\n </div>\r\n ),\r\n trailing:\r\n slots.trailing || (props.enableClear && inValue.value)\r\n ? () => (\r\n <>\r\n {props.enableClear && inValue.value && (\r\n <div\r\n class={[\r\n 'y-input__trailing',\r\n 'y-input__trailing--clear',\r\n ]}\r\n >\r\n <button\r\n class={[`${NAME}__clear`]}\r\n onClick={onClickClear}\r\n onKeydown={onKeydownClear}\r\n tabindex={2}\r\n >\r\n <YIconClear></YIconClear>\r\n </button>\r\n </div>\r\n )}\r\n {slots.trailing && (\r\n <div class={['y-input__trailing']}>\r\n {slots.trailing()}\r\n </div>\r\n )}\r\n </>\r\n )\r\n : undefined,\r\n label: slots.label?.(),\r\n 'helper-text': slots['helper-text']?.(),\r\n }}\r\n </YInput>\r\n ));\r\n\r\n return {\r\n focused,\r\n inValue\r\n };\r\n },\r\n});\r\n\r\nexport type YFieldInput = InstanceType<typeof YFieldInput>;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"YFieldInput.mjs","names":["computed","defineComponent","getCurrentInstance","nextTick","ref","toRef","watch","useRender","useFocus","chooseProps","propsFactory","YIconClear","YInput","pressYInputPropsOptions","NAME","pressYFieldInputPropsOptions","enableClear","Boolean","inputAlign","String","displayText","Function","whenInputValid","Number","tabindex","type","default","variation","YFieldInput","name","props","emits","slots","Object","setup","_ref","attrs","expose","emit","yInput$","input$","focused","whenFocus","whenBlur","inValue","displayValue","inputType","classes","invokeValidators","onClick","event","onFocus","value","onBlur","changeDisplay","onInput","target","onChange","onKeydown","onKeyup","onClickClear","clear","onKeydownClear","code","focus","select","vm","undefined","text","call","modelValue","neo","immediate","onUpdateModel","_createVNode","_mergeProps","$event","leading","args","leadingChildren","slot","push","defaultProps","attrId","floating","createLabel","readonly","loading","formLoading","placeholder","disabled","autocomplete","maxlength","min","max","style","textAlign","trailing","_Fragment","label","_ref2","error","errorResult"],"sources":["../../../src/components/field-input/YFieldInput.tsx"],"sourcesContent":["import type {PropType, SlotsType} from 'vue';\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n nextTick,\n ref,\n toRef,\n watch,\n} from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport {pressFocusPropsOptions, useFocus} from '../../composables/focus';\nimport { chooseProps, propsFactory } from '../../util/vue-component';\nimport { YIconClear } from '../icons/YIconClear';\nimport { YInput, pressYInputPropsOptions } from '../input';\n\nimport './YFieldInput.scss';\n\nconst NAME = 'y-field-input';\n\nexport const pressYFieldInputPropsOptions = propsFactory(\n {\n enableClear: Boolean as PropType<boolean>,\n inputAlign: String as PropType<string>,\n displayText: [String, Function] as PropType<\n string | ((value: any) => string)\n >,\n whenInputValid: [Boolean, Number] as PropType<boolean | number>,\n tabindex: {\n type: String as PropType<string>,\n default: '0',\n },\n type: {\n type: String as PropType<string>,\n default: 'text',\n },\n ...pressYInputPropsOptions({\n variation: 'filled',\n }),\n },\n 'YFieldInput',\n);\n\nexport const YFieldInput = defineComponent({\n name: 'YFieldInput',\n props: {\n ...pressYFieldInputPropsOptions(),\n },\n emits: [\n 'update:modelValue',\n 'update:focused',\n 'input',\n 'change',\n 'click',\n 'mousedown',\n 'mouseup',\n 'keydown',\n 'keyup',\n 'focus',\n 'blur',\n 'mousedown:display',\n ],\n slots: Object as SlotsType<{\n prepend: any,\n append: any,\n label: any,\n default: { value: any, formLoading: boolean, attrId: string },\n leading: { error: boolean },\n trailing: any,\n 'helper-text': { error: boolean, errorResult: string | undefined }\n }>,\n setup(props, { attrs, expose, emit, slots }) {\n const yInput$ = ref<YInput>();\n const input$ = ref<HTMLInputElement>();\n const { focused, whenFocus, whenBlur } = useFocus(props, 'y-field-input');\n const inValue = ref<any>('');\n const displayValue = ref('');\n const inputType = toRef(props, 'type');\n\n const classes = computed(() => {\n return {\n [NAME]: true,\n };\n });\n\n const invokeValidators = () => {\n //\n };\n\n function onClick(event: MouseEvent) {\n emit('click', event);\n }\n\n function onFocus(event: FocusEvent) {\n whenFocus();\n displayValue.value = inValue.value as string;\n emit('focus', event);\n }\n\n function onBlur(event: FocusEvent) {\n whenBlur();\n invokeValidators();\n emit('blur', event);\n changeDisplay();\n }\n\n function onInput(event: Event) {\n emit('input', event);\n const target = event.target as HTMLInputElement | null;\n inValue.value = target?.value;\n displayValue.value = target?.value as string;\n if (props.whenInputValid) {\n invokeValidators();\n }\n }\n\n function onChange(event: Event) {\n emit('change', inValue.value);\n }\n\n function onKeydown(event: KeyboardEvent) {\n emit('keydown', event);\n }\n\n function onKeyup(event: KeyboardEvent) {\n emit('keyup', event);\n }\n\n function onClickClear(event: MouseEvent) {\n clear();\n }\n\n function onKeydownClear(event: KeyboardEvent) {\n if (event.code === 'Space' || event.code === 'Enter') {\n clear();\n }\n }\n\n function focus() {\n input$.value?.focus();\n }\n\n function select() {\n input$.value?.select();\n }\n\n function clear() {\n inValue.value = '';\n displayValue.value = '';\n emit('update:modelValue', inValue.value);\n }\n\n function changeDisplay() {\n const vm = getCurrentInstance();\n const { displayText } = props;\n if (displayText !== undefined) {\n let text = inValue.value;\n if (typeof displayText === 'string') {\n text = displayText;\n }\n if (displayText && typeof displayText === 'function') {\n text = (displayText as any).call(vm, text);\n }\n nextTick(() => {\n displayValue.value = text as string;\n });\n }\n }\n\n watch(\n () => props.modelValue,\n (neo: any) => {\n inValue.value = neo;\n displayValue.value = neo;\n },\n {\n immediate: true,\n },\n );\n\n watch(inValue, (neo: string) => {\n if (!focused.value) {\n changeDisplay();\n } else {\n displayValue.value = neo;\n }\n });\n\n expose({\n focus,\n select,\n clear,\n input$,\n });\n\n function onUpdateModel(value: any) {\n emit('update:modelValue', value);\n }\n\n useRender(() => (\n <YInput\n class={classes.value}\n ref={yInput$}\n {...chooseProps(props, YInput.props)}\n modelValue={inValue.value}\n onUpdate:modelValue={onUpdateModel}\n focused={focused.value}\n onClick={onClick}\n onMousedown:display={($event) => emit('mousedown:display', $event)}\n >\n {{\n leading: slots.leading\n ? (args: any) => {\n const leadingChildren = [];\n const slot = slots.leading?.(args);\n if (slot) {\n leadingChildren.push(slot);\n } else {\n return undefined;\n }\n return leadingChildren;\n }\n : undefined,\n default: (defaultProps: any) => (\n <div\n class={[`${NAME}__field`]}\n data-id={defaultProps.attrId}\n ref={'field'}\n >\n {props.floating\n ? yInput$.value?.createLabel?.()\n : undefined}\n {slots.default?.(defaultProps)}\n {\n <input\n ref={input$}\n value={displayValue.value}\n name={props.name}\n id={defaultProps.attrId}\n type={inputType.value}\n readonly={\n props.readonly || props.loading || defaultProps.formLoading\n }\n placeholder={props.placeholder}\n disabled={props.disabled}\n tabindex={props.tabindex || '0'}\n autocomplete={attrs.autocomplete as string}\n maxlength={attrs.maxlength as number | string}\n min={attrs.min as number | string}\n max={attrs.max as number | string}\n style={[attrs?.style, { textAlign: props.inputAlign } as any]}\n onInput={onInput}\n onFocus={onFocus}\n onBlur={onBlur}\n onChange={onChange}\n onKeydown={onKeydown}\n onKeyup={onKeyup}\n />\n }\n </div>\n ),\n trailing:\n slots.trailing || (props.enableClear && inValue.value)\n ? () => (\n <>\n {props.enableClear && inValue.value && (\n <div\n class={[\n 'y-input__trailing',\n 'y-input__trailing--clear',\n ]}\n >\n <button\n class={[`${NAME}__clear`]}\n onClick={onClickClear}\n onKeydown={onKeydownClear}\n tabindex={2}\n >\n <YIconClear></YIconClear>\n </button>\n </div>\n )}\n {slots.trailing && (\n <div class={['y-input__trailing']}>\n {slots.trailing()}\n </div>\n )}\n </>\n )\n : undefined,\n label: slots.label ? () => slots.label?.() : undefined,\n 'helper-text': slots['helper-text']\n ? ({ error, errorResult }: any) => slots['helper-text']?.({ error, errorResult })\n : undefined,\n }}\n </YInput>\n ));\n\n return {\n focused,\n inValue,\n };\n },\n});\n\nexport type YFieldInput = InstanceType<typeof YFieldInput>;\n"],"mappings":"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"}