yuyeon 0.1.0-rc.2 → 0.1.0-rc.20

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 (237) hide show
  1. package/dist/style.css +1 -1
  2. package/dist/yuyeon.js +4816 -4204
  3. package/dist/yuyeon.umd.cjs +17 -13
  4. package/lib/components/badge/YBadge.scss +0 -1
  5. package/lib/components/card/YCard.mjs +16 -9
  6. package/lib/components/card/YCard.mjs.map +1 -1
  7. package/lib/components/date-picker/YDatePicker.mjs +1 -0
  8. package/lib/components/date-picker/YDatePicker.mjs.map +1 -1
  9. package/lib/components/dialog/YDialog.mjs +4 -1
  10. package/lib/components/dialog/YDialog.mjs.map +1 -1
  11. package/lib/components/dropdown/YDropdown.mjs +10 -4
  12. package/lib/components/dropdown/YDropdown.mjs.map +1 -1
  13. package/lib/components/field-input/YFieldInput.mjs +4 -0
  14. package/lib/components/field-input/YFieldInput.mjs.map +1 -1
  15. package/lib/components/field-input/YFieldInput.scss +1 -1
  16. package/lib/components/hover/YHover.mjs +11 -4
  17. package/lib/components/hover/YHover.mjs.map +1 -1
  18. package/lib/components/hover/index.mjs +2 -0
  19. package/lib/components/hover/index.mjs.map +1 -0
  20. package/lib/components/index.mjs +3 -0
  21. package/lib/components/index.mjs.map +1 -1
  22. package/lib/components/input/YInput.mjs +6 -6
  23. package/lib/components/input/YInput.mjs.map +1 -1
  24. package/lib/components/input/YInput.scss +2 -3
  25. package/lib/components/ip-field/YIpField.scss +74 -0
  26. package/lib/components/ip-field/YIpv4Field.mjs +297 -0
  27. package/lib/components/ip-field/YIpv4Field.mjs.map +1 -0
  28. package/lib/components/ip-field/index.mjs +2 -0
  29. package/lib/components/ip-field/index.mjs.map +1 -0
  30. package/lib/components/layer/YLayer.mjs +35 -13
  31. package/lib/components/layer/YLayer.mjs.map +1 -1
  32. package/lib/components/layer/base.mjs +6 -2
  33. package/lib/components/layer/base.mjs.map +1 -1
  34. package/lib/components/layer/content.mjs +22 -0
  35. package/lib/components/layer/content.mjs.map +1 -0
  36. package/lib/components/layer/scroll-strategies.mjs +1 -1
  37. package/lib/components/layer/scroll-strategies.mjs.map +1 -1
  38. package/lib/components/list/YListItem.mjs +1 -0
  39. package/lib/components/list/YListItem.mjs.map +1 -1
  40. package/lib/components/menu/YMenu.mjs +4 -10
  41. package/lib/components/menu/YMenu.mjs.map +1 -1
  42. package/lib/components/select/YSelect.mjs +55 -10
  43. package/lib/components/select/YSelect.mjs.map +1 -1
  44. package/lib/components/switch/YSwitch.mjs +2 -1
  45. package/lib/components/switch/YSwitch.mjs.map +1 -1
  46. package/lib/components/tab/YTab.scss +3 -3
  47. package/lib/components/tab/types.mjs.map +1 -1
  48. package/lib/components/table/YDataTableBody.mjs +1 -1
  49. package/lib/components/table/YDataTableBody.mjs.map +1 -1
  50. package/lib/components/table/YDataTableRow.mjs +25 -1
  51. package/lib/components/table/YDataTableRow.mjs.map +1 -1
  52. package/lib/components/table/composibles/items.mjs +3 -1
  53. package/lib/components/table/composibles/items.mjs.map +1 -1
  54. package/lib/components/table/composibles/selection.mjs.map +1 -1
  55. package/lib/components/table/types/common.mjs.map +1 -1
  56. package/lib/components/table/types/header.mjs.map +1 -1
  57. package/lib/components/text-ellipsis/YTextEllipsis.mjs +61 -0
  58. package/lib/components/text-ellipsis/YTextEllipsis.mjs.map +1 -0
  59. package/lib/components/text-ellipsis/YTextEllipsis.scss +43 -0
  60. package/lib/components/text-ellipsis/index.mjs +2 -0
  61. package/lib/components/text-ellipsis/index.mjs.map +1 -0
  62. package/lib/components/textarea/YTextarea.mjs +3 -1
  63. package/lib/components/textarea/YTextarea.mjs.map +1 -1
  64. package/lib/components/tooltip/YTooltip.mjs +13 -23
  65. package/lib/components/tooltip/YTooltip.mjs.map +1 -1
  66. package/lib/components/tree-view/YTreeViewNode.mjs +47 -21
  67. package/lib/components/tree-view/YTreeViewNode.mjs.map +1 -1
  68. package/lib/composables/coordinate/index.mjs.map +1 -1
  69. package/lib/composables/coordinate/levitation.mjs.map +1 -1
  70. package/lib/composables/icon.mjs.map +1 -1
  71. package/lib/composables/index.mjs +1 -0
  72. package/lib/composables/index.mjs.map +1 -1
  73. package/lib/composables/theme/index.mjs +6 -3
  74. package/lib/composables/theme/index.mjs.map +1 -1
  75. package/lib/index.mjs +1 -1
  76. package/lib/index.mjs.map +1 -1
  77. package/package.json +11 -11
  78. package/types/abstract/items.d.ts +5 -4
  79. package/types/components/alert/YAlert.d.ts +3 -2
  80. package/types/components/app/YApp.d.ts +3 -2
  81. package/types/components/badge/YBadge.d.ts +9 -8
  82. package/types/components/bench/YBench.d.ts +4 -0
  83. package/types/components/bench/index.d.ts +1 -0
  84. package/types/components/button/YButton.d.ts +27 -29
  85. package/types/components/card/YCard.d.ts +6 -3
  86. package/types/components/card/YCardBody.d.ts +1 -1
  87. package/types/components/card/YCardFooter.d.ts +1 -1
  88. package/types/components/card/YCardHeader.d.ts +1 -1
  89. package/types/components/checkbox/YCheckbox.d.ts +4 -3
  90. package/types/components/checkbox/YInputCheckbox.d.ts +7 -6
  91. package/types/components/checkbox/index.d.ts +1 -1
  92. package/types/components/chip/YChip.d.ts +3 -2
  93. package/types/components/date-picker/YDateCalendar.d.ts +16 -15
  94. package/types/components/date-picker/YDatePicker.d.ts +47 -41
  95. package/types/components/date-picker/YDatePickerControl.d.ts +29 -28
  96. package/types/components/date-picker/YMonthPicker.d.ts +6 -5
  97. package/types/components/date-picker/YYearPicker.d.ts +3 -2
  98. package/types/components/default-provider/YDefaultProvider.d.ts +0 -0
  99. package/types/components/default-provider/index.d.ts +0 -0
  100. package/types/components/dialog/YDialog.d.ts +416 -334
  101. package/types/components/divider/YDivider.d.ts +4 -3
  102. package/types/components/dropdown/YDropdown.d.ts +495 -61
  103. package/types/components/field-input/YFieldInput.d.ts +29 -26
  104. package/types/components/form/YForm.d.ts +9 -8
  105. package/types/components/hover/YHover.d.ts +79 -0
  106. package/types/components/hover/index.d.ts +1 -0
  107. package/types/components/icon/YIcon.d.ts +5 -4
  108. package/types/components/icons/YIconCheckbox.d.ts +5 -4
  109. package/types/components/icons/YIconClear.d.ts +1 -1
  110. package/types/components/icons/YIconDropdown.d.ts +1 -1
  111. package/types/components/icons/YIconExpand.d.ts +1 -1
  112. package/types/components/icons/YIconPageControl.d.ts +6 -5
  113. package/types/components/icons/YIconSort.d.ts +5 -4
  114. package/types/components/icons/index.d.ts +26 -26
  115. package/types/components/index.d.ts +3 -0
  116. package/types/components/input/YInput.d.ts +23 -20
  117. package/types/components/ip-field/YIpv4Field.d.ts +133 -0
  118. package/types/components/ip-field/index.d.ts +1 -0
  119. package/types/components/layer/YLayer.d.ts +154 -105
  120. package/types/components/layer/active-stack.d.ts +3 -2
  121. package/types/components/layer/base.d.ts +8 -6
  122. package/types/components/layer/content.d.ts +21 -0
  123. package/types/components/layer/scroll-strategies.d.ts +41 -0
  124. package/types/components/list/YList.d.ts +8 -7
  125. package/types/components/list/YListItem.d.ts +19 -13
  126. package/types/components/loading/YSpinnerRing.d.ts +2 -1
  127. package/types/components/menu/YMenu.d.ts +166 -124
  128. package/types/components/navigation/YNavigation.d.ts +1 -0
  129. package/types/components/navigation/index.d.ts +1 -0
  130. package/types/components/pagination/YPagination.d.ts +20 -19
  131. package/types/components/panel/YDividePanel.d.ts +4 -3
  132. package/types/components/plate/YPlate.d.ts +3 -2
  133. package/types/components/progress-bar/YProgressBar.d.ts +5 -4
  134. package/types/components/select/YSelect.d.ts +1254 -942
  135. package/types/components/snackbar/YSnackbar.d.ts +12 -11
  136. package/types/components/switch/YSwitch.d.ts +4 -3
  137. package/types/components/tab/YTab.d.ts +30 -29
  138. package/types/components/tab/YTabs.d.ts +12 -11
  139. package/types/components/tab/index.d.ts +1 -1
  140. package/types/components/tab/shared.d.ts +1 -0
  141. package/types/components/tab/types.d.ts +1 -1
  142. package/types/components/table/YDataTable.d.ts +63 -62
  143. package/types/components/table/YDataTableBody.d.ts +10 -9
  144. package/types/components/table/YDataTableCell.d.ts +6 -5
  145. package/types/components/table/YDataTableControl.d.ts +5 -4
  146. package/types/components/table/YDataTableHead.d.ts +10 -10
  147. package/types/components/table/YDataTableLayer.d.ts +4 -3
  148. package/types/components/table/YDataTableRow.d.ts +3 -2
  149. package/types/components/table/YDataTableServer.d.ts +63 -62
  150. package/types/components/table/YTable.d.ts +7 -6
  151. package/types/components/table/composibles/header.d.ts +10 -9
  152. package/types/components/table/composibles/items.d.ts +5 -4
  153. package/types/components/table/composibles/options.d.ts +2 -1
  154. package/types/components/table/composibles/pagination.d.ts +6 -5
  155. package/types/components/table/composibles/selection.d.ts +7 -5
  156. package/types/components/table/composibles/sorting.d.ts +4 -3
  157. package/types/components/table/types/common.d.ts +1 -0
  158. package/types/components/table/types/header.d.ts +3 -2
  159. package/types/components/table/types/index.d.ts +5 -4
  160. package/types/components/table/types/item.d.ts +1 -0
  161. package/types/components/table/types/row.d.ts +1 -0
  162. package/types/components/text-ellipsis/YTextEllipsis.d.ts +15 -0
  163. package/types/components/text-ellipsis/index.d.ts +1 -0
  164. package/types/components/text-highlighter/YTextHighlighter.d.ts +3 -2
  165. package/types/components/text-highlighter/index.d.ts +1 -0
  166. package/types/components/textarea/YTextarea.d.ts +41 -39
  167. package/types/components/toggle-button/YToggleButton.d.ts +1 -0
  168. package/types/components/tooltip/YTooltip.d.ts +1975 -103
  169. package/types/components/transitions/expand-transition.d.ts +4 -3
  170. package/types/components/transitions/index.d.ts +10 -10
  171. package/types/components/tree-view/YTreeView.d.ts +20 -13
  172. package/types/components/tree-view/YTreeViewNode.d.ts +42 -20
  173. package/types/components/tree-view/types.d.ts +2 -1
  174. package/types/components/tree-view/util.d.ts +1 -0
  175. package/types/composables/choice-link.d.ts +2 -1
  176. package/types/composables/choice.d.ts +3 -2
  177. package/types/composables/communication.d.ts +2 -1
  178. package/types/composables/component.d.ts +1 -0
  179. package/types/composables/coordinate/arrangement.d.ts +2 -1
  180. package/types/composables/coordinate/index.d.ts +23 -22
  181. package/types/composables/coordinate/levitation.d.ts +2 -1
  182. package/types/composables/coordinate/types.d.ts +2 -1
  183. package/types/composables/coordinate/utils/point.d.ts +1 -0
  184. package/types/composables/date/factory.d.ts +1 -0
  185. package/types/composables/date/index.d.ts +1 -0
  186. package/types/composables/date/setting.d.ts +2 -1
  187. package/types/composables/date/types.d.ts +2 -1
  188. package/types/composables/dimension.d.ts +4 -3
  189. package/types/composables/focus.d.ts +4 -3
  190. package/types/composables/form.d.ts +7 -6
  191. package/types/composables/i18n/index.d.ts +1 -0
  192. package/types/composables/i18n/locale.d.ts +2 -1
  193. package/types/composables/i18n/rtl.d.ts +2 -1
  194. package/types/composables/icon.d.ts +9 -10
  195. package/types/composables/index.d.ts +1 -0
  196. package/types/composables/layer-group.d.ts +3 -2
  197. package/types/composables/layout.d.ts +10 -0
  198. package/types/composables/list-items.d.ts +36 -35
  199. package/types/composables/progress.d.ts +1 -1
  200. package/types/composables/ref.d.ts +2 -1
  201. package/types/composables/resize-observer.d.ts +2 -2
  202. package/types/composables/scope.d.ts +2 -1
  203. package/types/composables/theme/factory.d.ts +1 -0
  204. package/types/composables/theme/index.d.ts +5 -4
  205. package/types/composables/theme/setting.d.ts +1 -0
  206. package/types/composables/timing.d.ts +2 -1
  207. package/types/composables/transition.d.ts +2 -1
  208. package/types/composables/validation.d.ts +19 -18
  209. package/types/composables/vue-router.d.ts +3 -3
  210. package/types/directives/complement-click/index.d.ts +1 -0
  211. package/types/directives/plate-wave/index.d.ts +2 -1
  212. package/types/directives/theme-class.d.ts +1 -0
  213. package/types/globals.d.ts +1 -1
  214. package/types/i18n/built-in.d.ts +2 -1
  215. package/types/i18n/types.d.ts +2 -1
  216. package/types/index.d.ts +2 -1
  217. package/types/locales/index.d.ts +2 -0
  218. package/types/locales/ko.d.ts +6 -0
  219. package/types/mixins/di.d.ts +1 -1
  220. package/types/mixins/rebind-attrs.d.ts +2 -2
  221. package/types/shims.d.ts +4 -45
  222. package/types/types/index.d.ts +2 -1
  223. package/types/util/anchor.d.ts +1 -1
  224. package/types/util/color/contrast/contrast.d.ts +74 -0
  225. package/types/util/color/conversion.d.ts +1 -0
  226. package/types/util/color/hct/cam16.d.ts +2 -17
  227. package/types/util/color/hct/hct-solver.d.ts +131 -0
  228. package/types/util/color/hct/hct.d.ts +2 -17
  229. package/types/util/color/hct/viewing-conditions.d.ts +58 -0
  230. package/types/util/color/index.d.ts +1 -1
  231. package/types/util/color/palettes/core-palette.d.ts +44 -0
  232. package/types/util/color/palettes/tonal-palette.d.ts +40 -0
  233. package/types/util/date/adapters/yuyeon-date-adapter.d.ts +1 -0
  234. package/types/util/date/built-in.d.ts +2 -1
  235. package/types/util/date/index.d.ts +1 -1
  236. package/types/util/reactivity.d.ts +3 -2
  237. package/types/util/vue-component.d.ts +4 -3
