yuyeon 0.0.41 → 0.0.42-rc10

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 (179) hide show
  1. package/dist/style.css +1 -1
  2. package/dist/yuyeon.js +5157 -3010
  3. package/dist/yuyeon.umd.cjs +8 -4
  4. package/lib/components/button/YButton.scss +2 -1
  5. package/lib/components/date-picker/YDateCalendar.mjs +235 -5
  6. package/lib/components/date-picker/YDateCalendar.mjs.map +1 -1
  7. package/lib/components/date-picker/YDateCalendar.scss +82 -0
  8. package/lib/components/date-picker/YDatePicker.mjs.map +1 -1
  9. package/lib/components/date-picker/YDatePickerControl.mjs +29 -0
  10. package/lib/components/date-picker/YDatePickerControl.mjs.map +1 -0
  11. package/lib/components/date-picker/YDatePickerControl.scss +3 -0
  12. package/lib/components/date-picker/index.mjs +1 -1
  13. package/lib/components/date-picker/index.mjs.map +1 -1
  14. package/lib/components/divider/YDivider.mjs +4 -2
  15. package/lib/components/divider/YDivider.mjs.map +1 -1
  16. package/lib/components/dropdown/YDropdown.mjs +11 -5
  17. package/lib/components/dropdown/YDropdown.mjs.map +1 -1
  18. package/lib/components/dropdown/YDropdown.scss +3 -8
  19. package/lib/components/field-input/YFieldInput.mjs +10 -10
  20. package/lib/components/field-input/YFieldInput.mjs.map +1 -1
  21. package/lib/components/icon/YIcon.mjs +62 -0
  22. package/lib/components/icon/YIcon.mjs.map +1 -0
  23. package/lib/components/icon/YIcon.scss +18 -0
  24. package/lib/components/icon/index.mjs +2 -0
  25. package/lib/components/icon/index.mjs.map +1 -0
  26. package/lib/components/icon/poly.mjs +57 -0
  27. package/lib/components/icon/poly.mjs.map +1 -0
  28. package/lib/components/icons/index.mjs +14 -0
  29. package/lib/components/icons/index.mjs.map +1 -1
  30. package/lib/components/index.mjs +3 -0
  31. package/lib/components/index.mjs.map +1 -1
  32. package/lib/components/input/YInput.mjs +1 -0
  33. package/lib/components/input/YInput.mjs.map +1 -1
  34. package/lib/components/input/index.mjs.map +1 -1
  35. package/lib/components/layer/YLayer.mjs +2 -0
  36. package/lib/components/layer/YLayer.mjs.map +1 -1
  37. package/lib/components/layer/active-stack.mjs.map +1 -1
  38. package/lib/components/list/YList.mjs.map +1 -1
  39. package/lib/components/menu/YMenu.mjs +14 -2
  40. package/lib/components/menu/YMenu.mjs.map +1 -1
  41. package/lib/components/select/YSelect.mjs +9 -6
  42. package/lib/components/select/YSelect.mjs.map +1 -1
  43. package/lib/components/select/YSelect.scss +3 -8
  44. package/lib/components/switch/YSwitch.mjs +2 -0
  45. package/lib/components/switch/YSwitch.mjs.map +1 -1
  46. package/lib/components/tab/types.mjs.map +1 -1
  47. package/lib/components/table/composibles/pagination.mjs.map +1 -1
  48. package/lib/components/textarea/YTextarea.mjs +159 -0
  49. package/lib/components/textarea/YTextarea.mjs.map +1 -0
  50. package/lib/components/textarea/YTextarea.scss +25 -0
  51. package/lib/components/textarea/index.mjs +2 -0
  52. package/lib/components/textarea/index.mjs.map +1 -0
  53. package/lib/components/tooltip/YTooltip.mjs +2 -2
  54. package/lib/components/tooltip/YTooltip.mjs.map +1 -1
  55. package/lib/components/tree-view/YTreeView.mjs +5 -0
  56. package/lib/components/tree-view/YTreeView.mjs.map +1 -1
  57. package/lib/components/tree-view/YTreeViewNode.mjs +1 -0
  58. package/lib/components/tree-view/YTreeViewNode.mjs.map +1 -1
  59. package/lib/composables/communication.mjs +9 -0
  60. package/lib/composables/communication.mjs.map +1 -1
  61. package/lib/composables/date/factory.mjs +12 -0
  62. package/lib/composables/date/factory.mjs.map +1 -0
  63. package/lib/composables/date/index.mjs +19 -1
  64. package/lib/composables/date/index.mjs.map +1 -1
  65. package/lib/composables/date/setting.mjs +11 -0
  66. package/lib/composables/date/setting.mjs.map +1 -0
  67. package/lib/composables/date/types.mjs +1 -1
  68. package/lib/composables/date/types.mjs.map +1 -1
  69. package/lib/composables/i18n/index.mjs +30 -0
  70. package/lib/composables/i18n/index.mjs.map +1 -0
  71. package/lib/composables/i18n/locale.mjs +5 -0
  72. package/lib/composables/i18n/locale.mjs.map +1 -0
  73. package/lib/composables/i18n/rtl.mjs +34 -0
  74. package/lib/composables/i18n/rtl.mjs.map +1 -0
  75. package/lib/composables/i18n/share.mjs +2 -0
  76. package/lib/composables/i18n/share.mjs.map +1 -0
  77. package/lib/composables/icon.mjs +141 -0
  78. package/lib/composables/icon.mjs.map +1 -1
  79. package/lib/composables/index.mjs +1 -0
  80. package/lib/composables/index.mjs.map +1 -1
  81. package/lib/composables/theme/index.mjs.map +1 -1
  82. package/lib/composables/transition.mjs.map +1 -1
  83. package/lib/i18n/built-in.mjs +77 -0
  84. package/lib/i18n/built-in.mjs.map +1 -0
  85. package/lib/i18n/config.mjs +82 -0
  86. package/lib/i18n/config.mjs.map +1 -0
  87. package/lib/i18n/types.mjs +2 -0
  88. package/lib/i18n/types.mjs.map +1 -0
  89. package/lib/index.mjs +24 -5
  90. package/lib/index.mjs.map +1 -1
  91. package/lib/locales/en.mjs +4 -0
  92. package/lib/locales/en.mjs.map +1 -0
  93. package/lib/locales/index.mjs +3 -0
  94. package/lib/locales/index.mjs.map +1 -0
  95. package/lib/locales/ko.mjs +4 -0
  96. package/lib/locales/ko.mjs.map +1 -0
  97. package/lib/styles/util/_mixin.scss +34 -0
  98. package/lib/types/index.mjs.map +1 -1
  99. package/lib/util/date/adapters/yuyeon-date-adapter.mjs +99 -0
  100. package/lib/util/date/adapters/yuyeon-date-adapter.mjs.map +1 -0
  101. package/lib/util/date/built-in.mjs +18 -104
  102. package/lib/util/date/built-in.mjs.map +1 -1
  103. package/lib/util/date/index.mjs +1 -0
  104. package/lib/util/date/index.mjs.map +1 -1
  105. package/lib/util/date/types.mjs.map +1 -1
  106. package/lib/util/index.mjs +1 -0
  107. package/lib/util/index.mjs.map +1 -1
  108. package/package.json +7 -5
  109. package/types/abstract/items.d.ts +4 -4
  110. package/types/components/button/YButton.d.ts +10 -10
  111. package/types/components/checkbox/YInputCheckbox.d.ts +2 -2
  112. package/types/components/date-picker/YDateCalendar.d.ts +136 -0
  113. package/types/components/date-picker/index.d.ts +1 -0
  114. package/types/components/dialog/YDialog.d.ts +3 -2
  115. package/types/components/dropdown/YDropdown.d.ts +34 -13
  116. package/types/components/field-input/YFieldInput.d.ts +10 -10
  117. package/types/components/form/YForm.d.ts +1 -1
  118. package/types/components/icon/YIcon.d.ts +81 -0
  119. package/types/components/icon/index.d.ts +1 -0
  120. package/types/components/icons/YIconCheckbox.d.ts +2 -2
  121. package/types/components/icons/YIconSort.d.ts +2 -2
  122. package/types/components/icons/index.d.ts +48 -0
  123. package/types/components/index.d.ts +3 -0
  124. package/types/components/input/YInput.d.ts +28 -11
  125. package/types/components/layer/YLayer.d.ts +23 -22
  126. package/types/components/layer/active-stack.d.ts +1 -2
  127. package/types/components/list/YList.d.ts +3 -3
  128. package/types/components/list/YListItem.d.ts +5 -5
  129. package/types/components/menu/YMenu.d.ts +13 -8
  130. package/types/components/pagination/YPagination.d.ts +5 -5
  131. package/types/components/progress-bar/YProgressBar.d.ts +1 -1
  132. package/types/components/select/YSelect.d.ts +80 -64
  133. package/types/components/switch/YSwitch.d.ts +1 -1
  134. package/types/components/tab/YTab.d.ts +15 -15
  135. package/types/components/tab/YTabs.d.ts +5 -5
  136. package/types/components/tab/types.d.ts +1 -0
  137. package/types/components/table/YDataTable.d.ts +18 -18
  138. package/types/components/table/YDataTableBody.d.ts +5 -5
  139. package/types/components/table/YDataTableControl.d.ts +2 -2
  140. package/types/components/table/YDataTableHead.d.ts +2 -2
  141. package/types/components/table/YDataTableServer.d.ts +21 -21
  142. package/types/components/table/YTable.d.ts +4 -4
  143. package/types/components/table/composibles/header.d.ts +1 -1
  144. package/types/components/table/composibles/items.d.ts +3 -3
  145. package/types/components/table/composibles/pagination.d.ts +2 -2
  146. package/types/components/table/composibles/selection.d.ts +2 -2
  147. package/types/components/table/composibles/sorting.d.ts +1 -1
  148. package/types/components/textarea/YTextarea.d.ts +737 -0
  149. package/types/components/textarea/index.d.ts +1 -0
  150. package/types/components/tooltip/YTooltip.d.ts +13 -12
  151. package/types/components/tree-view/YTreeView.d.ts +7 -4
  152. package/types/components/tree-view/YTreeViewNode.d.ts +17 -9
  153. package/types/composables/choice.d.ts +1 -1
  154. package/types/composables/communication.d.ts +2 -0
  155. package/types/composables/coordinate/index.d.ts +6 -6
  156. package/types/composables/date/factory.d.ts +2 -0
  157. package/types/composables/date/index.d.ts +11 -0
  158. package/types/composables/date/setting.d.ts +4 -0
  159. package/types/composables/date/types.d.ts +12 -0
  160. package/types/composables/i18n/index.d.ts +8 -0
  161. package/types/composables/i18n/locale.d.ts +2 -0
  162. package/types/composables/i18n/rtl.d.ts +20 -0
  163. package/types/composables/i18n/share.d.ts +1 -0
  164. package/types/composables/icon.d.ts +96 -0
  165. package/types/composables/index.d.ts +2 -0
  166. package/types/composables/list-items.d.ts +10 -10
  167. package/types/composables/theme/index.d.ts +5 -5
  168. package/types/globals.d.ts +12 -7
  169. package/types/i18n/built-in.d.ts +2 -0
  170. package/types/i18n/config.d.ts +81 -0
  171. package/types/i18n/types.d.ts +19 -0
  172. package/types/locales/en.d.ts +4 -0
  173. package/types/shims.d.ts +88 -83
  174. package/types/types/index.d.ts +5 -0
  175. package/types/util/date/adapters/yuyeon-date-adapter.d.ts +38 -0
  176. package/types/util/date/built-in.d.ts +35 -0
  177. package/types/util/date/index.d.ts +3 -0
  178. package/types/util/date/types.d.ts +163 -0
  179. package/types/util/index.d.ts +1 -0
