@sellmate/design-system-vue 1.0.59 → 1.0.61

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.
@@ -11,7 +11,10 @@ export declare const SdCheckbox: StencilVueComponent<JSX.SdCheckbox, JSX.SdCheck
11
11
  export declare const SdConfirmModal: StencilVueComponent<JSX.SdConfirmModal>;
12
12
  export declare const SdDateBox: StencilVueComponent<JSX.SdDateBox>;
13
13
  export declare const SdDatePicker: StencilVueComponent<JSX.SdDatePicker, JSX.SdDatePicker["value"]>;
14
+ export declare const SdDatePickerCalendar: StencilVueComponent<JSX.SdDatePickerCalendar>;
15
+ export declare const SdDatePickerTrigger: StencilVueComponent<JSX.SdDatePickerTrigger>;
14
16
  export declare const SdDateRangePicker: StencilVueComponent<JSX.SdDateRangePicker, JSX.SdDateRangePicker["value"]>;
17
+ export declare const SdDateRangePickerCalendar: StencilVueComponent<JSX.SdDateRangePickerCalendar>;
15
18
  export declare const SdDropdownButton: StencilVueComponent<JSX.SdDropdownButton>;
16
19
  export declare const SdField: StencilVueComponent<JSX.SdField>;
17
20
  export declare const SdFilePicker: StencilVueComponent<JSX.SdFilePicker, JSX.SdFilePicker["value"]>;
@@ -136,29 +136,79 @@ export const SdDateBox = /*@__PURE__*/ defineContainer('sd-date-box', undefined,
136
136
  ]);
137
137
  export const SdDatePicker = /*@__PURE__*/ defineContainer('sd-date-picker', undefined, [
138
138
  'value',
139
- 'label',
139
+ 'size',
140
+ 'placeholder',
140
141
  'selectable',
141
142
  'disabled',
142
- 'placeholder',
143
+ 'width',
144
+ 'label',
145
+ 'addonLabel',
146
+ 'hint',
147
+ 'errorMessage',
148
+ 'fieldName',
149
+ 'rules',
150
+ 'error',
151
+ 'icon',
152
+ 'labelTooltip',
153
+ 'labelTooltipProps',
143
154
  'sdUpdate',
144
155
  'sdViewChange'
145
156
  ], [
146
157
  'sdUpdate',
147
158
  'sdViewChange'
148
159
  ], 'value', 'sdUpdate', undefined);
160
+ export const SdDatePickerCalendar = /*@__PURE__*/ defineContainer('sd-date-picker-calendar', undefined, [
161
+ 'value',
162
+ 'selectable',
163
+ 'sdSelect',
164
+ 'sdViewChange'
165
+ ], [
166
+ 'sdSelect',
167
+ 'sdViewChange'
168
+ ]);
169
+ export const SdDatePickerTrigger = /*@__PURE__*/ defineContainer('sd-date-picker-trigger', undefined, [
170
+ 'displayText',
171
+ 'placeholder',
172
+ 'disabled',
173
+ 'size',
174
+ 'sdTriggerClick'
175
+ ], [
176
+ 'sdTriggerClick'
177
+ ]);
149
178
  export const SdDateRangePicker = /*@__PURE__*/ defineContainer('sd-date-range-picker', undefined, [
150
179
  'value',
151
- 'label',
180
+ 'size',
181
+ 'placeholder',
152
182
  'selectable',
153
183
  'maxRange',
154
184
  'disabled',
155
- 'placeholder',
185
+ 'width',
186
+ 'label',
187
+ 'addonLabel',
188
+ 'hint',
189
+ 'errorMessage',
190
+ 'fieldName',
191
+ 'rules',
192
+ 'error',
193
+ 'icon',
194
+ 'labelTooltip',
195
+ 'labelTooltipProps',
156
196
  'sdUpdate',
157
197
  'sdViewChange'
158
198
  ], [
159
199
  'sdUpdate',
160
200
  'sdViewChange'
161
201
  ], 'value', 'sdUpdate', undefined);