@@ -70,7 +70,6 @@
70
70
  &--inline &__base {
71
71
  display: inline-flex;
72
72
  align-items: center;
73
- justify-content: center;
74
73
  margin: var(--y-badge__inline-margin);
75
74
  }
76
75
  }
@@ -1,20 +1,27 @@
1
- import { defineComponent, h, withDirectives } from 'vue';
2
- import ThemeClass from "../../directives/theme-class.mjs";
1
+ import { defineComponent, h } from 'vue';
2
+ import { useRender } from "../../composables/index.mjs";
3
+ import { pressThemePropsOptions, useLocalTheme } from "../../composables/theme/index.mjs";
3
4
  import "./YCard.scss";
4
5
  export const YCard = defineComponent({
5
6
  name: 'YCard',
6
7
  props: {
7
8
  outline: {
8
9
  type: Boolean
9
- }
10
+ },
11
+ ...pressThemePropsOptions()
10
12
  },
11
- render() {
12
- const theme = ThemeClass;
13
- return withDirectives(h('div', {
13
+ setup(props, _ref) {
14
+ let {
15
+ slots
16
+ } = _ref;
17
+ const {
18
+ themeClasses
19
+ } = useLocalTheme(props);
20
+ useRender(() => h('div', {
14
21
  class: ['y-card', {
15
- 'y-card--outlined': this.$props.outline
16
- }]
17
- }, this.$slots.default?.call(this)), [[theme]]);
22
+ 'y-card--outlined': props.outline
23
+ }, themeClasses.value]
24
+ }, slots.default?.()));
18
25
  }
