sellmate-design-system-react 0.6.1 → 0.8.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/components/SBarcodeInput/SBarcodeInput.cjs +62 -48
- package/dist/components/SBarcodeInput/SBarcodeInput.cjs.map +1 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.js +62 -48
- package/dist/components/SBarcodeInput/SBarcodeInput.js.map +1 -1
- package/dist/components/SChipInput/SChipInput.cjs +62 -48
- package/dist/components/SChipInput/SChipInput.cjs.map +1 -1
- package/dist/components/SChipInput/SChipInput.js +62 -48
- package/dist/components/SChipInput/SChipInput.js.map +1 -1
- package/dist/components/SDatePicker/SDatePicker.cjs +62 -48
- package/dist/components/SDatePicker/SDatePicker.cjs.map +1 -1
- package/dist/components/SDatePicker/SDatePicker.js +62 -48
- package/dist/components/SDatePicker/SDatePicker.js.map +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.cjs +62 -48
- package/dist/components/SDateRangePicker/SDateRangePicker.cjs.map +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.js +62 -48
- package/dist/components/SDateRangePicker/SDateRangePicker.js.map +1 -1
- package/dist/components/SField/SField.cjs +62 -48
- package/dist/components/SField/SField.cjs.map +1 -1
- package/dist/components/SField/SField.d.ts +6 -1
- package/dist/components/SField/SField.js +62 -48
- package/dist/components/SField/SField.js.map +1 -1
- package/dist/components/SFilePicker/SFilePicker.cjs +62 -48
- package/dist/components/SFilePicker/SFilePicker.cjs.map +1 -1
- package/dist/components/SFilePicker/SFilePicker.js +62 -48
- package/dist/components/SFilePicker/SFilePicker.js.map +1 -1
- package/dist/components/SInput/SInput.cjs +62 -48
- package/dist/components/SInput/SInput.cjs.map +1 -1
- package/dist/components/SInput/SInput.js +62 -48
- package/dist/components/SInput/SInput.js.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs +74 -49
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.js +74 -49
- package/dist/components/SKeyValueTable/SKeyValueTable.js.map +1 -1
- package/dist/components/SNumberInput/SNumberInput.cjs +62 -48
- package/dist/components/SNumberInput/SNumberInput.cjs.map +1 -1
- package/dist/components/SNumberInput/SNumberInput.js +62 -48
- 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 +18 -1
- package/dist/components/SPopup/SPopup.cjs.map +1 -1
- package/dist/components/SPopup/SPopup.js +18 -1
- package/dist/components/SPopup/SPopup.js.map +1 -1
- package/dist/components/SScrollArea/SScrollArea.cjs +64 -0
- package/dist/components/SScrollArea/SScrollArea.cjs.map +1 -0
- package/dist/components/SScrollArea/SScrollArea.d.ts +21 -0
- package/dist/components/SScrollArea/SScrollArea.js +62 -0
- package/dist/components/SScrollArea/SScrollArea.js.map +1 -0
- package/dist/components/SScrollArea/index.d.ts +2 -0
- package/dist/components/SScrollArea/scrollArea.config.d.ts +2 -0
- package/dist/components/SSelect/SSelect.cjs +74 -49
- package/dist/components/SSelect/SSelect.cjs.map +1 -1
- package/dist/components/SSelect/SSelect.js +74 -49
- package/dist/components/SSelect/SSelect.js.map +1 -1
- package/dist/components/SStepper/SStepper.cjs +7 -11
- package/dist/components/SStepper/SStepper.cjs.map +1 -1
- package/dist/components/SStepper/SStepper.js +7 -11
- package/dist/components/SStepper/SStepper.js.map +1 -1
- package/dist/components/STable/STable.cjs +83 -55
- package/dist/components/STable/STable.cjs.map +1 -1
- package/dist/components/STable/STable.d.ts +2 -0
- package/dist/components/STable/STable.js +83 -55
- package/dist/components/STable/STable.js.map +1 -1
- package/dist/components/STextarea/STextarea.cjs +62 -48
- package/dist/components/STextarea/STextarea.cjs.map +1 -1
- package/dist/components/STextarea/STextarea.js +62 -48
- package/dist/components/STextarea/STextarea.js.map +1 -1
- package/dist/components/STimePicker/STimePicker.cjs +91 -54
- package/dist/components/STimePicker/STimePicker.cjs.map +1 -1
- package/dist/components/STimePicker/STimePicker.js +91 -54
- package/dist/components/STimePicker/STimePicker.js.map +1 -1
- package/dist/components/STimeRangePicker/STimeRangePicker.cjs +93 -54
- package/dist/components/STimeRangePicker/STimeRangePicker.cjs.map +1 -1
- package/dist/components/STimeRangePicker/STimeRangePicker.js +93 -54
- package/dist/components/STimeRangePicker/STimeRangePicker.js.map +1 -1
- package/dist/index.cjs +220 -81
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +218 -82
- package/dist/index.js.map +1 -1
- package/dist/lib/scrollbar.cjs +15 -0
- package/dist/lib/scrollbar.cjs.map +1 -0
- package/dist/lib/scrollbar.d.ts +32 -0
- package/dist/lib/scrollbar.js +10 -0
- package/dist/lib/scrollbar.js.map +1 -0
- package/dist/styles.css +168 -17
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export * from './components/SIcon';
|
|
|
5
5
|
export * from './components/SBadge';
|
|
6
6
|
export * from './components/SCard';
|
|
7
7
|
export * from './components/SDivider';
|
|
8
|
+
export * from './components/SScrollArea';
|
|
8
9
|
export * from './components/STag';
|
|
9
10
|
export * from './components/SButton';
|
|
10
11
|
export * from './components/SCallout';
|
package/dist/index.js
CHANGED
|
@@ -2909,6 +2909,52 @@ var SDivider = forwardRef(function SDivider2({ vertical = false, className, styl
|
|
|
2909
2909
|
);
|
|
2910
2910
|
});
|
|
2911
2911
|
|
|
2912
|
+
// src/lib/scrollbar.ts
|
|
2913
|
+
var FIREFOX_SCROLLBAR_CLASS = "supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-width:thin] supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-color:var(--color-grey-45)_transparent]";
|
|
2914
|
+
var SCROLLBAR_CLASS = `${FIREFOX_SCROLLBAR_CLASS} [&::-webkit-scrollbar]:h-[12px] [&::-webkit-scrollbar]:w-[12px] [&::-webkit-scrollbar]:bg-transparent [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:border-2 [&::-webkit-scrollbar-thumb]:border-solid [&::-webkit-scrollbar-thumb]:border-transparent [&::-webkit-scrollbar-thumb]:bg-[var(--color-grey-45)] [&::-webkit-scrollbar-thumb]:bg-clip-padding`;
|
|
2915
|
+
var SCROLLBAR_TRACK_BG_CLASS = "supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-color:var(--color-grey-45)_var(--color-grey-10)] [&::-webkit-scrollbar]:bg-[var(--color-grey-10)] [&::-webkit-scrollbar-track]:bg-[var(--color-grey-10)]";
|
|
2916
|
+
var SCROLLBAR_TRACK_BG_WHITE_CLASS = "supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-color:var(--color-grey-45)_var(--color-white)] [&::-webkit-scrollbar]:bg-[var(--color-white)] [&::-webkit-scrollbar-track]:bg-[var(--color-white)]";
|
|
2917
|
+
var SCROLLBAR_TRACK_BORDER_CLASS = "[&::-webkit-scrollbar-track:vertical]:[border-left:1px_solid_var(--sys-color-border-default)] [&::-webkit-scrollbar-track:horizontal]:[border-top:1px_solid_var(--sys-color-border-default)] [&::-webkit-scrollbar-thumb:vertical]:[border-left-width:3px] [&::-webkit-scrollbar-thumb:horizontal]:[border-top-width:3px]";
|
|
2918
|
+
var AXIS_CLASS = {
|
|
2919
|
+
vertical: "overflow-x-hidden overflow-y-auto",
|
|
2920
|
+
horizontal: "overflow-x-auto overflow-y-hidden",
|
|
2921
|
+
both: "overflow-auto"
|
|
2922
|
+
};
|
|
2923
|
+
var SScrollArea = forwardRef(function SScrollArea2({
|
|
2924
|
+
axis = "both",
|
|
2925
|
+
background = false,
|
|
2926
|
+
bordered = false,
|
|
2927
|
+
maxHeight,
|
|
2928
|
+
maxWidth,
|
|
2929
|
+
className,
|
|
2930
|
+
style,
|
|
2931
|
+
children,
|
|
2932
|
+
...rest
|
|
2933
|
+
}, ref) {
|
|
2934
|
+
const mergedStyle = { ...style };
|
|
2935
|
+
if (maxHeight) mergedStyle.maxHeight = maxHeight;
|
|
2936
|
+
if (maxWidth) mergedStyle.maxWidth = maxWidth;
|
|
2937
|
+
return /* @__PURE__ */ jsx(
|
|
2938
|
+
"div",
|
|
2939
|
+
{
|
|
2940
|
+
ref,
|
|
2941
|
+
className: cn(
|
|
2942
|
+
AXIS_CLASS[axis],
|
|
2943
|
+
SCROLLBAR_CLASS,
|
|
2944
|
+
background && SCROLLBAR_TRACK_BG_CLASS,
|
|
2945
|
+
bordered && SCROLLBAR_TRACK_BORDER_CLASS,
|
|
2946
|
+
className
|
|
2947
|
+
),
|
|
2948
|
+
style: mergedStyle,
|
|
2949
|
+
...rest,
|
|
2950
|
+
children
|
|
2951
|
+
}
|
|
2952
|
+
);
|
|
2953
|
+
});
|
|
2954
|
+
|
|
2955
|
+
// src/components/SScrollArea/scrollArea.config.ts
|
|
2956
|
+
var SCROLL_AREA_AXES = ["vertical", "horizontal", "both"];
|
|
2957
|
+
|
|
2912
2958
|
// src/components/STag/tag.config.ts
|
|
2913
2959
|
var TAG_SHAPES = ["square", "pill"];
|
|
2914
2960
|
var TAG_SIZES = ["xs", "sm", "md"];
|
|
@@ -4444,7 +4490,18 @@ var SPopup = forwardRef(function SPopup2({
|
|
|
4444
4490
|
)
|
|
4445
4491
|
}
|
|
4446
4492
|
),
|
|
4447
|
-
/* @__PURE__ */ jsx(
|
|
4493
|
+
/* @__PURE__ */ jsx(
|
|
4494
|
+
"div",
|
|
4495
|
+
{
|
|
4496
|
+
className: cn(
|
|
4497
|
+
"min-h-0 flex-1 overflow-auto",
|
|
4498
|
+
SCROLLBAR_CLASS,
|
|
4499
|
+
SCROLLBAR_TRACK_BG_CLASS,
|
|
4500
|
+
SCROLLBAR_TRACK_BORDER_CLASS
|
|
4501
|
+
),
|
|
4502
|
+
children
|
|
4503
|
+
}
|
|
4504
|
+
),
|
|
4448
4505
|
useFooter && /* @__PURE__ */ jsxs(
|
|
4449
4506
|
"footer",
|
|
4450
4507
|
{
|
|
@@ -5505,14 +5562,24 @@ var SGnb = forwardRef(function SGnb2({
|
|
|
5505
5562
|
}
|
|
5506
5563
|
);
|
|
5507
5564
|
});
|
|
5508
|
-
var
|
|
5565
|
+
var BACKGROUND_CLASS = {
|
|
5566
|
+
frame: `bg-[var(--sys-color-bg-frame)] ${SCROLLBAR_TRACK_BORDER_CLASS} ${SCROLLBAR_TRACK_BG_CLASS}`,
|
|
5567
|
+
neutral: `bg-[var(--sys-color-bg-neutralLight)] ${SCROLLBAR_TRACK_BORDER_CLASS} ${SCROLLBAR_TRACK_BG_WHITE_CLASS}`,
|
|
5568
|
+
screen: `bg-[var(--sys-color-bg-screen)] ${SCROLLBAR_TRACK_BORDER_CLASS} ${SCROLLBAR_TRACK_BG_CLASS}`
|
|
5569
|
+
};
|
|
5570
|
+
var SPage = forwardRef(function SPage2({ background = "frame", className, style, children, ...rest }, ref) {
|
|
5509
5571
|
const layout = useContext(SLayoutContext);
|
|
5510
5572
|
const gridStyle = layout?.header === "full" ? { gridColumn: 2, gridRow: 2 } : void 0;
|
|
5511
5573
|
return /* @__PURE__ */ jsx(
|
|
5512
5574
|
"main",
|
|
5513
5575
|
{
|
|
5514
5576
|
ref,
|
|
5515
|
-
className: cn(
|
|
5577
|
+
className: cn(
|
|
5578
|
+
"box-border min-h-0 min-w-0 flex-1 overflow-auto p-20",
|
|
5579
|
+
SCROLLBAR_CLASS,
|
|
5580
|
+
BACKGROUND_CLASS[background],
|
|
5581
|
+
className
|
|
5582
|
+
),
|
|
5516
5583
|
style: { ...gridStyle, ...style },
|
|
5517
5584
|
...rest,
|
|
5518
5585
|
children
|
|
@@ -5520,6 +5587,9 @@ var SPage = forwardRef(function SPage2({ className, style, children, ...rest },
|
|
|
5520
5587
|
);
|
|
5521
5588
|
});
|
|
5522
5589
|
|
|
5590
|
+
// src/components/SPage/page.config.ts
|
|
5591
|
+
var PAGE_BACKGROUNDS = ["frame", "neutral", "screen"];
|
|
5592
|
+
|
|
5523
5593
|
// src/components/STabs/tabs.config.ts
|
|
5524
5594
|
var TAB_MAIN_SIZE = {
|
|
5525
5595
|
md: { height: 36, paddingX: 24 },
|
|
@@ -5882,7 +5952,7 @@ function SStepper({
|
|
|
5882
5952
|
"aria-hidden": true,
|
|
5883
5953
|
className: "inline-flex h-px shrink-0 items-center",
|
|
5884
5954
|
style: { width: STEPPER_LAYOUT.dashWidth, color: STEPPER_COLORS.dash },
|
|
5885
|
-
children: /* @__PURE__ */
|
|
5955
|
+
children: /* @__PURE__ */ jsxs(
|
|
5886
5956
|
"svg",
|
|
5887
5957
|
{
|
|
5888
5958
|
width: "20",
|
|
@@ -5890,16 +5960,12 @@ function SStepper({
|
|
|
5890
5960
|
viewBox: "0 0 20 1",
|
|
5891
5961
|
fill: "none",
|
|
5892
5962
|
xmlns: "http://www.w3.org/2000/svg",
|
|
5893
|
-
children:
|
|
5894
|
-
"
|
|
5895
|
-
{
|
|
5896
|
-
|
|
5897
|
-
|
|
5898
|
-
|
|
5899
|
-
stroke: "#888888",
|
|
5900
|
-
strokeDasharray: "4 4"
|
|
5901
|
-
}
|
|
5902
|
-
)
|
|
5963
|
+
children: [
|
|
5964
|
+
/* @__PURE__ */ jsx("rect", { width: "1.6", height: "1", fill: "#888888" }),
|
|
5965
|
+
/* @__PURE__ */ jsx("rect", { x: "5", width: "3.3", height: "1", fill: "#888888" }),
|
|
5966
|
+
/* @__PURE__ */ jsx("rect", { x: "11.7", width: "3.3", height: "1", fill: "#888888" }),
|
|
5967
|
+
/* @__PURE__ */ jsx("rect", { x: "18.4", width: "1.6", height: "1", fill: "#888888" })
|
|
5968
|
+
]
|
|
5903
5969
|
}
|
|
5904
5970
|
)
|
|
5905
5971
|
}
|
|
@@ -6040,6 +6106,7 @@ var SField = forwardRef(function SField2({
|
|
|
6040
6106
|
disabled = false,
|
|
6041
6107
|
readOnly = false,
|
|
6042
6108
|
width,
|
|
6109
|
+
minWidth,
|
|
6043
6110
|
multiline = false,
|
|
6044
6111
|
borderless = false,
|
|
6045
6112
|
children,
|
|
@@ -6075,6 +6142,7 @@ var SField = forwardRef(function SField2({
|
|
|
6075
6142
|
const resolvedSuccess = status === "pass";
|
|
6076
6143
|
const showError = resolvedError && errorMessage !== "";
|
|
6077
6144
|
const interactive = !disabled && !readOnly;
|
|
6145
|
+
const hug = cssLen(width) !== void 0;
|
|
6078
6146
|
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)";
|
|
6079
6147
|
const bgColor = borderless ? "transparent" : disabled ? "var(--color-grey-30)" : readOnly ? "var(--sys-color-field-bg-readOnly)" : "var(--sys-color-field-bg-default)";
|
|
6080
6148
|
const textColor = disabled ? "var(--color-grey-65)" : readOnly ? "var(--sys-color-field-text-readOnly)" : "var(--sys-color-field-text-default)";
|
|
@@ -6083,7 +6151,13 @@ var SField = forwardRef(function SField2({
|
|
|
6083
6151
|
{
|
|
6084
6152
|
ref: rootRef,
|
|
6085
6153
|
"data-name": name || void 0,
|
|
6086
|
-
className: cn(
|
|
6154
|
+
className: cn(
|
|
6155
|
+
"h-fit flex-col",
|
|
6156
|
+
// hug 시 inline-flex 를 유지하면 기존에 세로로 쌓여 있던 필드들이 한 줄에 붙어버리므로
|
|
6157
|
+
// 블록 레벨(flex)로 두어 쌓임은 그대로 유지한다. 나란히 놓으려면 부모를 flex 로.
|
|
6158
|
+
hug ? "flex w-fit max-w-full" : "inline-flex w-full",
|
|
6159
|
+
className
|
|
6160
|
+
),
|
|
6087
6161
|
style,
|
|
6088
6162
|
onMouseEnter,
|
|
6089
6163
|
onMouseLeave,
|
|
@@ -6121,54 +6195,60 @@ var SField = forwardRef(function SField2({
|
|
|
6121
6195
|
]
|
|
6122
6196
|
}
|
|
6123
6197
|
),
|
|
6124
|
-
/* @__PURE__ */ jsxs(
|
|
6125
|
-
|
|
6126
|
-
|
|
6127
|
-
|
|
6128
|
-
|
|
6129
|
-
|
|
6130
|
-
|
|
6131
|
-
|
|
6198
|
+
/* @__PURE__ */ jsxs(
|
|
6199
|
+
"div",
|
|
6200
|
+
{
|
|
6201
|
+
className: cn("flex min-w-0 flex-col", !hug && "flex-1"),
|
|
6202
|
+
style: { width: cssLen(width), minWidth: cssLen(minWidth) },
|
|
6203
|
+
children: [
|
|
6204
|
+
/* @__PURE__ */ jsxs(
|
|
6205
|
+
"div",
|
|
6206
|
+
{
|
|
6207
|
+
className: cn(
|
|
6208
|
+
"relative box-border flex min-w-0 items-stretch overflow-hidden border border-solid border-(--field-bc)",
|
|
6209
|
+
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]",
|
|
6210
|
+
disabled && "cursor-not-allowed"
|
|
6211
|
+
),
|
|
6212
|
+
style: {
|
|
6213
|
+
// @ts-expect-error CSS 변수
|
|
6214
|
+
"--field-bc": borderColor,
|
|
6215
|
+
// focused/hovered prop이 명시된 경우 강조를 즉시 반영
|
|
6216
|
+
...interactive && !borderless && focused ? { boxShadow: "0px 0px 4px 0px #0071ff66" } : {},
|
|
6217
|
+
...multiline ? { minHeight: s.height } : { height: s.height },
|
|
6218
|
+
"borderRadius": s.radius,
|
|
6219
|
+
"background": bgColor,
|
|
6220
|
+
"color": textColor
|
|
6221
|
+
},
|
|
6222
|
+
"data-focused": focused || void 0,
|
|
6223
|
+
"data-hovered": hovered || void 0,
|
|
6224
|
+
children: [
|
|
6225
|
+
effectiveAddonLabel !== "" && /* @__PURE__ */ jsxs(
|
|
6226
|
+
"div",
|
|
6227
|
+
{
|
|
6228
|
+
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",
|
|
6229
|
+
style: {
|
|
6230
|
+
// 원본 sd-field: labelWidth가 addon 폭(--sd-field-addon-width)에도 적용됨
|
|
6231
|
+
width: cssLen(labelWidth),
|
|
6232
|
+
justifyContent: ALIGN[addonAlign],
|
|
6233
|
+
background: "var(--cmp-field-addonLabel-bg)",
|
|
6234
|
+
borderRightColor: disabled ? "var(--cmp-field-addonLabel-border-disabled)" : "var(--cmp-field-addonLabel-border-default)",
|
|
6235
|
+
borderTopLeftRadius: s.radius - 1,
|
|
6236
|
+
borderBottomLeftRadius: s.radius - 1
|
|
6237
|
+
},
|
|
6238
|
+
children: [
|
|
6239
|
+
icon && !label && /* @__PURE__ */ jsx(SIcon, { name: icon, size: s.icon, color: iconColor }),
|
|
6240
|
+
effectiveAddonLabel
|
|
6241
|
+
]
|
|
6242
|
+
}
|
|
6243
|
+
),
|
|
6244
|
+
/* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1", children })
|
|
6245
|
+
]
|
|
6246
|
+
}
|
|
6132
6247
|
),
|
|
6133
|
-
|
|
6134
|
-
|
|
6135
|
-
|
|
6136
|
-
|
|
6137
|
-
...interactive && !borderless && focused ? { boxShadow: "0px 0px 4px 0px #0071ff66" } : {},
|
|
6138
|
-
...multiline ? { minHeight: s.height } : { height: s.height },
|
|
6139
|
-
"width": cssLen(width),
|
|
6140
|
-
"borderRadius": s.radius,
|
|
6141
|
-
"background": bgColor,
|
|
6142
|
-
"color": textColor
|
|
6143
|
-
},
|
|
6144
|
-
"data-focused": focused || void 0,
|
|
6145
|
-
"data-hovered": hovered || void 0,
|
|
6146
|
-
children: [
|
|
6147
|
-
effectiveAddonLabel !== "" && /* @__PURE__ */ jsxs(
|
|
6148
|
-
"div",
|
|
6149
|
-
{
|
|
6150
|
-
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",
|
|
6151
|
-
style: {
|
|
6152
|
-
// 원본 sd-field: labelWidth가 addon 폭(--sd-field-addon-width)에도 적용됨
|
|
6153
|
-
width: cssLen(labelWidth),
|
|
6154
|
-
justifyContent: ALIGN[addonAlign],
|
|
6155
|
-
background: "var(--cmp-field-addonLabel-bg)",
|
|
6156
|
-
borderRightColor: disabled ? "var(--cmp-field-addonLabel-border-disabled)" : "var(--cmp-field-addonLabel-border-default)",
|
|
6157
|
-
borderTopLeftRadius: s.radius - 1,
|
|
6158
|
-
borderBottomLeftRadius: s.radius - 1
|
|
6159
|
-
},
|
|
6160
|
-
children: [
|
|
6161
|
-
icon && !label && /* @__PURE__ */ jsx(SIcon, { name: icon, size: s.icon, color: iconColor }),
|
|
6162
|
-
effectiveAddonLabel
|
|
6163
|
-
]
|
|
6164
|
-
}
|
|
6165
|
-
),
|
|
6166
|
-
/* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1", children })
|
|
6167
|
-
]
|
|
6168
|
-
}
|
|
6169
|
-
),
|
|
6170
|
-
showError ? /* @__PURE__ */ jsx("div", { className: "mt-(--cmp-field-contents-gap) text-12 font-normal leading-20 text-(--cmp-field-errorMessage-color)", children: errorMessage }) : hint !== "" ? /* @__PURE__ */ jsx("div", { className: "mt-(--cmp-field-contents-gap) text-12 font-normal leading-20 text-(--cmp-field-hint-color)", children: hint }) : null
|
|
6171
|
-
] })
|
|
6248
|
+
showError ? /* @__PURE__ */ jsx("div", { className: "mt-(--cmp-field-contents-gap) text-12 font-normal leading-20 text-(--cmp-field-errorMessage-color)", children: errorMessage }) : hint !== "" ? /* @__PURE__ */ jsx("div", { className: "mt-(--cmp-field-contents-gap) text-12 font-normal leading-20 text-(--cmp-field-hint-color)", children: hint }) : null
|
|
6249
|
+
]
|
|
6250
|
+
}
|
|
6251
|
+
)
|
|
6172
6252
|
] })
|
|
6173
6253
|
}
|
|
6174
6254
|
);
|
|
@@ -6517,7 +6597,12 @@ var SSelect = forwardRef(function SSelect2({
|
|
|
6517
6597
|
"div",
|
|
6518
6598
|
{
|
|
6519
6599
|
ref: listRef,
|
|
6520
|
-
className:
|
|
6600
|
+
className: cn(
|
|
6601
|
+
"overflow-auto",
|
|
6602
|
+
SCROLLBAR_CLASS,
|
|
6603
|
+
SCROLLBAR_TRACK_BG_CLASS,
|
|
6604
|
+
SCROLLBAR_TRACK_BORDER_CLASS
|
|
6605
|
+
),
|
|
6521
6606
|
style: { maxHeight: dropdownHeight },
|
|
6522
6607
|
onMouseLeave: () => setFocusedIndex(-1),
|
|
6523
6608
|
children: [
|
|
@@ -7006,7 +7091,7 @@ var STable = forwardRef(function STable2({
|
|
|
7006
7091
|
position: "sticky",
|
|
7007
7092
|
left: isLeft ? "var(--sticky-left-offset)" : void 0,
|
|
7008
7093
|
right: isRight ? "var(--sticky-right-offset)" : void 0,
|
|
7009
|
-
zIndex:
|
|
7094
|
+
zIndex: 6
|
|
7010
7095
|
};
|
|
7011
7096
|
};
|
|
7012
7097
|
const stickyShadowClass = (i) => {
|
|
@@ -7032,6 +7117,9 @@ var STable = forwardRef(function STable2({
|
|
|
7032
7117
|
onScroll: handleScroll,
|
|
7033
7118
|
className: cn(
|
|
7034
7119
|
"bg-white relative overflow-auto border border-solid border-[color:var(--cmp-table-border-color)]",
|
|
7120
|
+
SCROLLBAR_CLASS,
|
|
7121
|
+
SCROLLBAR_TRACK_BG_CLASS,
|
|
7122
|
+
SCROLLBAR_TRACK_BORDER_CLASS,
|
|
7035
7123
|
radiusClass,
|
|
7036
7124
|
// 원본 sd-table__scroll-container--loading/--no-data: 로딩·데이터 없음 시 스크롤·인터랙션 차단
|
|
7037
7125
|
(isLoading || rowCount === 0) && "overflow-hidden pointer-events-none"
|
|
@@ -7060,7 +7148,7 @@ var STable = forwardRef(function STable2({
|
|
|
7060
7148
|
{
|
|
7061
7149
|
className: cn(
|
|
7062
7150
|
// 원본 .th--selected: 48px 고정폭, 항상 left sticky, 체크박스 중앙정렬
|
|
7063
|
-
"sticky left-0 z-[
|
|
7151
|
+
"sticky left-0 z-[7] border-b border-solid border-[color:var(--cmp-table-border-color)] bg-[var(--cmp-table-header-bg)] text-center align-middle",
|
|
7064
7152
|
stickyLeft === 0 && scrolledLeft && "shadow-[5px_0_8px_0_rgba(34,34,34,0.1)]"
|
|
7065
7153
|
),
|
|
7066
7154
|
style: {
|
|
@@ -7085,13 +7173,13 @@ var STable = forwardRef(function STable2({
|
|
|
7085
7173
|
{
|
|
7086
7174
|
className: cn(
|
|
7087
7175
|
"relative border-b border-solid border-[color:var(--cmp-table-border-color)] bg-[var(--cmp-table-header-bg)] px-[16px] text-[12px] font-medium leading-[20px] text-[color:var(--sys-color-fg-primary)]",
|
|
7088
|
-
stickyInfo(i).isSticky && "z-[
|
|
7176
|
+
stickyInfo(i).isSticky && "z-[6]",
|
|
7089
7177
|
stickyShadowClass(i),
|
|
7090
7178
|
col.thClass
|
|
7091
7179
|
),
|
|
7092
7180
|
style: { textAlign: col.align ?? "left", ...cellStyle(i), ...col.thStyle },
|
|
7093
7181
|
children: [
|
|
7094
|
-
/* @__PURE__ */
|
|
7182
|
+
/* @__PURE__ */ jsx(
|
|
7095
7183
|
"span",
|
|
7096
7184
|
{
|
|
7097
7185
|
className: cn(
|
|
@@ -7100,10 +7188,10 @@ var STable = forwardRef(function STable2({
|
|
|
7100
7188
|
col.align === "center" && "justify-center",
|
|
7101
7189
|
col.align === "right" && "justify-end"
|
|
7102
7190
|
),
|
|
7103
|
-
children: [
|
|
7191
|
+
children: col.renderHeader ? col.renderHeader(col, i) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7104
7192
|
col.icon && /* @__PURE__ */ jsx(SIcon, { name: col.icon, size: 16, color: col.iconColor }),
|
|
7105
7193
|
/* @__PURE__ */ jsx("span", { className: "truncate", children: col.label })
|
|
7106
|
-
]
|
|
7194
|
+
] })
|
|
7107
7195
|
}
|
|
7108
7196
|
),
|
|
7109
7197
|
resizable && !col.autoWidth && i < visibleCols.length - 1 && // 원본 th__resizer: 셀 우측 경계 안쪽 4px 그립(좌우 1px #CCCCCC 라인, 세로 16px).
|
|
@@ -10403,6 +10491,8 @@ function formatTimeDisplay(value, type) {
|
|
|
10403
10491
|
const displayHour = hour % 12 === 0 ? 12 : hour % 12;
|
|
10404
10492
|
return `${meridiem} ${padTimePart(displayHour)}:${padTimePart(minute)}`;
|
|
10405
10493
|
}
|
|
10494
|
+
var TIME_SELECTOR_WIDTH = 136;
|
|
10495
|
+
var MERIDIEM_TIME_SELECTOR_WIDTH = 154;
|
|
10406
10496
|
function TimeSelector({
|
|
10407
10497
|
value,
|
|
10408
10498
|
useMeridiem,
|
|
@@ -10641,7 +10731,9 @@ function STimePicker({
|
|
|
10641
10731
|
style
|
|
10642
10732
|
}) {
|
|
10643
10733
|
const portalContainer = usePortalContainer();
|
|
10734
|
+
const triggerRef = useRef(null);
|
|
10644
10735
|
const [open, setOpen] = useState(false);
|
|
10736
|
+
const [popoverAlignOffset, setPopoverAlignOffset] = useState(0);
|
|
10645
10737
|
const [focused, setFocused] = useState(false);
|
|
10646
10738
|
const [ruleError, setRuleError] = useState("");
|
|
10647
10739
|
const dims = TIMEPICKER_SIZE_CONFIG[size] ?? TIMEPICKER_SIZE_CONFIG.sm;
|
|
@@ -10662,6 +10754,11 @@ function STimePicker({
|
|
|
10662
10754
|
const resolvedStatus = status ?? (rules && rules.length > 0 ? ruleError !== "" ? "error" : void 0 : void 0);
|
|
10663
10755
|
const commitOpen = (next) => {
|
|
10664
10756
|
if (disabled) return;
|
|
10757
|
+
if (next) {
|
|
10758
|
+
const triggerWidth = triggerRef.current?.getBoundingClientRect().width ?? 0;
|
|
10759
|
+
const selectorWidth = effectiveUseMeridiem ? MERIDIEM_TIME_SELECTOR_WIDTH : TIME_SELECTOR_WIDTH;
|
|
10760
|
+
setPopoverAlignOffset(Math.max(0, (triggerWidth - selectorWidth) / 2));
|
|
10761
|
+
}
|
|
10665
10762
|
setOpen(next);
|
|
10666
10763
|
onOpenChange?.(next);
|
|
10667
10764
|
if (!next && rules && rules.length > 0) setRuleError(runRules(value, rules));
|
|
@@ -10688,19 +10785,32 @@ function STimePicker({
|
|
|
10688
10785
|
focused: focused || open,
|
|
10689
10786
|
errorMessage: ruleError !== "" ? ruleError : errorMessage,
|
|
10690
10787
|
width,
|
|
10788
|
+
minWidth: dims.fieldMinWidth,
|
|
10691
10789
|
disabled,
|
|
10692
10790
|
className,
|
|
10693
|
-
style
|
|
10791
|
+
style,
|
|
10694
10792
|
children: /* @__PURE__ */ jsxs(RPopover2.Root, { open, onOpenChange: commitOpen, children: [
|
|
10695
10793
|
/* @__PURE__ */ jsx(RPopover2.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
10696
|
-
"
|
|
10794
|
+
"div",
|
|
10697
10795
|
{
|
|
10698
|
-
|
|
10699
|
-
|
|
10700
|
-
disabled,
|
|
10796
|
+
ref: triggerRef,
|
|
10797
|
+
role: "button",
|
|
10798
|
+
"aria-disabled": disabled,
|
|
10799
|
+
tabIndex: disabled ? -1 : 0,
|
|
10800
|
+
"data-name": name,
|
|
10701
10801
|
onFocus: () => setFocused(true),
|
|
10702
10802
|
onBlur: () => setFocused(false),
|
|
10703
|
-
|
|
10803
|
+
onKeyDown: (event) => {
|
|
10804
|
+
if (disabled) return;
|
|
10805
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
10806
|
+
event.preventDefault();
|
|
10807
|
+
commitOpen(!open);
|
|
10808
|
+
}
|
|
10809
|
+
},
|
|
10810
|
+
className: cn(
|
|
10811
|
+
"flex h-full w-full items-center overflow-hidden bg-transparent outline-none",
|
|
10812
|
+
disabled ? "cursor-not-allowed" : "cursor-pointer"
|
|
10813
|
+
),
|
|
10704
10814
|
style: { padding: `0 ${dims.paddingX}`, gap: dims.gap, borderRadius: dims.radius },
|
|
10705
10815
|
children: [
|
|
10706
10816
|
/* @__PURE__ */ jsx(
|
|
@@ -10746,6 +10856,7 @@ function STimePicker({
|
|
|
10746
10856
|
side: "bottom",
|
|
10747
10857
|
align: "start",
|
|
10748
10858
|
sideOffset: 4,
|
|
10859
|
+
alignOffset: popoverAlignOffset,
|
|
10749
10860
|
className: cn("z-50", FLOATING_SLIDE_ANIM),
|
|
10750
10861
|
children: /* @__PURE__ */ jsx(
|
|
10751
10862
|
TimeSelector,
|
|
@@ -10783,6 +10894,11 @@ function formatTimeRangeDisplay(value, type) {
|
|
|
10783
10894
|
if (value == null || value[0] === "" || value[1] === "") return "";
|
|
10784
10895
|
return `${formatTimeDisplay(value[0], type)} ~ ${formatTimeDisplay(value[1], type)}`;
|
|
10785
10896
|
}
|
|
10897
|
+
var TIME_RANGE_SELECTOR_WIDTH = 345;
|
|
10898
|
+
var MIDDAY_FIELD_MIN_WIDTH = {
|
|
10899
|
+
sm: 178,
|
|
10900
|
+
md: 216
|
|
10901
|
+
};
|
|
10786
10902
|
function RangeTimeSelector({
|
|
10787
10903
|
value,
|
|
10788
10904
|
useMeridiem,
|
|
@@ -11072,7 +11188,9 @@ function STimeRangePicker({
|
|
|
11072
11188
|
style
|
|
11073
11189
|
}) {
|
|
11074
11190
|
const portalContainer = usePortalContainer();
|
|
11191
|
+
const triggerRef = useRef(null);
|
|
11075
11192
|
const [open, setOpen] = useState(false);
|
|
11193
|
+
const [popoverAlignOffset, setPopoverAlignOffset] = useState(0);
|
|
11076
11194
|
const [focused, setFocused] = useState(false);
|
|
11077
11195
|
const [ruleError, setRuleError] = useState("");
|
|
11078
11196
|
const dims = TIMEPICKER_SIZE_CONFIG[size] ?? TIMEPICKER_SIZE_CONFIG.sm;
|
|
@@ -11096,6 +11214,10 @@ function STimeRangePicker({
|
|
|
11096
11214
|
const resolvedStatus = status ?? (rules && rules.length > 0 ? ruleError !== "" ? "error" : void 0 : void 0);
|
|
11097
11215
|
const commitOpen = (next) => {
|
|
11098
11216
|
if (disabled) return;
|
|
11217
|
+
if (next) {
|
|
11218
|
+
const triggerWidth = triggerRef.current?.getBoundingClientRect().width ?? 0;
|
|
11219
|
+
setPopoverAlignOffset(Math.max(0, (triggerWidth - TIME_RANGE_SELECTOR_WIDTH) / 2));
|
|
11220
|
+
}
|
|
11099
11221
|
setOpen(next);
|
|
11100
11222
|
onOpenChange?.(next);
|
|
11101
11223
|
if (!next && rules && rules.length > 0) setRuleError(runRules(value, rules));
|
|
@@ -11122,19 +11244,32 @@ function STimeRangePicker({
|
|
|
11122
11244
|
focused: focused || open,
|
|
11123
11245
|
errorMessage: ruleError !== "" ? ruleError : errorMessage,
|
|
11124
11246
|
width,
|
|
11247
|
+
minWidth: effectiveUseMeridiem ? MIDDAY_FIELD_MIN_WIDTH[size] : dims.fieldMinWidth,
|
|
11125
11248
|
disabled,
|
|
11126
11249
|
className,
|
|
11127
|
-
style
|
|
11250
|
+
style,
|
|
11128
11251
|
children: /* @__PURE__ */ jsxs(RPopover2.Root, { open, onOpenChange: commitOpen, children: [
|
|
11129
11252
|
/* @__PURE__ */ jsx(RPopover2.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
11130
|
-
"
|
|
11253
|
+
"div",
|
|
11131
11254
|
{
|
|
11132
|
-
|
|
11133
|
-
|
|
11134
|
-
disabled,
|
|
11255
|
+
ref: triggerRef,
|
|
11256
|
+
role: "button",
|
|
11257
|
+
"aria-disabled": disabled,
|
|
11258
|
+
tabIndex: disabled ? -1 : 0,
|
|
11259
|
+
"data-name": name,
|
|
11135
11260
|
onFocus: () => setFocused(true),
|
|
11136
11261
|
onBlur: () => setFocused(false),
|
|
11137
|
-
|
|
11262
|
+
onKeyDown: (event) => {
|
|
11263
|
+
if (disabled) return;
|
|
11264
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
11265
|
+
event.preventDefault();
|
|
11266
|
+
commitOpen(!open);
|
|
11267
|
+
}
|
|
11268
|
+
},
|
|
11269
|
+
className: cn(
|
|
11270
|
+
"flex h-full w-full items-center overflow-hidden bg-transparent outline-none",
|
|
11271
|
+
disabled ? "cursor-not-allowed" : "cursor-pointer"
|
|
11272
|
+
),
|
|
11138
11273
|
style: { padding: `0 ${dims.paddingX}`, gap: dims.gap, borderRadius: dims.radius },
|
|
11139
11274
|
children: [
|
|
11140
11275
|
/* @__PURE__ */ jsx(
|
|
@@ -11180,6 +11315,7 @@ function STimeRangePicker({
|
|
|
11180
11315
|
side: "bottom",
|
|
11181
11316
|
align: "start",
|
|
11182
11317
|
sideOffset: 4,
|
|
11318
|
+
alignOffset: popoverAlignOffset,
|
|
11183
11319
|
className: cn("z-50", FLOATING_SLIDE_ANIM),
|
|
11184
11320
|
children: /* @__PURE__ */ jsx(
|
|
11185
11321
|
RangeTimeSelector,
|
|
@@ -11198,6 +11334,6 @@ function STimeRangePicker({
|
|
|
11198
11334
|
);
|
|
11199
11335
|
}
|
|
11200
11336
|
|
|
11201
|
-
export { BADGE_COLORS, BUTTON_COLORS, BUTTON_SIZES, COLOR_KEYS, GNB_COLORS, GNB_COMMON, GNB_FOLD_MS, GNB_HEADER, GNB_MENU, GNB_MENU_WIDTH, GNB_RAIL, GNB_RAIL_WIDTH, ICONS, SActionModal, SBadge, SBarcodeInput, SButton, SCalendar, SCallout, SCard, SCheckbox, SChip, SChipInput, SCircleProgress, SConfirmModal, SDatePicker, SDateRangePicker, SDivider, SDropdownButton, SField, SFilePicker, SForm, SGhostButton, SGnb, SGuide, SIcon, SInput, SKeyValueTable, SLayout, SLayoutContext, SLinearProgress, SLoadingContainer, SLoadingModal, SLoadingViewport, SNumberInput, SPage, SPagination, SPopover, SPopup, SPortal, SRadio, SRadioButton, SRadioGroup, SSelect, SStepper, SSwitch, STEPPER_SIZES, STable, STabs, STag, STextLink, STextarea, STimePicker, STimeRangePicker, SToast, SToastContainer, SToggle, STooltip, TAG_COLORS, TAG_SHAPES, TAG_SIZES, TIMEPICKER_SIZES, TIMEPICKER_SIZE_CONFIG, buttonPreset, cn, findGnbAncestors, findGnbRailValue, isColorKey, loading, resolveColor, useSLayout };
|
|
11337
|
+
export { BADGE_COLORS, BUTTON_COLORS, BUTTON_SIZES, COLOR_KEYS, GNB_COLORS, GNB_COMMON, GNB_FOLD_MS, GNB_HEADER, GNB_MENU, GNB_MENU_WIDTH, GNB_RAIL, GNB_RAIL_WIDTH, ICONS, PAGE_BACKGROUNDS, SActionModal, SBadge, SBarcodeInput, SButton, SCROLL_AREA_AXES, SCalendar, SCallout, SCard, SCheckbox, SChip, SChipInput, SCircleProgress, SConfirmModal, SDatePicker, SDateRangePicker, SDivider, SDropdownButton, SField, SFilePicker, SForm, SGhostButton, SGnb, SGuide, SIcon, SInput, SKeyValueTable, SLayout, SLayoutContext, SLinearProgress, SLoadingContainer, SLoadingModal, SLoadingViewport, SNumberInput, SPage, SPagination, SPopover, SPopup, SPortal, SRadio, SRadioButton, SRadioGroup, SScrollArea, SSelect, SStepper, SSwitch, STEPPER_SIZES, STable, STabs, STag, STextLink, STextarea, STimePicker, STimeRangePicker, SToast, SToastContainer, SToggle, STooltip, TAG_COLORS, TAG_SHAPES, TAG_SIZES, TIMEPICKER_SIZES, TIMEPICKER_SIZE_CONFIG, buttonPreset, cn, findGnbAncestors, findGnbRailValue, isColorKey, loading, resolveColor, useSLayout };
|
|
11202
11338
|
//# sourceMappingURL=index.js.map
|
|
11203
11339
|
//# sourceMappingURL=index.js.map
|