sellmate-design-system-react 0.1.8 → 0.1.9
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/components/SActionModal/SActionModal.cjs +1 -1
- package/dist/components/SActionModal/SActionModal.cjs.map +1 -1
- package/dist/components/SActionModal/SActionModal.js +1 -1
- package/dist/components/SActionModal/SActionModal.js.map +1 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.cjs +218 -209
- package/dist/components/SBarcodeInput/SBarcodeInput.cjs.map +1 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.js +218 -209
- package/dist/components/SBarcodeInput/SBarcodeInput.js.map +1 -1
- package/dist/components/SCalendar/SCalendar.cjs +1 -1
- package/dist/components/SCalendar/SCalendar.cjs.map +1 -1
- package/dist/components/SCalendar/SCalendar.js +1 -1
- package/dist/components/SCalendar/SCalendar.js.map +1 -1
- package/dist/components/SChip/SChip.cjs +1 -1
- package/dist/components/SChip/SChip.cjs.map +1 -1
- package/dist/components/SChip/SChip.d.ts +1 -1
- package/dist/components/SChip/SChip.js +1 -1
- package/dist/components/SChip/SChip.js.map +1 -1
- package/dist/components/SChipInput/SChipInput.cjs +235 -221
- package/dist/components/SChipInput/SChipInput.cjs.map +1 -1
- package/dist/components/SChipInput/SChipInput.js +235 -221
- package/dist/components/SChipInput/SChipInput.js.map +1 -1
- package/dist/components/SCircleProgress/SCircleProgress.cjs +53 -55
- package/dist/components/SCircleProgress/SCircleProgress.cjs.map +1 -1
- package/dist/components/SCircleProgress/SCircleProgress.js +53 -55
- package/dist/components/SCircleProgress/SCircleProgress.js.map +1 -1
- package/dist/components/SDatePicker/SDatePicker.cjs +223 -214
- package/dist/components/SDatePicker/SDatePicker.cjs.map +1 -1
- package/dist/components/SDatePicker/SDatePicker.js +223 -214
- package/dist/components/SDatePicker/SDatePicker.js.map +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.cjs +298 -263
- package/dist/components/SDateRangePicker/SDateRangePicker.cjs.map +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.js +298 -263
- package/dist/components/SDateRangePicker/SDateRangePicker.js.map +1 -1
- package/dist/components/SDropdownButton/SDropdownButton.cjs +4 -4
- package/dist/components/SDropdownButton/SDropdownButton.cjs.map +1 -1
- package/dist/components/SDropdownButton/SDropdownButton.js +4 -4
- package/dist/components/SDropdownButton/SDropdownButton.js.map +1 -1
- package/dist/components/SField/SField.cjs +218 -21
- package/dist/components/SField/SField.cjs.map +1 -1
- package/dist/components/SField/SField.d.ts +11 -0
- package/dist/components/SField/SField.js +218 -21
- package/dist/components/SField/SField.js.map +1 -1
- package/dist/components/SFilePicker/SFilePicker.cjs +298 -278
- package/dist/components/SFilePicker/SFilePicker.cjs.map +1 -1
- package/dist/components/SFilePicker/SFilePicker.d.ts +4 -2
- package/dist/components/SFilePicker/SFilePicker.js +298 -278
- package/dist/components/SFilePicker/SFilePicker.js.map +1 -1
- package/dist/components/SInput/SInput.cjs +218 -209
- package/dist/components/SInput/SInput.cjs.map +1 -1
- package/dist/components/SInput/SInput.js +218 -209
- package/dist/components/SInput/SInput.js.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs +610 -450
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.d.ts +3 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.js +610 -450
- package/dist/components/SKeyValueTable/SKeyValueTable.js.map +1 -1
- package/dist/components/SLoadingContainer/SLoadingContainer.cjs +61 -55
- package/dist/components/SLoadingContainer/SLoadingContainer.cjs.map +1 -1
- package/dist/components/SLoadingContainer/SLoadingContainer.js +61 -55
- package/dist/components/SLoadingContainer/SLoadingContainer.js.map +1 -1
- package/dist/components/SLoadingContainer/loading.cjs +61 -55
- package/dist/components/SLoadingContainer/loading.cjs.map +1 -1
- package/dist/components/SLoadingContainer/loading.js +61 -55
- package/dist/components/SLoadingContainer/loading.js.map +1 -1
- package/dist/components/SLoadingModal/SLoadingModal.cjs +56 -57
- package/dist/components/SLoadingModal/SLoadingModal.cjs.map +1 -1
- package/dist/components/SLoadingModal/SLoadingModal.js +56 -57
- package/dist/components/SLoadingModal/SLoadingModal.js.map +1 -1
- package/dist/components/SNumberInput/SNumberInput.cjs +326 -50
- package/dist/components/SNumberInput/SNumberInput.cjs.map +1 -1
- package/dist/components/SNumberInput/SNumberInput.d.ts +2 -0
- package/dist/components/SNumberInput/SNumberInput.js +326 -50
- package/dist/components/SNumberInput/SNumberInput.js.map +1 -1
- package/dist/components/SPagination/SPagination.cjs +1 -1
- package/dist/components/SPagination/SPagination.cjs.map +1 -1
- package/dist/components/SPagination/SPagination.js +1 -1
- package/dist/components/SPagination/SPagination.js.map +1 -1
- package/dist/components/SSelect/SSelect.cjs +67 -32
- package/dist/components/SSelect/SSelect.cjs.map +1 -1
- package/dist/components/SSelect/SSelect.js +67 -32
- package/dist/components/SSelect/SSelect.js.map +1 -1
- package/dist/components/STable/STable.cjs +121 -88
- package/dist/components/STable/STable.cjs.map +1 -1
- package/dist/components/STable/STable.js +121 -88
- package/dist/components/STable/STable.js.map +1 -1
- package/dist/components/STextarea/STextarea.cjs +218 -21
- package/dist/components/STextarea/STextarea.cjs.map +1 -1
- package/dist/components/STextarea/STextarea.js +218 -21
- package/dist/components/STextarea/STextarea.js.map +1 -1
- package/dist/components/SToast/SToastContainer.cjs +3 -3
- package/dist/components/SToast/SToastContainer.cjs.map +1 -1
- package/dist/components/SToast/SToastContainer.js +3 -3
- package/dist/components/SToast/SToastContainer.js.map +1 -1
- package/dist/components/STooltip/STooltip.cjs +209 -14
- package/dist/components/STooltip/STooltip.cjs.map +1 -1
- package/dist/components/STooltip/STooltip.js +209 -14
- package/dist/components/STooltip/STooltip.js.map +1 -1
- package/dist/index.cjs +432 -260
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +432 -260
- package/dist/index.js.map +1 -1
- package/dist/styles.css +51 -27
- package/dist/theme.css +4 -2
- package/package.json +1 -1
|
@@ -2945,65 +2945,63 @@ var SCircleProgress = forwardRef(
|
|
|
2945
2945
|
"div",
|
|
2946
2946
|
{
|
|
2947
2947
|
ref,
|
|
2948
|
-
className: cn(
|
|
2948
|
+
className: cn(
|
|
2949
|
+
"inline-flex flex-col items-center gap-[var(--cmp-progress-circular-gap)]",
|
|
2950
|
+
className
|
|
2951
|
+
),
|
|
2949
2952
|
style,
|
|
2950
2953
|
children: [
|
|
2951
|
-
/* @__PURE__ */ jsxs(
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
{
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2954
|
+
/* @__PURE__ */ jsxs(
|
|
2955
|
+
"svg",
|
|
2956
|
+
{
|
|
2957
|
+
viewBox: `0 0 ${VIEWBOX} ${VIEWBOX}`,
|
|
2958
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
2959
|
+
className: cn("h-[80px] w-[80px]", indeterminate && "origin-center animate-circle-spin"),
|
|
2960
|
+
children: [
|
|
2961
|
+
/* @__PURE__ */ jsx(
|
|
2962
|
+
"circle",
|
|
2963
|
+
{
|
|
2964
|
+
cx: c,
|
|
2965
|
+
cy: c,
|
|
2966
|
+
r: RADIUS,
|
|
2967
|
+
fill: "none",
|
|
2968
|
+
strokeWidth: STROKE,
|
|
2969
|
+
style: { stroke: colors.track }
|
|
2970
|
+
}
|
|
2960
2971
|
),
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
|
|
2967
|
-
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
2975
|
-
|
|
2976
|
-
|
|
2977
|
-
cy: c,
|
|
2978
|
-
r: RADIUS,
|
|
2979
|
-
fill: "none",
|
|
2980
|
-
strokeWidth: STROKE,
|
|
2981
|
-
strokeLinecap: "round",
|
|
2982
|
-
className: cn(
|
|
2983
|
-
"origin-center",
|
|
2984
|
-
indeterminate ? "animate-circle-arc" : "-rotate-90 transition-[stroke-dasharray] duration-[400ms] ease-linear"
|
|
2985
|
-
),
|
|
2986
|
-
style: {
|
|
2987
|
-
stroke: colors.arc,
|
|
2988
|
-
...indeterminate ? {} : { strokeDasharray: `${filled} ${CIRCUMFERENCE}`, strokeDashoffset: 0 }
|
|
2989
|
-
}
|
|
2972
|
+
/* @__PURE__ */ jsx(
|
|
2973
|
+
"circle",
|
|
2974
|
+
{
|
|
2975
|
+
cx: c,
|
|
2976
|
+
cy: c,
|
|
2977
|
+
r: RADIUS,
|
|
2978
|
+
fill: "none",
|
|
2979
|
+
strokeWidth: STROKE,
|
|
2980
|
+
strokeLinecap: "round",
|
|
2981
|
+
className: cn(
|
|
2982
|
+
"origin-center",
|
|
2983
|
+
indeterminate ? "animate-circle-arc" : "-rotate-90 transition-[stroke-dasharray] duration-[400ms] ease-linear"
|
|
2984
|
+
),
|
|
2985
|
+
style: {
|
|
2986
|
+
stroke: colors.arc,
|
|
2987
|
+
...indeterminate ? {} : { strokeDasharray: `${filled} ${CIRCUMFERENCE}`, strokeDashoffset: 0 }
|
|
2990
2988
|
}
|
|
2991
|
-
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
2989
|
+
}
|
|
2990
|
+
)
|
|
2991
|
+
]
|
|
2992
|
+
}
|
|
2993
|
+
),
|
|
2994
|
+
!indeterminate && /* @__PURE__ */ jsxs(
|
|
2995
|
+
"span",
|
|
2996
|
+
{
|
|
2997
|
+
className: "text-center text-[16px] font-bold leading-[26px]",
|
|
2998
|
+
style: { color: percentColor },
|
|
2999
|
+
children: [
|
|
3000
|
+
Math.round(v),
|
|
3001
|
+
"%"
|
|
3002
|
+
]
|
|
3003
|
+
}
|
|
3004
|
+
),
|
|
3007
3005
|
label && /* @__PURE__ */ jsx("span", { className: "text-center text-[12px] font-normal leading-[20px] text-[color:var(--cmp-progress-color-label)]", children: label })
|
|
3008
3006
|
]
|
|
3009
3007
|
}
|
|
@@ -3066,7 +3064,7 @@ function SPagination({
|
|
|
3066
3064
|
style,
|
|
3067
3065
|
children: [
|
|
3068
3066
|
/* @__PURE__ */ jsx("div", { className: "flex min-w-[calc(var(--cmp-pagination-height)*2+var(--cmp-pagination-move-gap))] items-center justify-end gap-[var(--cmp-pagination-move-gap)]", children: prevButtons }),
|
|
3069
|
-
simple ? /* @__PURE__ */ jsxs("div", { className: "flex h-[var(--cmp-pagination-height)] items-center gap-[var(--cmp-pagination-
|
|
3067
|
+
simple ? /* @__PURE__ */ jsxs("div", { className: "flex h-[var(--cmp-pagination-height)] items-center gap-[var(--cmp-pagination-simple-gap)] px-[var(--cmp-pagination-paddingX)] text-[12px] font-medium leading-[20px] text-[color:var(--cmp-pagination-item-content-default)]", children: [
|
|
3070
3068
|
/* @__PURE__ */ jsx("span", { className: "font-bold text-[color:var(--cmp-pagination-item-content-selected)]", children: currentPage }),
|
|
3071
3069
|
/* @__PURE__ */ jsx("span", { children: "/" }),
|
|
3072
3070
|
/* @__PURE__ */ jsx("span", { children: lastPage })
|
|
@@ -3310,7 +3308,8 @@ var HIDE_DELAY_MS = 100;
|
|
|
3310
3308
|
function useBody(content, message = []) {
|
|
3311
3309
|
if (content != null) return content;
|
|
3312
3310
|
if (message.length === 0) return null;
|
|
3313
|
-
|
|
3311
|
+
const singleLine = message.length === 1;
|
|
3312
|
+
return /* @__PURE__ */ jsx(Fragment, { children: message.map((line, i) => /* @__PURE__ */ jsx("div", { className: singleLine ? "leading-[24px]" : void 0, children: line }, i)) });
|
|
3314
3313
|
}
|
|
3315
3314
|
var STooltip = forwardRef(function STooltip2({
|
|
3316
3315
|
content,
|
|
@@ -3368,7 +3367,7 @@ var STooltip = forwardRef(function STooltip2({
|
|
|
3368
3367
|
if (disabled || body == null) return /* @__PURE__ */ jsx(Fragment, { children: triggerNode });
|
|
3369
3368
|
const isHover = trigger === "hover";
|
|
3370
3369
|
const contentClass = cn(
|
|
3371
|
-
"z-50 max-w-xs rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px]",
|
|
3370
|
+
"z-50 max-w-xs rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px] shadow-[2px_2px_12px_2px_rgba(0,0,0,0.1)]",
|
|
3372
3371
|
FLOATING_SLIDE_ANIM,
|
|
3373
3372
|
className
|
|
3374
3373
|
);
|
|
@@ -3413,11 +3412,17 @@ var STooltip = forwardRef(function STooltip2({
|
|
|
3413
3412
|
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-[12px]", children: [
|
|
3414
3413
|
/* @__PURE__ */ jsx("div", { className: "min-w-0 flex-1", children: body }),
|
|
3415
3414
|
useClose && /* @__PURE__ */ jsx(
|
|
3416
|
-
|
|
3415
|
+
SGhostButton,
|
|
3417
3416
|
{
|
|
3418
|
-
|
|
3419
|
-
|
|
3420
|
-
|
|
3417
|
+
icon: "close",
|
|
3418
|
+
size: "xs",
|
|
3419
|
+
intent: tooltipType === "default" ? "inverse" : "default",
|
|
3420
|
+
ariaLabel: "\uB2EB\uAE30",
|
|
3421
|
+
className: "shrink-0",
|
|
3422
|
+
onClick: () => {
|
|
3423
|
+
cancelHide();
|
|
3424
|
+
setOpen(false);
|
|
3425
|
+
}
|
|
3421
3426
|
}
|
|
3422
3427
|
)
|
|
3423
3428
|
] }),
|
|
@@ -3455,8 +3460,8 @@ function useFormField(field) {
|
|
|
3455
3460
|
}, [ctx, name]);
|
|
3456
3461
|
}
|
|
3457
3462
|
var FIELD_SIZE = {
|
|
3458
|
-
sm: { height: 28, radius: 4, fieldGap: 12, labelGap: 6, fontSize: 12, lineHeight: 20, icon:
|
|
3459
|
-
md: { height: 36, radius: 6, fieldGap: 16, labelGap: 8, fontSize: 14, lineHeight: 24, icon:
|
|
3463
|
+
sm: { height: 28, radius: 4, fieldGap: 12, labelGap: 6, fontSize: 12, lineHeight: 20, icon: 16 },
|
|
3464
|
+
md: { height: 36, radius: 6, fieldGap: 16, labelGap: 8, fontSize: 14, lineHeight: 24, icon: 16 }
|
|
3460
3465
|
};
|
|
3461
3466
|
var ALIGN = {
|
|
3462
3467
|
start: "flex-start",
|
|
@@ -3471,6 +3476,7 @@ var SField = forwardRef(function SField2({
|
|
|
3471
3476
|
labelTooltip = "",
|
|
3472
3477
|
labelTooltipProps,
|
|
3473
3478
|
labelWidth,
|
|
3479
|
+
labelHeight,
|
|
3474
3480
|
size = "sm",
|
|
3475
3481
|
addonLabel = "",
|
|
3476
3482
|
addonAlign = "start",
|
|
@@ -3485,6 +3491,7 @@ var SField = forwardRef(function SField2({
|
|
|
3485
3491
|
readOnly = false,
|
|
3486
3492
|
width,
|
|
3487
3493
|
multiline = false,
|
|
3494
|
+
borderless = false,
|
|
3488
3495
|
children,
|
|
3489
3496
|
className,
|
|
3490
3497
|
style,
|
|
@@ -3518,8 +3525,8 @@ var SField = forwardRef(function SField2({
|
|
|
3518
3525
|
const resolvedSuccess = status === "pass";
|
|
3519
3526
|
const showError = resolvedError && errorMessage !== "";
|
|
3520
3527
|
const interactive = !disabled && !readOnly;
|
|
3521
|
-
const borderColor = disabled ? "var(--color-grey-45)" : interactive && focused ? "var(--sys-color-field-border-focus)" : resolvedSuccess ? "var(--sys-color-field-border-success)" : resolvedError ? "var(--sys-color-field-border-danger)" : "var(--sys-color-field-border-default)";
|
|
3522
|
-
const bgColor = disabled ? "var(--color-grey-30)" : readOnly ? "var(--sys-color-field-bg-readOnly)" : "var(--sys-color-field-bg-default)";
|
|
3528
|
+
const borderColor = borderless ? "transparent" : disabled ? "var(--color-grey-45)" : interactive && focused ? "var(--sys-color-field-border-focus)" : resolvedSuccess ? "var(--sys-color-field-border-success)" : resolvedError ? "var(--sys-color-field-border-danger)" : "var(--sys-color-field-border-default)";
|
|
3529
|
+
const bgColor = borderless ? "transparent" : disabled ? "var(--color-grey-30)" : readOnly ? "var(--sys-color-field-bg-readOnly)" : "var(--sys-color-field-bg-default)";
|
|
3523
3530
|
const textColor = disabled ? "var(--color-grey-65)" : readOnly ? "var(--sys-color-field-text-readOnly)" : "var(--sys-color-field-text-default)";
|
|
3524
3531
|
return /* @__PURE__ */ jsx(
|
|
3525
3532
|
"div",
|
|
@@ -3536,7 +3543,7 @@ var SField = forwardRef(function SField2({
|
|
|
3536
3543
|
{
|
|
3537
3544
|
className: "flex shrink-0 items-center font-bold text-(--sys-color-field-text-default)",
|
|
3538
3545
|
style: {
|
|
3539
|
-
height: s.height,
|
|
3546
|
+
height: cssLen(labelHeight) ?? s.height,
|
|
3540
3547
|
marginRight: s.fieldGap,
|
|
3541
3548
|
width: cssLen(labelWidth),
|
|
3542
3549
|
fontSize: s.fontSize,
|
|
@@ -3562,14 +3569,14 @@ var SField = forwardRef(function SField2({
|
|
|
3562
3569
|
{
|
|
3563
3570
|
className: cn(
|
|
3564
3571
|
"relative box-border flex min-w-0 items-stretch overflow-hidden border border-solid border-(--field-bc)",
|
|
3565
|
-
interactive && "hover:border-(--sys-color-field-border-focus) hover:shadow-[0px_0px_4px_0px_#0071ff66] focus-within:border-(--sys-color-field-border-focus) focus-within:shadow-[0px_0px_4px_0px_#0071ff66]",
|
|
3572
|
+
interactive && !borderless && "hover:border-(--sys-color-field-border-focus) hover:shadow-[0px_0px_4px_0px_#0071ff66] focus-within:border-(--sys-color-field-border-focus) focus-within:shadow-[0px_0px_4px_0px_#0071ff66]",
|
|
3566
3573
|
disabled && "cursor-not-allowed"
|
|
3567
3574
|
),
|
|
3568
3575
|
style: {
|
|
3569
3576
|
// @ts-expect-error CSS 변수
|
|
3570
3577
|
"--field-bc": borderColor,
|
|
3571
3578
|
// focused/hovered prop이 명시된 경우 강조를 즉시 반영
|
|
3572
|
-
...interactive && focused ? { boxShadow: "0px 0px 4px 0px #0071ff66" } : {},
|
|
3579
|
+
...interactive && !borderless && focused ? { boxShadow: "0px 0px 4px 0px #0071ff66" } : {},
|
|
3573
3580
|
...multiline ? { minHeight: s.height } : { height: s.height },
|
|
3574
3581
|
"width": cssLen(width),
|
|
3575
3582
|
"borderRadius": s.radius,
|
|
@@ -3614,15 +3621,28 @@ function flattenOptions(options, depth = 1) {
|
|
|
3614
3621
|
const out = [];
|
|
3615
3622
|
for (const o of options) {
|
|
3616
3623
|
const hasChildren = Array.isArray(o.children) && o.children.length > 0;
|
|
3617
|
-
|
|
3618
|
-
|
|
3619
|
-
|
|
3620
|
-
|
|
3621
|
-
|
|
3622
|
-
|
|
3623
|
-
|
|
3624
|
-
|
|
3625
|
-
|
|
3624
|
+
if (hasChildren) {
|
|
3625
|
+
const childFlat = flattenOptions(o.children, depth + 1);
|
|
3626
|
+
const allChildrenDisabled = childFlat.every((c) => c.disabled);
|
|
3627
|
+
out.push({
|
|
3628
|
+
value: String(o.value),
|
|
3629
|
+
label: o.label,
|
|
3630
|
+
disabled: !!o.disabled || allChildrenDisabled,
|
|
3631
|
+
depth,
|
|
3632
|
+
isGroup: true,
|
|
3633
|
+
raw: o.value
|
|
3634
|
+
});
|
|
3635
|
+
out.push(...childFlat);
|
|
3636
|
+
} else {
|
|
3637
|
+
out.push({
|
|
3638
|
+
value: String(o.value),
|
|
3639
|
+
label: o.label,
|
|
3640
|
+
disabled: !!o.disabled,
|
|
3641
|
+
depth,
|
|
3642
|
+
isGroup: false,
|
|
3643
|
+
raw: o.value
|
|
3644
|
+
});
|
|
3645
|
+
}
|
|
3626
3646
|
}
|
|
3627
3647
|
return out;
|
|
3628
3648
|
}
|
|
@@ -3746,6 +3766,9 @@ var SSelect = forwardRef(function SSelect2({
|
|
|
3746
3766
|
);
|
|
3747
3767
|
const flat = useMemo(() => flattenOptions(options), [options]);
|
|
3748
3768
|
const selectable = useMemo(() => selectableOptions(flat), [flat]);
|
|
3769
|
+
const hasLeaf = useMemo(() => flat.some((o) => !o.isGroup), [flat]);
|
|
3770
|
+
const allOptionsDisabled = hasLeaf && selectable.length === 0;
|
|
3771
|
+
const effectiveDisabled = disabled || allOptionsDisabled;
|
|
3749
3772
|
const showSearch = useSearch && selectable.length >= SEARCH_THRESHOLD;
|
|
3750
3773
|
const labelByValue = useMemo(() => new Map(flat.map((o) => [o.value, o.label])), [flat]);
|
|
3751
3774
|
const rawByValue = useMemo(() => new Map(flat.map((o) => [o.value, o.raw])), [flat]);
|
|
@@ -3812,10 +3835,10 @@ var SSelect = forwardRef(function SSelect2({
|
|
|
3812
3835
|
Ariakit.Select,
|
|
3813
3836
|
{
|
|
3814
3837
|
ref: triggerRef,
|
|
3815
|
-
disabled,
|
|
3838
|
+
disabled: effectiveDisabled,
|
|
3816
3839
|
className: "flex h-full w-full cursor-pointer items-center justify-between gap-[8px] bg-transparent px-[12px] text-left text-[12px] leading-[20px] outline-none disabled:cursor-not-allowed",
|
|
3817
3840
|
style: {
|
|
3818
|
-
color:
|
|
3841
|
+
color: effectiveDisabled ? "var(--cmp-select-text-disabled)" : isPlaceholder ? "var(--cmp-select-icon-default)" : "var(--cmp-select-text-default)"
|
|
3819
3842
|
},
|
|
3820
3843
|
children: [
|
|
3821
3844
|
isHtmlLabel(triggerText) ? /* @__PURE__ */ jsx(
|
|
@@ -3830,7 +3853,7 @@ var SSelect = forwardRef(function SSelect2({
|
|
|
3830
3853
|
{
|
|
3831
3854
|
name: "chevronDown",
|
|
3832
3855
|
size: 12,
|
|
3833
|
-
color:
|
|
3856
|
+
color: effectiveDisabled ? "var(--cmp-select-icon-disabled)" : "var(--cmp-select-icon-default)",
|
|
3834
3857
|
className: cn("shrink-0 transition-transform duration-200", open && "rotate-180")
|
|
3835
3858
|
}
|
|
3836
3859
|
)
|
|
@@ -3844,7 +3867,7 @@ var SSelect = forwardRef(function SSelect2({
|
|
|
3844
3867
|
portalElement: portalContainer,
|
|
3845
3868
|
gutter: 4,
|
|
3846
3869
|
sameWidth: !dropdownWidth,
|
|
3847
|
-
className: "z-50 overflow-auto rounded-[var(--cmp-listBox-radius)] bg-[var(--cmp-listBox-bg)]
|
|
3870
|
+
className: "z-50 overflow-auto rounded-[var(--cmp-listBox-radius)] bg-[var(--cmp-listBox-bg)] shadow-[2px_2px_12px_2px_rgba(0,0,0,0.1)] data-[enter]:animate-floating-in-bottom data-[leave]:animate-floating-out-bottom",
|
|
3848
3871
|
style: {
|
|
3849
3872
|
maxHeight: dropdownHeight,
|
|
3850
3873
|
...dropdownWidth ? { width: dropdownWidth } : {},
|
|
@@ -3885,7 +3908,7 @@ var SSelect = forwardRef(function SSelect2({
|
|
|
3885
3908
|
),
|
|
3886
3909
|
hasItems ? /* @__PURE__ */ jsx(ItemList, { items: filtered, multi, selected, useSearch: showSearch }) : (
|
|
3887
3910
|
// 원본 sd-select-listbox__empty (표시할 항목이 없을 때)
|
|
3888
|
-
/* @__PURE__ */ jsx("div", { className: "px-[12px] py-[12px] text-
|
|
3911
|
+
/* @__PURE__ */ jsx("div", { className: "px-[12px] py-[12px] text-left text-[12px] leading-[20px] text-[color:var(--cmp-listItem-content-disabled)]", children: "\uD45C\uC2DC\uD560 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4." })
|
|
3889
3912
|
)
|
|
3890
3913
|
]
|
|
3891
3914
|
}
|
|
@@ -3908,7 +3931,7 @@ var SSelect = forwardRef(function SSelect2({
|
|
|
3908
3931
|
error: error || ruleError !== "",
|
|
3909
3932
|
status: rules && rules.length > 0 ? ruleError !== "" ? "error" : void 0 : void 0,
|
|
3910
3933
|
errorMessage: ruleError !== "" ? ruleError : errorMessage,
|
|
3911
|
-
disabled,
|
|
3934
|
+
disabled: effectiveDisabled,
|
|
3912
3935
|
width,
|
|
3913
3936
|
className,
|
|
3914
3937
|
style,
|
|
@@ -3943,7 +3966,11 @@ function ItemList({
|
|
|
3943
3966
|
{
|
|
3944
3967
|
className: cn(
|
|
3945
3968
|
"select-none py-[4px] pr-[12px] text-[12px] leading-[20px] text-[color:var(--cmp-listItem-content-default)]",
|
|
3946
|
-
isDepth1 ? "border-t border-solid border-[color:var(--cmp-listItem-depth1-border-color)] bg-[var(--cmp-listItem-depth1-bg-default)] font-bold" : "bg-[var(--cmp-listItem-depth2-middle-bg)] font-medium"
|
|
3969
|
+
isDepth1 ? "border-t border-solid border-[color:var(--cmp-listItem-depth1-border-color)] bg-[var(--cmp-listItem-depth1-bg-default)] font-bold" : "bg-[var(--cmp-listItem-depth2-middle-bg)] font-medium",
|
|
3970
|
+
// 하위가 전부 비활성이면(select.config 에서 bubble-up) 어미 그룹도 비활성 처리:
|
|
3971
|
+
// 텍스트는 회색(#888), depth1 그룹은 파란 배경 대신 회색(#EEE)으로 (depth2 는 #F6F6F6 유지)
|
|
3972
|
+
o.disabled && "text-[color:var(--cmp-listItem-content-disabled)]",
|
|
3973
|
+
o.disabled && isDepth1 && "bg-[var(--cmp-listItem-depth1-bg-disabled)]"
|
|
3947
3974
|
),
|
|
3948
3975
|
style: { paddingLeft: padLeft },
|
|
3949
3976
|
children: o.label
|
|
@@ -3970,15 +3997,21 @@ function ItemList({
|
|
|
3970
3997
|
"span",
|
|
3971
3998
|
{
|
|
3972
3999
|
className: cn(
|
|
3973
|
-
"flex h-[16px] w-[16px] flex-shrink-0 items-center justify-center rounded-[2px] border border-solid
|
|
3974
|
-
|
|
4000
|
+
"flex h-[16px] w-[16px] flex-shrink-0 items-center justify-center rounded-[2px] border border-solid",
|
|
4001
|
+
o.disabled ? (
|
|
4002
|
+
// 비활성: 회색 채움(#E1E1E1) + 회색 테두리(#CCCCCC)
|
|
4003
|
+
"border-[color:var(--cmp-checkbox-border-disabled)] bg-[var(--cmp-checkbox-bg-disabled)]"
|
|
4004
|
+
) : cn(
|
|
4005
|
+
"group-data-[active-item]:border-[color:var(--cmp-checkbox-checked-border-inverse)]",
|
|
4006
|
+
isSelected ? "border-[color:var(--cmp-checkbox-checked-bg-default)] bg-[var(--cmp-checkbox-checked-bg-default)] group-data-[active-item]:bg-transparent" : "border-[color:var(--cmp-checkbox-unchecked-border-default)] bg-transparent"
|
|
4007
|
+
)
|
|
3975
4008
|
),
|
|
3976
4009
|
children: isSelected && /* @__PURE__ */ jsx(
|
|
3977
4010
|
SIcon,
|
|
3978
4011
|
{
|
|
3979
4012
|
name: "checkboxCheck",
|
|
3980
4013
|
size: 12,
|
|
3981
|
-
color: "var(--cmp-checkbox-checked-icon-default)"
|
|
4014
|
+
color: o.disabled ? "var(--cmp-checkbox-checked-icon-disabled)" : "var(--cmp-checkbox-checked-icon-default)"
|
|
3982
4015
|
}
|
|
3983
4016
|
)
|
|
3984
4017
|
}
|