19
26
  });
20
27
  //# sourceMappingURL=YCard.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"YCard.mjs","names":["defineComponent","h","withDirectives","ThemeClass","YCard","name","props","outline","type","Boolean","render","theme","class","$props","$slots","default","call"],"sources":["../../../src/components/card/YCard.ts"],"sourcesContent":["import type { Directive, PropType, VNode } from 'vue';\nimport { defineComponent, h, withDirectives } from 'vue';\n\nimport ThemeClass from '../../directives/theme-class';\n\nimport './YCard.scss';\n\nexport const YCard = defineComponent({\n name: 'YCard',\n props: {\n outline: {\n type: Boolean as PropType<boolean>,\n },\n },\n render(): VNode {\n const theme = ThemeClass as Directive;\n return withDirectives(\n h(\n 'div',\n {\n class: ['y-card', { 'y-card--outlined': this.$props.outline }],\n },\n this.$slots.default?.call(this),\n ),\n [[theme]],\n );\n },\n});\n\nexport type YCard = InstanceType<typeof YCard>;\n"],"mappings":"AACA,SAASA,eAAe,EAAEC,CAAC,EAAEC,cAAc,QAAQ,KAAK;AAAC,OAElDC,UAAU;AAEjB;AAEA,OAAO,MAAMC,KAAK,GAAGJ,eAAe,CAAC;EACnCK,IAAI,EAAE,OAAO;EACbC,KAAK,EAAE;IACLC,OAAO,EAAE;MACPC,IAAI,EAAEC;IACR;EACF,CAAC;EACDC,MAAMA,CAAA,EAAU;IACd,MAAMC,KAAK,GAAGR,UAAuB;IACrC,OAAOD,cAAc,CACnBD,CAAC,CACC,KAAK,EACL;MACEW,KAAK,EAAE,CAAC,QAAQ,EAAE;QAAE,kBAAkB,EAAE,IAAI,CAACC,MAAM,CAACN;MAAQ,CAAC;IAC/D,CAAC,EACD,IAAI,CAACO,MAAM,CAACC,OAAO,EAAEC,IAAI,CAAC,IAAI,CAChC,CAAC,EACD,CAAC,CAACL,KAAK,CAAC,CACV,CAAC;EACH;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YCard.mjs","names":["defineComponent","h","useRender","pressThemePropsOptions","useLocalTheme","YCard","name","props","outline","type","Boolean","setup","_ref","slots","themeClasses","class","value","default"],"sources":["../../../src/components/card/YCard.ts"],"sourcesContent":["import type { Directive, PropType, VNode } from 'vue';\nimport { defineComponent, h, withDirectives } from 'vue';\n\nimport { useRender } from '../../composables';\nimport { pressThemePropsOptions, useLocalTheme } from '../../composables/theme';\n\nimport './YCard.scss';\n\nexport const YCard = defineComponent({\n name: 'YCard',\n props: {\n outline: {\n type: Boolean as PropType<boolean>,\n },\n ...pressThemePropsOptions(),\n },\n setup(props, { slots }) {\n const { themeClasses } = useLocalTheme(props);\n\n useRender(() =>\n h(\n 'div',\n {\n class: ['y-card', { 'y-card--outlined': props.outline }, themeClasses.value],\n },\n slots.default?.(),\n ),\n );\n },\n});\n\nexport type YCard = InstanceType<typeof YCard>;\n"],"mappings":"AACA,SAASA,eAAe,EAAEC,CAAC,QAAwB,KAAK;AAAC,SAEhDC,SAAS;AAAA,SACTC,sBAAsB,EAAEC,aAAa;AAE9C;AAEA,OAAO,MAAMC,KAAK,GAAGL,eAAe,CAAC;EACnCM,IAAI,EAAE,OAAO;EACbC,KAAK,EAAE;IACLC,OAAO,EAAE;MACPC,IAAI,EAAEC;IACR,CAAC;IACD,GAAGP,sBAAsB,CAAC;EAC5B,CAAC;EACDQ,KAAKA,CAACJ,KAAK,EAAAK,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpB,MAAM;MAAEE;IAAa,CAAC,GAAGV,aAAa,CAACG,KAAK,CAAC;IAE7CL,SAAS,CAAC,MACRD,CAAC,CACC,KAAK,EACL;MACEc,KAAK,EAAE,CAAC,QAAQ,EAAE;QAAE,kBAAkB,EAAER,KAAK,CAACC;MAAQ,CAAC,EAAEM,YAAY,CAACE,KAAK;IAC7E,CAAC,EACDH,KAAK,CAACI,OAAO,GAAG,CAClB,CACF,CAAC;EACH;AACF,CAAC,CAAC"}
