@sellmate/design-system 1.18.0 → 1.19.0

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 (34) hide show
  1. package/dist/cjs/design-system.cjs.js +1 -1
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/sd-chip-input.cjs.entry.js +29 -2
  4. package/dist/cjs/sd-key-value-table.cjs.entry.js +12 -6
  5. package/dist/cjs/sd-table.cjs.entry.js +10 -9
  6. package/dist/collection/components/sd-chip-input/sd-chip-input.js +48 -2
  7. package/dist/collection/components/sd-key-value-table/sd-key-value-table.config.js +1 -0
  8. package/dist/collection/components/sd-key-value-table/sd-key-value-table.css +10 -3
  9. package/dist/collection/components/sd-key-value-table/sd-key-value-table.js +17 -12
  10. package/dist/collection/components/sd-table/sd-table.css +4 -1
  11. package/dist/collection/components/sd-table/sd-table.js +15 -14
  12. package/dist/components/sd-chip-input.js +1 -1
  13. package/dist/components/sd-key-value-table.js +1 -1
  14. package/dist/components/sd-table.js +1 -1
  15. package/dist/design-system/design-system.esm.js +1 -1
  16. package/dist/design-system/p-4b15247b.entry.js +1 -0
  17. package/dist/design-system/p-4b626171.entry.js +1 -0
  18. package/dist/design-system/p-9d35b674.entry.js +1 -0
  19. package/dist/esm/design-system.js +1 -1
  20. package/dist/esm/loader.js +1 -1
  21. package/dist/esm/sd-chip-input.entry.js +29 -2
  22. package/dist/esm/sd-key-value-table.entry.js +12 -6
  23. package/dist/esm/sd-table.entry.js +10 -9
  24. package/dist/types/components/sd-chip-input/sd-chip-input.d.ts +4 -0
  25. package/dist/types/components/sd-key-value-table/sd-key-value-table.config.d.ts +1 -0
  26. package/dist/types/components/sd-key-value-table/sd-key-value-table.d.ts +5 -3
  27. package/dist/types/components/sd-table/sd-table.d.ts +1 -1
  28. package/dist/types/components.d.ts +23 -20
  29. package/hydrate/index.js +54 -19
  30. package/hydrate/index.mjs +54 -19
  31. package/package.json +3 -3
  32. package/dist/design-system/p-0a772d43.entry.js +0 -1
  33. package/dist/design-system/p-bcd7d358.entry.js +0 -1
  34. package/dist/design-system/p-ff939fbd.entry.js +0 -1
@@ -16,6 +16,7 @@ export class SdChipInput {
16
16
  error = false;
17
17
  useReset = false;
18
18
  maxCount;
19
+ duplicateLabel;
19
20
  suggestions = [];
20
21
  loadingSuggestions = false;
21
22
  recommendedItems = [];
@@ -52,6 +53,11 @@ export class SdChipInput {
52
53
  this.internalErrors = [...newErrors];
53
54
  }
54
55
  }
56
+ internalValuesChanged_validate() {
57
+ if (typeof this.formField?.sdValidate === 'function') {
58
+ this.formField.sdValidate();
59
+ }
60
+ }
55
61
  suggestionsChanged(newVal) {
56
62
  if (!Array.isArray(newVal))
57
63
  this.suggestions = [];
@@ -70,7 +76,13 @@ export class SdChipInput {
70
76
  }
71
77
  this.inputValue = this.inputValue ?? '';
72
78
  }