@@ -8,6 +8,7 @@ $button-disabled-background: #d3d3d3 !default;
8
8
  .y-button {
9
9
  --y-button__color: var(--y-theme-primary);
10
10
  --y-button__text-color: var(--y-theme-on-primary);
11
+ --y-button__disabled-background: #{$button-disabled-background};
11
12
 
12
13
  cursor: pointer;
13
14
  display: inline-flex;
@@ -57,7 +58,7 @@ $button-disabled-background: #d3d3d3 !default;
57
58
 
58
59
  &:disabled,
59
60
  &--disabled {
60
- background-color: $button-disabled-background;
61
+ background-color: var(--y-button__disabled-background);
61
62
  opacity: 0.4;
62
63
  cursor: default;
63
64
  box-shadow: none;
@@ -1,12 +1,242 @@
1
- import { createVNode as _createVNode } from "vue";
2
- import { defineComponent } from 'vue';
1
+ import { mergeProps as _mergeProps, Fragment as _Fragment, createVNode as _createVNode } from "vue";
2
+ import { computed, defineComponent, ref } from 'vue';
3
+ import { useModelDuplex } from "../../composables/communication.mjs";
3
4
  import { useRender } from "../../composables/component.mjs";
5
+ import { useDate } from "../../composables/date/index.mjs";
6
+ import { useI18n } from "../../composables/i18n/index.mjs";
7
+ import { wrapInArray } from "../../util/index.mjs";
8
+ import { propsFactory } from "../../util/vue-component.mjs";
9
+ import { YButton } from "../button/index.mjs";
10
+ import "./YDateCalendar.scss";
11
+ export const pressYDateCalendarPropsOptions = propsFactory({
12
+ year: [Number, String],
13
+ month: [Number, String],
14
+ modelValue: Array,
15
+ multiple: Boolean,
16
+ range: Boolean,
17
+ allowedDates: [Array, Function],
18
+ max: null,
19
+ min: null,
20
+ disabled: Boolean,
21
+ color: String,
22
+ hideWeekdays: Boolean,
23
+ showAdjacentMonthDates: {
24
+ type: Boolean,
25
+ default: true
26
+ },
27
+ hideHeader: Boolean
28
+ }, 'YDateCalendar');
4
29
  export const YDateCalendar = defineComponent({
5
30
  name: 'YDateCalendar',
6
- setup() {
7
- useRender(() => {
8
- return _createVNode("div", null, null);
31
+ props: pressYDateCalendarPropsOptions(),
32
+ emits: {
33
+ 'update:modelValue': date => true,
34
+ 'update:year': date => true,
35
+ 'update:month': date => true
36
+ },
37
+ setup(props, _ref) {
38
+ let {
39
+ slots
40
+ } = _ref;
41
+ const dateUtil = useDate();
42
+ const i18n = useI18n();
43
+ const container$ = ref();
44
+ const day$ = ref([]);
45
+ const model = useModelDuplex(props, 'modelValue', [], v => wrapInArray(v));
46
+ const displayValue = computed(() => {
47
+ if (model.value.length > 0) return dateUtil.date(model.value[0]);
48
+ if (props.min) return dateUtil.date(props.min);
49
+ if (Array.isArray(props.allowedDates)) {
50
+ return dateUtil.date(props.allowedDates[0]);
51
+ }
52
+ return dateUtil.date();
9
53
  });
54
+ const year = useModelDuplex(props, 'year', undefined, v => {
55
+ const value = v != null ? Number(v) : dateUtil.getYear(displayValue.value);
56
+ return dateUtil.startOfYear(dateUtil.setYear(dateUtil.date(), value));
57
+ }, v => dateUtil.getYear(v));
58
+ const month = useModelDuplex(props, 'month', undefined, v => {
59
+ const value = v != null ? Number(v) : dateUtil.getMonth(displayValue.value);
60
+ const date = dateUtil.setYear(dateUtil.date(), dateUtil.getYear(year.value));
61
+ return dateUtil.setMonth(date, value);
62
+ }, v => dateUtil.getMonth(v));
63
+ const weeksInMonth = computed(() => {
64
+ const weeks = dateUtil.getWeekArray(month.value);
65
+ const days = weeks.flat();
66
+ const daysInMonth = 6 * 7;
67
+ if (days.length < daysInMonth) {
68
+ const lastDay = days[days.length - 1];
69
+ let week = [];
70
+ for (let day = 1; day <= daysInMonth - days.length; day++) {
71
+ week.push(dateUtil.addDays(lastDay, day));
72
+ if (day % 7 === 0) {
73
+ weeks.push(week);
74
+ week = [];
75
+ }
76
+ }
77
+ }
78
+ return weeks;
79
+ });
80
+ const daysInMonth = computed(() => {
81
+ const weeks = weeksInMonth.value;
82
+ const today = dateUtil.date();
83
+ return weeks.map((days, weekIndex) => days.map((date, index) => {
84
+ const isoDate = dateUtil.toISO(date);
85
+ const adjacent = !dateUtil.isSameMonth(date, month.value);
86
+ const selected = model.value.some(value => dateUtil.isSameDay(date, value));
87
+ return {
88
+ date,
89
+ isoDate,
90
+ formatted: dateUtil.format(date, 'keyboardDate'),
91
+ year: dateUtil.getYear(date),
92
+ month: dateUtil.getMonth(date),
93
+ day: dateUtil.getDay(date),
94
+ disabled: isDisabled(date),
95
+ weekStart: index % 7 === 0,
96
+ weekEnd: index % 7 === 6,
97
+ rangeStart: selected && model.value.length > 1 && dateUtil.isSameDay(rangeStart.value, date),
98
+ rangeEnd: selected && model.value.length === 2 && dateUtil.isSameDay(rangeEnd.value, date),
99
+ weekIndex,
100
+ selected,
101
+ interval: isInterval(date),
102
+ today: dateUtil.isSameDay(date, today),
103
+ adjacent,
104
+ hidden: adjacent && !props.showAdjacentMonthDates,
105
+ hovered: false,
106
+ localized: dateUtil.format(date, 'dayOfMonth')
107
+ };
108
+ }));
109
+ });
110
+ const weekDays = computed(() => {
111
+ return i18n.locale && dateUtil.getWeekdays();
112
+ });
113
+ const displayYearMonth = computed(() => {
114
+ return dateUtil.format(month.value, 'monthAndYear');
115
+ });
116
+ const rangeStart = computed(() => {
117
+ if (props.range && model.value?.[0]) {
118
+ return model.value[0];
119
+ }
120
+ });
121
+ const rangeEnd = computed(() => {
122
+ if (props.range && model.value?.[1]) {
123
+ return model.value[1];
124
+ }
125
+ });
126
+ function isDisabled(value) {
127
+ if (props.disabled) return true;
128
+ const date = dateUtil.date(value);
129
+ if (props.min && dateUtil.isAfter(dateUtil.date(props.min), date)) return true;
130
+ if (props.max && dateUtil.isAfter(date, dateUtil.date(props.max))) return true;
131
+ if (Array.isArray(props.allowedDates) && props.allowedDates.length > 0) {
132
+ return !props.allowedDates.some(d => dateUtil.isSameDay(dateUtil.date(d), date));
133
+ }
134
+ if (typeof props.allowedDates === 'function') {
135
+ return !props.allowedDates(date);
136
+ }
137
+ return false;
138
+ }
139
+ function isInterval(value) {
140
+ if (!props.range) return false;
141
+ if (model.value.length === 2) {
142
+ const date = dateUtil.date(value);
143
+ const startDate = dateUtil.date(model.value[0]);
144
+ const endDate = dateUtil.date(model.value[1]);
145
+ if (dateUtil.isAfter(date, startDate) && dateUtil.isBefore(date, endDate)) {
146
+ return true;
147
+ }
148
+ }
149
+ return false;
150
+ }
151
+ function onClickDay(item) {
152
+ const value = item.date;
153
+ if (props.multiple) {
154
+ const index = model.value.findIndex(selection => dateUtil.isSameDay(selection, value));
155
+ if (props.range) {
156
+ if (model.value.length === 1) {
157
+ const firstDate = dateUtil.date(model.value[0]);
158
+ const date = dateUtil.date(value);
159
+ if (dateUtil.isAfter(firstDate, date)) {
160
+ model.value = [date, dateUtil.endOfDay(model.value[0])];
161
+ } else {
162
+ model.value = [dateUtil.startOfDay(model.value[0]), dateUtil.endOfDay(value)];
163
+ }
164
+ } else {
165
+ model.value = [value];
166
+ }
167
+ } else {
168
+ if (index === -1) {
169
+ model.value = [...model.value, value];
170
+ } else {
171
+ const change = [...model.value];
172
+ change.splice(index, 1);
173
+ model.value = change;
174
+ }
175
+ }
176
+ } else {
177
+ model.value = [value];
178
+ }
179
+ }
180
+ useRender(() => _createVNode("div", {
181
+ "class": ['y-date-calendar', {
182
+ 'y-date-calendar--range': props.range && model.value.length === 2
183
+ }]
184
+ }, [!props.hideHeader && _createVNode("header", {
185
+ "class": "y-date-calendar__header"
186
+ }, [slots.header ? slots.header() : displayYearMonth.value]), _createVNode("div", {
187
+ "ref": container$,
188
+ "class": ['y-date-calendar__container']
189
+ }, [!props.hideWeekdays && _createVNode("div", {
190
+ "class": ['y-date-calendar__week']
191
+ }, [weekDays.value.map(weekDay => _createVNode("div", {
192
+ "class": ['y-date-calendar__cell', 'y-date-calendar__weekday']
193
+ }, [weekDay]))]), daysInMonth.value.map((week, i) => {
194
+ return _createVNode("div", {
195
+ "class": ['y-date-calendar__week'],
196
+ "role": "row",
197
+ "aria-rowindex": i
198
+ }, [week.map((item, index) => {
199
+ const slotProps = {
200
+ props: {
201
+ onClick: () => {
202
+ onClickDay(item);
203
+ }
204
+ },
205
+ item,
206
+ index
207
+ };
208
+ return _createVNode("div", {
209
+ "class": ['y-date-calendar__cell', 'y-date-calendar__day', {
210
+ 'y-date-calendar__day--adjacent': item.adjacent,
211
+ 'y-date-calendar__day--hovered': item.hovered,
212
+ 'y-date-calendar__day--selected': item.selected,
213
+ 'y-date-calendar__day--week-start': item.weekStart,
214
+ 'y-date-calendar__day--week-end': item.weekEnd,
215
+ 'y-date-calendar__day--range-interval': item.interval,
216
+ 'y-date-calendar__day--range-start': item.rangeStart,
217
+ 'y-date-calendar__day--range-end': item.rangeEnd
218
+ }],
219
+ "data-date": !item.disabled ? item.isoDate : undefined
220
+ }, [(props.showAdjacentMonthDates || !item.adjacent) && _createVNode(_Fragment, null, [slots.day?.(slotProps) ?? _createVNode(YButton, _mergeProps({
221
+ "color": (item.selected || item.today) && !item.disabled ? props.color : undefined,
222
+ "disabled": item.disabled,
223
+ "variation": ['icon', item.selected ? 'filled' : item.today ? 'outlined' : 'text'].join(',')
224
+ }, slotProps.props), {
225
+ default: () => [item.day]
226
+ })])]);
227
+ })]);
228
+ })])]));
229
+ return {
230
+ day$,
231
+ container$,
232
+ dateUtil,
233
+ displayValue,
234
+ month,
235
+ year,
236
+ rangeStart,
237
+ rangeEnd,
238
+ model
239
+ };
10
240
  }
11
241
  });
12
242
  //# sourceMappingURL=YDateCalendar.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"YDateCalendar.mjs","names":["defineComponent","useRender","YDateCalendar","name","setup","_createVNode"],"sources":["../../../src/components/date-picker/YDateCalendar.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\n\nimport { useRender } from '../../composables/component';\n\nexport const YDateCalendar = defineComponent({\n name: 'YDateCalendar',\n setup() {\n useRender(() => {\n return <div></div>;\n });\n },\n});\n\nexport type YDateCalendar = InstanceType<typeof YDateCalendar>;\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,KAAK;AAAC,SAE7BC,SAAS;AAElB,OAAO,MAAMC,aAAa,GAAGF,eAAe,CAAC;EAC3CG,IAAI,EAAE,eAAe;EACrBC,KAAKA,CAAA,EAAG;IACNH,SAAS,CAAC,MAAM;MACd,OAAAI,YAAA;IACF,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDateCalendar.mjs","names":["computed","defineComponent","ref","useModelDuplex","useRender","useDate","useI18n","wrapInArray","propsFactory","YButton","pressYDateCalendarPropsOptions","year","Number","String","month","modelValue","Array","multiple","Boolean","range","allowedDates","Function","max","min","disabled","color","hideWeekdays","showAdjacentMonthDates","type","default","hideHeader","YDateCalendar","name","props","emits","date","setup","_ref","slots","dateUtil","i18n","container$","day$","model","v","displayValue","value","length","isArray","undefined","getYear","startOfYear","setYear","getMonth","setMonth","weeksInMonth","weeks","getWeekArray","days","flat","daysInMonth","lastDay","week","day","push","addDays","today","map","weekIndex","index","isoDate","toISO","adjacent","isSameMonth","selected","some","isSameDay","formatted","format","getDay","isDisabled","weekStart","weekEnd","rangeStart","rangeEnd","interval","isInterval","hidden","hovered","localized","weekDays","locale","getWeekdays","displayYearMonth","isAfter","d","startDate","endDate","isBefore","onClickDay","item","findIndex","selection","firstDate","endOfDay","startOfDay","change","splice","_createVNode","header","weekDay","i","slotProps","onClick","_Fragment","_mergeProps","join"],"sources":["../../../src/components/date-picker/YDateCalendar.tsx"],"sourcesContent":["import { computed, defineComponent, ref } from 'vue';\r\nimport type { PropType } from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { useDate } from '../../composables/date';\r\nimport { useI18n } from '../../composables/i18n';\r\nimport { wrapInArray } from '../../util';\r\nimport { propsFactory } from '../../util/vue-component';\r\nimport { YButton } from '../button';\r\n\r\nimport './YDateCalendar.scss';\r\n\r\nexport const pressYDateCalendarPropsOptions = propsFactory(\r\n {\r\n year: [Number, String],\r\n month: [Number, String],\r\n modelValue: Array as PropType<unknown[]>,\r\n multiple: Boolean,\r\n range: Boolean,\r\n allowedDates: [Array, Function],\r\n max: null as any as PropType<unknown>,\r\n min: null as any as PropType<unknown>,\r\n disabled: Boolean,\r\n color: String,\r\n hideWeekdays: Boolean,\r\n showAdjacentMonthDates: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n hideHeader: Boolean,\r\n },\r\n 'YDateCalendar',\r\n);\r\n\r\nexport const YDateCalendar = defineComponent({\r\n name: 'YDateCalendar',\r\n props: pressYDateCalendarPropsOptions(),\r\n emits: {\r\n 'update:modelValue': (date: any) => true,\r\n 'update:year': (date: any) => true,\r\n 'update:month': (date: any) => true,\r\n },\r\n setup(props, { slots }) {\r\n const dateUtil = useDate();\r\n const i18n = useI18n();\r\n const container$ = ref();\r\n const day$ = ref([]);\r\n\r\n const model = useModelDuplex(props, 'modelValue', [], (v) =>\r\n wrapInArray(v),\r\n );\r\n\r\n const displayValue = computed(() => {\r\n if (model.value.length > 0) return dateUtil.date(model.value[0]);\r\n if (props.min) return dateUtil.date(props.min);\r\n if (Array.isArray(props.allowedDates)) {\r\n return dateUtil.date(props.allowedDates[0]);\r\n }\r\n\r\n return dateUtil.date();\r\n });\r\n\r\n const year = useModelDuplex(\r\n props,\r\n 'year',\r\n undefined,\r\n (v) => {\r\n const value =\r\n v != null ? Number(v) : dateUtil.getYear(displayValue.value);\r\n\r\n return dateUtil.startOfYear(dateUtil.setYear(dateUtil.date(), value));\r\n },\r\n (v) => dateUtil.getYear(v),\r\n );\r\n\r\n const month = useModelDuplex(\r\n props,\r\n 'month',\r\n undefined,\r\n (v) => {\r\n const value =\r\n v != null ? Number(v) : dateUtil.getMonth(displayValue.value);\r\n const date = dateUtil.setYear(\r\n dateUtil.date(),\r\n dateUtil.getYear(year.value),\r\n );\r\n\r\n return dateUtil.setMonth(date, value);\r\n },\r\n (v) => dateUtil.getMonth(v),\r\n );\r\n\r\n const weeksInMonth = computed(() => {\r\n const weeks = dateUtil.getWeekArray(month.value);\r\n const days = weeks.flat();\r\n\r\n const daysInMonth = 6 * 7;\r\n if (days.length < daysInMonth) {\r\n const lastDay = days[days.length - 1];\r\n\r\n let week = [];\r\n for (let day = 1; day <= daysInMonth - days.length; day++) {\r\n week.push(dateUtil.addDays(lastDay, day));\r\n\r\n if (day % 7 === 0) {\r\n weeks.push(week);\r\n week = [];\r\n }\r\n }\r\n }\r\n\r\n return weeks;\r\n });\r\n\r\n const daysInMonth = computed(() => {\r\n const weeks = weeksInMonth.value;\r\n const today = dateUtil.date();\r\n\r\n return weeks.map((days, weekIndex) =>\r\n days.map((date, index) => {\r\n const isoDate = dateUtil.toISO(date);\r\n const adjacent = !dateUtil.isSameMonth(date, month.value);\r\n const selected = model.value.some((value: unknown) =>\r\n dateUtil.isSameDay(date, value),\r\n );\r\n return {\r\n date,\r\n isoDate,\r\n formatted: dateUtil.format(date, 'keyboardDate'),\r\n year: dateUtil.getYear(date),\r\n month: dateUtil.getMonth(date),\r\n day: dateUtil.getDay(date),\r\n disabled: isDisabled(date),\r\n weekStart: index % 7 === 0,\r\n weekEnd: index % 7 === 6,\r\n rangeStart:\r\n selected &&\r\n model.value.length > 1 &&\r\n dateUtil.isSameDay(rangeStart.value, date),\r\n rangeEnd:\r\n selected &&\r\n model.value.length === 2 &&\r\n dateUtil.isSameDay(rangeEnd.value, date),\r\n weekIndex,\r\n selected,\r\n interval: isInterval(date),\r\n today: dateUtil.isSameDay(date, today),\r\n adjacent,\r\n hidden: adjacent && !props.showAdjacentMonthDates,\r\n hovered: false,\r\n localized: dateUtil.format(date, 'dayOfMonth'),\r\n };\r\n }),\r\n );\r\n });\r\n\r\n const weekDays = computed(() => {\r\n return i18n.locale && dateUtil.getWeekdays();\r\n });\r\n\r\n const displayYearMonth = computed(() => {\r\n return dateUtil.format(month.value, 'monthAndYear');\r\n });\r\n\r\n const rangeStart = computed(() => {\r\n if (props.range && model.value?.[0]) {\r\n return model.value[0];\r\n }\r\n });\r\n\r\n const rangeEnd = computed(() => {\r\n if (props.range && model.value?.[1]) {\r\n return model.value[1];\r\n }\r\n });\r\n\r\n function isDisabled(value: unknown) {\r\n if (props.disabled) return true;\r\n\r\n const date = dateUtil.date(value);\r\n\r\n if (props.min && dateUtil.isAfter(dateUtil.date(props.min), date))\r\n return true;\r\n if (props.max && dateUtil.isAfter(date, dateUtil.date(props.max)))\r\n return true;\r\n\r\n if (Array.isArray(props.allowedDates) && props.allowedDates.length > 0) {\r\n return !props.allowedDates.some((d) =>\r\n dateUtil.isSameDay(dateUtil.date(d), date),\r\n );\r\n }\r\n\r\n if (typeof props.allowedDates === 'function') {\r\n return !props.allowedDates(date);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function isInterval(value: unknown) {\r\n if (!props.range) return false;\r\n if (model.value.length === 2) {\r\n const date = dateUtil.date(value);\r\n const startDate = dateUtil.date(model.value[0]);\r\n const endDate = dateUtil.date(model.value[1]);\r\n if (\r\n dateUtil.isAfter(date, startDate) &&\r\n dateUtil.isBefore(date, endDate)\r\n ) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n function onClickDay(item: any) {\r\n const value = item.date;\r\n if (props.multiple) {\r\n const index = model.value.findIndex((selection: unknown) =>\r\n dateUtil.isSameDay(selection, value),\r\n );\r\n\r\n if (props.range) {\r\n if (model.value.length === 1) {\r\n const firstDate = dateUtil.date(model.value[0]);\r\n const date = dateUtil.date(value);\r\n if (dateUtil.isAfter(firstDate, date)) {\r\n model.value = [date, dateUtil.endOfDay(model.value[0])];\r\n } else {\r\n model.value = [\r\n dateUtil.startOfDay(model.value[0]),\r\n dateUtil.endOfDay(value),\r\n ];\r\n }\r\n } else {\r\n model.value = [value];\r\n }\r\n } else {\r\n if (index === -1) {\r\n model.value = [...model.value, value];\r\n } else {\r\n const change = [...model.value];\r\n change.splice(index, 1);\r\n model.value = change;\r\n }\r\n }\r\n } else {\r\n model.value = [value];\r\n }\r\n }\r\n\r\n useRender(() => (\r\n <div\r\n class={[\r\n 'y-date-calendar',\r\n { 'y-date-calendar--range': props.range && model.value.length === 2 },\r\n ]}\r\n >\r\n {!props.hideHeader && (\r\n <header class=\"y-date-calendar__header\">\r\n {slots.header ? slots.header() : displayYearMonth.value}\r\n </header>\r\n )}\r\n <div ref={container$} class={['y-date-calendar__container']}>\r\n {!props.hideWeekdays && (\r\n <div class={['y-date-calendar__week']}>\r\n {weekDays.value.map((weekDay) => (\r\n <div\r\n class={['y-date-calendar__cell', 'y-date-calendar__weekday']}\r\n >\r\n {weekDay}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n {daysInMonth.value.map((week, i) => {\r\n return (\r\n <div\r\n class={['y-date-calendar__week']}\r\n role=\"row\"\r\n aria-rowindex={i}\r\n >\r\n {week.map((item, index) => {\r\n const slotProps = {\r\n props: {\r\n onClick: () => {\r\n onClickDay(item);\r\n },\r\n },\r\n item,\r\n index,\r\n } as const;\r\n\r\n return (\r\n <div\r\n class={[\r\n 'y-date-calendar__cell',\r\n 'y-date-calendar__day',\r\n {\r\n 'y-date-calendar__day--adjacent': item.adjacent,\r\n 'y-date-calendar__day--hovered': item.hovered,\r\n 'y-date-calendar__day--selected': item.selected,\r\n 'y-date-calendar__day--week-start': item.weekStart,\r\n 'y-date-calendar__day--week-end': item.weekEnd,\r\n 'y-date-calendar__day--range-interval': item.interval,\r\n 'y-date-calendar__day--range-start': item.rangeStart,\r\n 'y-date-calendar__day--range-end': item.rangeEnd,\r\n },\r\n ]}\r\n data-date={!item.disabled ? item.isoDate : undefined}\r\n >\r\n {(props.showAdjacentMonthDates || !item.adjacent) && (\r\n <>\r\n {slots.day?.(slotProps) ?? (\r\n <YButton\r\n color={\r\n (item.selected || item.today) && !item.disabled\r\n ? props.color\r\n : undefined\r\n }\r\n disabled={item.disabled}\r\n variation={[\r\n 'icon',\r\n item.selected\r\n ? 'filled'\r\n : item.today\r\n ? 'outlined'\r\n : 'text',\r\n ].join(',')}\r\n {...slotProps.props}\r\n >\r\n {item.day}\r\n </YButton>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n ));\r\n\r\n return {\r\n day$,\r\n container$,\r\n dateUtil,\r\n displayValue,\r\n month,\r\n year,\r\n rangeStart,\r\n rangeEnd,\r\n model,\r\n };\r\n },\r\n});\r\n\r\nexport type YDateCalendar = InstanceType<typeof YDateCalendar>;\r\n"],"mappings":"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"}
@@ -0,0 +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 +1 @@
1
- {"version":3,"file":"YDatePicker.mjs","names":["defineComponent","useRender","YDatePicker","name","setup","_createVNode"],"sources":["../../../src/components/date-picker/YDatePicker.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\n\nimport { useRender } from '../../composables/component';\n\nexport const YDatePicker = defineComponent({\n name: 'YDatePicker',\n setup() {\n useRender(() => <div class={['y-date-picker']}></div>);\n },\n});\n\nexport type YDatePicker = InstanceType<typeof YDatePicker>;\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,KAAK;AAAC,SAE7BC,SAAS;AAElB,OAAO,MAAMC,WAAW,GAAGF,eAAe,CAAC;EACzCG,IAAI,EAAE,aAAa;EACnBC,KAAKA,CAAA,EAAG;IACNH,SAAS,CAAC,MAAAI,YAAA;MAAA,SAAkB,CAAC,eAAe;IAAC,QAAQ,CAAC;EACxD;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDatePicker.mjs","names":["defineComponent","useRender","YDatePicker","name","setup","_createVNode"],"sources":["../../../src/components/date-picker/YDatePicker.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\n\r\nexport const YDatePicker = defineComponent({\r\n name: 'YDatePicker',\r\n setup() {\r\n useRender(() => <div class={['y-date-picker']}></div>);\r\n },\r\n});\r\n\r\nexport type YDatePicker = InstanceType<typeof YDatePicker>;\r\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,KAAK;AAAC,SAE7BC,SAAS;AAElB,OAAO,MAAMC,WAAW,GAAGF,eAAe,CAAC;EACzCG,IAAI,EAAE,aAAa;EACnBC,KAAKA,CAAA,EAAG;IACNH,SAAS,CAAC,MAAAI,YAAA;MAAA,SAAkB,CAAC,eAAe;IAAC,QAAQ,CAAC;EACxD;AACF,CAAC,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { createVNode as _createVNode } from "vue";
2
+ import { defineComponent } from 'vue';
3
+ import { useRender } from "../../composables/component.mjs";
4
+ import { propsFactory } from "../../util/vue-component.mjs";
5
+ import "./YDatePickerControl.scss";
6
+ export const pressYDatePickerControlPropsOptions = propsFactory({
7
+ disabled: {
8
+ type: [Boolean, String, Array],
9
+ default: false
10
+ },
11
+ nextIcon: {
12
+ type: [String, Object]
13
+ },
14
+ prevIcon: {
15
+ type: [String, Object]
16
+ },
17
+ dropdownIcon: {
18
+ type: [String, Object]
19
+ }
20
+ }, 'YDataPickerControl');
21
+ export const YDatePickerControl = defineComponent({
22
+ name: 'YDatePickerControl',
23
+ setup() {
24
+ useRender(() => _createVNode("div", {
25
+ "class": ['y-date-picker-control']
26
+ }, null));
27
+ }
28
+ });
29
+ //# sourceMappingURL=YDatePickerControl.mjs.map
@@ -0,0 +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';\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"}
@@ -0,0 +1,3 @@
1
+ .y-date-picker-control {
2
+ //
3
+ }
@@ -1,2 +1,2 @@
1
-
1
+ export * from "./YDateCalendar.mjs";
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/date-picker/index.ts"],"sourcesContent":[""],"mappings":""}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/date-picker/index.ts"],"sourcesContent":["export * from './YDateCalendar';\r\n"],"mappings":""}
@@ -7,10 +7,12 @@ export const pressYDividerPropsOptions = propsFactory({
7
7
  }, 'YDivider');
8
8
  export const YDivider = defineComponent({
9
9
  props: pressYDividerPropsOptions(),
10
- setup() {
10
+ setup(props) {
11
11
  useRender(() => {
12
12
  return _withDirectives(_createVNode("hr", {
13
- "class": ['y-divider']
13
+ "class": ['y-divider', {
14
+ 'y-divider--vertical': props.vertical
15
+ }]
14
16
  }, null), [[_resolveDirective("theme")]]);
15
17
  });
16
18
  }
@@ -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';\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 vertical: Boolean as PropType<boolean>,\r\n}, 'YDivider');\r\n\r\nexport const YDivider = defineComponent({\r\n props: pressYDividerPropsOptions(),\r\n setup() {\r\n useRender(() => {\r\n return <hr class={['y-divider']} v-theme />;\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,CAAC;EACpDE,QAAQ,EAAEC;AACZ,CAAC,EAAE,UAAU,CAAC;AAEd,OAAO,MAAMC,QAAQ,GAAGN,eAAe,CAAC;EACtCO,KAAK,EAAEJ,yBAAyB,CAAC,CAAC;EAClCK,KAAKA,CAAA,EAAG;IACNP,SAAS,CAAC,MAAM;MACd,OAAAQ,eAAA,CAAAC,YAAA;QAAA,SAAkB,CAAC,WAAW;MAAC,YAAAC,iBAAA;IACjC,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":"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"}
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