@@ -17,6 +17,7 @@ export const pressYDatePickerPropsOptions = propsFactory({
17
17
  export const YDatePicker = defineComponent({
18
18
  name: 'YDatePicker',
19
19
  props: pressYDatePickerPropsOptions(),
20
+ emits: ['update:month', 'update:year', 'update:modelValue', 'update:mode'],
20
21
  setup(props, _ref) {
21
22
  let {
22
23
  emit
@@ -1 +1 @@
1
- {"version":3,"file":"YDatePicker.mjs","names":["Transition","computed","defineComponent","ref","watch","useModelDuplex","useRender","useDate","omit","chooseProps","propsFactory","YDateCalendar","pressYDateCalendarPropsOptions","YDatePickerControl","YMonthPicker","YYearPicker","pressYDatePickerPropsOptions","modelValue","YDatePicker","name","props","setup","_ref","emit","yearPicker$","dateUtil","model","mode","month","getMonth","date","year","getYear","displayDate","setYear","value","setMonth","monthText","format","yearText","toggleMonthMode","toggleYearMode","onClickYear","onClickMonth","onClickPage","dir","changePage","change","onClickPrev","onClickNext","_createVNode","_mergeProps","default","$event"],"sources":["../../../src/components/date-picker/YDatePicker.tsx"],"sourcesContent":["import { Transition, computed, defineComponent, ref, watch } from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { useDate } from '../../composables/date';\nimport { omit } from '../../util';\nimport { chooseProps, propsFactory } from '../../util/vue-component';\nimport { YDateCalendar, pressYDateCalendarPropsOptions } from './YDateCalendar';\nimport { YDatePickerControl } from './YDatePickerControl';\nimport { YMonthPicker } from './YMonthPicker';\nimport { YYearPicker } from './YYearPicker';\n\nimport './YDatePicker.scss';\n\nexport const pressYDatePickerPropsOptions = propsFactory(\n {\n ...omit(pressYDateCalendarPropsOptions(), ['modelValue']),\n modelValue: null,\n },\n 'YDatePicker',\n);\n\nexport const YDatePicker = defineComponent({\n name: 'YDatePicker',\n props: pressYDatePickerPropsOptions(),\n setup(props, { emit }) {\n const yearPicker$ = ref<typeof YYearPicker>();\n const dateUtil = useDate();\n const model = useModelDuplex(props, 'modelValue');\n const mode = useModelDuplex(props, 'mode');\n\n const month = ref(dateUtil.getMonth(dateUtil.date()));\n const year = ref(dateUtil.getYear(dateUtil.date()));\n const displayDate = computed(() => {\n const date = dateUtil.setYear(dateUtil.date(), year.value);\n return dateUtil.setMonth(date, month.value);\n });\n const monthText = computed(() => {\n return dateUtil.format(displayDate.value, 'month');\n });\n const yearText = computed(() => {\n return dateUtil.format(displayDate.value, 'year');\n });\n\n function toggleMonthMode() {\n mode.value = mode.value === 'month' ? 'date' : 'month';\n }\n\n function toggleYearMode() {\n mode.value = mode.value === 'year' ? 'date' : 'year';\n }\n\n function onClickYear() {\n toggleYearMode();\n }\n\n function onClickMonth() {\n toggleMonthMode();\n }\n\n function onClickPage(dir: number) {\n if (mode.value === 'month') {\n year.value = year.value + dir;\n return;\n }\n if (mode.value === 'year') {\n yearPicker$.value?.changePage(dir);\n return;\n }\n const change = month.value + dir;\n if (change > 11) {\n year.value += 1;\n month.value = 0;\n } else if (change < 0) {\n year.value -= 1;\n month.value = 11;\n } else {\n month.value = change;\n }\n }\n\n function onClickPrev() {\n onClickPage(-1);\n }\n\n function onClickNext() {\n onClickPage(1);\n }\n\n watch(month, () => {\n if (mode.value === 'month') toggleMonthMode();\n emit('update:month', month.value);\n });\n\n watch(year, () => {\n if (mode.value === 'year') {\n mode.value = 'month';\n }\n emit('update:year', year.value);\n });\n\n useRender(() => (\n <div class={['y-date-picker']}>\n <YDatePickerControl\n {...chooseProps(props, YDatePickerControl.props)}\n yearText={yearText.value}\n monthText={monthText.value}\n onClick:year={onClickYear}\n onClick:month={onClickMonth}\n onClick:prev={onClickPrev}\n onClick:next={onClickNext}\n ></YDatePickerControl>\n <Transition name=\"fade\" mode=\"out-in\">\n {mode.value === 'month' ? (\n <YMonthPicker v-model={month.value} />\n ) : mode.value === 'year' ? (\n <YYearPicker v-model={year.value} ref={yearPicker$} />\n ) : (\n <YDateCalendar\n {...chooseProps(props, YDateCalendar.props)}\n hideHeader={true}\n v-model={model.value}\n v-model:month={month.value}\n v-model:year={year.value}\n />\n )}\n </Transition>\n </div>\n ));\n },\n});\n\nexport type YDatePicker = InstanceType<typeof YDatePicker>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"YDatePicker.mjs","names":["Transition","computed","defineComponent","ref","watch","useModelDuplex","useRender","useDate","omit","chooseProps","propsFactory","YDateCalendar","pressYDateCalendarPropsOptions","YDatePickerControl","YMonthPicker","YYearPicker","pressYDatePickerPropsOptions","modelValue","YDatePicker","name","props","emits","setup","_ref","emit","yearPicker$","dateUtil","model","mode","month","getMonth","date","year","getYear","displayDate","setYear","value","setMonth","monthText","format","yearText","toggleMonthMode","toggleYearMode","onClickYear","onClickMonth","onClickPage","dir","changePage","change","onClickPrev","onClickNext","_createVNode","_mergeProps","default","$event"],"sources":["../../../src/components/date-picker/YDatePicker.tsx"],"sourcesContent":["import { Transition, computed, defineComponent, ref, watch } from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { useDate } from '../../composables/date';\nimport { omit } from '../../util';\nimport { chooseProps, propsFactory } from '../../util/vue-component';\nimport { YDateCalendar, pressYDateCalendarPropsOptions } from './YDateCalendar';\nimport { YDatePickerControl } from './YDatePickerControl';\nimport { YMonthPicker } from './YMonthPicker';\nimport { YYearPicker } from './YYearPicker';\n\nimport './YDatePicker.scss';\n\nexport const pressYDatePickerPropsOptions = propsFactory(\n {\n ...omit(pressYDateCalendarPropsOptions(), ['modelValue']),\n modelValue: null,\n },\n 'YDatePicker',\n);\n\nexport const YDatePicker = defineComponent({\n name: 'YDatePicker',\n props: pressYDatePickerPropsOptions(),\n emits: ['update:month', 'update:year', 'update:modelValue', 'update:mode'],\n setup(props, { emit }) {\n const yearPicker$ = ref<typeof YYearPicker>();\n const dateUtil = useDate();\n const model = useModelDuplex(props, 'modelValue');\n const mode = useModelDuplex(props, 'mode');\n\n const month = ref(dateUtil.getMonth(dateUtil.date()));\n const year = ref(dateUtil.getYear(dateUtil.date()));\n const displayDate = computed(() => {\n const date = dateUtil.setYear(dateUtil.date(), year.value);\n return dateUtil.setMonth(date, month.value);\n });\n const monthText = computed(() => {\n return dateUtil.format(displayDate.value, 'month');\n });\n const yearText = computed(() => {\n return dateUtil.format(displayDate.value, 'year');\n });\n\n function toggleMonthMode() {\n mode.value = mode.value === 'month' ? 'date' : 'month';\n }\n\n function toggleYearMode() {\n mode.value = mode.value === 'year' ? 'date' : 'year';\n }\n\n function onClickYear() {\n toggleYearMode();\n }\n\n function onClickMonth() {\n toggleMonthMode();\n }\n\n function onClickPage(dir: number) {\n if (mode.value === 'month') {\n year.value = year.value + dir;\n return;\n }\n if (mode.value === 'year') {\n yearPicker$.value?.changePage(dir);\n return;\n }\n const change = month.value + dir;\n if (change > 11) {\n year.value += 1;\n month.value = 0;\n } else if (change < 0) {\n year.value -= 1;\n month.value = 11;\n } else {\n month.value = change;\n }\n }\n\n function onClickPrev() {\n onClickPage(-1);\n }\n\n function onClickNext() {\n onClickPage(1);\n }\n\n watch(month, () => {\n if (mode.value === 'month') toggleMonthMode();\n emit('update:month', month.value);\n });\n\n watch(year, () => {\n if (mode.value === 'year') {\n mode.value = 'month';\n }\n emit('update:year', year.value);\n });\n\n useRender(() => (\n <div class={['y-date-picker']}>\n <YDatePickerControl\n {...chooseProps(props, YDatePickerControl.props)}\n yearText={yearText.value}\n monthText={monthText.value}\n onClick:year={onClickYear}\n onClick:month={onClickMonth}\n onClick:prev={onClickPrev}\n onClick:next={onClickNext}\n ></YDatePickerControl>\n <Transition name=\"fade\" mode=\"out-in\">\n {mode.value === 'month' ? (\n <YMonthPicker v-model={month.value} />\n ) : mode.value === 'year' ? (\n <YYearPicker v-model={year.value} ref={yearPicker$} />\n ) : (\n <YDateCalendar\n {...chooseProps(props, YDateCalendar.props)}\n hideHeader={true}\n v-model={model.value}\n v-model:month={month.value}\n v-model:year={year.value}\n />\n )}\n </Transition>\n </div>\n ));\n },\n});\n\nexport type YDatePicker = InstanceType<typeof YDatePicker>;\n"],"mappings":";AAAA,SAASA,UAAU,EAAEC,QAAQ,EAAEC,eAAe,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAC,SAE/DC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,OAAO;AAAA,SACPC,IAAI;AAAA,SACJC,WAAW,EAAEC,YAAY;AAAA,SACzBC,aAAa,EAAEC,8BAA8B;AAAA,SAC7CC,kBAAkB;AAAA,SAClBC,YAAY;AAAA,SACZC,WAAW;AAEpB;AAEA,OAAO,MAAMC,4BAA4B,GAAGN,YAAY,CACtD;EACE,GAAGF,IAAI,CAACI,8BAA8B,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;EACzDK,UAAU,EAAE;AACd,CAAC,EACD,aACF,CAAC;AAED,OAAO,MAAMC,WAAW,GAAGhB,eAAe,CAAC;EACzCiB,IAAI,EAAE,aAAa;EACnBC,KAAK,EAAEJ,4BAA4B,CAAC,CAAC;EACrCK,KAAK,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,CAAC;EAC1EC,KAAKA,CAACF,KAAK,EAAAG,IAAA,EAAY;IAAA,IAAV;MAAEC;IAAK,CAAC,GAAAD,IAAA;IACnB,MAAME,WAAW,GAAGtB,GAAG,CAAqB,CAAC;IAC7C,MAAMuB,QAAQ,GAAGnB,OAAO,CAAC,CAAC;IAC1B,MAAMoB,KAAK,GAAGtB,cAAc,CAACe,KAAK,EAAE,YAAY,CAAC;IACjD,MAAMQ,IAAI,GAAGvB,cAAc,CAACe,KAAK,EAAE,MAAM,CAAC;IAE1C,MAAMS,KAAK,GAAG1B,GAAG,CAACuB,QAAQ,CAACI,QAAQ,CAACJ,QAAQ,CAACK,IAAI,CAAC,CAAC,CAAC,CAAC;IACrD,MAAMC,IAAI,GAAG7B,GAAG,CAACuB,QAAQ,CAACO,OAAO,CAACP,QAAQ,CAACK,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,MAAMG,WAAW,GAAGjC,QAAQ,CAAC,MAAM;MACjC,MAAM8B,IAAI,GAAGL,QAAQ,CAACS,OAAO,CAACT,QAAQ,CAACK,IAAI,CAAC,CAAC,EAAEC,IAAI,CAACI,KAAK,CAAC;MAC1D,OAAOV,QAAQ,CAACW,QAAQ,CAACN,IAAI,EAAEF,KAAK,CAACO,KAAK,CAAC;IAC7C,CAAC,CAAC;IACF,MAAME,SAAS,GAAGrC,QAAQ,CAAC,MAAM;MAC/B,OAAOyB,QAAQ,CAACa,MAAM,CAACL,WAAW,CAACE,KAAK,EAAE,OAAO,CAAC;IACpD,CAAC,CAAC;IACF,MAAMI,QAAQ,GAAGvC,QAAQ,CAAC,MAAM;MAC9B,OAAOyB,QAAQ,CAACa,MAAM,CAACL,WAAW,CAACE,KAAK,EAAE,MAAM,CAAC;IACnD,CAAC,CAAC;IAEF,SAASK,eAAeA,CAAA,EAAG;MACzBb,IAAI,CAACQ,KAAK,GAAGR,IAAI,CAACQ,KAAK,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO;IACxD;IAEA,SAASM,cAAcA,CAAA,EAAG;MACxBd,IAAI,CAACQ,KAAK,GAAGR,IAAI,CAACQ,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM;IACtD;IAEA,SAASO,WAAWA,CAAA,EAAG;MACrBD,cAAc,CAAC,CAAC;IAClB;IAEA,SAASE,YAAYA,CAAA,EAAG;MACtBH,eAAe,CAAC,CAAC;IACnB;IAEA,SAASI,WAAWA,CAACC,GAAW,EAAE;MAChC,IAAIlB,IAAI,CAACQ,KAAK,KAAK,OAAO,EAAE;QAC1BJ,IAAI,CAACI,KAAK,GAAGJ,IAAI,CAACI,KAAK,GAAGU,GAAG;QAC7B;MACF;MACA,IAAIlB,IAAI,CAACQ,KAAK,KAAK,MAAM,EAAE;QACzBX,WAAW,CAACW,KAAK,EAAEW,UAAU,CAACD,GAAG,CAAC;QAClC;MACF;MACA,MAAME,MAAM,GAAGnB,KAAK,CAACO,KAAK,GAAGU,GAAG;MAChC,IAAIE,MAAM,GAAG,EAAE,EAAE;QACfhB,IAAI,CAACI,KAAK,IAAI,CAAC;QACfP,KAAK,CAACO,KAAK,GAAG,CAAC;MACjB,CAAC,MAAM,IAAIY,MAAM,GAAG,CAAC,EAAE;QACrBhB,IAAI,CAACI,KAAK,IAAI,CAAC;QACfP,KAAK,CAACO,KAAK,GAAG,EAAE;MAClB,CAAC,MAAM;QACLP,KAAK,CAACO,KAAK,GAAGY,MAAM;MACtB;IACF;IAEA,SAASC,WAAWA,CAAA,EAAG;MACrBJ,WAAW,CAAC,CAAC,CAAC,CAAC;IACjB;IAEA,SAASK,WAAWA,CAAA,EAAG;MACrBL,WAAW,CAAC,CAAC,CAAC;IAChB;IAEAzC,KAAK,CAACyB,KAAK,EAAE,MAAM;MACjB,IAAID,IAAI,CAACQ,KAAK,KAAK,OAAO,EAAEK,eAAe,CAAC,CAAC;MAC7CjB,IAAI,CAAC,cAAc,EAAEK,KAAK,CAACO,KAAK,CAAC;IACnC,CAAC,CAAC;IAEFhC,KAAK,CAAC4B,IAAI,EAAE,MAAM;MAChB,IAAIJ,IAAI,CAACQ,KAAK,KAAK,MAAM,EAAE;QACzBR,IAAI,CAACQ,KAAK,GAAG,OAAO;MACtB;MACAZ,IAAI,CAAC,aAAa,EAAEQ,IAAI,CAACI,KAAK,CAAC;IACjC,CAAC,CAAC;IAEF9B,SAAS,CAAC,MAAA6C,YAAA;MAAA,SACI,CAAC,eAAe;IAAC,IAAAA,YAAA,CAAAtC,kBAAA,EAAAuC,WAAA,CAErB3C,WAAW,CAACW,KAAK,EAAEP,kBAAkB,CAACO,KAAK,CAAC;MAAA,YACtCoB,QAAQ,CAACJ,KAAK;MAAA,aACbE,SAAS,CAACF,KAAK;MAAA,gBACZO,WAAW;MAAA,iBACVC,YAAY;MAAA,gBACbK,WAAW;MAAA,gBACXC;IAAW,WAAAC,YAAA,CAAAnD,UAAA;MAAA;MAAA;IAAA;MAAAqD,OAAA,EAAAA,CAAA,MAGxBzB,IAAI,CAACQ,KAAK,KAAK,OAAO,GAAAe,YAAA,CAAArC,YAAA;QAAA,cACEe,KAAK,CAACO,KAAK;QAAA,uBAAAkB,MAAA,IAAXzB,KAAK,CAACO,KAAK,GAAAkB;MAAA,WAChC1B,IAAI,CAACQ,KAAK,KAAK,MAAM,GAAAe,YAAA,CAAApC,WAAA;QAAA,cACDiB,IAAI,CAACI,KAAK;QAAA,uBAAAkB,MAAA,IAAVtB,IAAI,CAACI,KAAK,GAAAkB,MAAA;QAAA,OAAO7B;MAAW,WAAA0B,YAAA,CAAAxC,aAAA,EAAAyC,WAAA,CAG5C3C,WAAW,CAACW,KAAK,EAAET,aAAa,CAACS,KAAK,CAAC;QAAA,cAC/B,IAAI;QAAA,cACPO,KAAK,CAACS,KAAK;QAAA,uBAAAkB,MAAA,IAAX3B,KAAK,CAACS,KAAK,GAAAkB,MAAA;QAAA,SACLzB,KAAK,CAACO,KAAK;QAAA,kBAAAkB,MAAA,IAAXzB,KAAK,CAACO,KAAK,GAAAkB,MAAA;QAAA,QACZtB,IAAI,CAACI,KAAK;QAAA,iBAAAkB,MAAA,IAAVtB,IAAI,CAACI,KAAK,GAAAkB;MAAA,SAE3B;IAAA,IAGN,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -18,7 +18,10 @@ export const pressYDialogPropsOptions = propsFactory({
18
18
  type: [Array, String, Object]
19
19
  },
20
20
  maximized: Boolean,
21
- focusTrap: [Boolean, String, Object, Array],
21
+ focusTrap: {
22
+ type: [Boolean, String, Object, Array],
23
+ default: true
24
+ },
22
25
  offset: {
23
26
  type: String
24
27
  },
@@ -1 +1 @@
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","focusTrap","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","excludeTarget","document","querySelector","isArray","excluded","some","exclude","testChildrenContains","layers","layer","content$","contains","value","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 focusTrap: [Boolean, String, Object, Array] as PropType<\n false | string | string[] | HTMLElement\n >,\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 if (props.focusTrap === false) {\n return;\n }\n\n const prevTarget = e.relatedTarget as HTMLElement | null;\n const target = e.target as HTMLElement | null;\n\n const excludeTarget = props.focusTrap;\n\n if (\n typeof excludeTarget === 'string' &&\n document.querySelector(excludeTarget) == target\n ) {\n return;\n }\n\n if (typeof excludeTarget === 'object') {\n if (Array.isArray(excludeTarget)) {\n const excluded = excludeTarget.some((exclude) => {\n if (typeof exclude === 'string') {\n return document.querySelector(exclude) == target;\n }\n if (typeof exclude === 'object') {\n return exclude == target;\n }\n });\n if (excluded) {\n return;\n }\n } else if (excludeTarget == target) {\n return;\n }\n }\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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"}
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","focusTrap","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","excludeTarget","document","querySelector","isArray","excluded","some","exclude","testChildrenContains","layers","layer","content$","contains","value","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 focusTrap: {\n type: [Boolean, String, Object, Array] as PropType<\n false | string | string[] | HTMLElement\n >,\n default: true,\n },\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 if (props.focusTrap === false) {\n return;\n }\n\n const prevTarget = e.relatedTarget as HTMLElement | null;\n const target = e.target as HTMLElement | null;\n\n const excludeTarget = props.focusTrap;\n\n if (\n typeof excludeTarget === 'string' &&\n document.querySelector(excludeTarget) == target\n ) {\n return;\n }\n\n if (typeof excludeTarget === 'object') {\n if (Array.isArray(excludeTarget)) {\n const excluded = excludeTarget.some((exclude) => {\n if (typeof exclude === 'string') {\n return document.querySelector(exclude) == target;\n }\n if (typeof exclude === 'object') {\n return exclude == target;\n }\n });\n if (excluded) {\n return;\n }\n } else if (excludeTarget == target) {\n return;\n }\n }\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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"}
@@ -4,15 +4,17 @@ import { pressItemsPropsOptions } from "../../abstract/items.mjs";
4
4
  import { useModelDuplex } from "../../composables/communication.mjs";
5
5
  import { useRender } from "../../composables/component.mjs";
6
6
  import { pressCoordinateProps } from "../../composables/coordinate/index.mjs";
7
+ import { polyTransitionPropOptions } from "../../composables/transition.mjs";
7
8
  import { getObjectValueByPath, omit } from "../../util/common.mjs";
8
- import { chooseProps, propsFactory } from "../../util/vue-component.mjs";
9
+ import { bindClasses, chooseProps, propsFactory } from "../../util/vue-component.mjs";
9
10
  import { YButton } from "../button/index.mjs";
10
11
  import { YCard } from "../card/index.mjs";
11
12
  import { YIcon } from "../icon/index.mjs";
12
13
  import { YList, YListItem } from "../list/index.mjs";
13
- import { YMenu } from "../menu/index.mjs";
14
+ import { YMenu, YMenuPropOptions } from "../menu/index.mjs";
14
15
  import "./YDropdown.scss";
15
16
  export const pressYDropdownPropsOptions = propsFactory({
17
+ ...omit(YMenuPropOptions, ['modelValue', 'coordinateStrategy']),
16
18
  modelValue: Boolean,
17
19
  variation: String,
18
20
  color: String,
@@ -23,7 +25,11 @@ export const pressYDropdownPropsOptions = propsFactory({
23
25
  type: [String, Array, Object],
24
26
  default: '$dropdown'
25
27
  },
26
- ...pressItemsPropsOptions()
28
+ ...pressItemsPropsOptions(),
29
+ transition: {
30
+ ...polyTransitionPropOptions.transition,
31
+ default: 'fade'
32
+ }
27
33
  }, 'YDropdown');
28
34
  export const YDropdown = defineComponent({
29
35
  name: 'YDropdown',
@@ -53,7 +59,7 @@ export const YDropdown = defineComponent({
53
59
  return _createVNode(_Fragment, null, [_createVNode(YMenu, _mergeProps(menuProps, {
54
60
  "modelValue": opened.value,
55
61
  "onUpdate:modelValue": $event => opened.value = $event,
56
- "content-classes": ['y-dropdown__content']
62
+ "content-classes": bindClasses(['y-dropdown__content', props.contentClasses])
57
63
  }), {
58
64
  base: function () {
59
65
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
@@ -1 +1 @@
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","slots","emits","setup","_ref","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, SlotsType } 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 { 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 slots: Object as SlotsType<{\n base: any,\n default: any,\n 'dropdown-icon': any,\n menu: any,\n item: { text: string, item: any },\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 {slots.item ? slots.item({ text, item }) : 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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"}
1
+ {"version":3,"file":"YDropdown.mjs","names":["defineComponent","mergeProps","pressItemsPropsOptions","useModelDuplex","useRender","pressCoordinateProps","polyTransitionPropOptions","getObjectValueByPath","omit","bindClasses","chooseProps","propsFactory","YButton","YCard","YIcon","YList","YListItem","YMenu","YMenuPropOptions","pressYDropdownPropsOptions","modelValue","Boolean","variation","String","color","position","dropdownIcon","type","Array","Object","default","transition","YDropdown","name","inheritAttrs","components","props","slots","emits","setup","_ref","attrs","emit","opened","onClickItem","item","value","menuProps","dropdownIconProps","_createVNode","_Fragment","_mergeProps","$event","contentClasses","base","_len","arguments","length","args","_key","menu","isArray","items","map","text","itemText","e","_createTextVNode"],"sources":["../../../src/components/dropdown/YDropdown.tsx"],"sourcesContent":["import { PropType, SlotsType, 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 { polyTransitionPropOptions } from '../../composables/transition';\nimport { getObjectValueByPath, omit } from '../../util/common';\nimport {\n bindClasses,\n chooseProps,\n propsFactory,\n} from '../../util/vue-component';\nimport { YButton } from '../button';\nimport { YCard } from '../card';\nimport { YIcon, YIconIconProp } from '../icon';\nimport { YList, YListItem } from '../list';\nimport { YMenu, YMenuPropOptions } from '../menu';\n\nimport './YDropdown.scss';\n\nexport const pressYDropdownPropsOptions = propsFactory(\n {\n ...omit(YMenuPropOptions, ['modelValue', 'coordinateStrategy']),\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 transition: {\n ...polyTransitionPropOptions.transition,\n default: 'fade',\n },\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 slots: Object as SlotsType<{\n base: any;\n default: any;\n 'dropdown-icon': any;\n menu: any;\n item: { text: string; item: any };\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={bindClasses([\n 'y-dropdown__content',\n props.contentClasses,\n ])}\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 {slots.item ? slots.item({ text, item }) : 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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"}
@@ -206,6 +206,10 @@ export const YFieldInput = defineComponent({
206
206
  "class": ['y-input__trailing']
207
207
  }, [slots.trailing()])]) : undefined,
208
208
  label: slots.label ? () => slots.label?.() : undefined,
209
+ prepend: slots.prepend ? () => slots.prepend?.() : undefined,
210
+ append: slots.append ? () => slots.append?.() : undefined,
211
+ 'leading-out': slots['leading-out'] ? () => slots['leading-out']?.() : undefined,
212
+ 'trailing-out': slots['trailing-out'] ? () => slots['trailing-out']?.() : undefined,
209
213
  'helper-text': slots['helper-text'] ? _ref2 => {
210
214
  let {
211
215
  error,
@@ -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","slots","Object","setup","_ref","attrs","expose","emit","yInput$","input$","focused","whenFocus","whenBlur","inValue","displayValue","inputType","classes","onClick","event","onFocus","value","onBlur","changeDisplay","onInput","target","onChange","onKeydown","onKeyup","onClickClear","clear","onKeydownClear","code","focus","select","vm","undefined","text","call","modelValue","neo","immediate","extended","validate","invokeValidators","onUpdateModel","_createVNode","_mergeProps","$event","leading","args","leadingChildren","slot","push","defaultProps","attrId","floating","createLabel","readonly","loading","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 {\n YInput,\n YInputDefaultSlotProps,\n pressYInputPropsOptions,\n} 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: YInputDefaultSlotProps;\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 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 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 }\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(\n inValue,\n (neo: string) => {\n if (!focused.value) {\n changeDisplay();\n } else {\n displayValue.value = neo;\n }\n },\n { immediate: true },\n );\n\n const extended = {\n focus,\n select,\n clear,\n };\n\n expose({\n ...extended,\n input$,\n validate: () => yInput$.value?.invokeValidators(),\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 focused={focused.value}\n extended={extended}\n onUpdate:modelValue={onUpdateModel}\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: YInputDefaultSlotProps) => (\n <div\n class={[`${NAME}__field`]}\n data-id={defaultProps.attrId}\n ref={'field'}\n >\n {props.floating ? yInput$.value?.createLabel?.() : 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.loading\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) =>\n 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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"}
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","onClick","event","onFocus","value","onBlur","changeDisplay","onInput","target","onChange","onKeydown","onKeyup","onClickClear","clear","onKeydownClear","code","focus","select","vm","undefined","text","call","modelValue","neo","immediate","extended","validate","invokeValidators","onUpdateModel","_createVNode","_mergeProps","$event","leading","args","leadingChildren","slot","push","defaultProps","attrId","floating","createLabel","readonly","loading","placeholder","disabled","autocomplete","maxlength","min","max","style","textAlign","trailing","_Fragment","label","prepend","append","_ref2","error","errorResult"],"sources":["../../../src/components/field-input/YFieldInput.tsx"],"sourcesContent":["import type { PropType, SlotsType } from 'vue';\nimport { computed, defineComponent, getCurrentInstance, nextTick, ref, toRef, watch } from 'vue';\n\n\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, YInputDefaultSlotProps, pressYInputPropsOptions } from '../input';\n\n\n\nimport './YFieldInput.scss';\n\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: YInputDefaultSlotProps;\n leading: { error: boolean };\n trailing: any;\n 'leading-out': any;\n 'trailing-out': 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 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 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 }\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(\n inValue,\n (neo: string) => {\n if (!focused.value) {\n changeDisplay();\n } else {\n displayValue.value = neo;\n }\n },\n { immediate: true },\n );\n\n const extended = {\n focus,\n select,\n clear,\n };\n\n expose({\n ...extended,\n input$,\n validate: () => yInput$.value?.invokeValidators(),\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 focused={focused.value}\n extended={extended}\n onUpdate:modelValue={onUpdateModel}\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: YInputDefaultSlotProps) => (\n <div\n class={[`${NAME}__field`]}\n data-id={defaultProps.attrId}\n ref={'field'}\n >\n {props.floating ? yInput$.value?.createLabel?.() : 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.loading\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 prepend: slots.prepend ? () => slots.prepend?.() : undefined,\n append: slots.append ? () => slots.append?.() : undefined,\n 'leading-out': slots['leading-out']\n ? () => slots['leading-out']?.()\n : undefined,\n 'trailing-out': slots['trailing-out']\n ? () => slots['trailing-out']?.()\n : undefined,\n 'helper-text': slots['helper-text']\n ? ({ error, errorResult }: any) =>\n 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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"}
@@ -5,7 +5,7 @@
5
5
 
6
6
  .y-input {
7
7
  &__display {
8
- padding: 0 2px;
8
+ padding: 0 1px;
9
9
  flex: 0 0 auto;
10
10
  }
11
11
 
@@ -1,5 +1,5 @@
1
1
  import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
- import { defineComponent } from 'vue';
2
+ import { defineComponent, ref, watch } from 'vue';
3
3
  import { useModelDuplex } from 'yuyeon/composables';
4
4
  import { useRender } from "../../composables/component.mjs";
5
5
  import { useDelay } from "../../composables/timing.mjs";
@@ -22,9 +22,11 @@ export const pressYHoverPropsOptions = propsFactory({
22
22
  export const YHover = defineComponent({
23
23
  name: 'YHover',
24
24
  props: pressYHoverPropsOptions(),
25
+ emits: ['update:modelValue', 'hover'],
25
26
  setup(props, _ref) {
26
27
  let {
27
- slots
28
+ slots,
29
+ emit
28
30
  } = _ref;
29
31
  const isHovering = useModelDuplex(props, 'modelValue');
30
32
  const {
@@ -33,14 +35,19 @@ export const YHover = defineComponent({
33
35
  } = useDelay(props, value => {
34
36
  !props.disabled && (isHovering.value = value);
35
37
  });
38
+ const defaultSlot = ref();
39
+ watch(isHovering, neo => {
40
+ emit('hover', neo, defaultSlot);
41
+ });
36
42
  useRender(() => {
37
- return _createVNode(_Fragment, null, [slots.default?.({
43
+ defaultSlot.value = slots.default?.({
38
44
  isHovering: isHovering.value,
39
45
  props: {
40
46
  onMouseenter: () => startOpenDelay(),
41
47
  onMouseleave: () => startCloseDelay()
42
48
  }
43
- })]);
49
+ });
50
+ return _createVNode(_Fragment, null, [defaultSlot.value]);
44
51
  });
45
52
  }
46
53
  });
@@ -1 +1 @@
1
- {"version":3,"file":"YHover.mjs","names":["defineComponent","useModelDuplex","useRender","useDelay","propsFactory","pressYHoverPropsOptions","disabled","Boolean","modelValue","type","default","undefined","openDelay","Number","closeDelay","YHover","name","props","setup","_ref","slots","isHovering","startOpenDelay","startCloseDelay","value","_createVNode","_Fragment","onMouseenter","onMouseleave"],"sources":["../../../src/components/hover/YHover.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\nimport { useModelDuplex } from 'yuyeon/composables';\n\nimport { useRender } from '../../composables/component';\nimport { useDelay } from '../../composables/timing';\nimport { propsFactory } from '../../util';\n\nexport const pressYHoverPropsOptions = propsFactory(\n {\n disabled: Boolean,\n modelValue: {\n type: Boolean,\n default: undefined,\n },\n openDelay: {\n type: Number,\n default: 100,\n },\n closeDelay: {\n type: Number,\n default: 100,\n },\n },\n 'YHover',\n);\n\nexport const YHover = defineComponent({\n name: 'YHover',\n props: pressYHoverPropsOptions(),\n setup(props, { slots }) {\n const isHovering = useModelDuplex(props, 'modelValue');\n const { startOpenDelay, startCloseDelay } = useDelay(\n props,\n (value: any) => {\n !props.disabled && (isHovering.value = value);\n },\n );\n\n useRender(() => {\n return (\n <>\n {slots.default?.({\n isHovering: isHovering.value,\n props: {\n onMouseenter: () => startOpenDelay(),\n onMouseleave: () => startCloseDelay(),\n },\n })}\n </>\n );\n });\n },\n});\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,KAAK;AACrC,SAASC,cAAc,QAAQ,oBAAoB;AAAC,SAE3CC,SAAS;AAAA,SACTC,QAAQ;AAAA,SACRC,YAAY;AAErB,OAAO,MAAMC,uBAAuB,GAAGD,YAAY,CACjD;EACEE,QAAQ,EAAEC,OAAO;EACjBC,UAAU,EAAE;IACVC,IAAI,EAAEF,OAAO;IACbG,OAAO,EAAEC;EACX,CAAC;EACDC,SAAS,EAAE;IACTH,IAAI,EAAEI,MAAM;IACZH,OAAO,EAAE;EACX,CAAC;EACDI,UAAU,EAAE;IACVL,IAAI,EAAEI,MAAM;IACZH,OAAO,EAAE;EACX;AACF,CAAC,EACD,QACF,CAAC;AAED,OAAO,MAAMK,MAAM,GAAGf,eAAe,CAAC;EACpCgB,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAEZ,uBAAuB,CAAC,CAAC;EAChCa,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpB,MAAME,UAAU,GAAGpB,cAAc,CAACgB,KAAK,EAAE,YAAY,CAAC;IACtD,MAAM;MAAEK,cAAc;MAAEC;IAAgB,CAAC,GAAGpB,QAAQ,CAClDc,KAAK,EACJO,KAAU,IAAK;MACd,CAACP,KAAK,CAACX,QAAQ,KAAKe,UAAU,CAACG,KAAK,GAAGA,KAAK,CAAC;IAC/C,CACF,CAAC;IAEDtB,SAAS,CAAC,MAAM;MACd,OAAAuB,YAAA,CAAAC,SAAA,SAEKN,KAAK,CAACV,OAAO,GAAG;QACfW,UAAU,EAAEA,UAAU,CAACG,KAAK;QAC5BP,KAAK,EAAE;UACLU,YAAY,EAAEA,CAAA,KAAML,cAAc,CAAC,CAAC;UACpCM,YAAY,EAAEA,CAAA,KAAML,eAAe,CAAC;QACtC;MACF,CAAC,CAAC;IAGR,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YHover.mjs","names":["defineComponent","ref","watch","useModelDuplex","useRender","useDelay","propsFactory","pressYHoverPropsOptions","disabled","Boolean","modelValue","type","default","undefined","openDelay","Number","closeDelay","YHover","name","props","emits","setup","_ref","slots","emit","isHovering","startOpenDelay","startCloseDelay","value","defaultSlot","neo","onMouseenter","onMouseleave","_createVNode","_Fragment"],"sources":["../../../src/components/hover/YHover.tsx"],"sourcesContent":["import { defineComponent, ref, watch } from 'vue';\nimport { useModelDuplex } from 'yuyeon/composables';\n\nimport { useRender } from '../../composables/component';\nimport { useDelay } from '../../composables/timing';\nimport { propsFactory } from '../../util';\n\nexport const pressYHoverPropsOptions = propsFactory(\n {\n disabled: Boolean,\n modelValue: {\n type: Boolean,\n default: undefined,\n },\n openDelay: {\n type: Number,\n default: 100,\n },\n closeDelay: {\n type: Number,\n default: 100,\n },\n },\n 'YHover',\n);\n\nexport const YHover = defineComponent({\n name: 'YHover',\n props: pressYHoverPropsOptions(),\n emits: ['update:modelValue', 'hover'],\n setup(props, { slots, emit }) {\n const isHovering = useModelDuplex(props, 'modelValue');\n const { startOpenDelay, startCloseDelay } = useDelay(\n props,\n (value: any) => {\n !props.disabled && (isHovering.value = value);\n },\n );\n\n const defaultSlot = ref<any>();\n\n watch(isHovering, (neo) => {\n emit('hover', neo, defaultSlot);\n });\n\n useRender(() => {\n defaultSlot.value = slots.default?.({\n isHovering: isHovering.value,\n props: {\n onMouseenter: () => startOpenDelay(),\n onMouseleave: () => startCloseDelay(),\n },\n });\n return <>{defaultSlot.value}</>;\n });\n },\n});\n\nexport type YHover = InstanceType<typeof YHover>;\n"],"mappings":";AAAA,SAASA,eAAe,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AACjD,SAASC,cAAc,QAAQ,oBAAoB;AAAC,SAE3CC,SAAS;AAAA,SACTC,QAAQ;AAAA,SACRC,YAAY;AAErB,OAAO,MAAMC,uBAAuB,GAAGD,YAAY,CACjD;EACEE,QAAQ,EAAEC,OAAO;EACjBC,UAAU,EAAE;IACVC,IAAI,EAAEF,OAAO;IACbG,OAAO,EAAEC;EACX,CAAC;EACDC,SAAS,EAAE;IACTH,IAAI,EAAEI,MAAM;IACZH,OAAO,EAAE;EACX,CAAC;EACDI,UAAU,EAAE;IACVL,IAAI,EAAEI,MAAM;IACZH,OAAO,EAAE;EACX;AACF,CAAC,EACD,QACF,CAAC;AAED,OAAO,MAAMK,MAAM,GAAGjB,eAAe,CAAC;EACpCkB,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAEZ,uBAAuB,CAAC,CAAC;EAChCa,KAAK,EAAE,CAAC,mBAAmB,EAAE,OAAO,CAAC;EACrCC,KAAKA,CAACF,KAAK,EAAAG,IAAA,EAAmB;IAAA,IAAjB;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAF,IAAA;IAC1B,MAAMG,UAAU,GAAGtB,cAAc,CAACgB,KAAK,EAAE,YAAY,CAAC;IACtD,MAAM;MAAEO,cAAc;MAAEC;IAAgB,CAAC,GAAGtB,QAAQ,CAClDc,KAAK,EACJS,KAAU,IAAK;MACd,CAACT,KAAK,CAACX,QAAQ,KAAKiB,UAAU,CAACG,KAAK,GAAGA,KAAK,CAAC;IAC/C,CACF,CAAC;IAED,MAAMC,WAAW,GAAG5B,GAAG,CAAM,CAAC;IAE9BC,KAAK,CAACuB,UAAU,EAAGK,GAAG,IAAK;MACzBN,IAAI,CAAC,OAAO,EAAEM,GAAG,EAAED,WAAW,CAAC;IACjC,CAAC,CAAC;IAEFzB,SAAS,CAAC,MAAM;MACdyB,WAAW,CAACD,KAAK,GAAGL,KAAK,CAACX,OAAO,GAAG;QAClCa,UAAU,EAAEA,UAAU,CAACG,KAAK;QAC5BT,KAAK,EAAE;UACLY,YAAY,EAAEA,CAAA,KAAML,cAAc,CAAC,CAAC;UACpCM,YAAY,EAAEA,CAAA,KAAML,eAAe,CAAC;QACtC;MACF,CAAC,CAAC;MACF,OAAAM,YAAA,CAAAC,SAAA,SAAUL,WAAW,CAACD,KAAK;IAC7B,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./YHover.mjs";
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/hover/index.ts"],"sourcesContent":["export * from './YHover';\r\n"],"mappings":""}
@@ -30,4 +30,7 @@ export * from "./divider/index.mjs";
30
30
  export * from "./date-picker/index.mjs";
31
31
  export * from "./icon/index.mjs";
32
32
  export * from "./badge/index.mjs";
33
+ export * from "./text-ellipsis/index.mjs";
34
+ export * from "./ip-field/index.mjs";
35
+ export * from "./hover/index.mjs";
33
36
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/components/index.ts"],"sourcesContent":["export * from './app';\nexport * from './button';\nexport * from './input';\nexport * from './field-input';\nexport * from './textarea';\nexport * from './form';\nexport * from './progress-bar';\nexport * from './card';\nexport * from './chip';\nexport * from './switch';\nexport * from './layer';\nexport * from './dialog';\nexport * from './snackbar';\nexport * from './tooltip';\nexport * from './transitions';\nexport * from './panel';\nexport * from './tree-view';\nexport * from './list';\nexport * from './icons';\nexport * from './table';\nexport * from './menu';\nexport * from './checkbox';\nexport * from './pagination';\nexport * from './loading';\nexport * from './dropdown';\nexport * from './select';\nexport * from './tab';\nexport * from './alert';\nexport * from './divider';\nexport * from './date-picker';\nexport * from './icon';\nexport * from './badge';\n"],"mappings":""}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/components/index.ts"],"sourcesContent":["export * from './app';\nexport * from './button';\nexport * from './input';\nexport * from './field-input';\nexport * from './textarea';\nexport * from './form';\nexport * from './progress-bar';\nexport * from './card';\nexport * from './chip';\nexport * from './switch';\nexport * from './layer';\nexport * from './dialog';\nexport * from './snackbar';\nexport * from './tooltip';\nexport * from './transitions';\nexport * from './panel';\nexport * from './tree-view';\nexport * from './list';\nexport * from './icons';\nexport * from './table';\nexport * from './menu';\nexport * from './checkbox';\nexport * from './pagination';\nexport * from './loading';\nexport * from './dropdown';\nexport * from './select';\nexport * from './tab';\nexport * from './alert';\nexport * from './divider';\nexport * from './date-picker';\nexport * from './icon';\nexport * from './badge';\nexport * from './text-ellipsis';\nexport * from './ip-field';\nexport * from './hover';\n"],"mappings":""}
@@ -196,12 +196,12 @@ export const YInput = defineComponent({
196
196
  "class": [`${NAME}`, {
197
197
  ...classes.value
198
198
  }]
199
- }, [slots.prepend ? () => _createVNode("div", {
199
+ }, [slots.prepend && _createVNode("div", {
200
200
  "class": `${NAME}__prepend`
201
- }, [_createTextVNode("slots.prepend()")]) : undefined, _createVNode("div", {
201
+ }, [slots.prepend()]), _createVNode("div", {
202
202
  "ref": stack$,
203
203
  "class": [`${NAME}__stack`]
204
- }, [!props.floating && createLabel(), _createVNode("div", {
204
+ }, [!props.floating && createLabel(), slots['leading-out'] && slots['leading-out'](), _createVNode("div", {
205
205
  "ref": display$,
206
206
  "class": `${NAME}__display`,
207
207
  "style": [{
@@ -227,15 +227,15 @@ export const YInput = defineComponent({
227
227
  "tabindex": 0,
228
228
  "onFocus": onFocus,
229
229
  "onBlur": onBlur
230
- }, [props.floating && createLabel(), props.modelValue?.toString()]), slots.trailing?.()]), _createVNode("div", {
230
+ }, [props.floating && createLabel(), props.modelValue?.toString()]), slots.trailing?.()]), slots['trailing-out'] && slots['trailing-out'](), _createVNode("div", {
231
231
  "class": `${NAME}__helper-text`
232
232
  }, [slots['helper-text'] ? _createVNode("span", null, [slots['helper-text']({
233
233
  error: isError.value,
234
234
  errors: errors.value,
235
235
  errorResult: errorResult.value
236
- })]) : props.helperText ?? errorResult.value])]), slots.append ? () => _createVNode("div", {
236
+ })]) : props.helperText ?? errorResult.value])]), slots.append && _createVNode("div", {
237
237
  "class": `${NAME}__append`
238
- }, [_createTextVNode("slots.append()")]) : undefined]);
238
+ }, [slots.append()])]);
239
239
  });
240
240
  return {
241
241
  ...(props.extended ?? {}),