79
+ isDuplicateChip(index) {
80
+ const value = this.internalValues[index];
81
+ return this.internalValues.indexOf(value) !== index;
82
+ }
73
83
  getChipError(index) {
84
+ if (this.isDuplicateChip(index))
85
+ return true;
74
86
  if (typeof this.errors === 'function') {
75
87
  return this.errors(this.internalValues?.[index] ?? '');
76
88
  }
@@ -264,6 +276,18 @@ export class SdChipInput {
264
276
  this.update.emit(next);
265
277
  this.inputEl?.focus();
266
278
  };
279
+ duplicateRule = () => {
280
+ const seen = new Set();
281
+ for (const val of this.internalValues) {
282
+ if (seen.has(val)) {
283
+ if (this.duplicateLabel != null && this.duplicateLabel !== '')
284
+ return `이미 입력된 ${this.duplicateLabel}입니다.`;
285
+ return '중복된 값이 존재합니다.';
286
+ }
287
+ seen.add(val);
288
+ }
289
+ return true;
290
+ };
267
291
  render() {
268
292
  const sizeTokens = CHIP_INPUT_SIZE_MAP[this.size] ?? CHIP_INPUT_SIZE_MAP.sm;
269
293
  const cssVars = {
@@ -368,7 +392,7 @@ export class SdChipInput {
368
392
  fontFamily: CHIP_INPUT_SUGGESTIONS.itemFontFamily,
369
393
  color: CHIP_INPUT_SUGGESTIONS.emptyColor,
370
394
  };
371
- return (h("sd-field", { key: '6ff0688cd9a076cd81693364bfeb6a98b5bf018e', name: this.name, label: this.label, labelWidth: this.labelWidth, hint: this.hint, errorMessage: this.errorMessage, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, size: this.size, width: this.width, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), style: cssVars, onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false) }, h("div", { key: '0c6ae92de4dcb44ed4fbcd12f1dddef93cec12db', class: "sd-chip-input", ref: el => (this.chipInputRef = el), onClick: this.handleContainerClick }, (this.internalValues ?? []).map((value, i) => (h("sd-chip", { key: i, value: value, error: this.getChipError(i), disabled: this.getChipDisabled(i), editable: false, onSdRemove: () => this.handleChipRemove(i) }))), !isMaxReached && (h("div", { key: 'df111f3110b444ed296db8c6b7f00d9209f858af', class: {
395
+ return (h("sd-field", { key: '33ae95b159edcb8ee407cf8d311428f419f26e95', name: this.name, label: this.label, labelWidth: this.labelWidth, hint: this.hint, errorMessage: this.errorMessage, rules: [this.duplicateRule, ...(this.rules ?? [])], error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, size: this.size, width: this.width, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), style: cssVars, onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false) }, h("div", { key: '4f7cd96e4cda06239a7498b8af5f1f3169362028', class: "sd-chip-input", ref: el => (this.chipInputRef = el), onClick: this.handleContainerClick }, (this.internalValues ?? []).map((value, i) => (h("sd-chip", { key: i, value: value, error: this.getChipError(i), disabled: this.getChipDisabled(i), editable: false, onSdRemove: () => this.handleChipRemove(i) }))), !isMaxReached && (h("div", { key: 'dab7b1c520923fdb8cb026141727d8d008b83663', class: {
372
396
  'sd-chip-input__field': true,
373
397
  'sd-chip-input__field--filled': this.inputValue !== '',
374
398
  'sd-chip-input__field--empty': this.inputValue === '' && this.internalValues.length > 0 && !this.focused,
@@ -376,7 +400,7 @@ export class SdChipInput {
376
400
  ? this.inputValue
377
401
  : this.internalValues.length === 0
378
402
  ? this.placeholder
379
- : '' }, h("input", { key: '8e170c84cedab36edbdd0a84e7e2e1ac0fba9632', ref: el => (this.inputEl = el), class: "sd-chip-input__input", placeholder: this.internalValues.length === 0 ? this.placeholder : '', disabled: this.disabled, size: 1, onInput: this.handleInput, onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur }))), showResetArea && (h("div", { key: '5b30bb4f89c9d3c9b18870acccad22bd97e1d748', class: "sd-chip-input__reset" }, this.inputValue === '' && h("span", { key: '6fbf74a5a77b70789a609d28f5c4b6dd2aab57ef', class: "sd-chip-input__divider" }), this.maxCount != null && (h("span", { key: 'fbb21a27bdd2aa38870cfd8d16b7e5293769eaf3', class: "sd-chip-input__max-count" }, "\uCD5C\uB300 ", this.maxCount, "\uAC1C")), this.useReset && this.internalValues.length > 0 && (h("sd-text-link", { key: '83626145602b13d7a00ef955a6db59f41c152529', icon: "reset", iconColor: CHIP_INPUT_RESET.iconColor, label: "\uC785\uB825 \uCD08\uAE30\uD654", underline: true, disabled: this.disabled, style: { '--sd-text-link-color': CHIP_INPUT_RESET.labelColor }, onSdClick: this.handleResetInput })))), showDropdown && (h("sd-portal", { key: '1682a89b513098f192f776af782aa9ee432574e8', open: showDropdown, parentRef: this.chipInputRef ?? null, viewportPadding: SdChipInput.SUGGESTIONS_VIEWPORT_PADDING, onSdClose: this.closeSuggestions }, h("div", { key: '3efb484bd5616e411824f7014a759a34a9e93d8b', class: "sd-chip-input__suggestions", role: "listbox", style: suggestionBoxStyle }, isDropdownLoading && (h("div", { key: 'b5b1d5e6db03f6fe60864b6c19e9b2c753468447', class: "sd-chip-input__suggestions-empty", style: suggestionEmptyStyle }, "\uBD88\uB7EC\uC624\uB294 \uC911...")), dropdownItems.map((item, i) => (h("div", { key: item, class: {
403
+ : '' }, h("input", { key: '0aee2d0f30c5af7fccfc2e35e5cee17912712ce9', ref: el => (this.inputEl = el), class: "sd-chip-input__input", placeholder: this.internalValues.length === 0 ? this.placeholder : '', disabled: this.disabled, size: 1, onInput: this.handleInput, onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur }))), showResetArea && (h("div", { key: 'b0b508db62d31f6427d5a2def435fec7fc552e92', class: "sd-chip-input__reset" }, this.inputValue === '' && h("span", { key: '30ce147f3bc8070192d95f381fa7f75ad37aab9b', class: "sd-chip-input__divider" }), this.maxCount != null && (h("span", { key: '8c43a2920e55a36ff0c0ab952a52ab3df8d3c98d', class: "sd-chip-input__max-count" }, "\uCD5C\uB300 ", this.maxCount, "\uAC1C")), this.useReset && this.internalValues.length > 0 && (h("sd-text-link", { key: '543316c12760fe16449e2b89a9afb8c43344eab5', icon: "reset", iconColor: CHIP_INPUT_RESET.iconColor, label: "\uC785\uB825 \uCD08\uAE30\uD654", underline: true, disabled: this.disabled, style: { '--sd-text-link-color': CHIP_INPUT_RESET.labelColor }, onSdClick: this.handleResetInput })))), showDropdown && (h("sd-portal", { key: 'c402b8336f7d62213f2b803f80f7a2ffabce2c9d', open: showDropdown, parentRef: this.chipInputRef ?? null, viewportPadding: SdChipInput.SUGGESTIONS_VIEWPORT_PADDING, onSdClose: this.closeSuggestions }, h("div", { key: '4ade4acb535b2db7011699a449afd8c17fe5696d', class: "sd-chip-input__suggestions", role: "listbox", style: suggestionBoxStyle }, isDropdownLoading && (h("div", { key: 'e07a447f7c9a9d376680ddb3af6daf58e0d39167', class: "sd-chip-input__suggestions-empty", style: suggestionEmptyStyle }, "\uBD88\uB7EC\uC624\uB294 \uC911...")), dropdownItems.map((item, i) => (h("div", { key: item, class: {
380
404
  'sd-chip-input__suggestion-item': true,
381
405
  'sd-chip-input__suggestion-item--active': i === this.activeSuggestionIndex,
382
406
  }, role: "option", tabIndex: -1, "aria-selected": i === this.activeSuggestionIndex, style: i === this.activeSuggestionIndex
@@ -629,6 +653,25 @@ export class SdChipInput {
629
653
  "reflect": false,
630
654
  "attribute": "max-count"
631
655
  },
656
+ "duplicateLabel": {
657
+ "type": "string",
658
+ "mutable": false,
659
+ "complexType": {
660
+ "original": "string",
661
+ "resolved": "string | undefined",
662
+ "references": {}
663
+ },
664
+ "required": false,
665
+ "optional": true,
666
+ "docs": {
667
+ "tags": [],
668
+ "text": ""
669
+ },
670
+ "getter": false,
671
+ "setter": false,
672
+ "reflect": false,
673
+ "attribute": "duplicate-label"
674
+ },
632
675
  "suggestions": {
633
676
  "type": "unknown",
634
677
  "mutable": true,
@@ -1049,6 +1092,9 @@ export class SdChipInput {
1049
1092
  }, {
1050
1093
  "propName": "errors",
1051
1094
  "methodName": "errorsChanged"
1095
+ }, {
1096
+ "propName": "internalValues",
1097
+ "methodName": "internalValuesChanged_validate"
1052
1098
  }, {
1053
1099
  "propName": "suggestions",
1054
1100
  "methodName": "suggestionsChanged"
@@ -5,6 +5,7 @@ export const KEY_VALUE_TABLE_LAYOUT = {
5
5
  rowHeight: Number(t.keyValue.height),
6
6
  thWidth: 120,
7
7
  borderRadius: Number(t.radius),
8
+ thPaddingX: Number(t.header.paddingX),
8
9
  padding: Number(t.keyValue.body.padding),
9
10
  helpIconSize: 16,
10
11
  requiredIconSize: 12,
@@ -14,10 +14,13 @@ sd-key-value-table .sd-key-value-table__wrapper .sd-key-value-table {
14
14
  border: 0;
15
15
  border-radius: 0;
16
16
  }
17
- sd-key-value-table .sd-key-value-table__wrapper.sd-key-value-table__wrapper--use-top {
17
+ sd-key-value-table .sd-key-value-table__wrapper.sd-key-value-table__wrapper--radius-usetop {
18
18
  border-top-left-radius: 0;
19
19
  border-top-right-radius: 0;
20
20
  }
21
+ sd-key-value-table .sd-key-value-table__wrapper.sd-key-value-table__wrapper--radius-full {
22
+ border-radius: 0;
23
+ }
21
24
  sd-key-value-table .sd-key-value-table__search-panel {
22
25
  display: flex;
23
26
  align-items: center;
@@ -36,13 +39,15 @@ sd-key-value-table .sd-key-value-table {
36
39
  border-spacing: 0;
37
40
  overflow: hidden;
38
41
  }
39
- sd-key-value-table .sd-key-value-table.sd-key-value-table--use-top {
42
+ sd-key-value-table .sd-key-value-table.sd-key-value-table--radius-usetop {
40
43
  border-top-left-radius: 0;
41
44
  border-top-right-radius: 0;
42
45
  }
46
+ sd-key-value-table .sd-key-value-table.sd-key-value-table--radius-full {
47
+ border-radius: 0;
48
+ }
43
49
  sd-key-value-table .sd-key-value-table__th, sd-key-value-table .sd-key-value-table__td {
44
50
  height: var(--sd-kvt-row-height);
45
- padding: var(--sd-kvt-padding);
46
51
  box-sizing: border-box;
47
52
  vertical-align: middle;
48
53
  text-align: left;
@@ -54,6 +59,7 @@ sd-key-value-table .sd-key-value-table tbody > tr:first-child > .sd-key-value-ta
54
59
  border-top: 0;
55
60
  }
56
61
  sd-key-value-table .sd-key-value-table__th {
62
+ padding: var(--sd-kvt-padding) var(--sd-kvt-th-padding-x);
57
63
  width: var(--sd-kvt-th-width);
58
64
  background: var(--sd-kvt-th-bg);
59
65
  color: var(--sd-kvt-th-color);
@@ -87,6 +93,7 @@ sd-key-value-table .sd-key-value-table__help {
87
93
  flex-shrink: 0;
88
94
  }
89
95
  sd-key-value-table .sd-key-value-table__td {
96
+ padding: var(--sd-kvt-padding);
90
97
  background: var(--sd-kvt-td-bg);
91
98
  color: var(--sd-kvt-td-color);
92
99
  }
@@ -11,10 +11,12 @@ export class SdKeyValueTable {
11
11
  */
12
12
  search = false;
13
13
  /**
14
- * true이면 테이블 상단 border-radius 0으로 처리.
15
- * 다른 요소(헤더, 등) 하단에 붙여 쓸 때 사용.
14
+ * 테이블 border-radius 제어.
15
+ * - 'default': 전체 radius 적용
16
+ * - 'usetop': 상단 radius 0 (헤더·탭 등 하단에 붙여 쓸 때)
17
+ * - 'full': 상하단 모두 radius 0 (요소 사이에 끼워 쓸 때)
16
18
  */
17
- useTop = false;
19
+ radius = 'default';
18
20
  change;
19
21
  searchEvent;
20
22
  emit = (name, value) => {
@@ -162,6 +164,7 @@ export class SdKeyValueTable {
162
164
  '--sd-kvt-row-height': `${KEY_VALUE_TABLE_LAYOUT.rowHeight}px`,
163
165
  '--sd-kvt-th-width': `${KEY_VALUE_TABLE_LAYOUT.thWidth}px`,
164
166
  '--sd-kvt-radius': `${KEY_VALUE_TABLE_LAYOUT.borderRadius}px`,
167
+ '--sd-kvt-th-padding-x': `${KEY_VALUE_TABLE_LAYOUT.thPaddingX}px`,
165
168
  '--sd-kvt-padding': `${KEY_VALUE_TABLE_LAYOUT.padding}px`,
166
169
  '--sd-kvt-gap': `${KEY_VALUE_TABLE_LAYOUT.gap}px`,
167
170
  '--sd-kvt-label-gap': `${KEY_VALUE_TABLE_LAYOUT.labelGap}px`,
@@ -188,7 +191,8 @@ export class SdKeyValueTable {
188
191
  const maxCols = this.computeMaxCols(autoSkip);
189
192
  const tableEl = (h("table", { class: {
190
193
  'sd-key-value-table': true,
191
- 'sd-key-value-table--use-top': this.useTop,
194
+ 'sd-key-value-table--radius-usetop': this.radius === 'usetop',
195
+ 'sd-key-value-table--radius-full': this.radius === 'full',
192
196
  }, style: cssVars }, h("colgroup", null, Array.from({ length: maxCols }, (_, i) => {
193
197
  if (i % 2 !== 0)
194
198
  return h("col", { key: `col-${i}` });
@@ -212,7 +216,8 @@ export class SdKeyValueTable {
212
216
  return tableEl;
213
217
  return (h("div", { class: {
214
218
  'sd-key-value-table__wrapper': true,
215
- 'sd-key-value-table__wrapper--use-top': this.useTop,
219
+ 'sd-key-value-table__wrapper--radius-usetop': this.radius === 'usetop',
220
+ 'sd-key-value-table__wrapper--radius-full': this.radius === 'full',
216
221
  }, style: cssVars }, tableEl, h("div", { class: "sd-key-value-table__search-panel" }, h("sd-button", { label: "\uAC80\uC0C9", name: "neutral_outline_md", onSdClick: this.handleSearchClick }))));
217
222
  }
218
223
  static get is() { return "sd-key-value-table"; }
@@ -273,25 +278,25 @@ export class SdKeyValueTable {
273
278
  "attribute": "search",
274
279
  "defaultValue": "false"
275
280
  },
276
- "useTop": {
277
- "type": "boolean",
281
+ "radius": {
282
+ "type": "string",
278
283
  "mutable": false,
279
284
  "complexType": {
280
- "original": "boolean",
281
- "resolved": "boolean",
285
+ "original": "'default' | 'usetop' | 'full'",
286
+ "resolved": "\"default\" | \"full\" | \"usetop\"",
282
287
  "references": {}
283
288
  },
284
289
  "required": false,
285
290
  "optional": false,
286
291
  "docs": {
287
292
  "tags": [],
288
- "text": "true\uC774\uBA74 \uD14C\uC774\uBE14 \uC0C1\uB2E8 border-radius\uB97C 0\uC73C\uB85C \uCC98\uB9AC.\n\uB2E4\uB978 \uC694\uC18C(\uD5E4\uB354, \uD0ED \uB4F1) \uD558\uB2E8\uC5D0 \uBD99\uC5EC \uC4F8 \uB54C \uC0AC\uC6A9."
293
+ "text": "\uD14C\uC774\uBE14 border-radius \uC81C\uC5B4.\n- 'default': \uC804\uCCB4 radius \uC801\uC6A9\n- 'usetop': \uC0C1\uB2E8 radius 0 (\uD5E4\uB354\u00B7\uD0ED \uB4F1 \uD558\uB2E8\uC5D0 \uBD99\uC5EC \uC4F8 \uB54C)\n- 'full': \uC0C1\uD558\uB2E8 \uBAA8\uB450 radius 0 (\uC694\uC18C \uC0AC\uC774\uC5D0 \uB07C\uC6CC \uC4F8 \uB54C)"
289
294
  },
290
295
  "getter": false,
291
296
  "setter": false,
292
297
  "reflect": false,
293
- "attribute": "use-top",
294
- "defaultValue": "false"
298
+ "attribute": "radius",
299
+ "defaultValue": "'default'"
295
300
  }
296
301
  };
297
302
  }
@@ -29,9 +29,12 @@ sd-table *,
29
29
  border-radius: var(--table-radius, 8px);
30
30
  overflow: hidden;
31
31
  }
32
- .sd-table__wrapper--use-top {
32
+ .sd-table__wrapper--radius-usetop {
33
33
  border-radius: 0 0 var(--table-radius, 8px) var(--table-radius, 8px);
34
34
  }
35
+ .sd-table__wrapper--radius-full {
36
+ border-radius: 0;
37
+ }
35
38
 
36
39
  .sd-table__scroll-container {
37
40
  width: 100%;
@@ -17,7 +17,7 @@ export class SdTable {
17
17
  height;
18
18
  stickyHeader = false;
19
19
  stickyColumn = { left: 0, right: 0 };
20
- useTop = false;
20
+ radius = 'default';
21
21
  noDataLabel = SdTable.DEFAULT_NO_DATA_LABEL;
22
22
  resolvedNoDataLabel = SdTable.DEFAULT_NO_DATA_LABEL;
23
23
  isLoading = false;
@@ -818,24 +818,25 @@ export class SdTable {
818
818
  '--table-selectable-width': `${TABLE_SELECTABLE_COLUMN_WIDTH}px`,
819
819
  '--table-host-height': hostHeight,
820
820
  };
821
- return (h(Host, { key: '337909d6279baf60effec188eb60422ce47c0585', style: hostStyle }, h("div", { key: '46d53ced85e1700da3c6ca082d5752c0bb4a155b', class: "sd-table__container", style: {
821
+ return (h(Host, { key: '87170da602bd45011a4f03e0bb7c1ce35ac4b771', style: hostStyle }, h("div", { key: '899ad5a375b30565141fc50063620975a1c87b95', class: "sd-table__container", style: {
822
822
  '--table-width': this.width,
823
823
  '--pagination-height': `${paginationHeight}px`,
824
- } }, h("div", { key: '159fad6dec16b3328d0da4ce22ae6bca537046e9', class: {
824
+ } }, h("div", { key: '73db070c9018b814e9c55f605c22a13f81fefc5d', class: {
825
825
  'sd-table__wrapper': true,
826
- 'sd-table__wrapper--use-top': this.useTop,
827
- } }, h("div", { key: '22acbc7de61e11807b1a8919090286bb04a98bed', class: {
826
+ 'sd-table__wrapper--radius-usetop': this.radius === 'usetop',
827
+ 'sd-table__wrapper--radius-full': this.radius === 'full',
828
+ } }, h("div", { key: 'f52d585b54a29a6e44c3d9f5ec3a8f20f0e62e8c', class: {
828
829
  'sd-table__scroll-container': true,
829
830
  'sd-table__scroll-container--loading': this.isLoading,
830
831
  'sd-table__scroll-container--no-data': isNoData,
831
- } }, this.isLoading && (h("div", { key: '040736d35428396068d5237a17f23f8f70ba2541', class: "sd-table__loading", style: { top: `${this.loadingScrollTop}px` } }, h("sd-circle-progress", { key: 'eae076a71161e315951692f051522b8b5f094271', indeterminate: true }))), isNoData && (h(h.Fragment, null, h("div", { key: 'e8bdf5ae38a77988fce0a60ae9309f5d03b34928', class: "sd-table__no-data-header-overlay" }), h("div", { key: 'd6ce4d4479eb927137b1afd5494a91494568b274', class: "sd-table__no-data" }, h("div", { key: 'cfccc6382e7d0cc76d7f50515cd157ccd56cbac8', class: "sd-table__no-data-content", ref: el => {
832
+ } }, this.isLoading && (h("div", { key: 'cd9ee8de1d3a4f7abe553372342da1d3ee38b6fe', class: "sd-table__loading", style: { top: `${this.loadingScrollTop}px` } }, h("sd-circle-progress", { key: 'b239353973c8e6959ff9b5c3308696b4c743dbf0', indeterminate: true }))), isNoData && (h(h.Fragment, null, h("div", { key: '7f219801def31f4f19f6042e85e02d9e2b366c90', class: "sd-table__no-data-header-overlay" }), h("div", { key: '2dcb2227ea402c4fcc176e3e493b88d37843f8ed', class: "sd-table__no-data" }, h("div", { key: '47b8e69f4518200cd87c79d50bfc0d505310aff9', class: "sd-table__no-data-content", ref: el => {
832
833
  this.noDataContentEl = el;
833
834
  if (el)
834
835
  this.syncNoDataContentObserver();
835
- } }, h("slot", { key: '45a2df0c0fa234408ca5a5fb76b5a74729cad482', name: "no-data" }, h("span", { key: 'a126d8ce4149ac87e55f5a6acc67bbb3a650cdf4' }, this.resolvedNoDataLabel)))))), h("table", { key: 'aa4b94ed02700edd1846ca51235f47fe7de570be', class: this.tableClasses }, this.autoThead ? (h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange }, h("sd-thead", { rows: this.rows ?? [] }))) : (h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange })), this.autoTbody ? (h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }, h("sd-tbody", { rows: this.rows ?? [] }, this.renderAutoRows()))) : (h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }))))), this.pagination &&
836
+ } }, h("slot", { key: '3cdbaa3552166b915d0bd30a2e19324679615da4', name: "no-data" }, h("span", { key: 'dd14af39eb6658f3a1d876745f80fcbe13529846' }, this.resolvedNoDataLabel)))))), h("table", { key: 'f11b8e0e7bb53f3ceda805ecc2b0911ea83cb79f', class: this.tableClasses }, this.autoThead ? (h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange }, h("sd-thead", { rows: this.rows ?? [] }))) : (h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange })), this.autoTbody ? (h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }, h("sd-tbody", { rows: this.rows ?? [] }, this.renderAutoRows()))) : (h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }))))), this.pagination &&
836
837
  this.pagination.rowsPerPage > 0 &&
837
838
  this.rowCount > 0 &&
838
- !this.useVirtualScroll && (h("div", { key: 'f4d357d62af40e3ea8f35c799b4409c7deb2606f', class: "sd-table__pagination" }, h("sd-pagination", { key: '6aad139f1f06d1851f30b5c8331899fe9d23ba37', currentPage: !this.useInternalPagination ? this.pagination.page : this.currentPage, lastPage: !this.useInternalPagination ? this.pagination.lastPage : this.lastPageNumber, onSdPageChange: (e) => this.changePage(e.detail) }), this.useRowsPerPageSelect && (h("sd-select", { key: '85aa19726fca6dce007d8ffcc5550de8115546cb', value: this.useInternalPagination
839
+ !this.useVirtualScroll && (h("div", { key: 'ac990f82d327f1dbfd5fc8e395b348b228c7b724', class: "sd-table__pagination" }, h("sd-pagination", { key: '724c0b1f72efdaae442dde22391e0035c9ddf8f9', currentPage: !this.useInternalPagination ? this.pagination.page : this.currentPage, lastPage: !this.useInternalPagination ? this.pagination.lastPage : this.lastPageNumber, onSdPageChange: (e) => this.changePage(e.detail) }), this.useRowsPerPageSelect && (h("sd-select", { key: 'b5fcde2f53f9d5b497e5da3b4099f9d56f67c245', value: this.useInternalPagination
839
840
  ? this.innerRowsPerPage
840
841
  : this.pagination.rowsPerPage, options: this.rowsPerPageOption, width: "128px", emitValue: true, onSdUpdate: e => {
841
842
  if (!this.isRowsPerPageValue(e.detail))
@@ -1094,12 +1095,12 @@ export class SdTable {
1094
1095
  "setter": false,
1095
1096
  "defaultValue": "{ left: 0, right: 0 }"
1096
1097
  },
1097
- "useTop": {
1098
- "type": "boolean",
1098
+ "radius": {
1099
+ "type": "string",
1099
1100
  "mutable": false,
1100
1101
  "complexType": {
1101
- "original": "boolean",
1102
- "resolved": "boolean",
1102
+ "original": "'default' | 'usetop' | 'full'",
1103
+ "resolved": "\"default\" | \"full\" | \"usetop\"",
1103
1104
  "references": {}
1104
1105
  },
1105
1106
  "required": false,
@@ -1111,8 +1112,8 @@ export class SdTable {
1111
1112
  "getter": false,
1112
1113
  "setter": false,
1113
1114
  "reflect": false,
1114
- "attribute": "use-top",
1115
- "defaultValue": "false"
1115
+ "attribute": "radius",
1116
+ "defaultValue": "'default'"
1116
1117
  },
1117
1118
  "noDataLabel": {
1118
1119
  "type": "string",
@@ -1 +1 @@
1
- import{p as i,H as t,c as s,h as e,t as n}from"./p-Bg9XySrz.js";import{n as h}from"./p-CCwNgVmC.js";import{s as d}from"./p-BJfiMC9H.js";import{l as o,a as p}from"./p-U8VaRj9c.js";import{d as a,C as r,a as l,b as c}from"./p-Bzo51vnP.js";import{d as u}from"./p-DDR0VcRU.js";import{d as g}from"./p-BX5uKVOt.js";import{d as f}from"./p-BLNc_TL-.js";import{d as m}from"./p-DTFXzlvq.js";import{d as b}from"./p-ClKABgST.js";import{d as v}from"./p-Dr5Q2ZKB.js";import{d as y}from"./p-BMIgVp9-.js";import{d as x}from"./p-DrSHJYop.js";import{d as w}from"./p-Cl5io5TH.js";var _={minHeight:"36",paddingX:"12",paddingY:"6",radius:"4",typography:{fontFamily:"Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif",fontWeight:"400",fontSize:"12",lineHeight:"20"}},k={minHeight:"40",paddingX:"16",paddingY:"8",radius:"6",typography:{fontFamily:"Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif",fontWeight:"400",fontSize:"14",lineHeight:"24"}},S={placeholder:"#AAAAAA"};const C={sm:{minHeight:_.minHeight,paddingX:_.paddingX,paddingY:_.paddingY,radius:_.radius,fontSize:_.typography.fontSize,lineHeight:_.typography.lineHeight,fontWeight:_.typography.fontWeight,fontFamily:_.typography.fontFamily},md:{minHeight:k.minHeight,paddingX:k.paddingX,paddingY:k.paddingY,radius:k.radius,fontSize:k.typography.fontSize,lineHeight:k.typography.lineHeight,fontWeight:k.typography.fontWeight,fontFamily:k.typography.fontFamily}},z={text:{placeholder:S.placeholder}},E={chipGap:{gap:"8"}.gap+"px"},A=d.typography.feedback.sm.regular,F={fontSize:A.fontSize+"px",fontWeight:""+A.fontWeight,color:S.placeholder},I=p.listItem,R={radius:o.listBox.radius+"px",maxHeight:"260px",itemPaddingY:I.paddingY+"px",itemPaddingX:I.paddingLeft.depth1+"px",itemPaddingRight:I.paddingRight+"px",itemGap:I.gap+"px",itemFontSize:I.typography.default.fontSize+"px",itemFontWeight:I.typography.default.fontWeight,itemFontWeightSelected:I.typography.selected.fontWeight,itemLineHeight:I.typography.default.lineHeight+"px",itemFontFamily:I.typography.default.fontFamily,itemColor:I.content.default,itemColorHover:I.content.hover,itemBgHover:I.bg.hover,emptyColor:"#888888",emptyFontSize:"12px",emptyLineHeight:"20px"},H=i(class i extends t{constructor(i){super(),!1!==i&&this.__registerHost(),this.update=s(this,"sdUpdate",7),this.focusEvent=s(this,"sdFocus",7),this.blurEvent=s(this,"sdBlur",7),this.inputEvent=s(this,"sdInput",7)}static SUGGESTIONS_VIEWPORT_PADDING=8;get host(){return this}values=[];errors=[];disabledChips=[];size="sm";disabled=!1;placeholder="입력해 주세요.";name=h();rules=[];error=!1;useReset=!1;maxCount;suggestions=[];loadingSuggestions=!1;recommendedItems=[];loadingRecommendedItems=!1;label="";labelWidth="";hint="";errorMessage="";width="";status;icon=void 0;labelTooltip="";labelTooltipProps=null;internalValues=[];internalErrors=[];focused=!1;hovered=!1;inputValue="";activeSuggestionIndex=-1;suppressSuggestions=!1;suppressRecommendations=!1;inputEl;formField;chipInputRef;get value(){return this.internalValues}valuesChanged(i){this.internalValues=Array.isArray(i)?[...i]:[]}errorsChanged(i){Array.isArray(i)&&(this.internalErrors=[...i])}suggestionsChanged(i){Array.isArray(i)||(this.suggestions=[]),this.activeSuggestionIndex=-1,this.suppressSuggestions=!1}recommendedItemsChanged(i){Array.isArray(i)||(this.recommendedItems=[]),this.activeSuggestionIndex=-1}componentWillLoad(){this.internalValues=Array.isArray(this.values)?[...this.values]:[],Array.isArray(this.errors)&&(this.internalErrors=[...this.errors]),this.inputValue=this.inputValue??""}getChipError(i){return"function"==typeof this.errors?this.errors(this.internalValues?.[i]??""):this.internalErrors?.[i]??!1}getChipDisabled(i){return!!this.disabled||("function"==typeof this.disabledChips?this.disabledChips(this.internalValues?.[i]??""):this.disabledChips?.[i]??!1)}update;focusEvent;blurEvent;inputEvent;async sdValidate(){return this.formField?.sdValidate()}async sdReset(){return this.formField?.sdReset()}async sdResetValidate(){return this.formField?.sdResetValidation()}async sdFocus(){return this.formField?.sdFocus()}addChip=i=>{if(null!=this.maxCount&&this.internalValues.length>=this.maxCount)return;const t=[...this.internalValues,i];if(this.internalValues=t,this.values=t,Array.isArray(this.errors)){const i=[...this.internalErrors,!1];this.internalErrors=i,this.errors=i}Array.isArray(this.disabledChips)&&(this.disabledChips=[...this.disabledChips,!1]),null!=this.inputEl&&(this.inputEl.value=""),this.inputValue="",this.activeSuggestionIndex=-1,this.suppressSuggestions=!0,this.update.emit(t),this.inputEvent.emit(""),this.inputEl?.focus(),this.suppressRecommendations=!0};handleChipRemove=i=>{const t=this.internalValues.filter(((t,s)=>s!==i));if(this.internalValues=t,this.values=t,Array.isArray(this.errors)){const t=this.internalErrors.filter(((t,s)=>s!==i));this.internalErrors=t,this.errors=t}Array.isArray(this.disabledChips)&&(this.disabledChips=this.disabledChips.filter(((t,s)=>s!==i))),this.update.emit(t),this.inputEl?.focus(),this.suppressRecommendations=!0};handleKeyDown=i=>{const t=i.target,s=this.suggestions??[],e=this.recommendedItems??[],n=this.focused&&""!==this.inputValue&&!this.suppressSuggestions&&(s.length>0||this.loadingSuggestions),h=this.focused&&""===this.inputValue&&!this.suppressRecommendations&&(e.length>0||this.loadingRecommendedItems),d=n?s:e;if(n||h){if("ArrowDown"===i.key)return i.preventDefault(),void(this.activeSuggestionIndex=Math.min(this.activeSuggestionIndex+1,d.length-1));if("ArrowUp"===i.key)return i.preventDefault(),void(this.activeSuggestionIndex=Math.max(this.activeSuggestionIndex-1,-1));if("Escape"===i.key)return n&&(this.suppressSuggestions=!0),h&&(this.suppressRecommendations=!0),void(this.activeSuggestionIndex=-1);if("Enter"===i.key&&this.activeSuggestionIndex>=0)return i.preventDefault(),void this.addChip(d[this.activeSuggestionIndex])}if("Enter"!==i.key||i.isComposing||""===t.value.trim()){if("Backspace"===i.key&&""===t.value&&this.internalValues.length>0){if(this.getChipDisabled(this.internalValues.length-1))return;i.preventDefault();const t=this.internalValues.slice(0,-1);if(this.internalValues=t,this.values=t,Array.isArray(this.errors)){const i=this.internalErrors.slice(0,-1);this.internalErrors=i,this.errors=i}Array.isArray(this.disabledChips)&&(this.disabledChips=this.disabledChips.slice(0,-1)),this.update.emit(t)}}else{if(null!=this.maxCount&&this.internalValues.length>=this.maxCount)return;i.preventDefault(),this.addChip(t.value.trim())}};handleInput=i=>{const t=i.target.value,s=""===t;""===this.inputValue!==s&&(this.activeSuggestionIndex=-1,s&&(this.suppressRecommendations=!1)),this.inputValue=t,this.suppressSuggestions=!1,this.inputEvent.emit(t)};handleFocus=()=>{this.focused=!0,this.suppressRecommendations=!1,this.focusEvent.emit()};handleBlur=()=>{this.focused=!1,this.activeSuggestionIndex=-1,this.blurEvent.emit()};closeSuggestions=()=>{this.focused=!1,this.activeSuggestionIndex=-1,this.suppressSuggestions=!0,this.suppressRecommendations=!0};handleContainerClick=()=>{this.disabled||this.inputEl?.focus()};handleResetInput=()=>{const i=this.internalValues.reduce(((i,t,s)=>(this.getChipDisabled(s)&&i.push(s),i)),[]),t=i.map((i=>this.internalValues[i]));if(this.internalValues=t,this.values=t,Array.isArray(this.errors)){const t=i.map((i=>this.internalErrors[i]??!1));this.internalErrors=t,this.errors=t}else this.internalErrors=[];if(Array.isArray(this.disabledChips)){const t=this.disabledChips;this.disabledChips=i.map((i=>t[i]))}this.update.emit(t),this.inputEl?.focus()};render(){const t=C[this.size]??C.sm,s={[`--sd-system-size-field-${this.size}-height`]:"auto",["--sd-system-radius-field-"+this.size]:t.radius+"px","--sd-chip-input-min-height":t.minHeight+"px","--sd-chip-input-padding-x":t.paddingX+"px","--sd-chip-input-padding-y":t.paddingY+"px","--sd-chip-input-font-size":t.fontSize+"px","--sd-chip-input-line-height":t.lineHeight+"px","--sd-chip-input-font-weight":t.fontWeight,"--sd-chip-input-font-family":t.fontFamily,"--sd-chip-input-chip-gap":E.chipGap,"--sd-chip-input-placeholder-color":z.text.placeholder,"--sd-chip-input-reset-gap":E.chipGap,"--sd-chip-input-divider-color":"#E1E1E1","--sd-chip-input-field-height":c.height,"--sd-chip-input-field-padding-x":c.paddingX,"--sd-chip-input-field-radius":c.radius,"--sd-chip-input-field-border-width":c.borderWidth,"--sd-chip-input-field-bg":l.bg.default,"--sd-chip-input-field-border-color":"transparent","--sd-chip-input-field-content":l.content.focus,"--sd-chip-input-field-font-size":r.focus.fontSize,"--sd-chip-input-field-font-weight":r.focus.fontWeight,"--sd-chip-input-field-line-height":r.focus.lineHeight,"--sd-chip-input-field-font-family":r.focus.fontFamily,"--sd-chip-input-max-count-font-size":F.fontSize,"--sd-chip-input-max-count-font-weight":F.fontWeight,"--sd-chip-input-max-count-color":F.color,"--sd-chip-input-suggestions-radius":R.radius,"--sd-chip-input-suggestions-max-height":R.maxHeight,"--sd-chip-input-suggestion-padding-y":R.itemPaddingY,"--sd-chip-input-suggestion-padding-x":R.itemPaddingX,"--sd-chip-input-suggestion-padding-right":R.itemPaddingRight,"--sd-chip-input-suggestion-gap":R.itemGap,"--sd-chip-input-suggestion-font-size":R.itemFontSize,"--sd-chip-input-suggestion-font-weight":R.itemFontWeight,"--sd-chip-input-suggestion-font-weight-selected":R.itemFontWeightSelected,"--sd-chip-input-suggestion-line-height":R.itemLineHeight,"--sd-chip-input-suggestion-font-family":R.itemFontFamily,"--sd-chip-input-suggestion-color":R.itemColor,"--sd-chip-input-suggestion-color-hover":R.itemColorHover,"--sd-chip-input-suggestion-bg-hover":R.itemBgHover,"--sd-chip-input-suggestions-empty-color":R.emptyColor,"--sd-chip-input-suggestions-empty-font-size":R.emptyFontSize,"--sd-chip-input-suggestions-empty-line-height":R.emptyLineHeight},n=null!=this.maxCount&&this.internalValues.length>=this.maxCount,h=this.useReset&&this.internalValues.length>0||null!=this.maxCount,d=this.suggestions??[],o=this.recommendedItems??[],p=this.focused&&""!==this.inputValue&&!this.suppressSuggestions&&(d.length>0||this.loadingSuggestions),a=p||this.focused&&""===this.inputValue&&!this.suppressRecommendations&&(o.length>0||this.loadingRecommendedItems),u=p?d:o,g=p?this.loadingSuggestions&&0===d.length:this.loadingRecommendedItems&&0===o.length,f={width:(this.chipInputRef?.offsetWidth??0)+"px",display:"flex",flexDirection:"column",boxSizing:"border-box",background:"#FFFFFF",borderRadius:R.radius,boxShadow:"2px 2px 12px 2px rgba(0, 0, 0, 0.1)",maxHeight:R.maxHeight,minHeight:"0",overflowY:"auto",overflowX:"hidden",outline:"none"},m={display:"flex",alignItems:"center",gap:R.itemGap,padding:`${R.itemPaddingY} ${R.itemPaddingRight} ${R.itemPaddingY} ${R.itemPaddingX}`,fontSize:R.itemFontSize,lineHeight:R.itemLineHeight,fontWeight:R.itemFontWeight,fontFamily:R.itemFontFamily,color:R.itemColor,cursor:"pointer",userSelect:"none",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},b={padding:"12px",textAlign:"center",fontSize:R.emptyFontSize,lineHeight:R.emptyLineHeight,fontFamily:R.itemFontFamily,color:R.emptyColor};return e("sd-field",{key:"6ff0688cd9a076cd81693364bfeb6a98b5bf018e",name:this.name,label:this.label,labelWidth:this.labelWidth,hint:this.hint,errorMessage:this.errorMessage,rules:this.rules,error:this.error,disabled:this.disabled,focused:this.focused,hovered:this.hovered,status:this.status,size:this.size,width:this.width,icon:this.icon,labelTooltip:this.labelTooltip,labelTooltipProps:this.labelTooltipProps,ref:i=>this.formField=i,style:s,onMouseEnter:()=>this.hovered=!0,onMouseLeave:()=>this.hovered=!1},e("div",{key:"0c6ae92de4dcb44ed4fbcd12f1dddef93cec12db",class:"sd-chip-input",ref:i=>this.chipInputRef=i,onClick:this.handleContainerClick},(this.internalValues??[]).map(((i,t)=>e("sd-chip",{key:t,value:i,error:this.getChipError(t),disabled:this.getChipDisabled(t),editable:!1,onSdRemove:()=>this.handleChipRemove(t)}))),!n&&e("div",{key:"df111f3110b444ed296db8c6b7f00d9209f858af",class:{"sd-chip-input__field":!0,"sd-chip-input__field--filled":""!==this.inputValue,"sd-chip-input__field--empty":""===this.inputValue&&this.internalValues.length>0&&!this.focused},"data-value":""!==this.inputValue?this.inputValue:0===this.internalValues.length?this.placeholder:""},e("input",{key:"8e170c84cedab36edbdd0a84e7e2e1ac0fba9632",ref:i=>this.inputEl=i,class:"sd-chip-input__input",placeholder:0===this.internalValues.length?this.placeholder:"",disabled:this.disabled,size:1,onInput:this.handleInput,onKeyDown:this.handleKeyDown,onFocus:this.handleFocus,onBlur:this.handleBlur})),h&&e("div",{key:"5b30bb4f89c9d3c9b18870acccad22bd97e1d748",class:"sd-chip-input__reset"},""===this.inputValue&&e("span",{key:"6fbf74a5a77b70789a609d28f5c4b6dd2aab57ef",class:"sd-chip-input__divider"}),null!=this.maxCount&&e("span",{key:"fbb21a27bdd2aa38870cfd8d16b7e5293769eaf3",class:"sd-chip-input__max-count"},"최대 ",this.maxCount,"개"),this.useReset&&this.internalValues.length>0&&e("sd-text-link",{key:"83626145602b13d7a00ef955a6db59f41c152529",icon:"reset",iconColor:"#888888",label:"입력 초기화",underline:!0,disabled:this.disabled,style:{"--sd-text-link-color":"#555555"},onSdClick:this.handleResetInput})),a&&e("sd-portal",{key:"1682a89b513098f192f776af782aa9ee432574e8",open:a,parentRef:this.chipInputRef??null,viewportPadding:i.SUGGESTIONS_VIEWPORT_PADDING,onSdClose:this.closeSuggestions},e("div",{key:"3efb484bd5616e411824f7014a759a34a9e93d8b",class:"sd-chip-input__suggestions",role:"listbox",style:f},g&&e("div",{key:"b5b1d5e6db03f6fe60864b6c19e9b2c753468447",class:"sd-chip-input__suggestions-empty",style:b},"불러오는 중..."),u.map(((i,t)=>e("div",{key:i,class:{"sd-chip-input__suggestion-item":!0,"sd-chip-input__suggestion-item--active":t===this.activeSuggestionIndex},role:"option",tabIndex:-1,"aria-selected":t===this.activeSuggestionIndex,style:t===this.activeSuggestionIndex?{...m,background:R.itemBgHover,color:R.itemColorHover,fontWeight:R.itemFontWeightSelected}:m,onMouseDown:t=>{t.preventDefault(),this.addChip(i)}},i)))))))}static get watchers(){return{values:[{valuesChanged:0}],errors:[{errorsChanged:0}],suggestions:[{suggestionsChanged:0}],recommendedItems:[{recommendedItemsChanged:0}]}}static get style(){return"sd-chip-input{display:inline-flex}sd-chip-input .sd-chip-input{position:relative;width:100%;isolation:isolate;min-height:var(--sd-chip-input-min-height);display:flex;flex-flow:row wrap;align-items:center;gap:var(--sd-chip-input-chip-gap);padding:var(--sd-chip-input-padding-y) var(--sd-chip-input-padding-x);cursor:text}sd-chip-input .sd-chip-input__reset{display:inline-flex;align-items:center;gap:var(--sd-chip-input-reset-gap);flex-shrink:0}sd-chip-input .sd-chip-input__divider{display:inline-block;width:1px;height:12px;background-color:var(--sd-chip-input-divider-color);flex-shrink:0}sd-chip-input .sd-chip-input__max-count{font-size:var(--sd-chip-input-max-count-font-size);font-weight:var(--sd-chip-input-max-count-font-weight);color:var(--sd-chip-input-max-count-color);white-space:nowrap;flex-shrink:0}sd-chip-input .sd-chip-input__field{flex:0 0 auto;display:inline-grid;grid-template-columns:minmax(0, max-content);align-items:center;min-width:1ch;max-width:100%;height:var(--sd-chip-input-field-height);box-sizing:border-box;padding:0;border:none;border-radius:0;background:transparent;overflow:hidden}sd-chip-input .sd-chip-input__field::after{content:attr(data-value);grid-area:1/1;visibility:hidden;white-space:pre;font-size:var(--sd-chip-input-field-font-size);line-height:var(--sd-chip-input-field-line-height);font-weight:var(--sd-chip-input-field-font-weight);font-family:var(--sd-chip-input-field-font-family)}sd-chip-input .sd-chip-input__field--filled{padding:0 var(--sd-chip-input-field-padding-x);border:var(--sd-chip-input-field-border-width) solid var(--sd-chip-input-field-border-color);border-radius:var(--sd-chip-input-field-radius);background:var(--sd-chip-input-field-bg)}sd-chip-input .sd-chip-input__field--empty{position:absolute;top:0;left:0;width:0;height:0;min-width:0;overflow:hidden}sd-chip-input .sd-chip-input__input{grid-area:1/1;width:100%;min-width:1ch;height:var(--sd-chip-input-field-height);margin:0;padding:0;border:none;outline:none;overflow:hidden;text-overflow:ellipsis;background:transparent;font-size:var(--sd-chip-input-field-font-size);line-height:var(--sd-chip-input-field-line-height);font-weight:var(--sd-chip-input-field-font-weight);font-family:var(--sd-chip-input-field-font-family);color:var(--sd-chip-input-field-content)}sd-chip-input .sd-chip-input__input[disabled]{cursor:not-allowed;pointer-events:none}sd-chip-input .sd-chip-input__input::placeholder{color:var(--sd-chip-input-placeholder-color)}sd-chip-input .sd-chip-input__suggestions{display:flex;flex-direction:column;box-sizing:border-box;background:white;border-radius:var(--sd-chip-input-suggestions-radius);box-shadow:2px 2px 12px 2px rgba(0, 0, 0, 0.1);max-height:var(--sd-chip-input-suggestions-max-height);min-height:0;overflow-y:auto;overflow-x:hidden;outline:none}sd-chip-input .sd-chip-input__suggestion-item{display:flex;align-items:center;gap:var(--sd-chip-input-suggestion-gap);padding:var(--sd-chip-input-suggestion-padding-y) var(--sd-chip-input-suggestion-padding-right) var(--sd-chip-input-suggestion-padding-y) var(--sd-chip-input-suggestion-padding-x);font-size:var(--sd-chip-input-suggestion-font-size);line-height:var(--sd-chip-input-suggestion-line-height);font-weight:var(--sd-chip-input-suggestion-font-weight);font-family:var(--sd-chip-input-suggestion-font-family);color:var(--sd-chip-input-suggestion-color);cursor:pointer;user-select:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}sd-chip-input .sd-chip-input__suggestion-item--active{background:var(--sd-chip-input-suggestion-bg-hover);color:var(--sd-chip-input-suggestion-color-hover);font-weight:var(--sd-chip-input-suggestion-font-weight-selected)}sd-chip-input .sd-chip-input__suggestions-empty{padding:12px;text-align:center;font-size:var(--sd-chip-input-suggestions-empty-font-size);line-height:var(--sd-chip-input-suggestions-empty-line-height);font-family:var(--sd-chip-input-suggestion-font-family);color:var(--sd-chip-input-suggestions-empty-color)}"}},[512,"sd-chip-input",{values:[1040],errors:[1040],disabledChips:[1040],size:[1],disabled:[4],placeholder:[1],name:[1],rules:[16],error:[1028],useReset:[4,"use-reset"],maxCount:[2,"max-count"],suggestions:[1040],loadingSuggestions:[4,"loading-suggestions"],recommendedItems:[1040],loadingRecommendedItems:[4,"loading-recommended-items"],label:[1],labelWidth:[8,"label-width"],hint:[1],errorMessage:[1,"error-message"],width:[8],status:[1],icon:[16],labelTooltip:[1,"label-tooltip"],labelTooltipProps:[16],internalValues:[32],internalErrors:[32],focused:[32],hovered:[32],inputValue:[32],activeSuggestionIndex:[32],suppressSuggestions:[32],suppressRecommendations:[32],sdValidate:[64],sdReset:[64],sdResetValidate:[64],sdFocus:[64]},void 0,{values:[{valuesChanged:0}],errors:[{errorsChanged:0}],suggestions:[{suggestionsChanged:0}],recommendedItems:[{recommendedItemsChanged:0}]}]),j=H,V=function(){"undefined"!=typeof customElements&&["sd-chip-input","sd-button","sd-chip","sd-field","sd-floating-portal","sd-ghost-button","sd-icon","sd-portal","sd-tag","sd-text-link","sd-tooltip"].forEach((i=>{switch(i){case"sd-chip-input":customElements.get(n(i))||customElements.define(n(i),H);break;case"sd-button":customElements.get(n(i))||u();break;case"sd-chip":customElements.get(n(i))||a();break;case"sd-field":customElements.get(n(i))||g();break;case"sd-floating-portal":customElements.get(n(i))||f();break;case"sd-ghost-button":customElements.get(n(i))||m();break;case"sd-icon":customElements.get(n(i))||b();break;case"sd-portal":customElements.get(n(i))||v();break;case"sd-tag":customElements.get(n(i))||y();break;case"sd-text-link":customElements.get(n(i))||x();break;case"sd-tooltip":customElements.get(n(i))||w()}}))};export{j as SdChipInput,V as defineCustomElement}
1
+ import{p as i,H as t,c as s,h as e,t as n}from"./p-Bg9XySrz.js";import{n as h}from"./p-CCwNgVmC.js";import{s as d}from"./p-BJfiMC9H.js";import{l as o,a as p}from"./p-U8VaRj9c.js";import{d as a,C as r,a as l,b as u}from"./p-Bzo51vnP.js";import{d as c}from"./p-DDR0VcRU.js";import{d as g}from"./p-BX5uKVOt.js";import{d as f}from"./p-BLNc_TL-.js";import{d as m}from"./p-DTFXzlvq.js";import{d as b}from"./p-ClKABgST.js";import{d as v}from"./p-Dr5Q2ZKB.js";import{d as y}from"./p-BMIgVp9-.js";import{d as x}from"./p-DrSHJYop.js";import{d as w}from"./p-Cl5io5TH.js";var _={minHeight:"36",paddingX:"12",paddingY:"6",radius:"4",typography:{fontFamily:"Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif",fontWeight:"400",fontSize:"12",lineHeight:"20"}},k={minHeight:"40",paddingX:"16",paddingY:"8",radius:"6",typography:{fontFamily:"Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif",fontWeight:"400",fontSize:"14",lineHeight:"24"}},C={placeholder:"#AAAAAA"};const S={sm:{minHeight:_.minHeight,paddingX:_.paddingX,paddingY:_.paddingY,radius:_.radius,fontSize:_.typography.fontSize,lineHeight:_.typography.lineHeight,fontWeight:_.typography.fontWeight,fontFamily:_.typography.fontFamily},md:{minHeight:k.minHeight,paddingX:k.paddingX,paddingY:k.paddingY,radius:k.radius,fontSize:k.typography.fontSize,lineHeight:k.typography.lineHeight,fontWeight:k.typography.fontWeight,fontFamily:k.typography.fontFamily}},z={text:{placeholder:C.placeholder}},E={chipGap:{gap:"8"}.gap+"px"},A=d.typography.feedback.sm.regular,F={fontSize:A.fontSize+"px",fontWeight:""+A.fontWeight,color:C.placeholder},I=p.listItem,R={radius:o.listBox.radius+"px",maxHeight:"260px",itemPaddingY:I.paddingY+"px",itemPaddingX:I.paddingLeft.depth1+"px",itemPaddingRight:I.paddingRight+"px",itemGap:I.gap+"px",itemFontSize:I.typography.default.fontSize+"px",itemFontWeight:I.typography.default.fontWeight,itemFontWeightSelected:I.typography.selected.fontWeight,itemLineHeight:I.typography.default.lineHeight+"px",itemFontFamily:I.typography.default.fontFamily,itemColor:I.content.default,itemColorHover:I.content.hover,itemBgHover:I.bg.hover,emptyColor:"#888888",emptyFontSize:"12px",emptyLineHeight:"20px"},V=i(class i extends t{constructor(i){super(),!1!==i&&this.__registerHost(),this.update=s(this,"sdUpdate",7),this.focusEvent=s(this,"sdFocus",7),this.blurEvent=s(this,"sdBlur",7),this.inputEvent=s(this,"sdInput",7)}static SUGGESTIONS_VIEWPORT_PADDING=8;get host(){return this}values=[];errors=[];disabledChips=[];size="sm";disabled=!1;placeholder="입력해 주세요.";name=h();rules=[];error=!1;useReset=!1;maxCount;duplicateLabel;suggestions=[];loadingSuggestions=!1;recommendedItems=[];loadingRecommendedItems=!1;label="";labelWidth="";hint="";errorMessage="";width="";status;icon=void 0;labelTooltip="";labelTooltipProps=null;internalValues=[];internalErrors=[];focused=!1;hovered=!1;inputValue="";activeSuggestionIndex=-1;suppressSuggestions=!1;suppressRecommendations=!1;inputEl;formField;chipInputRef;get value(){return this.internalValues}valuesChanged(i){this.internalValues=Array.isArray(i)?[...i]:[]}errorsChanged(i){Array.isArray(i)&&(this.internalErrors=[...i])}internalValuesChanged_validate(){"function"==typeof this.formField?.sdValidate&&this.formField.sdValidate()}suggestionsChanged(i){Array.isArray(i)||(this.suggestions=[]),this.activeSuggestionIndex=-1,this.suppressSuggestions=!1}recommendedItemsChanged(i){Array.isArray(i)||(this.recommendedItems=[]),this.activeSuggestionIndex=-1}componentWillLoad(){this.internalValues=Array.isArray(this.values)?[...this.values]:[],Array.isArray(this.errors)&&(this.internalErrors=[...this.errors]),this.inputValue=this.inputValue??""}isDuplicateChip(i){return this.internalValues.indexOf(this.internalValues[i])!==i}getChipError(i){return!!this.isDuplicateChip(i)||("function"==typeof this.errors?this.errors(this.internalValues?.[i]??""):this.internalErrors?.[i]??!1)}getChipDisabled(i){return!!this.disabled||("function"==typeof this.disabledChips?this.disabledChips(this.internalValues?.[i]??""):this.disabledChips?.[i]??!1)}update;focusEvent;blurEvent;inputEvent;async sdValidate(){return this.formField?.sdValidate()}async sdReset(){return this.formField?.sdReset()}async sdResetValidate(){return this.formField?.sdResetValidation()}async sdFocus(){return this.formField?.sdFocus()}addChip=i=>{if(null!=this.maxCount&&this.internalValues.length>=this.maxCount)return;const t=[...this.internalValues,i];if(this.internalValues=t,this.values=t,Array.isArray(this.errors)){const i=[...this.internalErrors,!1];this.internalErrors=i,this.errors=i}Array.isArray(this.disabledChips)&&(this.disabledChips=[...this.disabledChips,!1]),null!=this.inputEl&&(this.inputEl.value=""),this.inputValue="",this.activeSuggestionIndex=-1,this.suppressSuggestions=!0,this.update.emit(t),this.inputEvent.emit(""),this.inputEl?.focus(),this.suppressRecommendations=!0};handleChipRemove=i=>{const t=this.internalValues.filter(((t,s)=>s!==i));if(this.internalValues=t,this.values=t,Array.isArray(this.errors)){const t=this.internalErrors.filter(((t,s)=>s!==i));this.internalErrors=t,this.errors=t}Array.isArray(this.disabledChips)&&(this.disabledChips=this.disabledChips.filter(((t,s)=>s!==i))),this.update.emit(t),this.inputEl?.focus(),this.suppressRecommendations=!0};handleKeyDown=i=>{const t=i.target,s=this.suggestions??[],e=this.recommendedItems??[],n=this.focused&&""!==this.inputValue&&!this.suppressSuggestions&&(s.length>0||this.loadingSuggestions),h=this.focused&&""===this.inputValue&&!this.suppressRecommendations&&(e.length>0||this.loadingRecommendedItems),d=n?s:e;if(n||h){if("ArrowDown"===i.key)return i.preventDefault(),void(this.activeSuggestionIndex=Math.min(this.activeSuggestionIndex+1,d.length-1));if("ArrowUp"===i.key)return i.preventDefault(),void(this.activeSuggestionIndex=Math.max(this.activeSuggestionIndex-1,-1));if("Escape"===i.key)return n&&(this.suppressSuggestions=!0),h&&(this.suppressRecommendations=!0),void(this.activeSuggestionIndex=-1);if("Enter"===i.key&&this.activeSuggestionIndex>=0)return i.preventDefault(),void this.addChip(d[this.activeSuggestionIndex])}if("Enter"!==i.key||i.isComposing||""===t.value.trim()){if("Backspace"===i.key&&""===t.value&&this.internalValues.length>0){if(this.getChipDisabled(this.internalValues.length-1))return;i.preventDefault();const t=this.internalValues.slice(0,-1);if(this.internalValues=t,this.values=t,Array.isArray(this.errors)){const i=this.internalErrors.slice(0,-1);this.internalErrors=i,this.errors=i}Array.isArray(this.disabledChips)&&(this.disabledChips=this.disabledChips.slice(0,-1)),this.update.emit(t)}}else{if(null!=this.maxCount&&this.internalValues.length>=this.maxCount)return;i.preventDefault(),this.addChip(t.value.trim())}};handleInput=i=>{const t=i.target.value,s=""===t;""===this.inputValue!==s&&(this.activeSuggestionIndex=-1,s&&(this.suppressRecommendations=!1)),this.inputValue=t,this.suppressSuggestions=!1,this.inputEvent.emit(t)};handleFocus=()=>{this.focused=!0,this.suppressRecommendations=!1,this.focusEvent.emit()};handleBlur=()=>{this.focused=!1,this.activeSuggestionIndex=-1,this.blurEvent.emit()};closeSuggestions=()=>{this.focused=!1,this.activeSuggestionIndex=-1,this.suppressSuggestions=!0,this.suppressRecommendations=!0};handleContainerClick=()=>{this.disabled||this.inputEl?.focus()};handleResetInput=()=>{const i=this.internalValues.reduce(((i,t,s)=>(this.getChipDisabled(s)&&i.push(s),i)),[]),t=i.map((i=>this.internalValues[i]));if(this.internalValues=t,this.values=t,Array.isArray(this.errors)){const t=i.map((i=>this.internalErrors[i]??!1));this.internalErrors=t,this.errors=t}else this.internalErrors=[];if(Array.isArray(this.disabledChips)){const t=this.disabledChips;this.disabledChips=i.map((i=>t[i]))}this.update.emit(t),this.inputEl?.focus()};duplicateRule=()=>{const i=new Set;for(const t of this.internalValues){if(i.has(t))return null!=this.duplicateLabel&&""!==this.duplicateLabel?`이미 입력된 ${this.duplicateLabel}입니다.`:"중복된 값이 존재합니다.";i.add(t)}return!0};render(){const t=S[this.size]??S.sm,s={[`--sd-system-size-field-${this.size}-height`]:"auto",["--sd-system-radius-field-"+this.size]:t.radius+"px","--sd-chip-input-min-height":t.minHeight+"px","--sd-chip-input-padding-x":t.paddingX+"px","--sd-chip-input-padding-y":t.paddingY+"px","--sd-chip-input-font-size":t.fontSize+"px","--sd-chip-input-line-height":t.lineHeight+"px","--sd-chip-input-font-weight":t.fontWeight,"--sd-chip-input-font-family":t.fontFamily,"--sd-chip-input-chip-gap":E.chipGap,"--sd-chip-input-placeholder-color":z.text.placeholder,"--sd-chip-input-reset-gap":E.chipGap,"--sd-chip-input-divider-color":"#E1E1E1","--sd-chip-input-field-height":u.height,"--sd-chip-input-field-padding-x":u.paddingX,"--sd-chip-input-field-radius":u.radius,"--sd-chip-input-field-border-width":u.borderWidth,"--sd-chip-input-field-bg":l.bg.default,"--sd-chip-input-field-border-color":"transparent","--sd-chip-input-field-content":l.content.focus,"--sd-chip-input-field-font-size":r.focus.fontSize,"--sd-chip-input-field-font-weight":r.focus.fontWeight,"--sd-chip-input-field-line-height":r.focus.lineHeight,"--sd-chip-input-field-font-family":r.focus.fontFamily,"--sd-chip-input-max-count-font-size":F.fontSize,"--sd-chip-input-max-count-font-weight":F.fontWeight,"--sd-chip-input-max-count-color":F.color,"--sd-chip-input-suggestions-radius":R.radius,"--sd-chip-input-suggestions-max-height":R.maxHeight,"--sd-chip-input-suggestion-padding-y":R.itemPaddingY,"--sd-chip-input-suggestion-padding-x":R.itemPaddingX,"--sd-chip-input-suggestion-padding-right":R.itemPaddingRight,"--sd-chip-input-suggestion-gap":R.itemGap,"--sd-chip-input-suggestion-font-size":R.itemFontSize,"--sd-chip-input-suggestion-font-weight":R.itemFontWeight,"--sd-chip-input-suggestion-font-weight-selected":R.itemFontWeightSelected,"--sd-chip-input-suggestion-line-height":R.itemLineHeight,"--sd-chip-input-suggestion-font-family":R.itemFontFamily,"--sd-chip-input-suggestion-color":R.itemColor,"--sd-chip-input-suggestion-color-hover":R.itemColorHover,"--sd-chip-input-suggestion-bg-hover":R.itemBgHover,"--sd-chip-input-suggestions-empty-color":R.emptyColor,"--sd-chip-input-suggestions-empty-font-size":R.emptyFontSize,"--sd-chip-input-suggestions-empty-line-height":R.emptyLineHeight},n=null!=this.maxCount&&this.internalValues.length>=this.maxCount,h=this.useReset&&this.internalValues.length>0||null!=this.maxCount,d=this.suggestions??[],o=this.recommendedItems??[],p=this.focused&&""!==this.inputValue&&!this.suppressSuggestions&&(d.length>0||this.loadingSuggestions),a=p||this.focused&&""===this.inputValue&&!this.suppressRecommendations&&(o.length>0||this.loadingRecommendedItems),c=p?d:o,g=p?this.loadingSuggestions&&0===d.length:this.loadingRecommendedItems&&0===o.length,f={width:(this.chipInputRef?.offsetWidth??0)+"px",display:"flex",flexDirection:"column",boxSizing:"border-box",background:"#FFFFFF",borderRadius:R.radius,boxShadow:"2px 2px 12px 2px rgba(0, 0, 0, 0.1)",maxHeight:R.maxHeight,minHeight:"0",overflowY:"auto",overflowX:"hidden",outline:"none"},m={display:"flex",alignItems:"center",gap:R.itemGap,padding:`${R.itemPaddingY} ${R.itemPaddingRight} ${R.itemPaddingY} ${R.itemPaddingX}`,fontSize:R.itemFontSize,lineHeight:R.itemLineHeight,fontWeight:R.itemFontWeight,fontFamily:R.itemFontFamily,color:R.itemColor,cursor:"pointer",userSelect:"none",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},b={padding:"12px",textAlign:"center",fontSize:R.emptyFontSize,lineHeight:R.emptyLineHeight,fontFamily:R.itemFontFamily,color:R.emptyColor};return e("sd-field",{key:"33ae95b159edcb8ee407cf8d311428f419f26e95",name:this.name,label:this.label,labelWidth:this.labelWidth,hint:this.hint,errorMessage:this.errorMessage,rules:[this.duplicateRule,...this.rules??[]],error:this.error,disabled:this.disabled,focused:this.focused,hovered:this.hovered,status:this.status,size:this.size,width:this.width,icon:this.icon,labelTooltip:this.labelTooltip,labelTooltipProps:this.labelTooltipProps,ref:i=>this.formField=i,style:s,onMouseEnter:()=>this.hovered=!0,onMouseLeave:()=>this.hovered=!1},e("div",{key:"4f7cd96e4cda06239a7498b8af5f1f3169362028",class:"sd-chip-input",ref:i=>this.chipInputRef=i,onClick:this.handleContainerClick},(this.internalValues??[]).map(((i,t)=>e("sd-chip",{key:t,value:i,error:this.getChipError(t),disabled:this.getChipDisabled(t),editable:!1,onSdRemove:()=>this.handleChipRemove(t)}))),!n&&e("div",{key:"dab7b1c520923fdb8cb026141727d8d008b83663",class:{"sd-chip-input__field":!0,"sd-chip-input__field--filled":""!==this.inputValue,"sd-chip-input__field--empty":""===this.inputValue&&this.internalValues.length>0&&!this.focused},"data-value":""!==this.inputValue?this.inputValue:0===this.internalValues.length?this.placeholder:""},e("input",{key:"0aee2d0f30c5af7fccfc2e35e5cee17912712ce9",ref:i=>this.inputEl=i,class:"sd-chip-input__input",placeholder:0===this.internalValues.length?this.placeholder:"",disabled:this.disabled,size:1,onInput:this.handleInput,onKeyDown:this.handleKeyDown,onFocus:this.handleFocus,onBlur:this.handleBlur})),h&&e("div",{key:"b0b508db62d31f6427d5a2def435fec7fc552e92",class:"sd-chip-input__reset"},""===this.inputValue&&e("span",{key:"30ce147f3bc8070192d95f381fa7f75ad37aab9b",class:"sd-chip-input__divider"}),null!=this.maxCount&&e("span",{key:"8c43a2920e55a36ff0c0ab952a52ab3df8d3c98d",class:"sd-chip-input__max-count"},"최대 ",this.maxCount,"개"),this.useReset&&this.internalValues.length>0&&e("sd-text-link",{key:"543316c12760fe16449e2b89a9afb8c43344eab5",icon:"reset",iconColor:"#888888",label:"입력 초기화",underline:!0,disabled:this.disabled,style:{"--sd-text-link-color":"#555555"},onSdClick:this.handleResetInput})),a&&e("sd-portal",{key:"c402b8336f7d62213f2b803f80f7a2ffabce2c9d",open:a,parentRef:this.chipInputRef??null,viewportPadding:i.SUGGESTIONS_VIEWPORT_PADDING,onSdClose:this.closeSuggestions},e("div",{key:"4ade4acb535b2db7011699a449afd8c17fe5696d",class:"sd-chip-input__suggestions",role:"listbox",style:f},g&&e("div",{key:"e07a447f7c9a9d376680ddb3af6daf58e0d39167",class:"sd-chip-input__suggestions-empty",style:b},"불러오는 중..."),c.map(((i,t)=>e("div",{key:i,class:{"sd-chip-input__suggestion-item":!0,"sd-chip-input__suggestion-item--active":t===this.activeSuggestionIndex},role:"option",tabIndex:-1,"aria-selected":t===this.activeSuggestionIndex,style:t===this.activeSuggestionIndex?{...m,background:R.itemBgHover,color:R.itemColorHover,fontWeight:R.itemFontWeightSelected}:m,onMouseDown:t=>{t.preventDefault(),this.addChip(i)}},i)))))))}static get watchers(){return{values:[{valuesChanged:0}],errors:[{errorsChanged:0}],internalValues:[{internalValuesChanged_validate:0}],suggestions:[{suggestionsChanged:0}],recommendedItems:[{recommendedItemsChanged:0}]}}static get style(){return"sd-chip-input{display:inline-flex}sd-chip-input .sd-chip-input{position:relative;width:100%;isolation:isolate;min-height:var(--sd-chip-input-min-height);display:flex;flex-flow:row wrap;align-items:center;gap:var(--sd-chip-input-chip-gap);padding:var(--sd-chip-input-padding-y) var(--sd-chip-input-padding-x);cursor:text}sd-chip-input .sd-chip-input__reset{display:inline-flex;align-items:center;gap:var(--sd-chip-input-reset-gap);flex-shrink:0}sd-chip-input .sd-chip-input__divider{display:inline-block;width:1px;height:12px;background-color:var(--sd-chip-input-divider-color);flex-shrink:0}sd-chip-input .sd-chip-input__max-count{font-size:var(--sd-chip-input-max-count-font-size);font-weight:var(--sd-chip-input-max-count-font-weight);color:var(--sd-chip-input-max-count-color);white-space:nowrap;flex-shrink:0}sd-chip-input .sd-chip-input__field{flex:0 0 auto;display:inline-grid;grid-template-columns:minmax(0, max-content);align-items:center;min-width:1ch;max-width:100%;height:var(--sd-chip-input-field-height);box-sizing:border-box;padding:0;border:none;border-radius:0;background:transparent;overflow:hidden}sd-chip-input .sd-chip-input__field::after{content:attr(data-value);grid-area:1/1;visibility:hidden;white-space:pre;font-size:var(--sd-chip-input-field-font-size);line-height:var(--sd-chip-input-field-line-height);font-weight:var(--sd-chip-input-field-font-weight);font-family:var(--sd-chip-input-field-font-family)}sd-chip-input .sd-chip-input__field--filled{padding:0 var(--sd-chip-input-field-padding-x);border:var(--sd-chip-input-field-border-width) solid var(--sd-chip-input-field-border-color);border-radius:var(--sd-chip-input-field-radius);background:var(--sd-chip-input-field-bg)}sd-chip-input .sd-chip-input__field--empty{position:absolute;top:0;left:0;width:0;height:0;min-width:0;overflow:hidden}sd-chip-input .sd-chip-input__input{grid-area:1/1;width:100%;min-width:1ch;height:var(--sd-chip-input-field-height);margin:0;padding:0;border:none;outline:none;overflow:hidden;text-overflow:ellipsis;background:transparent;font-size:var(--sd-chip-input-field-font-size);line-height:var(--sd-chip-input-field-line-height);font-weight:var(--sd-chip-input-field-font-weight);font-family:var(--sd-chip-input-field-font-family);color:var(--sd-chip-input-field-content)}sd-chip-input .sd-chip-input__input[disabled]{cursor:not-allowed;pointer-events:none}sd-chip-input .sd-chip-input__input::placeholder{color:var(--sd-chip-input-placeholder-color)}sd-chip-input .sd-chip-input__suggestions{display:flex;flex-direction:column;box-sizing:border-box;background:white;border-radius:var(--sd-chip-input-suggestions-radius);box-shadow:2px 2px 12px 2px rgba(0, 0, 0, 0.1);max-height:var(--sd-chip-input-suggestions-max-height);min-height:0;overflow-y:auto;overflow-x:hidden;outline:none}sd-chip-input .sd-chip-input__suggestion-item{display:flex;align-items:center;gap:var(--sd-chip-input-suggestion-gap);padding:var(--sd-chip-input-suggestion-padding-y) var(--sd-chip-input-suggestion-padding-right) var(--sd-chip-input-suggestion-padding-y) var(--sd-chip-input-suggestion-padding-x);font-size:var(--sd-chip-input-suggestion-font-size);line-height:var(--sd-chip-input-suggestion-line-height);font-weight:var(--sd-chip-input-suggestion-font-weight);font-family:var(--sd-chip-input-suggestion-font-family);color:var(--sd-chip-input-suggestion-color);cursor:pointer;user-select:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}sd-chip-input .sd-chip-input__suggestion-item--active{background:var(--sd-chip-input-suggestion-bg-hover);color:var(--sd-chip-input-suggestion-color-hover);font-weight:var(--sd-chip-input-suggestion-font-weight-selected)}sd-chip-input .sd-chip-input__suggestions-empty{padding:12px;text-align:center;font-size:var(--sd-chip-input-suggestions-empty-font-size);line-height:var(--sd-chip-input-suggestions-empty-line-height);font-family:var(--sd-chip-input-suggestion-font-family);color:var(--sd-chip-input-suggestions-empty-color)}"}},[512,"sd-chip-input",{values:[1040],errors:[1040],disabledChips:[1040],size:[1],disabled:[4],placeholder:[1],name:[1],rules:[16],error:[1028],useReset:[4,"use-reset"],maxCount:[2,"max-count"],duplicateLabel:[1,"duplicate-label"],suggestions:[1040],loadingSuggestions:[4,"loading-suggestions"],recommendedItems:[1040],loadingRecommendedItems:[4,"loading-recommended-items"],label:[1],labelWidth:[8,"label-width"],hint:[1],errorMessage:[1,"error-message"],width:[8],status:[1],icon:[16],labelTooltip:[1,"label-tooltip"],labelTooltipProps:[16],internalValues:[32],internalErrors:[32],focused:[32],hovered:[32],inputValue:[32],activeSuggestionIndex:[32],suppressSuggestions:[32],suppressRecommendations:[32],sdValidate:[64],sdReset:[64],sdResetValidate:[64],sdFocus:[64]},void 0,{values:[{valuesChanged:0}],errors:[{errorsChanged:0}],internalValues:[{internalValuesChanged_validate:0}],suggestions:[{suggestionsChanged:0}],recommendedItems:[{recommendedItemsChanged:0}]}]),H=V,j=function(){"undefined"!=typeof customElements&&["sd-chip-input","sd-button","sd-chip","sd-field","sd-floating-portal","sd-ghost-button","sd-icon","sd-portal","sd-tag","sd-text-link","sd-tooltip"].forEach((i=>{switch(i){case"sd-chip-input":customElements.get(n(i))||customElements.define(n(i),V);break;case"sd-button":customElements.get(n(i))||c();break;case"sd-chip":customElements.get(n(i))||a();break;case"sd-field":customElements.get(n(i))||g();break;case"sd-floating-portal":customElements.get(n(i))||f();break;case"sd-ghost-button":customElements.get(n(i))||m();break;case"sd-icon":customElements.get(n(i))||b();break;case"sd-portal":customElements.get(n(i))||v();break;case"sd-tag":customElements.get(n(i))||y();break;case"sd-text-link":customElements.get(n(i))||x();break;case"sd-tooltip":customElements.get(n(i))||w()}}))};export{H as SdChipInput,j as defineCustomElement}
@@ -1 +1 @@
1
- import{p as e,H as t,c as s,h as a,t as l}from"./p-Bg9XySrz.js";import{s as d}from"./p-BJfiMC9H.js";import{t as r}from"./p-D6GUzecR.js";import{d as o}from"./p-DDR0VcRU.js";import{d as i}from"./p-qJeUUOyB.js";import{d as n}from"./p-DbLQoVx6.js";import{d as u}from"./p-Bzo51vnP.js";import{d as c}from"./p-C_r3z9VA.js";import{d as p}from"./p-CQWZv8vY.js";import{d as b}from"./p-B_5uwji5.js";import{d as k}from"./p-C3wv8gVC.js";import{d as v}from"./p-BX5uKVOt.js";import{d as m}from"./p-B-4ulKJj.js";import{d as h}from"./p-BLNc_TL-.js";import{d as y}from"./p-DTFXzlvq.js";import{d as f}from"./p-ClKABgST.js";import{d as g}from"./p-C0tkFuhj.js";import{d as _}from"./p-AI4YlQmL.js";import{d as w}from"./p-Dr5Q2ZKB.js";import{d as x}from"./p-MJG6EZeP.js";import{d as j}from"./p-9Z-q6kKD.js";import{d as E}from"./p-B3SKaQId.js";import{d as S}from"./p-CH6cVc2a.js";import{d as z}from"./p-79DExV92.js";import{d as B}from"./p-BD8OoYud.js";import{d as N}from"./p-DMS9mQsg.js";import{d as C}from"./p-BMIgVp9-.js";import{d as U}from"./p-Ng3JMPxb.js";import{d as D}from"./p-Cl5io5TH.js";const F=r.table,T=Number(F.keyValue.height),q=Number(F.radius),V=Number(F.keyValue.body.padding),L=Number(F.header.gap),A=Number(F.content.gap),H=Number(F.border.width),K=Number(F.keyValue.search.paddingX),M={border:F.border.color,thBg:F.header.bg,thLabel:d.color.fg.primary,required:d.color.fg.accent,helpIcon:d.color.fg.success,tdBg:d.color.bg.frame,tdText:d.color.fg.primary,searchBg:F.keyValue.search.bg},Q={labelFontFamily:F.header.typography.fontFamily,labelFontSize:Number(F.header.typography.fontSize),labelFontWeight:700,labelLineHeight:Number(F.header.typography.lineHeight),tdFontFamily:F.body.typography.fontFamily,tdFontSize:Number(F.body.typography.fontSize),tdFontWeight:Number(F.body.typography.fontWeight),tdLineHeight:Number(F.body.typography.lineHeight)},I=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.change=s(this,"sdChange",7),this.searchEvent=s(this,"sdSearch",7)}fields=[];search=!1;useTop=!1;change;searchEvent;emit=(e,t)=>{this.change.emit({name:e,value:t})};handleSearchClick=()=>{this.searchEvent.emit()};renderField(e){const t=t=>this.emit(e.name,t.detail);switch(e.type){case"input":return a("sd-input",{width:"100%",...e.options??{},onSdUpdate:t});case"textarea":return a("sd-textarea",{width:"100%",...e.options??{},onSdUpdate:t});case"number-input":return a("sd-number-input",{width:"100%",...e.options??{},onSdUpdate:t});case"select":return a("sd-select",{width:"100%",...e.options??{},onSdUpdate:t});case"radio":{const{value:s,direction:l,...d}=e.options??{};return a("sd-radio-group",{...d,value:s,direction:l??"horizontal",onSdUpdate:t})}case"checkbox":{const{value:s,...l}=e.options??{};return a("sd-checkbox",{...l,value:s,onSdUpdate:t})}case"date-picker":return a("sd-date-picker",{width:"100%",...e.options??{},onSdUpdate:t});case"date-range-picker":return a("sd-date-range-picker",{width:"100%",...e.options??{},onSdUpdate:t});case"file-picker":return a("sd-file-picker",{width:"100%",...e.options??{},onSdUpdate:t});default:return a("span",{class:"sd-key-value-table__text"},e.options?.value??"")}}renderHelpIcon(e){return a("span",{class:"sd-key-value-table__help"},a("sd-tooltip",{icon:"helpOutline",iconSize:16,color:M.helpIcon,trigger:"hover"},e))}computeAutoSkipTh(){const e=this.fields.map((e=>e.map((()=>!1))));return this.fields.forEach(((t,s)=>{t.forEach(((t,a)=>{const l=null!=t.thRowSpan&&t.thRowSpan>1?t.thRowSpan:1;if(!(l<=1))for(let t=1;t<l;t++){const l=e[s+t];l&&a<l.length&&(l[a]=!0)}}))})),e}computeMaxCols(e){let t=0;return this.fields.forEach(((s,a)=>{let l=0;s.forEach(((t,s)=>{let d;d=t.hideTh?0:e[a]?.[s]?1:null!=t.thColSpan&&t.thColSpan>1?t.thColSpan:1,l+=d+(null!=t.tdColSpan&&t.tdColSpan>1?t.tdColSpan:1)})),l>t&&(t=l)})),t}buildThStyle(e){const t={...e};return null!=e.color&&(t["--sd-kvt-th-color"]=e.color),null!=e.background&&(t["--sd-kvt-th-bg"]=e.background),null!=e.backgroundColor&&(t["--sd-kvt-th-bg"]=e.backgroundColor),null!=e.fontFamily&&(t["--sd-kvt-label-font-family"]=e.fontFamily),null!=e.fontSize&&(t["--sd-kvt-label-font-size"]=e.fontSize),null!=e.fontWeight&&(t["--sd-kvt-label-font-weight"]=e.fontWeight),null!=e.lineHeight&&(t["--sd-kvt-label-line-height"]=e.lineHeight),t}renderTh(e,t,s){const l=null!=e.thRowSpan&&e.thRowSpan>1?e.thRowSpan:void 0,d=null!=e.thColSpan&&e.thColSpan>1?e.thColSpan:void 0,r={"sd-key-value-table__th":!0};"string"==typeof e.thClass?r[e.thClass]=!0:Array.isArray(e.thClass)&&e.thClass.forEach((e=>r[e]=!0));const o=null!=e.thStyle?this.buildThStyle(e.thStyle):void 0;return a("th",{key:`th-${t}-${s}`,class:r,style:o,scope:"row",rowSpan:l,colSpan:d},a("div",{class:"sd-key-value-table__th-inner"},a("span",{class:"sd-key-value-table__label"},e.label,e.required&&a("sd-icon",{class:"sd-key-value-table__required",name:"star",size:12,color:M.required,label:"required"})),e.helpText&&this.renderHelpIcon(e.helpText)))}renderTd(e,t,s){return a("td",{key:`td-${t}-${s}`,class:"sd-key-value-table__td",rowSpan:null!=e.tdRowSpan&&e.tdRowSpan>1?e.tdRowSpan:void 0,colSpan:null!=e.tdColSpan&&e.tdColSpan>1?e.tdColSpan:void 0},a("div",{class:"sd-key-value-table__td-inner"},a("slot",{name:"field-"+e.name},this.renderField(e))))}warnDuplicateNames(){const e=new Set,t=new Set;this.fields.forEach((s=>s.forEach((s=>{e.has(s.name)?t.add(s.name):e.add(s.name)})))),t.size>0&&console.warn(`[sd-key-value-table] Duplicate field name(s) detected: ${[...t].join(", ")}. Slot names ("field-{name}") and sdChange events rely on unique names.`)}render(){if(0===this.fields.length)return null;const e={"--sd-kvt-row-height":T+"px","--sd-kvt-th-width":"120px","--sd-kvt-radius":q+"px","--sd-kvt-padding":V+"px","--sd-kvt-gap":L+"px","--sd-kvt-label-gap":A+"px","--sd-kvt-border-width":H+"px","--sd-kvt-border-color":M.border,"--sd-kvt-th-bg":M.thBg,"--sd-kvt-th-color":M.thLabel,"--sd-kvt-required-color":M.required,"--sd-kvt-td-bg":M.tdBg,"--sd-kvt-td-color":M.tdText,"--sd-kvt-label-font-family":Q.labelFontFamily,"--sd-kvt-label-font-size":Q.labelFontSize+"px","--sd-kvt-label-font-weight":""+Q.labelFontWeight,"--sd-kvt-label-line-height":Q.labelLineHeight+"px","--sd-kvt-td-font-family":Q.tdFontFamily,"--sd-kvt-td-font-size":Q.tdFontSize+"px","--sd-kvt-td-font-weight":""+Q.tdFontWeight,"--sd-kvt-td-line-height":Q.tdLineHeight+"px","--sd-kvt-search-bg":M.searchBg,"--sd-kvt-search-padding-x":K+"px"};this.warnDuplicateNames();const t=this.computeAutoSkipTh(),s=this.computeMaxCols(t),l=a("table",{class:{"sd-key-value-table":!0,"sd-key-value-table--use-top":this.useTop},style:e},a("colgroup",null,Array.from({length:s},((e,t)=>{if(t%2!=0)return a("col",{key:"col-"+t});const s=t/2,l=this.fields.reduce(((e,t)=>null!=e?e:t[s]?.thWidth),void 0);return a("col",{key:"col-"+t,style:{width:null!=l?"number"==typeof l?l+"px":l:"120px"}})}))),a("tbody",null,this.fields.map(((e,s)=>a("tr",{class:"sd-key-value-table__row",key:"row-"+s},e.map(((e,a)=>[e.hideTh||t[s][a]?null:this.renderTh(e,s,a),this.renderTd(e,s,a)])))))));return this.search?a("div",{class:{"sd-key-value-table__wrapper":!0,"sd-key-value-table__wrapper--use-top":this.useTop},style:e},l,a("div",{class:"sd-key-value-table__search-panel"},a("sd-button",{label:"검색",name:"neutral_outline_md",onSdClick:this.handleSearchClick}))):l}static get style(){return"sd-key-value-table{display:block}sd-key-value-table .sd-key-value-table__wrapper{display:flex;align-items:stretch;width:100%;border:var(--sd-kvt-border-width) solid var(--sd-kvt-border-color);border-radius:var(--sd-kvt-radius);overflow:hidden}sd-key-value-table .sd-key-value-table__wrapper .sd-key-value-table{flex:1 1 auto;border:0;border-radius:0}sd-key-value-table .sd-key-value-table__wrapper.sd-key-value-table__wrapper--use-top{border-top-left-radius:0;border-top-right-radius:0}sd-key-value-table .sd-key-value-table__search-panel{display:flex;align-items:center;justify-content:center;flex:0 0 auto;padding:var(--sd-kvt-padding) var(--sd-kvt-search-padding-x);background:var(--sd-kvt-search-bg);border-left:var(--sd-kvt-border-width) solid var(--sd-kvt-border-color)}sd-key-value-table .sd-key-value-table{width:100%;table-layout:fixed;border:var(--sd-kvt-border-width) solid var(--sd-kvt-border-color);border-radius:var(--sd-kvt-radius);border-collapse:separate;border-spacing:0;overflow:hidden}sd-key-value-table .sd-key-value-table.sd-key-value-table--use-top{border-top-left-radius:0;border-top-right-radius:0}sd-key-value-table .sd-key-value-table__th,sd-key-value-table .sd-key-value-table__td{height:var(--sd-kvt-row-height);padding:var(--sd-kvt-padding);box-sizing:border-box;vertical-align:middle;text-align:left;font-weight:normal;border-top:var(--sd-kvt-border-width) solid var(--sd-kvt-border-color)}sd-key-value-table .sd-key-value-table tbody>tr:first-child>.sd-key-value-table__th,sd-key-value-table .sd-key-value-table tbody>tr:first-child>.sd-key-value-table__td{border-top:0}sd-key-value-table .sd-key-value-table__th{width:var(--sd-kvt-th-width);background:var(--sd-kvt-th-bg);color:var(--sd-kvt-th-color)}sd-key-value-table .sd-key-value-table__th-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--sd-kvt-gap);width:100%;height:100%}sd-key-value-table .sd-key-value-table__label{display:inline-flex;align-items:center;gap:var(--sd-kvt-label-gap);font-family:var(--sd-kvt-label-font-family);font-size:var(--sd-kvt-label-font-size);font-weight:var(--sd-kvt-label-font-weight);line-height:var(--sd-kvt-label-line-height);color:var(--sd-kvt-th-color)}sd-key-value-table .sd-key-value-table__required{display:inline-flex;align-items:center;flex-shrink:0}sd-key-value-table .sd-key-value-table__help{display:inline-flex;align-items:center;flex-shrink:0}sd-key-value-table .sd-key-value-table__td{background:var(--sd-kvt-td-bg);color:var(--sd-kvt-td-color)}sd-key-value-table .sd-key-value-table__td-inner{display:flex;align-items:center;width:100%;height:100%}sd-key-value-table .sd-key-value-table__td-inner>slot{display:block;flex:1 1 auto;min-width:0}sd-key-value-table .sd-key-value-table__td-inner sd-input,sd-key-value-table .sd-key-value-table__td-inner sd-textarea,sd-key-value-table .sd-key-value-table__td-inner sd-number-input,sd-key-value-table .sd-key-value-table__td-inner sd-select,sd-key-value-table .sd-key-value-table__td-inner sd-date-picker,sd-key-value-table .sd-key-value-table__td-inner sd-date-range-picker,sd-key-value-table .sd-key-value-table__td-inner sd-file-picker{width:100%}sd-key-value-table .sd-key-value-table__text{font-family:var(--sd-kvt-td-font-family);font-size:var(--sd-kvt-td-font-size);font-weight:var(--sd-kvt-td-font-weight);line-height:var(--sd-kvt-td-line-height);color:var(--sd-kvt-td-color)}"}},[772,"sd-key-value-table",{fields:[16],search:[4],useTop:[4,"use-top"]}]),J=I,$=function(){"undefined"!=typeof customElements&&["sd-key-value-table","sd-button","sd-calendar","sd-checkbox","sd-chip","sd-date-picker","sd-date-picker-trigger","sd-date-range-picker","sd-date-range-picker-calendar","sd-field","sd-file-picker","sd-floating-portal","sd-ghost-button","sd-icon","sd-input","sd-number-input","sd-portal","sd-radio","sd-radio-group","sd-select","sd-select-list-item","sd-select-list-item-search","sd-select-listbox","sd-select-trigger","sd-tag","sd-textarea","sd-tooltip"].forEach((e=>{switch(e){case"sd-key-value-table":customElements.get(l(e))||customElements.define(l(e),I);break;case"sd-button":customElements.get(l(e))||o();break;case"sd-calendar":customElements.get(l(e))||i();break;case"sd-checkbox":customElements.get(l(e))||n();break;case"sd-chip":customElements.get(l(e))||u();break;case"sd-date-picker":customElements.get(l(e))||c();break;case"sd-date-picker-trigger":customElements.get(l(e))||p();break;case"sd-date-range-picker":customElements.get(l(e))||b();break;case"sd-date-range-picker-calendar":customElements.get(l(e))||k();break;case"sd-field":customElements.get(l(e))||v();break;case"sd-file-picker":customElements.get(l(e))||m();break;case"sd-floating-portal":customElements.get(l(e))||h();break;case"sd-ghost-button":customElements.get(l(e))||y();break;case"sd-icon":customElements.get(l(e))||f();break;case"sd-input":customElements.get(l(e))||g();break;case"sd-number-input":customElements.get(l(e))||_();break;case"sd-portal":customElements.get(l(e))||w();break;case"sd-radio":customElements.get(l(e))||x();break;case"sd-radio-group":customElements.get(l(e))||j();break;case"sd-select":customElements.get(l(e))||E();break;case"sd-select-list-item":customElements.get(l(e))||S();break;case"sd-select-list-item-search":customElements.get(l(e))||z();break;case"sd-select-listbox":customElements.get(l(e))||B();break;case"sd-select-trigger":customElements.get(l(e))||N();break;case"sd-tag":customElements.get(l(e))||C();break;case"sd-textarea":customElements.get(l(e))||U();break;case"sd-tooltip":customElements.get(l(e))||D()}}))};export{J as SdKeyValueTable,$ as defineCustomElement}
1
+ import{p as e,H as t,c as s,h as a,t as d}from"./p-Bg9XySrz.js";import{s as l}from"./p-BJfiMC9H.js";import{t as r}from"./p-D6GUzecR.js";import{d as i}from"./p-DDR0VcRU.js";import{d as o}from"./p-qJeUUOyB.js";import{d as n}from"./p-DbLQoVx6.js";import{d as u}from"./p-Bzo51vnP.js";import{d as c}from"./p-C_r3z9VA.js";import{d as p}from"./p-CQWZv8vY.js";import{d as b}from"./p-B_5uwji5.js";import{d as k}from"./p-C3wv8gVC.js";import{d as v}from"./p-BX5uKVOt.js";import{d as m}from"./p-B-4ulKJj.js";import{d as h}from"./p-BLNc_TL-.js";import{d as y}from"./p-DTFXzlvq.js";import{d as f}from"./p-ClKABgST.js";import{d as g}from"./p-C0tkFuhj.js";import{d as _}from"./p-AI4YlQmL.js";import{d as w}from"./p-Dr5Q2ZKB.js";import{d as x}from"./p-MJG6EZeP.js";import{d as j}from"./p-9Z-q6kKD.js";import{d as E}from"./p-B3SKaQId.js";import{d as S}from"./p-CH6cVc2a.js";import{d as z}from"./p-79DExV92.js";import{d as B}from"./p-BD8OoYud.js";import{d as N}from"./p-DMS9mQsg.js";import{d as C}from"./p-BMIgVp9-.js";import{d as U}from"./p-Ng3JMPxb.js";import{d as D}from"./p-Cl5io5TH.js";const F=r.table,q=Number(F.keyValue.height),T=Number(F.radius),V=Number(F.header.paddingX),L=Number(F.keyValue.body.padding),A=Number(F.header.gap),H=Number(F.content.gap),K=Number(F.border.width),M=Number(F.keyValue.search.paddingX),Q={border:F.border.color,thBg:F.header.bg,thLabel:l.color.fg.primary,required:l.color.fg.accent,helpIcon:l.color.fg.success,tdBg:l.color.bg.frame,tdText:l.color.fg.primary,searchBg:F.keyValue.search.bg},I={labelFontFamily:F.header.typography.fontFamily,labelFontSize:Number(F.header.typography.fontSize),labelFontWeight:700,labelLineHeight:Number(F.header.typography.lineHeight),tdFontFamily:F.body.typography.fontFamily,tdFontSize:Number(F.body.typography.fontSize),tdFontWeight:Number(F.body.typography.fontWeight),tdLineHeight:Number(F.body.typography.lineHeight)},J=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.change=s(this,"sdChange",7),this.searchEvent=s(this,"sdSearch",7)}fields=[];search=!1;radius="default";change;searchEvent;emit=(e,t)=>{this.change.emit({name:e,value:t})};handleSearchClick=()=>{this.searchEvent.emit()};renderField(e){const t=t=>this.emit(e.name,t.detail);switch(e.type){case"input":return a("sd-input",{width:"100%",...e.options??{},onSdUpdate:t});case"textarea":return a("sd-textarea",{width:"100%",...e.options??{},onSdUpdate:t});case"number-input":return a("sd-number-input",{width:"100%",...e.options??{},onSdUpdate:t});case"select":return a("sd-select",{width:"100%",...e.options??{},onSdUpdate:t});case"radio":{const{value:s,direction:d,...l}=e.options??{};return a("sd-radio-group",{...l,value:s,direction:d??"horizontal",onSdUpdate:t})}case"checkbox":{const{value:s,...d}=e.options??{};return a("sd-checkbox",{...d,value:s,onSdUpdate:t})}case"date-picker":return a("sd-date-picker",{width:"100%",...e.options??{},onSdUpdate:t});case"date-range-picker":return a("sd-date-range-picker",{width:"100%",...e.options??{},onSdUpdate:t});case"file-picker":return a("sd-file-picker",{width:"100%",...e.options??{},onSdUpdate:t});default:return a("span",{class:"sd-key-value-table__text"},e.options?.value??"")}}renderHelpIcon(e){return a("span",{class:"sd-key-value-table__help"},a("sd-tooltip",{icon:"helpOutline",iconSize:16,color:Q.helpIcon,trigger:"hover"},e))}computeAutoSkipTh(){const e=this.fields.map((e=>e.map((()=>!1))));return this.fields.forEach(((t,s)=>{t.forEach(((t,a)=>{const d=null!=t.thRowSpan&&t.thRowSpan>1?t.thRowSpan:1;if(!(d<=1))for(let t=1;t<d;t++){const d=e[s+t];d&&a<d.length&&(d[a]=!0)}}))})),e}computeMaxCols(e){let t=0;return this.fields.forEach(((s,a)=>{let d=0;s.forEach(((t,s)=>{let l;l=t.hideTh?0:e[a]?.[s]?1:null!=t.thColSpan&&t.thColSpan>1?t.thColSpan:1,d+=l+(null!=t.tdColSpan&&t.tdColSpan>1?t.tdColSpan:1)})),d>t&&(t=d)})),t}buildThStyle(e){const t={...e};return null!=e.color&&(t["--sd-kvt-th-color"]=e.color),null!=e.background&&(t["--sd-kvt-th-bg"]=e.background),null!=e.backgroundColor&&(t["--sd-kvt-th-bg"]=e.backgroundColor),null!=e.fontFamily&&(t["--sd-kvt-label-font-family"]=e.fontFamily),null!=e.fontSize&&(t["--sd-kvt-label-font-size"]=e.fontSize),null!=e.fontWeight&&(t["--sd-kvt-label-font-weight"]=e.fontWeight),null!=e.lineHeight&&(t["--sd-kvt-label-line-height"]=e.lineHeight),t}renderTh(e,t,s){const d=null!=e.thRowSpan&&e.thRowSpan>1?e.thRowSpan:void 0,l=null!=e.thColSpan&&e.thColSpan>1?e.thColSpan:void 0,r={"sd-key-value-table__th":!0};"string"==typeof e.thClass?r[e.thClass]=!0:Array.isArray(e.thClass)&&e.thClass.forEach((e=>r[e]=!0));const i=null!=e.thStyle?this.buildThStyle(e.thStyle):void 0;return a("th",{key:`th-${t}-${s}`,class:r,style:i,scope:"row",rowSpan:d,colSpan:l},a("div",{class:"sd-key-value-table__th-inner"},a("span",{class:"sd-key-value-table__label"},e.label,e.required&&a("sd-icon",{class:"sd-key-value-table__required",name:"star",size:12,color:Q.required,label:"required"})),e.helpText&&this.renderHelpIcon(e.helpText)))}renderTd(e,t,s){return a("td",{key:`td-${t}-${s}`,class:"sd-key-value-table__td",rowSpan:null!=e.tdRowSpan&&e.tdRowSpan>1?e.tdRowSpan:void 0,colSpan:null!=e.tdColSpan&&e.tdColSpan>1?e.tdColSpan:void 0},a("div",{class:"sd-key-value-table__td-inner"},a("slot",{name:"field-"+e.name},this.renderField(e))))}warnDuplicateNames(){const e=new Set,t=new Set;this.fields.forEach((s=>s.forEach((s=>{e.has(s.name)?t.add(s.name):e.add(s.name)})))),t.size>0&&console.warn(`[sd-key-value-table] Duplicate field name(s) detected: ${[...t].join(", ")}. Slot names ("field-{name}") and sdChange events rely on unique names.`)}render(){if(0===this.fields.length)return null;const e={"--sd-kvt-row-height":q+"px","--sd-kvt-th-width":"120px","--sd-kvt-radius":T+"px","--sd-kvt-th-padding-x":V+"px","--sd-kvt-padding":L+"px","--sd-kvt-gap":A+"px","--sd-kvt-label-gap":H+"px","--sd-kvt-border-width":K+"px","--sd-kvt-border-color":Q.border,"--sd-kvt-th-bg":Q.thBg,"--sd-kvt-th-color":Q.thLabel,"--sd-kvt-required-color":Q.required,"--sd-kvt-td-bg":Q.tdBg,"--sd-kvt-td-color":Q.tdText,"--sd-kvt-label-font-family":I.labelFontFamily,"--sd-kvt-label-font-size":I.labelFontSize+"px","--sd-kvt-label-font-weight":""+I.labelFontWeight,"--sd-kvt-label-line-height":I.labelLineHeight+"px","--sd-kvt-td-font-family":I.tdFontFamily,"--sd-kvt-td-font-size":I.tdFontSize+"px","--sd-kvt-td-font-weight":""+I.tdFontWeight,"--sd-kvt-td-line-height":I.tdLineHeight+"px","--sd-kvt-search-bg":Q.searchBg,"--sd-kvt-search-padding-x":M+"px"};this.warnDuplicateNames();const t=this.computeAutoSkipTh(),s=this.computeMaxCols(t),d=a("table",{class:{"sd-key-value-table":!0,"sd-key-value-table--radius-usetop":"usetop"===this.radius,"sd-key-value-table--radius-full":"full"===this.radius},style:e},a("colgroup",null,Array.from({length:s},((e,t)=>{if(t%2!=0)return a("col",{key:"col-"+t});const s=t/2,d=this.fields.reduce(((e,t)=>null!=e?e:t[s]?.thWidth),void 0);return a("col",{key:"col-"+t,style:{width:null!=d?"number"==typeof d?d+"px":d:"120px"}})}))),a("tbody",null,this.fields.map(((e,s)=>a("tr",{class:"sd-key-value-table__row",key:"row-"+s},e.map(((e,a)=>[e.hideTh||t[s][a]?null:this.renderTh(e,s,a),this.renderTd(e,s,a)])))))));return this.search?a("div",{class:{"sd-key-value-table__wrapper":!0,"sd-key-value-table__wrapper--radius-usetop":"usetop"===this.radius,"sd-key-value-table__wrapper--radius-full":"full"===this.radius},style:e},d,a("div",{class:"sd-key-value-table__search-panel"},a("sd-button",{label:"검색",name:"neutral_outline_md",onSdClick:this.handleSearchClick}))):d}static get style(){return"sd-key-value-table{display:block}sd-key-value-table .sd-key-value-table__wrapper{display:flex;align-items:stretch;width:100%;border:var(--sd-kvt-border-width) solid var(--sd-kvt-border-color);border-radius:var(--sd-kvt-radius);overflow:hidden}sd-key-value-table .sd-key-value-table__wrapper .sd-key-value-table{flex:1 1 auto;border:0;border-radius:0}sd-key-value-table .sd-key-value-table__wrapper.sd-key-value-table__wrapper--radius-usetop{border-top-left-radius:0;border-top-right-radius:0}sd-key-value-table .sd-key-value-table__wrapper.sd-key-value-table__wrapper--radius-full{border-radius:0}sd-key-value-table .sd-key-value-table__search-panel{display:flex;align-items:center;justify-content:center;flex:0 0 auto;padding:var(--sd-kvt-padding) var(--sd-kvt-search-padding-x);background:var(--sd-kvt-search-bg);border-left:var(--sd-kvt-border-width) solid var(--sd-kvt-border-color)}sd-key-value-table .sd-key-value-table{width:100%;table-layout:fixed;border:var(--sd-kvt-border-width) solid var(--sd-kvt-border-color);border-radius:var(--sd-kvt-radius);border-collapse:separate;border-spacing:0;overflow:hidden}sd-key-value-table .sd-key-value-table.sd-key-value-table--radius-usetop{border-top-left-radius:0;border-top-right-radius:0}sd-key-value-table .sd-key-value-table.sd-key-value-table--radius-full{border-radius:0}sd-key-value-table .sd-key-value-table__th,sd-key-value-table .sd-key-value-table__td{height:var(--sd-kvt-row-height);box-sizing:border-box;vertical-align:middle;text-align:left;font-weight:normal;border-top:var(--sd-kvt-border-width) solid var(--sd-kvt-border-color)}sd-key-value-table .sd-key-value-table tbody>tr:first-child>.sd-key-value-table__th,sd-key-value-table .sd-key-value-table tbody>tr:first-child>.sd-key-value-table__td{border-top:0}sd-key-value-table .sd-key-value-table__th{padding:var(--sd-kvt-padding) var(--sd-kvt-th-padding-x);width:var(--sd-kvt-th-width);background:var(--sd-kvt-th-bg);color:var(--sd-kvt-th-color)}sd-key-value-table .sd-key-value-table__th-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--sd-kvt-gap);width:100%;height:100%}sd-key-value-table .sd-key-value-table__label{display:inline-flex;align-items:center;gap:var(--sd-kvt-label-gap);font-family:var(--sd-kvt-label-font-family);font-size:var(--sd-kvt-label-font-size);font-weight:var(--sd-kvt-label-font-weight);line-height:var(--sd-kvt-label-line-height);color:var(--sd-kvt-th-color)}sd-key-value-table .sd-key-value-table__required{display:inline-flex;align-items:center;flex-shrink:0}sd-key-value-table .sd-key-value-table__help{display:inline-flex;align-items:center;flex-shrink:0}sd-key-value-table .sd-key-value-table__td{padding:var(--sd-kvt-padding);background:var(--sd-kvt-td-bg);color:var(--sd-kvt-td-color)}sd-key-value-table .sd-key-value-table__td-inner{display:flex;align-items:center;width:100%;height:100%}sd-key-value-table .sd-key-value-table__td-inner>slot{display:block;flex:1 1 auto;min-width:0}sd-key-value-table .sd-key-value-table__td-inner sd-input,sd-key-value-table .sd-key-value-table__td-inner sd-textarea,sd-key-value-table .sd-key-value-table__td-inner sd-number-input,sd-key-value-table .sd-key-value-table__td-inner sd-select,sd-key-value-table .sd-key-value-table__td-inner sd-date-picker,sd-key-value-table .sd-key-value-table__td-inner sd-date-range-picker,sd-key-value-table .sd-key-value-table__td-inner sd-file-picker{width:100%}sd-key-value-table .sd-key-value-table__text{font-family:var(--sd-kvt-td-font-family);font-size:var(--sd-kvt-td-font-size);font-weight:var(--sd-kvt-td-font-weight);line-height:var(--sd-kvt-td-line-height);color:var(--sd-kvt-td-color)}"}},[772,"sd-key-value-table",{fields:[16],search:[4],radius:[1]}]),$=J,O=function(){"undefined"!=typeof customElements&&["sd-key-value-table","sd-button","sd-calendar","sd-checkbox","sd-chip","sd-date-picker","sd-date-picker-trigger","sd-date-range-picker","sd-date-range-picker-calendar","sd-field","sd-file-picker","sd-floating-portal","sd-ghost-button","sd-icon","sd-input","sd-number-input","sd-portal","sd-radio","sd-radio-group","sd-select","sd-select-list-item","sd-select-list-item-search","sd-select-listbox","sd-select-trigger","sd-tag","sd-textarea","sd-tooltip"].forEach((e=>{switch(e){case"sd-key-value-table":customElements.get(d(e))||customElements.define(d(e),J);break;case"sd-button":customElements.get(d(e))||i();break;case"sd-calendar":customElements.get(d(e))||o();break;case"sd-checkbox":customElements.get(d(e))||n();break;case"sd-chip":customElements.get(d(e))||u();break;case"sd-date-picker":customElements.get(d(e))||c();break;case"sd-date-picker-trigger":customElements.get(d(e))||p();break;case"sd-date-range-picker":customElements.get(d(e))||b();break;case"sd-date-range-picker-calendar":customElements.get(d(e))||k();break;case"sd-field":customElements.get(d(e))||v();break;case"sd-file-picker":customElements.get(d(e))||m();break;case"sd-floating-portal":customElements.get(d(e))||h();break;case"sd-ghost-button":customElements.get(d(e))||y();break;case"sd-icon":customElements.get(d(e))||f();break;case"sd-input":customElements.get(d(e))||g();break;case"sd-number-input":customElements.get(d(e))||_();break;case"sd-portal":customElements.get(d(e))||w();break;case"sd-radio":customElements.get(d(e))||x();break;case"sd-radio-group":customElements.get(d(e))||j();break;case"sd-select":customElements.get(d(e))||E();break;case"sd-select-list-item":customElements.get(d(e))||S();break;case"sd-select-list-item-search":customElements.get(d(e))||z();break;case"sd-select-listbox":customElements.get(d(e))||B();break;case"sd-select-trigger":customElements.get(d(e))||N();break;case"sd-tag":customElements.get(d(e))||C();break;case"sd-textarea":customElements.get(d(e))||U();break;case"sd-tooltip":customElements.get(d(e))||D()}}))};export{$ as SdKeyValueTable,O as defineCustomElement}