202
+ export const SdDateRangePickerCalendar = /*@__PURE__*/ defineContainer('sd-date-range-picker-calendar', undefined, [
203
+ 'value',
204
+ 'selectable',
205
+ 'maxRange',
206
+ 'sdSelect',
207
+ 'sdViewChange'
208
+ ], [
209
+ 'sdSelect',
210
+ 'sdViewChange'
211
+ ]);
162
212
  export const SdDropdownButton = /*@__PURE__*/ defineContainer('sd-dropdown-button', undefined, [
163
213
  'name',
164
214
  'label',
@@ -383,8 +433,8 @@ export const SdProgress = /*@__PURE__*/ defineContainer('sd-progress', undefined
383
433
  ]);
384
434
  export const SdRadio = /*@__PURE__*/ defineContainer('sd-radio', undefined, [
385
435
  'value',
386
- 'disabled',
387
436
  'val',
437
+ 'disabled',
388
438
  'label',
389
439
  'sdUpdate'
390
440
  ], [
@@ -0,0 +1,11 @@
1
+ import { type Ref } from 'vue';
2
+ export interface VirtualRow<T = Record<string, any>> {
3
+ /** 전체 rows 기준 절대 인덱스 — sd-tr의 rowKey로 사용 */
4
+ index: number;
5
+ row: T;
6
+ }
7
+ export declare function useSdTableVirtualScroll<T extends Record<string, any>>(tableRef: Ref<any>, rows: Ref<T[]>): {
8
+ virtualRows: import("vue").ComputedRef<VirtualRow<T>[]>;
9
+ from: import("vue").ComputedRef<number>;
10
+ to: import("vue").ComputedRef<number>;
11
+ };
@@ -0,0 +1,58 @@
1
+ import { ref, computed, onMounted, onUnmounted } from 'vue';
2
+ export function useSdTableVirtualScroll(tableRef, rows) {
3
+ const range = ref(null);
4
+ let targetEl = null;
5
+ let rafId = 0;
6
+ const onVirtualUpdate = (e) => {
7
+ const { from, to } = e.detail;
8
+ range.value = { from, to };
9
+ };
10
+ const syncRange = (el) => {
11
+ const currentRange = el.getVirtualScrollRangeSync?.();
12
+ if (currentRange &&
13
+ typeof currentRange.from === 'number' &&
14
+ typeof currentRange.to === 'number') {
15
+ range.value = { from: currentRange.from, to: currentRange.to };
16
+ return true;
17
+ }
18
+ return false;
19
+ };
20
+ const attachWhenReady = () => {
21
+ // Stencil Vue 래퍼는 expose()를 사용하지 않으므로 $el로 실제 custom element에 접근
22
+ const raw = tableRef.value?.$el ?? tableRef.value;
23
+ const el = raw instanceof HTMLElement ? raw : null;
24
+ if (!el) {
25
+ rafId = requestAnimationFrame(attachWhenReady);
26
+ return;
27
+ }
28
+ targetEl = el;
29
+ targetEl.addEventListener('sdVirtualUpdate', onVirtualUpdate);
30
+ const trySync = () => {
31
+ if (!targetEl)
32
+ return;
33
+ if (!syncRange(targetEl)) {
34
+ rafId = requestAnimationFrame(trySync);
35
+ }
36
+ };
37
+ trySync();
38
+ };
39
+ onMounted(() => {
40
+ attachWhenReady();
41
+ });
42
+ onUnmounted(() => {
43
+ cancelAnimationFrame(rafId);
44
+ targetEl?.removeEventListener('sdVirtualUpdate', onVirtualUpdate);
45
+ targetEl = null;
46
+ });
47
+ const virtualRows = computed(() => {
48
+ if (!range.value)
49
+ return [];
50
+ const { from, to } = range.value;
51
+ return rows.value.slice(from, to).map((row, i) => ({ index: from + i, row }));
52
+ });
53
+ return {
54
+ virtualRows,
55
+ from: computed(() => range.value?.from ?? 0),
56
+ to: computed(() => range.value?.to ?? 0),
57
+ };
58
+ }
package/lib/components.ts CHANGED
@@ -164,10 +164,21 @@ export const SdDateBox: StencilVueComponent<JSX.SdDateBox> = /*@__PURE__*/ defin
164
164
 
165
165
  export const SdDatePicker: StencilVueComponent<JSX.SdDatePicker, JSX.SdDatePicker["value"]> = /*@__PURE__*/ defineContainer<JSX.SdDatePicker, JSX.SdDatePicker["value"]>('sd-date-picker', undefined, [
166
166
  'value',
167
- 'label',
167
+ 'size',
168
+ 'placeholder',
168
169
  'selectable',
169
170
  'disabled',
170
- 'placeholder',
171
+ 'width',
172
+ 'label',
173
+ 'addonLabel',
174
+ 'hint',
175
+ 'errorMessage',
176
+ 'fieldName',
177
+ 'rules',
178
+ 'error',
179
+ 'icon',
180
+ 'labelTooltip',
181
+ 'labelTooltipProps',
171
182
  'sdUpdate',
172
183
  'sdViewChange'
173
184
  ], [
@@ -177,13 +188,46 @@ export const SdDatePicker: StencilVueComponent<JSX.SdDatePicker, JSX.SdDatePicke
177
188
  'value', 'sdUpdate', undefined);
178
189
 
179
190
 
191
+ export const SdDatePickerCalendar: StencilVueComponent<JSX.SdDatePickerCalendar> = /*@__PURE__*/ defineContainer<JSX.SdDatePickerCalendar>('sd-date-picker-calendar', undefined, [
192
+ 'value',
193
+ 'selectable',
194
+ 'sdSelect',
195
+ 'sdViewChange'
196
+ ], [
197
+ 'sdSelect',
198
+ 'sdViewChange'
199
+ ]);
200
+
201
+
202
+ export const SdDatePickerTrigger: StencilVueComponent<JSX.SdDatePickerTrigger> = /*@__PURE__*/ defineContainer<JSX.SdDatePickerTrigger>('sd-date-picker-trigger', undefined, [
203
+ 'displayText',
204
+ 'placeholder',
205
+ 'disabled',
206
+ 'size',
207
+ 'sdTriggerClick'
208
+ ], [
209
+ 'sdTriggerClick'
210
+ ]);
211
+
212
+
180
213
  export const SdDateRangePicker: StencilVueComponent<JSX.SdDateRangePicker, JSX.SdDateRangePicker["value"]> = /*@__PURE__*/ defineContainer<JSX.SdDateRangePicker, JSX.SdDateRangePicker["value"]>('sd-date-range-picker', undefined, [
181
214
  'value',
182
- 'label',
215
+ 'size',
216
+ 'placeholder',
183
217
  'selectable',
184
218
  'maxRange',
185
219
  'disabled',
186
- 'placeholder',
220
+ 'width',
221
+ 'label',
222
+ 'addonLabel',
223
+ 'hint',
224
+ 'errorMessage',
225
+ 'fieldName',
226
+ 'rules',
227
+ 'error',
228
+ 'icon',
229
+ 'labelTooltip',
230
+ 'labelTooltipProps',
187
231
  'sdUpdate',
188
232
  'sdViewChange'
189
233
  ], [
@@ -193,6 +237,18 @@ export const SdDateRangePicker: StencilVueComponent<JSX.SdDateRangePicker, JSX.S
193
237
  'value', 'sdUpdate', undefined);
194
238
 
195
239
 
240
+ export const SdDateRangePickerCalendar: StencilVueComponent<JSX.SdDateRangePickerCalendar> = /*@__PURE__*/ defineContainer<JSX.SdDateRangePickerCalendar>('sd-date-range-picker-calendar', undefined, [
241
+ 'value',
242
+ 'selectable',
243
+ 'maxRange',
244
+ 'sdSelect',
245
+ 'sdViewChange'
246
+ ], [
247
+ 'sdSelect',
248
+ 'sdViewChange'
249
+ ]);
250
+
251
+
196
252
  export const SdDropdownButton: StencilVueComponent<JSX.SdDropdownButton> = /*@__PURE__*/ defineContainer<JSX.SdDropdownButton>('sd-dropdown-button', undefined, [
197
253
  'name',
198
254
  'label',
@@ -453,8 +509,8 @@ export const SdProgress: StencilVueComponent<JSX.SdProgress> = /*@__PURE__*/ def
453
509
 
454
510
  export const SdRadio: StencilVueComponent<JSX.SdRadio, JSX.SdRadio["value"]> = /*@__PURE__*/ defineContainer<JSX.SdRadio, JSX.SdRadio["value"]>('sd-radio', undefined, [
455
511
  'value',
456
- 'disabled',
457
512
  'val',
513
+ 'disabled',
458
514
  'label',
459
515
  'sdUpdate'
460
516
  ], [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellmate/design-system-vue",
3
- "version": "1.0.59",
3
+ "version": "1.0.61",
4
4
  "description": "Design System - Vue Component Wrappers",
5
5
  "keywords": [
6
6
  "vue",
@@ -45,7 +45,7 @@
45
45
  "vue": "^3.4.38"
46
46
  },
47
47
  "dependencies": {
48
- "@sellmate/design-system": "^1.0.59",
48
+ "@sellmate/design-system": "^1.0.61",
49
49
  "@stencil/vue-output-target": "^0.11.8"
50
50
  },
51
51
  "peerDependencies": {