sellmate-design-system-react 0.7.0 → 0.8.1
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/SBarcodeInput/SBarcodeInput.cjs +61 -49
- package/dist/components/SBarcodeInput/SBarcodeInput.cjs.map +1 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.js +61 -49
- package/dist/components/SBarcodeInput/SBarcodeInput.js.map +1 -1
- package/dist/components/SChipInput/SChipInput.cjs +64 -49
- package/dist/components/SChipInput/SChipInput.cjs.map +1 -1
- package/dist/components/SChipInput/SChipInput.js +64 -49
- package/dist/components/SChipInput/SChipInput.js.map +1 -1
- package/dist/components/SDatePicker/SDatePicker.cjs +61 -49
- package/dist/components/SDatePicker/SDatePicker.cjs.map +1 -1
- package/dist/components/SDatePicker/SDatePicker.js +61 -49
- package/dist/components/SDatePicker/SDatePicker.js.map +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.cjs +61 -49
- package/dist/components/SDateRangePicker/SDateRangePicker.cjs.map +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.js +61 -49
- package/dist/components/SDateRangePicker/SDateRangePicker.js.map +1 -1
- package/dist/components/SField/SField.cjs +61 -49
- package/dist/components/SField/SField.cjs.map +1 -1
- package/dist/components/SField/SField.d.ts +5 -2
- package/dist/components/SField/SField.js +61 -49
- package/dist/components/SField/SField.js.map +1 -1
- package/dist/components/SFilePicker/SFilePicker.cjs +61 -49
- package/dist/components/SFilePicker/SFilePicker.cjs.map +1 -1
- package/dist/components/SFilePicker/SFilePicker.js +61 -49
- package/dist/components/SFilePicker/SFilePicker.js.map +1 -1
- package/dist/components/SInput/SInput.cjs +61 -49
- package/dist/components/SInput/SInput.cjs.map +1 -1
- package/dist/components/SInput/SInput.js +61 -49
- package/dist/components/SInput/SInput.js.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs +72 -50
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.js +72 -50
- package/dist/components/SKeyValueTable/SKeyValueTable.js.map +1 -1
- package/dist/components/SNumberInput/SNumberInput.cjs +61 -49
- package/dist/components/SNumberInput/SNumberInput.cjs.map +1 -1
- package/dist/components/SNumberInput/SNumberInput.js +61 -49
- package/dist/components/SNumberInput/SNumberInput.js.map +1 -1
- package/dist/components/SPage/SPage.cjs +19 -2
- package/dist/components/SPage/SPage.cjs.map +1 -1
- package/dist/components/SPage/SPage.d.ts +7 -1
- package/dist/components/SPage/SPage.js +19 -2
- package/dist/components/SPage/SPage.js.map +1 -1
- package/dist/components/SPage/index.d.ts +1 -0
- package/dist/components/SPage/page.config.d.ts +8 -0
- package/dist/components/SPopup/SPopup.cjs.map +1 -1
- package/dist/components/SPopup/SPopup.js.map +1 -1
- package/dist/components/SPortal/SPortal.cjs +3 -0
- package/dist/components/SPortal/SPortal.cjs.map +1 -1
- package/dist/components/SPortal/SPortal.d.ts +3 -1
- package/dist/components/SPortal/SPortal.js +3 -0
- package/dist/components/SPortal/SPortal.js.map +1 -1
- package/dist/components/SScrollArea/SScrollArea.cjs.map +1 -1
- package/dist/components/SScrollArea/SScrollArea.js.map +1 -1
- package/dist/components/SSelect/SSelect.cjs +72 -50
- package/dist/components/SSelect/SSelect.cjs.map +1 -1
- package/dist/components/SSelect/SSelect.js +72 -50
- package/dist/components/SSelect/SSelect.js.map +1 -1
- package/dist/components/STable/STable.cjs +78 -56
- package/dist/components/STable/STable.cjs.map +1 -1
- package/dist/components/STable/STable.d.ts +2 -0
- package/dist/components/STable/STable.js +78 -56
- package/dist/components/STable/STable.js.map +1 -1
- package/dist/components/STextarea/STextarea.cjs +61 -49
- package/dist/components/STextarea/STextarea.cjs.map +1 -1
- package/dist/components/STextarea/STextarea.js +61 -49
- package/dist/components/STextarea/STextarea.js.map +1 -1
- package/dist/components/STimePicker/STimePicker.cjs +61 -49
- package/dist/components/STimePicker/STimePicker.cjs.map +1 -1
- package/dist/components/STimePicker/STimePicker.js +61 -49
- package/dist/components/STimePicker/STimePicker.js.map +1 -1
- package/dist/components/STimeRangePicker/STimeRangePicker.cjs +61 -49
- package/dist/components/STimeRangePicker/STimeRangePicker.cjs.map +1 -1
- package/dist/components/STimeRangePicker/STimeRangePicker.js +61 -49
- package/dist/components/STimeRangePicker/STimeRangePicker.js.map +1 -1
- package/dist/index.cjs +95 -58
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +95 -59
- package/dist/index.js.map +1 -1
- package/dist/lib/scrollbar.cjs +2 -0
- package/dist/lib/scrollbar.cjs.map +1 -1
- package/dist/lib/scrollbar.d.ts +13 -1
- package/dist/lib/scrollbar.js +2 -1
- package/dist/lib/scrollbar.js.map +1 -1
- package/dist/styles.css +53 -3
- package/package.json +1 -1
|
@@ -3489,6 +3489,7 @@ var SField = react.forwardRef(function SField2({
|
|
|
3489
3489
|
const resolvedSuccess = status === "pass";
|
|
3490
3490
|
const showError = resolvedError && errorMessage !== "";
|
|
3491
3491
|
const interactive = !disabled && !readOnly;
|
|
3492
|
+
const hug = cssLen(width) !== void 0;
|
|
3492
3493
|
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)";
|
|
3493
3494
|
const bgColor = borderless ? "transparent" : disabled ? "var(--color-grey-30)" : readOnly ? "var(--sys-color-field-bg-readOnly)" : "var(--sys-color-field-bg-default)";
|
|
3494
3495
|
const textColor = disabled ? "var(--color-grey-65)" : readOnly ? "var(--sys-color-field-text-readOnly)" : "var(--sys-color-field-text-default)";
|
|
@@ -3497,7 +3498,13 @@ var SField = react.forwardRef(function SField2({
|
|
|
3497
3498
|
{
|
|
3498
3499
|
ref: rootRef,
|
|
3499
3500
|
"data-name": name || void 0,
|
|
3500
|
-
className: cn(
|
|
3501
|
+
className: cn(
|
|
3502
|
+
"h-fit flex-col",
|
|
3503
|
+
// hug 시 inline-flex 를 유지하면 기존에 세로로 쌓여 있던 필드들이 한 줄에 붙어버리므로
|
|
3504
|
+
// 블록 레벨(flex)로 두어 쌓임은 그대로 유지한다. 나란히 놓으려면 부모를 flex 로.
|
|
3505
|
+
hug ? "flex w-fit max-w-full" : "inline-flex w-full",
|
|
3506
|
+
className
|
|
3507
|
+
),
|
|
3501
3508
|
style,
|
|
3502
3509
|
onMouseEnter,
|
|
3503
3510
|
onMouseLeave,
|
|
@@ -3535,55 +3542,60 @@ var SField = react.forwardRef(function SField2({
|
|
|
3535
3542
|
]
|
|
3536
3543
|
}
|
|
3537
3544
|
),
|
|
3538
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3539
|
-
|
|
3540
|
-
|
|
3541
|
-
|
|
3542
|
-
|
|
3543
|
-
|
|
3544
|
-
|
|
3545
|
-
|
|
3545
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3546
|
+
"div",
|
|
3547
|
+
{
|
|
3548
|
+
className: cn("flex min-w-0 flex-col", !hug && "flex-1"),
|
|
3549
|
+
style: { width: cssLen(width), minWidth: cssLen(minWidth) },
|
|
3550
|
+
children: [
|
|
3551
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3552
|
+
"div",
|
|
3553
|
+
{
|
|
3554
|
+
className: cn(
|
|
3555
|
+
"relative box-border flex min-w-0 items-stretch overflow-hidden border border-solid border-(--field-bc)",
|
|
3556
|
+
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]",
|
|
3557
|
+
disabled && "cursor-not-allowed"
|
|
3558
|
+
),
|
|
3559
|
+
style: {
|
|
3560
|
+
// @ts-expect-error CSS 변수
|
|
3561
|
+
"--field-bc": borderColor,
|
|
3562
|
+
// focused/hovered prop이 명시된 경우 강조를 즉시 반영
|
|
3563
|
+
...interactive && !borderless && focused ? { boxShadow: "0px 0px 4px 0px #0071ff66" } : {},
|
|
3564
|
+
...multiline ? { minHeight: s.height } : { height: s.height },
|
|
3565
|
+
"borderRadius": s.radius,
|
|
3566
|
+
"background": bgColor,
|
|
3567
|
+
"color": textColor
|
|
3568
|
+
},
|
|
3569
|
+
"data-focused": focused || void 0,
|
|
3570
|
+
"data-hovered": hovered || void 0,
|
|
3571
|
+
children: [
|
|
3572
|
+
effectiveAddonLabel !== "" && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3573
|
+
"div",
|
|
3574
|
+
{
|
|
3575
|
+
className: "flex shrink-0 items-center gap-(--cmp-field-addonLabel-gap) whitespace-nowrap border-r border-solid px-(--cmp-field-addonLabel-paddingX) text-12 font-medium leading-20",
|
|
3576
|
+
style: {
|
|
3577
|
+
// 원본 sd-field: labelWidth가 addon 폭(--sd-field-addon-width)에도 적용됨
|
|
3578
|
+
width: cssLen(labelWidth),
|
|
3579
|
+
justifyContent: ALIGN[addonAlign],
|
|
3580
|
+
background: "var(--cmp-field-addonLabel-bg)",
|
|
3581
|
+
borderRightColor: disabled ? "var(--cmp-field-addonLabel-border-disabled)" : "var(--cmp-field-addonLabel-border-default)",
|
|
3582
|
+
borderTopLeftRadius: s.radius - 1,
|
|
3583
|
+
borderBottomLeftRadius: s.radius - 1
|
|
3584
|
+
},
|
|
3585
|
+
children: [
|
|
3586
|
+
icon && !label && /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: icon, size: s.icon, color: iconColor }),
|
|
3587
|
+
effectiveAddonLabel
|
|
3588
|
+
]
|
|
3589
|
+
}
|
|
3590
|
+
),
|
|
3591
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-w-0 flex-1", children })
|
|
3592
|
+
]
|
|
3593
|
+
}
|
|
3546
3594
|
),
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
|
|
3550
|
-
|
|
3551
|
-
...interactive && !borderless && focused ? { boxShadow: "0px 0px 4px 0px #0071ff66" } : {},
|
|
3552
|
-
...multiline ? { minHeight: s.height } : { height: s.height },
|
|
3553
|
-
"minWidth": cssLen(minWidth),
|
|
3554
|
-
"width": cssLen(width),
|
|
3555
|
-
"borderRadius": s.radius,
|
|
3556
|
-
"background": bgColor,
|
|
3557
|
-
"color": textColor
|
|
3558
|
-
},
|
|
3559
|
-
"data-focused": focused || void 0,
|
|
3560
|
-
"data-hovered": hovered || void 0,
|
|
3561
|
-
children: [
|
|
3562
|
-
effectiveAddonLabel !== "" && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3563
|
-
"div",
|
|
3564
|
-
{
|
|
3565
|
-
className: "flex shrink-0 items-center gap-(--cmp-field-addonLabel-gap) whitespace-nowrap border-r border-solid px-(--cmp-field-addonLabel-paddingX) text-12 font-medium leading-20",
|
|
3566
|
-
style: {
|
|
3567
|
-
// 원본 sd-field: labelWidth가 addon 폭(--sd-field-addon-width)에도 적용됨
|
|
3568
|
-
width: cssLen(labelWidth),
|
|
3569
|
-
justifyContent: ALIGN[addonAlign],
|
|
3570
|
-
background: "var(--cmp-field-addonLabel-bg)",
|
|
3571
|
-
borderRightColor: disabled ? "var(--cmp-field-addonLabel-border-disabled)" : "var(--cmp-field-addonLabel-border-default)",
|
|
3572
|
-
borderTopLeftRadius: s.radius - 1,
|
|
3573
|
-
borderBottomLeftRadius: s.radius - 1
|
|
3574
|
-
},
|
|
3575
|
-
children: [
|
|
3576
|
-
icon && !label && /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: icon, size: s.icon, color: iconColor }),
|
|
3577
|
-
effectiveAddonLabel
|
|
3578
|
-
]
|
|
3579
|
-
}
|
|
3580
|
-
),
|
|
3581
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-w-0 flex-1", children })
|
|
3582
|
-
]
|
|
3583
|
-
}
|
|
3584
|
-
),
|
|
3585
|
-
showError ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-(--cmp-field-contents-gap) text-12 font-normal leading-20 text-(--cmp-field-errorMessage-color)", children: errorMessage }) : hint !== "" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-(--cmp-field-contents-gap) text-12 font-normal leading-20 text-(--cmp-field-hint-color)", children: hint }) : null
|
|
3586
|
-
] })
|
|
3595
|
+
showError ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-(--cmp-field-contents-gap) text-12 font-normal leading-20 text-(--cmp-field-errorMessage-color)", children: errorMessage }) : hint !== "" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-(--cmp-field-contents-gap) text-12 font-normal leading-20 text-(--cmp-field-hint-color)", children: hint }) : null
|
|
3596
|
+
]
|
|
3597
|
+
}
|
|
3598
|
+
)
|
|
3587
3599
|
] })
|
|
3588
3600
|
}
|
|
3589
3601
|
);
|
|
@@ -4260,6 +4272,7 @@ function SPortal({
|
|
|
4260
4272
|
viewportPadding = 0,
|
|
4261
4273
|
onOpenAutoFocus,
|
|
4262
4274
|
onCloseAutoFocus,
|
|
4275
|
+
onPointerDownOutside,
|
|
4263
4276
|
children,
|
|
4264
4277
|
className,
|
|
4265
4278
|
style,
|
|
@@ -4288,7 +4301,9 @@ function SPortal({
|
|
|
4288
4301
|
onPointerDownOutside: (e) => {
|
|
4289
4302
|
if (persistent || anchorRef.current?.contains(e.target)) {
|
|
4290
4303
|
e.preventDefault();
|
|
4304
|
+
return;
|
|
4291
4305
|
}
|
|
4306
|
+
onPointerDownOutside?.(e);
|
|
4292
4307
|
},
|
|
4293
4308
|
onFocusOutside: (e) => {
|
|
4294
4309
|
if (persistent || anchorRef.current?.contains(e.target)) {
|
|
@@ -4393,6 +4408,7 @@ var SSelect = react.forwardRef(function SSelect2({
|
|
|
4393
4408
|
const triggerRef = react.useRef(null);
|
|
4394
4409
|
const searchInputRef = react.useRef(null);
|
|
4395
4410
|
const listRef = react.useRef(null);
|
|
4411
|
+
const dismissedByPointerRef = react.useRef(false);
|
|
4396
4412
|
const flat = react.useMemo(() => flattenOptions(options), [options]);
|
|
4397
4413
|
const selectable = react.useMemo(() => selectableOptions(flat), [flat]);
|
|
4398
4414
|
const hasLeaf = react.useMemo(() => flat.some((o) => !o.isGroup), [flat]);
|
|
@@ -4422,7 +4438,9 @@ var SSelect = react.forwardRef(function SSelect2({
|
|
|
4422
4438
|
const commitOpen = (next) => {
|
|
4423
4439
|
setOpen(next);
|
|
4424
4440
|
onOpenChange?.(next);
|
|
4425
|
-
if (
|
|
4441
|
+
if (next) {
|
|
4442
|
+
dismissedByPointerRef.current = false;
|
|
4443
|
+
} else {
|
|
4426
4444
|
setPendingOpen(false);
|
|
4427
4445
|
setSearch("");
|
|
4428
4446
|
if (rules && rules.length > 0) {
|
|
@@ -4646,8 +4664,12 @@ var SSelect = react.forwardRef(function SSelect2({
|
|
|
4646
4664
|
event.preventDefault();
|
|
4647
4665
|
requestAnimationFrame(() => searchInputRef.current?.focus());
|
|
4648
4666
|
},
|
|
4667
|
+
onPointerDownOutside: () => {
|
|
4668
|
+
dismissedByPointerRef.current = true;
|
|
4669
|
+
},
|
|
4649
4670
|
onCloseAutoFocus: (event) => {
|
|
4650
4671
|
event.preventDefault();
|
|
4672
|
+
if (dismissedByPointerRef.current) return;
|
|
4651
4673
|
triggerRef.current?.focus();
|
|
4652
4674
|
},
|
|
4653
4675
|
className: "rounded-[var(--cmp-listBox-radius)] bg-[var(--cmp-listBox-bg)] shadow-[2px_2px_12px_2px_rgba(0,0,0,0.1)]",
|