@sellmate/design-system 1.21.0 → 1.22.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.
- package/dist/cjs/design-system.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/sd-button_2.cjs.entry.js +4 -4
- package/dist/cjs/sd-chip-input.cjs.entry.js +41 -17
- package/dist/cjs/sd-pagination_4.cjs.entry.js +86 -7
- package/dist/collection/components/assets/CaretDown.js +1 -1
- package/dist/collection/components/assets/CaretLeft.js +1 -1
- package/dist/collection/components/assets/CaretRight.js +1 -1
- package/dist/collection/components/assets/CaretUp.js +1 -1
- package/dist/collection/components/sd-chip-input/sd-chip-input.css +5 -0
- package/dist/collection/components/sd-chip-input/sd-chip-input.js +40 -16
- package/dist/collection/components/sd-table/sd-table.stories.helpers.js +97 -0
- package/dist/collection/components/sd-table/sd-thead/sd-thead.css +21 -0
- package/dist/collection/components/sd-table/sd-thead/sd-thead.js +87 -7
- package/dist/components/{p-D4zy1T3V.js → p-58DLP3IW.js} +1 -1
- package/dist/components/{p-CcwzTAJC.js → p-B0myARGe.js} +1 -1
- package/dist/components/{p-CBDBmMmw.js → p-B12iH3Zk.js} +1 -1
- package/dist/components/{p-B5VNSTAf.js → p-B2bF2KlS.js} +1 -1
- package/dist/components/{p-C3mTIE8H.js → p-BXRgi3NZ.js} +1 -1
- package/dist/components/{p-DC5W8Uy1.js → p-Bm3NWPaP.js} +1 -1
- package/dist/components/{p-FA9fGvbL.js → p-BpQwjSB8.js} +1 -1
- package/dist/components/{p-BjSMh85k.js → p-BpjmheLG.js} +1 -1
- package/dist/components/{p-CTw1Deo8.js → p-Bric-SEs.js} +1 -1
- package/dist/components/{p-CZYTZeMe.js → p-BwTsP0Ak.js} +1 -1
- package/dist/components/p-CCO1WtEj.js +1 -0
- package/dist/components/{p-DPXOBYhf.js → p-CHxVi6l1.js} +1 -1
- package/dist/components/{p-Dz7VXmIA.js → p-Cdzn78dP.js} +1 -1
- package/dist/components/{p-YpyfqzoP.js → p-Cjf8PHEl.js} +1 -1
- package/dist/components/{p-l7TaS8q9.js → p-Co2ThnbG.js} +1 -1
- package/dist/components/{p-BrHnpCXR.js → p-CwSlRPMm.js} +1 -1
- package/dist/components/{p-CTxZT3Je.js → p-D7StBSjK.js} +1 -1
- package/dist/components/{p-Btj50AUe.js → p-DFbj6d3L.js} +1 -1
- package/dist/components/{p-Cugxp5lo.js → p-DlXBFtBO.js} +1 -1
- package/dist/components/{p-BIHVGo10.js → p-Du_qPqW-.js} +1 -1
- package/dist/components/{p-DJY7lCe4.js → p-DzAvlr8W.js} +1 -1
- package/dist/components/{p-4MIzxb0h.js → p-FrqOl9KZ.js} +1 -1
- package/dist/components/{p-BQQC-6k4.js → p-JMuxVcTW.js} +1 -1
- package/dist/components/{p-B76pFg6k.js → p-OjchKJGr.js} +1 -1
- package/dist/components/{p-DIc8C633.js → p-YCGkwgiM.js} +1 -1
- package/dist/components/{p-DZikCqcw.js → p-ZvP2Ce6J.js} +1 -1
- package/dist/components/p-kRH2GOb0.js +1 -0
- package/dist/components/{p-s_75vJTu.js → p-mcMbSkii.js} +1 -1
- package/dist/components/{p-DU0IkIvI.js → p-vPS2GNz3.js} +1 -1
- package/dist/components/sd-action-modal.js +1 -1
- package/dist/components/sd-barcode-input.js +1 -1
- package/dist/components/sd-button.js +1 -1
- package/dist/components/sd-calendar.js +1 -1
- package/dist/components/sd-callout.js +1 -1
- package/dist/components/sd-checkbox.js +1 -1
- package/dist/components/sd-chip-input.js +1 -1
- package/dist/components/sd-chip.js +1 -1
- package/dist/components/sd-confirm-modal.js +1 -1
- package/dist/components/sd-date-picker-trigger.js +1 -1
- package/dist/components/sd-date-picker.js +1 -1
- package/dist/components/sd-date-range-picker-calendar.js +1 -1
- package/dist/components/sd-date-range-picker.js +1 -1
- package/dist/components/sd-dropdown-button.js +1 -1
- package/dist/components/sd-field.js +1 -1
- package/dist/components/sd-file-picker.js +1 -1
- package/dist/components/sd-ghost-button.js +1 -1
- package/dist/components/sd-guide.js +1 -1
- package/dist/components/sd-icon.js +1 -1
- package/dist/components/sd-input.js +1 -1
- package/dist/components/sd-key-value-table.js +1 -1
- package/dist/components/sd-loading-modal.js +1 -1
- package/dist/components/sd-modal-container.js +1 -1
- package/dist/components/sd-number-input.js +1 -1
- package/dist/components/sd-pagination.js +1 -1
- package/dist/components/sd-popover.js +1 -1
- package/dist/components/sd-popup.js +1 -1
- package/dist/components/sd-select-list-item-search.js +1 -1
- package/dist/components/sd-select-list-item.js +1 -1
- package/dist/components/sd-select-listbox.js +1 -1
- package/dist/components/sd-select-trigger.js +1 -1
- package/dist/components/sd-select.js +1 -1
- package/dist/components/sd-table.js +1 -1
- package/dist/components/sd-tabs.js +1 -1
- package/dist/components/sd-tag.js +1 -1
- package/dist/components/sd-text-link.js +1 -1
- package/dist/components/sd-textarea.js +1 -1
- package/dist/components/sd-thead.js +1 -1
- package/dist/components/sd-toast-container.js +1 -1
- package/dist/components/sd-toast.js +1 -1
- package/dist/components/sd-tooltip.js +1 -1
- package/dist/components/sd-tr.js +1 -1
- package/dist/design-system/design-system.esm.js +1 -1
- package/dist/design-system/p-14447dd5.entry.js +1 -0
- package/dist/design-system/p-4bbc894b.entry.js +1 -0
- package/dist/design-system/p-e7d4b78e.entry.js +1 -0
- package/dist/esm/design-system.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/sd-button_2.entry.js +4 -4
- package/dist/esm/sd-chip-input.entry.js +41 -17
- package/dist/esm/sd-pagination_4.entry.js +86 -7
- package/dist/types/components/sd-table/constants.d.ts +1 -0
- package/dist/types/components/sd-table/sd-table.stories.helpers.d.ts +10 -0
- package/dist/types/components/sd-table/sd-thead/sd-thead.d.ts +8 -0
- package/hydrate/index.js +132 -28
- package/hydrate/index.mjs +132 -28
- package/package.json +1 -1
- package/dist/components/p-BVlg0BoC.js +0 -1
- package/dist/components/p-BzsHwLh6.js +0 -1
- package/dist/design-system/p-0f35cd21.entry.js +0 -1
- package/dist/design-system/p-4e44b45b.entry.js +0 -1
- package/dist/design-system/p-fe5b8eaa.entry.js +0 -1
package/hydrate/index.mjs
CHANGED
|
@@ -5783,22 +5783,22 @@ const CancelOutline = (props) => {
|
|
|
5783
5783
|
|
|
5784
5784
|
const CaretDown = (props) => {
|
|
5785
5785
|
const { size = 24, ...rest } = props;
|
|
5786
|
-
return (hAsync("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...rest }, hAsync("path", { d: "
|
|
5786
|
+
return (hAsync("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...rest }, hAsync("path", { d: "M19.2188 8.25C19.9555 8.25 20.2813 9.44246 19.7061 10.0342L12.4874 17.46C12.2028 17.7526 11.7974 17.7526 11.5127 17.46L4.294 10.0342C3.71879 9.44247 4.04461 8.25 4.7813 8.25H19.2188Z", fill: "currentColor" })));
|
|
5787
5787
|
};
|
|
5788
5788
|
|
|
5789
5789
|
const CaretLeft = (props) => {
|
|
5790
5790
|
const { size = 24, ...rest } = props;
|
|
5791
|
-
return (hAsync("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...rest }, hAsync("path", { d: "
|
|
5791
|
+
return (hAsync("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...rest }, hAsync("path", { d: "M14.1423 4.29416C14.7698 3.71888 16.0358 4.04475 16.0358 4.78146V19.219C16.0358 19.9557 14.7698 20.2815 14.1423 19.7063L6.26827 12.4865C5.95813 12.2019 5.95791 11.7975 6.26827 11.5129L14.1423 4.29416Z", fill: "currentColor" })));
|
|
5792
5792
|
};
|
|
5793
5793
|
|
|
5794
5794
|
const CaretRight = (props) => {
|
|
5795
5795
|
const { size = 24, ...rest } = props;
|
|
5796
|
-
return (hAsync("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...rest }, hAsync("path", { d: "
|
|
5796
|
+
return (hAsync("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...rest }, hAsync("path", { d: "M8.25 4.78127C8.25 4.04456 9.44248 3.71871 10.0342 4.29397L17.46 11.5127C17.7526 11.7973 17.7526 12.2027 17.46 12.4873L10.0342 19.7061C9.44249 20.2814 8.25 19.9555 8.25 19.2188V4.78127Z", fill: "currentColor" })));
|
|
5797
5797
|
};
|
|
5798
5798
|
|
|
5799
5799
|
const CaretUp = (props) => {
|
|
5800
5800
|
const { size = 24, ...rest } = props;
|
|
5801
|
-
return (hAsync("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...rest }, hAsync("path", { d: "M11.
|
|
5801
|
+
return (hAsync("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...rest }, hAsync("path", { d: "M11.6252 6.44362C11.8583 6.27919 12.1422 6.27906 12.3752 6.44362L12.4865 6.5403L19.7063 13.9651C20.2815 14.5568 19.9557 15.7503 19.219 15.7503H4.78146C4.04475 15.7503 3.71888 14.5568 4.29416 13.9651L11.5129 6.5403L11.6252 6.44362Z", fill: "currentColor" })));
|
|
5802
5802
|
};
|
|
5803
5803
|
|
|
5804
5804
|
const Check = (props) => {
|
|
@@ -8107,7 +8107,7 @@ const CHIP_INPUT_SUGGESTIONS = {
|
|
|
8107
8107
|
emptyLineHeight: '20px',
|
|
8108
8108
|
};
|
|
8109
8109
|
|
|
8110
|
-
const sdChipInputCss = () => `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;flex-shrink:0;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)}`;
|
|
8110
|
+
const sdChipInputCss = () => `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;flex-shrink:0;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__suggestion-item--selected{cursor:default;overflow:visible;text-overflow:unset}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)}`;
|
|
8111
8111
|
|
|
8112
8112
|
class SdChipInput {
|
|
8113
8113
|
constructor(hostRef) {
|
|
@@ -8336,7 +8336,9 @@ class SdChipInput {
|
|
|
8336
8336
|
}
|
|
8337
8337
|
if (event.key === 'Enter' && this.activeSuggestionIndex >= 0) {
|
|
8338
8338
|
event.preventDefault();
|
|
8339
|
-
|
|
8339
|
+
const selectedItem = activeItems[this.activeSuggestionIndex];
|
|
8340
|
+
if (!(this.internalValues ?? []).includes(selectedItem))
|
|
8341
|
+
this.addChip(selectedItem);
|
|
8340
8342
|
return;
|
|
8341
8343
|
}
|
|
8342
8344
|
}
|
|
@@ -8396,6 +8398,10 @@ class SdChipInput {
|
|
|
8396
8398
|
};
|
|
8397
8399
|
handleContainerClick = () => {
|
|
8398
8400
|
if (!this.disabled) {
|
|
8401
|
+
// 이미 포커스된 상태에서 재클릭 시 handleFocus가 다시 실행되지 않으므로
|
|
8402
|
+
// suppress 플래그를 여기서 직접 해제한다.
|
|
8403
|
+
this.suppressRecommendations = false;
|
|
8404
|
+
this.suppressSuggestions = false;
|
|
8399
8405
|
this.inputEl?.focus();
|
|
8400
8406
|
}
|
|
8401
8407
|
};
|
|
@@ -8540,7 +8546,7 @@ class SdChipInput {
|
|
|
8540
8546
|
fontFamily: CHIP_INPUT_SUGGESTIONS.itemFontFamily,
|
|
8541
8547
|
color: CHIP_INPUT_SUGGESTIONS.emptyColor,
|
|
8542
8548
|
};
|
|
8543
|
-
return (hAsync("sd-field", { key: '
|
|
8549
|
+
return (hAsync("sd-field", { key: 'b72e33b6f204ebdf6791cc2f20d01bbb74a4203a', 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) }, hAsync("div", { key: '499114d06f4d375fed5575edd394c501f4d72691', class: "sd-chip-input", ref: el => (this.chipInputRef = el), onClick: this.handleContainerClick }, (this.internalValues ?? []).map((value, i) => (hAsync("sd-chip", { key: i, value: value, error: this.getChipError(i), disabled: this.getChipDisabled(i), editable: false, onSdRemove: () => this.handleChipRemove(i) }))), !isMaxReached && (hAsync("div", { key: '5910a2d0e0e9cbc472baa1d9c9c3fa07e89fbdcb', class: {
|
|
8544
8550
|
'sd-chip-input__field': true,
|
|
8545
8551
|
'sd-chip-input__field--filled': this.inputValue !== '',
|
|
8546
8552
|
'sd-chip-input__field--empty': this.inputValue === '' && this.internalValues.length > 0 && !this.focused,
|
|
@@ -8548,20 +8554,38 @@ class SdChipInput {
|
|
|
8548
8554
|
? this.inputValue
|
|
8549
8555
|
: this.internalValues.length === 0
|
|
8550
8556
|
? this.placeholder
|
|
8551
|
-
: '' }, hAsync("input", { key: '
|
|
8552
|
-
|
|
8553
|
-
|
|
8554
|
-
|
|
8555
|
-
|
|
8556
|
-
|
|
8557
|
-
|
|
8558
|
-
|
|
8559
|
-
|
|
8560
|
-
|
|
8561
|
-
|
|
8562
|
-
|
|
8563
|
-
|
|
8564
|
-
|
|
8557
|
+
: '' }, hAsync("input", { key: '3c1e75d691332b67a500a2d17030d5db191bdeb9', 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 && (
|
|
8558
|
+
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
8559
|
+
hAsync("div", { key: '4aa212280a928b88b85dffa3d453ea8f563e1fe0', class: "sd-chip-input__reset",
|
|
8560
|
+
// 리셋 버튼 클릭 시 input blur → portal unmount → refocus → 새 portal mount로
|
|
8561
|
+
// 두 wrapper가 body에 잠깐 겹치는 타이밍 이슈를 방지한다.
|
|
8562
|
+
onMouseDown: e => e.preventDefault() }, this.inputValue === '' && hAsync("span", { key: 'f7faa45b57d8e38dda8cc98119357f92d914fee4', class: "sd-chip-input__divider" }), this.maxCount != null && (hAsync("span", { key: 'dfde4ea82558414614fb2d817f7bfa1fb5d4bf5f', class: "sd-chip-input__max-count" }, "\uCD5C\uB300 ", this.maxCount, "\uAC1C")), this.useReset && this.internalValues.length > 0 && (hAsync("sd-text-link", { key: '9b43c82c1a5d425e5b187e92b4259e7d919491e3', 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 && (hAsync("sd-portal", { key: 'aa205aacbbafcd8c3d9855268637e6da956d4a74', open: showDropdown, parentRef: this.chipInputRef ?? null, viewportPadding: SdChipInput.SUGGESTIONS_VIEWPORT_PADDING, onSdClose: this.closeSuggestions }, hAsync("div", { key: '26814734f202da3a13e695ae1d0c913ea430b888', class: "sd-chip-input__suggestions", role: "listbox", style: suggestionBoxStyle }, isDropdownLoading && (hAsync("div", { key: 'df80d11b79f67dc6cfe6503b258528efa3752265', class: "sd-chip-input__suggestions-empty", style: suggestionEmptyStyle }, "\uBD88\uB7EC\uC624\uB294 \uC911...")), dropdownItems.map((item, i) => {
|
|
8563
|
+
const isSelected = (this.internalValues ?? []).includes(item);
|
|
8564
|
+
const isActive = i === this.activeSuggestionIndex && !isSelected;
|
|
8565
|
+
return (hAsync("div", { key: item, class: {
|
|
8566
|
+
'sd-chip-input__suggestion-item': true,
|
|
8567
|
+
'sd-chip-input__suggestion-item--active': isActive,
|
|
8568
|
+
'sd-chip-input__suggestion-item--selected': isSelected,
|
|
8569
|
+
}, role: "option", tabIndex: -1, "aria-selected": isSelected || isActive, "aria-disabled": isSelected ? 'true' : undefined, style: isSelected
|
|
8570
|
+
? {
|
|
8571
|
+
...suggestionItemStyle,
|
|
8572
|
+
color: '#0075FF',
|
|
8573
|
+
fontWeight: CHIP_INPUT_SUGGESTIONS.itemFontWeightSelected,
|
|
8574
|
+
cursor: 'default',
|
|
8575
|
+
}
|
|
8576
|
+
: isActive
|
|
8577
|
+
? {
|
|
8578
|
+
...suggestionItemStyle,
|
|
8579
|
+
background: CHIP_INPUT_SUGGESTIONS.itemBgHover,
|
|
8580
|
+
color: CHIP_INPUT_SUGGESTIONS.itemColorHover,
|
|
8581
|
+
fontWeight: CHIP_INPUT_SUGGESTIONS.itemFontWeightSelected,
|
|
8582
|
+
}
|
|
8583
|
+
: suggestionItemStyle, onMouseDown: e => {
|
|
8584
|
+
e.preventDefault();
|
|
8585
|
+
if (!isSelected)
|
|
8586
|
+
this.addChip(item);
|
|
8587
|
+
} }, hAsync("span", { style: { flex: '1' } }, item), isSelected && (hAsync("sd-icon", { name: "check", size: "12", style: { color: '#0075FF', flexShrink: '0' } }))));
|
|
8588
|
+
})))))));
|
|
8565
8589
|
}
|
|
8566
8590
|
static get watchers() { return {
|
|
8567
8591
|
"values": [{
|
|
@@ -18305,7 +18329,7 @@ class SdTextarea {
|
|
|
18305
18329
|
}; }
|
|
18306
18330
|
}
|
|
18307
18331
|
|
|
18308
|
-
const sdTheadCss = () => `sd-thead{display:contents}sd-thead *{box-sizing:border-box}.thead{display:table-header-group;height:var(--table-header-height, 36px)}.thead--sticky{position:sticky;top:0;z-index:120}.tr{display:table-row;width:100%}.th{display:table-cell;background:var(--table-header-bg, #F5FAFF);height:var(--table-header-height, 36px);padding:0 var(--table-header-padding-x, 16px);font-family:var(--table-header-font-family, inherit);font-weight:var(--table-header-font-weight, 500);font-size:var(--table-header-font-size, 12px);line-height:var(--table-header-line-height, 20px);text-decoration:var(--table-header-text-decoration, none);vertical-align:middle;border-bottom:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);-webkit-user-select:none;user-select:none;position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all}.th--selected{position:relative;width:var(--table-selectable-width, 48px) !important;max-width:var(--table-selectable-width, 48px) !important;min-width:var(--table-selectable-width, 48px) !important;text-align:center}.th--selected sd-checkbox label{position:relative}.th--selected sd-checkbox label:before{content:"";position:absolute;inset:-6px}.th.sticky-left{position:sticky;background-color:var(--table-header-bg, #F5FAFF);z-index:110 !important;left:var(--sticky-left-offset, 0)}.th.sticky-right{position:sticky;background-color:var(--table-header-bg, #F5FAFF);z-index:110 !important;right:var(--sticky-right-offset, 0)}.th.sticky-left-edge:after{content:"";position:absolute;top:0;left:100%;right:-20px;width:20px;height:100%;z-index:101 !important;box-shadow:inset 12px 0 20px -25px;opacity:0;pointer-events:none;transition:opacity 0.2s}.th.sticky-right-edge:after{content:"";position:absolute;top:0;left:-20px;width:20px;height:100%;z-index:101 !important;box-shadow:inset -12px 0 20px -25px;opacity:0;pointer-events:none;transition:opacity 0.2s}.th.sticky-left-edge.is-scrolled-left{overflow:visible}.th.sticky-left-edge.is-scrolled-left:after{opacity:1}.th.sticky-right-edge.is-scrolled-right{overflow:visible}.th.sticky-right-edge.is-scrolled-right:after{opacity:1}.th__content{display:flex;flex-flow:row nowrap;align-items:center;gap:var(--table-header-gap, 4px)}.th__content--left{justify-content:flex-start}.th__content--center{justify-content:center}.th__content--right{justify-content:flex-end}.th__content--label{white-space:nowrap;text-overflow:ellipsis;word-break:keep-all}.th__bar{position:absolute;top:50%;right:0;transform:translateY(-50%);width:var(--table-border-width, 1px);height:var(--table-header-resizer-height, 16px);z-index:3;background-color:var(--table-header-resizer-color, #CCCCCC)}.th__resizer{position:absolute;top:50%;right:0;transform:translateY(-50%);width:4px;height:var(--table-header-resizer-height, 16px);cursor:col-resize;z-index:3;border-left:var(--table-border-width, 1px) solid var(--table-header-resizer-color, #CCCCCC);border-right:var(--table-border-width, 1px) solid var(--table-header-resizer-color, #CCCCCC)}.th__resizer--left{right:auto;left:0}`;
|
|
18332
|
+
const sdTheadCss = () => `sd-thead{display:contents}sd-thead *{box-sizing:border-box}.thead{display:table-header-group;height:var(--table-header-height, 36px)}.thead--sticky{position:sticky;top:0;z-index:120}.tr{display:table-row;width:100%}.th{display:table-cell;background:var(--table-header-bg, #F5FAFF);height:var(--table-header-height, 36px);padding:0 var(--table-header-padding-x, 16px);font-family:var(--table-header-font-family, inherit);font-weight:var(--table-header-font-weight, 500);font-size:var(--table-header-font-size, 12px);line-height:var(--table-header-line-height, 20px);text-decoration:var(--table-header-text-decoration, none);vertical-align:middle;border-bottom:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);-webkit-user-select:none;user-select:none;position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all}.th--selected{position:relative;width:var(--table-selectable-width, 48px) !important;max-width:var(--table-selectable-width, 48px) !important;min-width:var(--table-selectable-width, 48px) !important;text-align:center}.th--selected sd-checkbox label{position:relative}.th--selected sd-checkbox label:before{content:"";position:absolute;inset:-6px}.th.sticky-left{position:sticky;background-color:var(--table-header-bg, #F5FAFF);z-index:110 !important;left:var(--sticky-left-offset, 0)}.th.sticky-right{position:sticky;background-color:var(--table-header-bg, #F5FAFF);z-index:110 !important;right:var(--sticky-right-offset, 0)}.th.sticky-left-edge:after{content:"";position:absolute;top:0;left:100%;right:-20px;width:20px;height:100%;z-index:101 !important;box-shadow:inset 12px 0 20px -25px;opacity:0;pointer-events:none;transition:opacity 0.2s}.th.sticky-right-edge:after{content:"";position:absolute;top:0;left:-20px;width:20px;height:100%;z-index:101 !important;box-shadow:inset -12px 0 20px -25px;opacity:0;pointer-events:none;transition:opacity 0.2s}.th.sticky-left-edge.is-scrolled-left{overflow:visible}.th.sticky-left-edge.is-scrolled-left:after{opacity:1}.th.sticky-right-edge.is-scrolled-right{overflow:visible}.th.sticky-right-edge.is-scrolled-right:after{opacity:1}.th__content{display:flex;flex-flow:row nowrap;align-items:center;gap:var(--table-header-gap, 4px)}.th__content--left{justify-content:flex-start}.th__content--center{justify-content:center}.th__content--right{justify-content:flex-end}.th__content--label{white-space:nowrap;text-overflow:ellipsis;word-break:keep-all}.th__bar{position:absolute;top:50%;right:0;transform:translateY(-50%);width:var(--table-border-width, 1px);height:var(--table-header-resizer-height, 16px);z-index:3;background-color:var(--table-header-resizer-color, #CCCCCC)}.th__dropdown-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:16px;height:16px;padding:0;border:none;background:transparent;cursor:pointer;color:inherit;border-radius:2px}.th__dropdown-trigger sd-icon{transition:transform 0.15s ease}.th__dropdown-trigger--open sd-icon{transform:rotate(180deg)}.th__resizer{position:absolute;top:50%;right:0;transform:translateY(-50%);width:4px;height:var(--table-header-resizer-height, 16px);cursor:col-resize;z-index:3;border-left:var(--table-border-width, 1px) solid var(--table-header-resizer-color, #CCCCCC);border-right:var(--table-border-width, 1px) solid var(--table-header-resizer-color, #CCCCCC)}.th__resizer--left{right:auto;left:0}`;
|
|
18309
18333
|
|
|
18310
18334
|
class SdThead {
|
|
18311
18335
|
constructor(hostRef) {
|
|
@@ -18341,14 +18365,29 @@ class SdThead {
|
|
|
18341
18365
|
_stickyHeader = false;
|
|
18342
18366
|
_scrolledLeft = false;
|
|
18343
18367
|
_scrolledRight = false;
|
|
18368
|
+
dropdownOpenMap = {};
|
|
18344
18369
|
tableEl = null;
|
|
18370
|
+
dropdownRefs = {};
|
|
18371
|
+
dropdownThRefs = {};
|
|
18372
|
+
dropdownPortals = {};
|
|
18345
18373
|
handleColumnsChange(newCols) {
|
|
18346
18374
|
if (Array.isArray(newCols) && (this.columnWidths ?? []).length === 0) {
|
|
18347
18375
|
this.columnWidths = newCols.map(c => (c.autoWidth ? 0 : parseInt(c.width || '120', 10)));
|
|
18348
18376
|
}
|
|
18349
18377
|
}
|
|
18378
|
+
disconnectedCallback() {
|
|
18379
|
+
const portals = this.dropdownPortals ?? {};
|
|
18380
|
+
Object.values(portals).forEach(portal => {
|
|
18381
|
+
if (portal?.parentNode != null)
|
|
18382
|
+
portal.parentNode.removeChild(portal);
|
|
18383
|
+
});
|
|
18384
|
+
}
|
|
18350
18385
|
componentWillLoad() {
|
|
18351
18386
|
this.syncTableContext();
|
|
18387
|
+
this.dropdownOpenMap = this.dropdownOpenMap ?? {};
|
|
18388
|
+
this.dropdownRefs = this.dropdownRefs ?? {};
|
|
18389
|
+
this.dropdownThRefs = this.dropdownThRefs ?? {};
|
|
18390
|
+
this.dropdownPortals = this.dropdownPortals ?? {};
|
|
18352
18391
|
this.columnWidths = Array.isArray(this.columnWidths) ? this.columnWidths : [];
|
|
18353
18392
|
this.resolveConfig();
|
|
18354
18393
|
if ((this.columnWidths ?? []).length === 0) {
|
|
@@ -18358,6 +18397,36 @@ class SdThead {
|
|
|
18358
18397
|
componentDidLoad() {
|
|
18359
18398
|
this.syncTableContext();
|
|
18360
18399
|
this.resolveConfig();
|
|
18400
|
+
this.initDropdownPortals();
|
|
18401
|
+
}
|
|
18402
|
+
// sd-portal을 body에 붙여 CSS transform 영향 없이 정확한 위치에 패널을 표시한다.
|
|
18403
|
+
// <slot>을 render에 두지 않고 직접 DOM 이동(slot 속성 제거)으로 Stencil 슬롯 에뮬레이션 충돌을 피한다.
|
|
18404
|
+
initDropdownPortals() {
|
|
18405
|
+
const cols = this._columns ?? [];
|
|
18406
|
+
const hasDropdownCols = cols.filter(c => c.hasDropdown === true);
|
|
18407
|
+
if (hasDropdownCols.length === 0)
|
|
18408
|
+
return;
|
|
18409
|
+
for (const col of hasDropdownCols) {
|
|
18410
|
+
const colName = col.name;
|
|
18411
|
+
// 이미 포탈이 생성된 컬럼은 건너뜀 (refreshConfig 재호출 대비)
|
|
18412
|
+
if ((this.dropdownPortals ?? {})[colName] != null)
|
|
18413
|
+
continue;
|
|
18414
|
+
const slotContent = this.el.querySelector(`[slot="dropdown-${colName}"]`);
|
|
18415
|
+
if (slotContent == null)
|
|
18416
|
+
continue;
|
|
18417
|
+
// slot 속성 제거: Stencil 슬롯 에뮬레이션이 재배포하지 못하게 한다
|
|
18418
|
+
slotContent.removeAttribute('slot');
|
|
18419
|
+
const portal = document.createElement('sd-portal');
|
|
18420
|
+
portal.parentRef = this.dropdownThRefs[colName] ?? null;
|
|
18421
|
+
portal.open = false;
|
|
18422
|
+
// 첫 open 전까지 포탈 호스트 자체를 숨긴다.
|
|
18423
|
+
// moveSlotContent()가 open=true 시 children을 독립 wrapper div로 이동하므로 이후 동작에 영향 없음.
|
|
18424
|
+
portal.style.display = 'none';
|
|
18425
|
+
portal.addEventListener('sdClose', () => this.closeDropdown(colName));
|
|
18426
|
+
portal.appendChild(slotContent);
|
|
18427
|
+
document.body.appendChild(portal);
|
|
18428
|
+
this.dropdownPortals[colName] = portal;
|
|
18429
|
+
}
|
|
18361
18430
|
}
|
|
18362
18431
|
syncTableContext() {
|
|
18363
18432
|
// sd-table이 shadow:true이므로 fallback content로 렌더되면 closest가 경계를 못 넘는다.
|
|
@@ -18400,6 +18469,7 @@ class SdThead {
|
|
|
18400
18469
|
/** 테이블 설정을 다시 불러옵니다. */
|
|
18401
18470
|
async refreshConfig() {
|
|
18402
18471
|
this.resolveConfig();
|
|
18472
|
+
this.initDropdownPortals();
|
|
18403
18473
|
}
|
|
18404
18474
|
/** 컬럼 너비를 업데이트합니다. */
|
|
18405
18475
|
async setColumnWidths(widths) {
|
|
@@ -18444,6 +18514,28 @@ class SdThead {
|
|
|
18444
18514
|
handleColumnSort = (col) => {
|
|
18445
18515
|
this.sdColumnSort.emit({ column: col });
|
|
18446
18516
|
};
|
|
18517
|
+
toggleDropdown(name) {
|
|
18518
|
+
const isOpen = this.dropdownOpenMap[name] !== true;
|
|
18519
|
+
const portals = this.dropdownPortals ?? {};
|
|
18520
|
+
const newMap = { ...this.dropdownOpenMap };
|
|
18521
|
+
// _columns 기준으로 순회: portals가 비어도 dropdownOpenMap은 항상 갱신됨
|
|
18522
|
+
for (const col of (this._columns ?? []).filter(c => c.hasDropdown === true)) {
|
|
18523
|
+
const shouldBeOpen = col.name === name ? isOpen : false;
|
|
18524
|
+
newMap[col.name] = shouldBeOpen;
|
|
18525
|
+
const portal = portals[col.name];
|
|
18526
|
+
if (portal != null)
|
|
18527
|
+
portal.open = shouldBeOpen;
|
|
18528
|
+
}
|
|
18529
|
+
this.dropdownOpenMap = newMap;
|
|
18530
|
+
}
|
|
18531
|
+
closeDropdown(name) {
|
|
18532
|
+
if (this.dropdownOpenMap[name] !== true)
|
|
18533
|
+
return;
|
|
18534
|
+
this.dropdownOpenMap = { ...this.dropdownOpenMap, [name]: false };
|
|
18535
|
+
const portal = (this.dropdownPortals ?? {})[name];
|
|
18536
|
+
if (portal != null)
|
|
18537
|
+
portal.open = false;
|
|
18538
|
+
}
|
|
18447
18539
|
handleSelectAll(checked) {
|
|
18448
18540
|
const nextChecked = !!checked;
|
|
18449
18541
|
const safeRows = Array.isArray(this.rows) ? this.rows : [];
|
|
@@ -18460,6 +18552,8 @@ class SdThead {
|
|
|
18460
18552
|
}
|
|
18461
18553
|
render() {
|
|
18462
18554
|
const safeRows = Array.isArray(this.rows) ? this.rows : [];
|
|
18555
|
+
const dropdownOpenMap = this.dropdownOpenMap ?? {};
|
|
18556
|
+
const dropdownRefs = this.dropdownRefs ?? {};
|
|
18463
18557
|
const stickyLeftCount = this._stickyColumn.left || 0;
|
|
18464
18558
|
const stickyRightCount = this._stickyColumn.right || 0;
|
|
18465
18559
|
const stickyLeftCols = this.visibleColumns.slice(0, stickyLeftCount);
|
|
@@ -18481,22 +18575,25 @@ class SdThead {
|
|
|
18481
18575
|
'--table-border-color': TABLE_BORDER.color,
|
|
18482
18576
|
'--table-border-width': `${TABLE_BORDER.width}px`,
|
|
18483
18577
|
};
|
|
18484
|
-
return (hAsync(Host, { key: '
|
|
18578
|
+
return (hAsync(Host, { key: '947f5e5b0e59e7e6f8a73e4fd44dbfa646cb630a', slot: `${this.tableId}-head`, style: headStyle }, hAsync("thead", { key: '2e0ffbfe9d96528c6e0082d4883fa462a18831d6', class: {
|
|
18485
18579
|
'thead': true,
|
|
18486
18580
|
'thead--sticky': this._stickyHeader,
|
|
18487
|
-
} }, hAsync("tr", { key: '
|
|
18581
|
+
} }, hAsync("tr", { key: '5843a18e1548bc6546e447d4c9213375116af0e9', class: "tr" }, this._selectable && (hAsync("th", { key: '914024ca35874747e39f1819337cd4ad1cbe733d', class: {
|
|
18488
18582
|
'th': true,
|
|
18489
18583
|
'th--selected': true,
|
|
18490
18584
|
'sticky-left': true,
|
|
18491
18585
|
'sticky-left-edge': stickyLeftCount === 0,
|
|
18492
18586
|
'is-scrolled-left': stickyLeftCount === 0 && this._scrolledLeft,
|
|
18493
|
-
}, style: { '--sticky-left-offset': '0px' } }, hAsync("sd-checkbox", { key: '
|
|
18587
|
+
}, style: { '--sticky-left-offset': '0px' } }, hAsync("sd-checkbox", { key: 'e07232f1f5fa02589573ddaae53ebdadbdb97674', value: this.getIsAllChecked(), disabled: safeRows.length === 0, onSdUpdate: (e) => this.handleSelectAll(e.detail) }), hAsync("div", { key: '08b504cfd4f420e76e91d649eed28c7068517044', class: "th__bar" }))), stickyLeftCols.map((col, idx) => (hAsync("th", { key: col.name, class: {
|
|
18494
18588
|
'th': true,
|
|
18495
18589
|
[`${col.thClass}`]: Boolean(col.thClass),
|
|
18496
18590
|
'sticky-left': true,
|
|
18497
18591
|
'sticky-left-edge': idx === stickyLeftCount - 1,
|
|
18498
18592
|
'is-scrolled-left': idx === stickyLeftCount - 1 && this._scrolledLeft,
|
|
18499
|
-
}, style: { ...col.thStyle, ...this.getStickyStyle(idx) } }, hAsync("div", { class: `th__content th__content--${col.align || 'left'}` }, hAsync("div", { class: "th__content--label" }, col.label), col.icon && (hAsync("sd-icon", { name: col.icon, size: "12", color: resolveTableIconColor(col.icon, col.iconColor) })), col.sort && (hAsync("sd-icon", { name: resolveSortIconName(col.sort), size: "12", color: resolveTableIconColor(resolveSortIconName(col.sort), col.iconColor), onClick: () => this.handleColumnSort(col), style: { cursor: 'pointer' } })), col.tooltip && (hAsync("sd-tooltip", { ...col.tooltipOptions }, hAsync("div", { slot: "content" }, col.tooltip.map(text => (hAsync("p", null, text))))))
|
|
18593
|
+
}, style: { ...col.thStyle, ...this.getStickyStyle(idx) }, ref: col.hasDropdown === true ? (el => { this.dropdownThRefs[col.name] = el; }) : undefined }, hAsync("div", { class: `th__content th__content--${col.align || 'left'}` }, hAsync("div", { class: "th__content--label" }, col.label), col.icon && (hAsync("sd-icon", { name: col.icon, size: "12", color: resolveTableIconColor(col.icon, col.iconColor) })), col.sort && (hAsync("sd-icon", { name: resolveSortIconName(col.sort), size: "12", color: resolveTableIconColor(resolveSortIconName(col.sort), col.iconColor), onClick: () => this.handleColumnSort(col), style: { cursor: 'pointer' } })), col.tooltip && (hAsync("sd-tooltip", { ...col.tooltipOptions }, hAsync("div", { slot: "content" }, col.tooltip.map(text => (hAsync("p", null, text)))))), col.hasDropdown === true && (hAsync("button", { class: {
|
|
18594
|
+
'th__dropdown-trigger': true,
|
|
18595
|
+
'th__dropdown-trigger--open': dropdownOpenMap[col.name] === true,
|
|
18596
|
+
}, ref: el => { dropdownRefs[col.name] = el; }, onClick: () => this.toggleDropdown(col.name), "aria-haspopup": "listbox", "aria-expanded": dropdownOpenMap[col.name] === true ? 'true' : 'false' }, hAsync("sd-icon", { name: "chevronDown", size: "12" })))), this._resizable && idx !== lastColIdx && (
|
|
18500
18597
|
// column resize 는 마우스 드래그 전용 인터랙션이라 키보드 핸들러를 두지 않는다.
|
|
18501
18598
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
18502
18599
|
hAsync("div", { class: "th__resizer", onMouseDown: (evt) => this.handleResize(idx, evt) }))))), middleCols.map((col, relativeIdx) => {
|
|
@@ -18504,7 +18601,10 @@ class SdThead {
|
|
|
18504
18601
|
return (hAsync("th", { key: col.name, class: {
|
|
18505
18602
|
th: true,
|
|
18506
18603
|
[`${col.thClass}`]: Boolean(col.thClass),
|
|
18507
|
-
}, style: { ...col.thStyle, ...this.getStickyStyle(actualColIdx) } }, hAsync("div", { class: `th__content th__content--${col.align || 'left'}` }, hAsync("div", { class: "th__content--label" }, col.label), col.icon && (hAsync("sd-icon", { name: col.icon, size: "12", color: resolveTableIconColor(col.icon, col.iconColor) })), col.sort && (hAsync("sd-icon", { name: resolveSortIconName(col.sort), size: "12", color: resolveTableIconColor(resolveSortIconName(col.sort), col.iconColor), onClick: () => this.handleColumnSort(col), style: { cursor: 'pointer' } })), col.tooltip && (hAsync("sd-tooltip", { ...col.tooltipOptions }, hAsync("div", { slot: "content" }, col.tooltip.map(text => (hAsync("p", null, text))))))
|
|
18604
|
+
}, style: { ...col.thStyle, ...this.getStickyStyle(actualColIdx) }, ref: col.hasDropdown === true ? (el => { this.dropdownThRefs[col.name] = el; }) : undefined }, hAsync("div", { class: `th__content th__content--${col.align || 'left'}` }, hAsync("div", { class: "th__content--label" }, col.label), col.icon && (hAsync("sd-icon", { name: col.icon, size: "12", color: resolveTableIconColor(col.icon, col.iconColor) })), col.sort && (hAsync("sd-icon", { name: resolveSortIconName(col.sort), size: "12", color: resolveTableIconColor(resolveSortIconName(col.sort), col.iconColor), onClick: () => this.handleColumnSort(col), style: { cursor: 'pointer' } })), col.tooltip && (hAsync("sd-tooltip", { ...col.tooltipOptions }, hAsync("div", { slot: "content" }, col.tooltip.map(text => (hAsync("p", null, text)))))), col.hasDropdown === true && (hAsync("button", { class: {
|
|
18605
|
+
'th__dropdown-trigger': true,
|
|
18606
|
+
'th__dropdown-trigger--open': this.dropdownOpenMap[col.name] === true,
|
|
18607
|
+
}, ref: el => { this.dropdownRefs[col.name] = el; }, onClick: () => this.toggleDropdown(col.name), "aria-haspopup": "listbox", "aria-expanded": this.dropdownOpenMap[col.name] === true ? 'true' : 'false' }, hAsync("sd-icon", { name: "chevronDown", size: "12" })))), this._resizable && actualColIdx !== lastColIdx && (
|
|
18508
18608
|
// column resize 는 마우스 드래그 전용 인터랙션이라 키보드 핸들러를 두지 않는다.
|
|
18509
18609
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
18510
18610
|
hAsync("div", { class: "th__resizer", onMouseDown: (evt) => this.handleResize(actualColIdx, evt) }))));
|
|
@@ -18516,7 +18616,10 @@ class SdThead {
|
|
|
18516
18616
|
'sticky-right': true,
|
|
18517
18617
|
'sticky-right-edge': relativeIdx === 0,
|
|
18518
18618
|
'is-scrolled-right': relativeIdx === 0 && this._scrolledRight,
|
|
18519
|
-
}, style: { ...col.thStyle, ...this.getStickyStyle(actualColIdx) } }, hAsync("div", { class: `th__content th__content--${col.align || 'left'}` }, hAsync("div", { class: "th__content--label" }, col.label), col.icon && (hAsync("sd-icon", { name: col.icon, size: "12", color: resolveTableIconColor(col.icon, col.iconColor) })), col.sort && (hAsync("sd-icon", { name: resolveSortIconName(col.sort), size: "12", color: resolveTableIconColor(resolveSortIconName(col.sort), col.iconColor), onClick: () => this.handleColumnSort(col), style: { cursor: 'pointer' } })), col.tooltip && (hAsync("sd-tooltip", { ...col.tooltipOptions }, hAsync("div", { slot: "content" }, col.tooltip.map(text => (hAsync("p", null, text))))))
|
|
18619
|
+
}, style: { ...col.thStyle, ...this.getStickyStyle(actualColIdx) }, ref: col.hasDropdown === true ? (el => { this.dropdownThRefs[col.name] = el; }) : undefined }, hAsync("div", { class: `th__content th__content--${col.align || 'left'}` }, hAsync("div", { class: "th__content--label" }, col.label), col.icon && (hAsync("sd-icon", { name: col.icon, size: "12", color: resolveTableIconColor(col.icon, col.iconColor) })), col.sort && (hAsync("sd-icon", { name: resolveSortIconName(col.sort), size: "12", color: resolveTableIconColor(resolveSortIconName(col.sort), col.iconColor), onClick: () => this.handleColumnSort(col), style: { cursor: 'pointer' } })), col.tooltip && (hAsync("sd-tooltip", { ...col.tooltipOptions }, hAsync("div", { slot: "content" }, col.tooltip.map(text => (hAsync("p", null, text)))))), col.hasDropdown === true && (hAsync("button", { class: {
|
|
18620
|
+
'th__dropdown-trigger': true,
|
|
18621
|
+
'th__dropdown-trigger--open': this.dropdownOpenMap[col.name] === true,
|
|
18622
|
+
}, ref: el => { this.dropdownRefs[col.name] = el; }, onClick: () => this.toggleDropdown(col.name), "aria-haspopup": "listbox", "aria-expanded": this.dropdownOpenMap[col.name] === true ? 'true' : 'false' }, hAsync("sd-icon", { name: "chevronDown", size: "12" })))), this._resizable && (
|
|
18520
18623
|
// column resize 는 마우스 드래그 전용 인터랙션이라 키보드 핸들러를 두지 않는다.
|
|
18521
18624
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
18522
18625
|
hAsync("div", { class: "th__resizer th__resizer--left", onMouseDown: (evt) => this.handleResize(actualColIdx, evt, true) }))));
|
|
@@ -18549,6 +18652,7 @@ class SdThead {
|
|
|
18549
18652
|
"_stickyHeader": [32],
|
|
18550
18653
|
"_scrolledLeft": [32],
|
|
18551
18654
|
"_scrolledRight": [32],
|
|
18655
|
+
"dropdownOpenMap": [32],
|
|
18552
18656
|
"refreshConfig": [64],
|
|
18553
18657
|
"setColumnWidths": [64],
|
|
18554
18658
|
"refreshSelection": [64]
|