sellmate-design-system-react 0.1.9 → 0.1.10
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 +1 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.cjs.map +1 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.js +1 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.js.map +1 -1
- package/dist/components/SChipInput/SChipInput.cjs +1 -1
- package/dist/components/SChipInput/SChipInput.cjs.map +1 -1
- package/dist/components/SChipInput/SChipInput.js +1 -1
- package/dist/components/SChipInput/SChipInput.js.map +1 -1
- package/dist/components/SCircleProgress/SCircleProgress.cjs +69 -50
- package/dist/components/SCircleProgress/SCircleProgress.cjs.map +1 -1
- package/dist/components/SCircleProgress/SCircleProgress.d.ts +2 -0
- package/dist/components/SCircleProgress/SCircleProgress.js +69 -50
- package/dist/components/SCircleProgress/SCircleProgress.js.map +1 -1
- package/dist/components/SDatePicker/SDatePicker.cjs +1 -1
- package/dist/components/SDatePicker/SDatePicker.cjs.map +1 -1
- package/dist/components/SDatePicker/SDatePicker.js +1 -1
- package/dist/components/SDatePicker/SDatePicker.js.map +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.cjs +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.cjs.map +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.js +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.js.map +1 -1
- package/dist/components/SField/SField.cjs +1 -1
- package/dist/components/SField/SField.cjs.map +1 -1
- package/dist/components/SField/SField.js +1 -1
- package/dist/components/SField/SField.js.map +1 -1
- package/dist/components/SFilePicker/SFilePicker.cjs +36 -17
- package/dist/components/SFilePicker/SFilePicker.cjs.map +1 -1
- package/dist/components/SFilePicker/SFilePicker.d.ts +1 -1
- package/dist/components/SFilePicker/SFilePicker.js +35 -17
- package/dist/components/SFilePicker/SFilePicker.js.map +1 -1
- package/dist/components/SInput/SInput.cjs +1 -1
- package/dist/components/SInput/SInput.cjs.map +1 -1
- package/dist/components/SInput/SInput.js +1 -1
- package/dist/components/SInput/SInput.js.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs +43 -22
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.js +43 -22
- package/dist/components/SKeyValueTable/SKeyValueTable.js.map +1 -1
- package/dist/components/SLoadingContainer/SLoadingContainer.cjs +69 -50
- package/dist/components/SLoadingContainer/SLoadingContainer.cjs.map +1 -1
- package/dist/components/SLoadingContainer/SLoadingContainer.js +69 -50
- package/dist/components/SLoadingContainer/SLoadingContainer.js.map +1 -1
- package/dist/components/SLoadingContainer/loading.cjs +69 -50
- package/dist/components/SLoadingContainer/loading.cjs.map +1 -1
- package/dist/components/SLoadingContainer/loading.js +69 -50
- package/dist/components/SLoadingContainer/loading.js.map +1 -1
- package/dist/components/SLoadingModal/SLoadingModal.cjs +72 -50
- package/dist/components/SLoadingModal/SLoadingModal.cjs.map +1 -1
- package/dist/components/SLoadingModal/SLoadingModal.d.ts +3 -1
- package/dist/components/SLoadingModal/SLoadingModal.js +72 -50
- package/dist/components/SLoadingModal/SLoadingModal.js.map +1 -1
- package/dist/components/SNumberInput/SNumberInput.cjs +1 -1
- package/dist/components/SNumberInput/SNumberInput.cjs.map +1 -1
- package/dist/components/SNumberInput/SNumberInput.js +1 -1
- package/dist/components/SNumberInput/SNumberInput.js.map +1 -1
- package/dist/components/SRadio/SRadioGroup.cjs +1 -1
- package/dist/components/SRadio/SRadioGroup.cjs.map +1 -1
- package/dist/components/SRadio/SRadioGroup.js +1 -1
- package/dist/components/SRadio/SRadioGroup.js.map +1 -1
- package/dist/components/SSelect/SSelect.cjs +8 -4
- package/dist/components/SSelect/SSelect.cjs.map +1 -1
- package/dist/components/SSelect/SSelect.js +8 -4
- package/dist/components/SSelect/SSelect.js.map +1 -1
- package/dist/components/STable/STable.cjs +82 -56
- package/dist/components/STable/STable.cjs.map +1 -1
- package/dist/components/STable/STable.js +82 -56
- package/dist/components/STable/STable.js.map +1 -1
- package/dist/components/STextarea/STextarea.cjs +1 -1
- package/dist/components/STextarea/STextarea.cjs.map +1 -1
- package/dist/components/STextarea/STextarea.js +1 -1
- package/dist/components/STextarea/STextarea.js.map +1 -1
- package/dist/components/STooltip/STooltip.cjs +1 -1
- package/dist/components/STooltip/STooltip.cjs.map +1 -1
- package/dist/components/STooltip/STooltip.js +1 -1
- package/dist/components/STooltip/STooltip.js.map +1 -1
- package/dist/index.cjs +120 -74
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +120 -74
- package/dist/index.js.map +1 -1
- package/dist/styles.css +62 -21
- package/dist/theme.css +45 -21
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -3328,12 +3328,35 @@ var COLOR_MAP = {
|
|
|
3328
3328
|
};
|
|
3329
3329
|
var clamp2 = (v) => Number.isFinite(v) ? Math.max(0, Math.min(100, v)) : 0;
|
|
3330
3330
|
var SCircleProgress = react.forwardRef(
|
|
3331
|
-
function SCircleProgress2({
|
|
3331
|
+
function SCircleProgress2({
|
|
3332
|
+
value = 0,
|
|
3333
|
+
type = "primary",
|
|
3334
|
+
indeterminate = false,
|
|
3335
|
+
label,
|
|
3336
|
+
innerValue = false,
|
|
3337
|
+
className,
|
|
3338
|
+
style
|
|
3339
|
+
}, ref) {
|
|
3332
3340
|
const v = clamp2(value);
|
|
3333
3341
|
const colors = COLOR_MAP[type];
|
|
3334
3342
|
const c = VIEWBOX / 2;
|
|
3335
3343
|
const percentColor = v === 0 ? "var(--sys-color-fg-tertiary, #888888)" : colors.arc;
|
|
3336
3344
|
const filled = v / 100 * CIRCUMFERENCE;
|
|
3345
|
+
const showPercent = !indeterminate;
|
|
3346
|
+
const percentNode = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3347
|
+
"span",
|
|
3348
|
+
{
|
|
3349
|
+
className: cn(
|
|
3350
|
+
"text-center text-[16px] font-bold leading-[26px]",
|
|
3351
|
+
innerValue && "absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2"
|
|
3352
|
+
),
|
|
3353
|
+
style: { color: percentColor },
|
|
3354
|
+
children: [
|
|
3355
|
+
Math.round(v),
|
|
3356
|
+
"%"
|
|
3357
|
+
]
|
|
3358
|
+
}
|
|
3359
|
+
);
|
|
3337
3360
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3338
3361
|
"div",
|
|
3339
3362
|
{
|
|
@@ -3344,57 +3367,53 @@ var SCircleProgress = react.forwardRef(
|
|
|
3344
3367
|
),
|
|
3345
3368
|
style,
|
|
3346
3369
|
children: [
|
|
3347
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3348
|
-
|
|
3349
|
-
|
|
3350
|
-
|
|
3351
|
-
|
|
3352
|
-
|
|
3353
|
-
|
|
3354
|
-
|
|
3355
|
-
"circle"
|
|
3356
|
-
{
|
|
3357
|
-
cx: c,
|
|
3358
|
-
cy: c,
|
|
3359
|
-
r: RADIUS,
|
|
3360
|
-
fill: "none",
|
|
3361
|
-
strokeWidth: STROKE,
|
|
3362
|
-
style: { stroke: colors.track }
|
|
3363
|
-
}
|
|
3370
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(innerValue && "relative"), children: [
|
|
3371
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3372
|
+
"svg",
|
|
3373
|
+
{
|
|
3374
|
+
viewBox: `0 0 ${VIEWBOX} ${VIEWBOX}`,
|
|
3375
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
3376
|
+
className: cn(
|
|
3377
|
+
"h-[80px] w-[80px]",
|
|
3378
|
+
indeterminate && "origin-center animate-circle-spin"
|
|
3364
3379
|
),
|
|
3365
|
-
|
|
3366
|
-
|
|
3367
|
-
|
|
3368
|
-
|
|
3369
|
-
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
|
-
|
|
3373
|
-
|
|
3374
|
-
|
|
3375
|
-
"origin-center",
|
|
3376
|
-
indeterminate ? "animate-circle-arc" : "-rotate-90 transition-[stroke-dasharray] duration-[400ms] ease-linear"
|
|
3377
|
-
),
|
|
3378
|
-
style: {
|
|
3379
|
-
stroke: colors.arc,
|
|
3380
|
-
...indeterminate ? {} : { strokeDasharray: `${filled} ${CIRCUMFERENCE}`, strokeDashoffset: 0 }
|
|
3380
|
+
children: [
|
|
3381
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3382
|
+
"circle",
|
|
3383
|
+
{
|
|
3384
|
+
cx: c,
|
|
3385
|
+
cy: c,
|
|
3386
|
+
r: RADIUS,
|
|
3387
|
+
fill: "none",
|
|
3388
|
+
strokeWidth: STROKE,
|
|
3389
|
+
style: { stroke: colors.track }
|
|
3381
3390
|
}
|
|
3382
|
-
|
|
3383
|
-
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3391
|
+
),
|
|
3392
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3393
|
+
"circle",
|
|
3394
|
+
{
|
|
3395
|
+
cx: c,
|
|
3396
|
+
cy: c,
|
|
3397
|
+
r: RADIUS,
|
|
3398
|
+
fill: "none",
|
|
3399
|
+
strokeWidth: STROKE,
|
|
3400
|
+
strokeLinecap: "round",
|
|
3401
|
+
className: cn(
|
|
3402
|
+
"origin-center",
|
|
3403
|
+
indeterminate ? "animate-circle-arc" : "-rotate-90 transition-[stroke-dasharray] duration-[400ms] ease-linear"
|
|
3404
|
+
),
|
|
3405
|
+
style: {
|
|
3406
|
+
stroke: colors.arc,
|
|
3407
|
+
...indeterminate ? {} : { strokeDasharray: `${filled} ${CIRCUMFERENCE}`, strokeDashoffset: 0 }
|
|
3408
|
+
}
|
|
3409
|
+
}
|
|
3410
|
+
)
|
|
3411
|
+
]
|
|
3412
|
+
}
|
|
3413
|
+
),
|
|
3414
|
+
showPercent && innerValue && percentNode
|
|
3415
|
+
] }),
|
|
3416
|
+
showPercent && !innerValue && percentNode,
|
|
3398
3417
|
label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-center text-[12px] font-normal leading-[20px] text-[color:var(--cmp-progress-color-label)]", children: label })
|
|
3399
3418
|
]
|
|
3400
3419
|
}
|
|
@@ -4153,7 +4172,7 @@ var STooltip = react.forwardRef(function STooltip2({
|
|
|
4153
4172
|
if (disabled || body == null) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: triggerNode });
|
|
4154
4173
|
const isHover = trigger === "hover";
|
|
4155
4174
|
const contentClass = cn(
|
|
4156
|
-
"z-50 max-w-xs rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px]
|
|
4175
|
+
"z-50 max-w-xs rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px]",
|
|
4157
4176
|
FLOATING_SLIDE_ANIM,
|
|
4158
4177
|
className
|
|
4159
4178
|
);
|
|
@@ -4815,6 +4834,7 @@ var DEFAULT_BUTTON_LABEL = {
|
|
|
4815
4834
|
function SLoadingModal({
|
|
4816
4835
|
open,
|
|
4817
4836
|
onOpenChange,
|
|
4837
|
+
onClose,
|
|
4818
4838
|
persistent,
|
|
4819
4839
|
state: state2 = "loading",
|
|
4820
4840
|
progress,
|
|
@@ -4833,6 +4853,8 @@ function SLoadingModal({
|
|
|
4833
4853
|
{
|
|
4834
4854
|
open,
|
|
4835
4855
|
onOpenChange,
|
|
4856
|
+
onClose,
|
|
4857
|
+
showClose: state2 === "error",
|
|
4836
4858
|
persistent,
|
|
4837
4859
|
ariaTitle: lines[0] || "\uB85C\uB529 \uC911",
|
|
4838
4860
|
width,
|
|
@@ -5642,7 +5664,7 @@ function ItemList({
|
|
|
5642
5664
|
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",
|
|
5643
5665
|
// 하위가 전부 비활성이면(select.config 에서 bubble-up) 어미 그룹도 비활성 처리:
|
|
5644
5666
|
// 텍스트는 회색(#888), depth1 그룹은 파란 배경 대신 회색(#EEE)으로 (depth2 는 #F6F6F6 유지)
|
|
5645
|
-
o.disabled && "text-[color:var(--cmp-listItem-content-disabled)]",
|
|
5667
|
+
o.disabled && "cursor-not-allowed text-[color:var(--cmp-listItem-content-disabled)]",
|
|
5646
5668
|
o.disabled && isDepth1 && "bg-[var(--cmp-listItem-depth1-bg-disabled)]"
|
|
5647
5669
|
),
|
|
5648
5670
|
style: { paddingLeft: padLeft },
|
|
@@ -5657,10 +5679,14 @@ function ItemList({
|
|
|
5657
5679
|
{
|
|
5658
5680
|
value: o.value,
|
|
5659
5681
|
disabled: o.disabled,
|
|
5682
|
+
accessibleWhenDisabled: true,
|
|
5660
5683
|
className: cn(
|
|
5661
5684
|
itemBase,
|
|
5662
5685
|
isSelected && !multi && "font-bold text-[color:var(--cmp-listItem-content-selected)]",
|
|
5663
|
-
|
|
5686
|
+
// Ariakit은 disabled 항목도 hover 시 active(data-active-item) 처리하므로,
|
|
5687
|
+
// 비활성 항목에는 hover 하이라이트를 적용하지 않아 회색 비활성 스타일을 유지한다.
|
|
5688
|
+
// (원본 Stencil의 `--focused...:not(--disabled)` 규칙과 동일한 의도)
|
|
5689
|
+
!o.disabled && activeClass
|
|
5664
5690
|
),
|
|
5665
5691
|
style: { paddingTop: 4, paddingBottom: 4, paddingRight: 12, paddingLeft: padLeft },
|
|
5666
5692
|
render: useSearch ? /* @__PURE__ */ jsxRuntime.jsx(Ariakit__namespace.ComboboxItem, {}) : void 0,
|
|
@@ -5673,7 +5699,7 @@ function ItemList({
|
|
|
5673
5699
|
"flex h-[16px] w-[16px] flex-shrink-0 items-center justify-center rounded-[2px] border border-solid",
|
|
5674
5700
|
o.disabled ? (
|
|
5675
5701
|
// 비활성: 회색 채움(#E1E1E1) + 회색 테두리(#CCCCCC)
|
|
5676
|
-
"border-[color:var(--cmp-checkbox-border-disabled)] bg-[var(--cmp-checkbox-bg-disabled)]"
|
|
5702
|
+
"cursor-not-allowed border-[color:var(--cmp-checkbox-border-disabled)] bg-[var(--cmp-checkbox-bg-disabled)]"
|
|
5677
5703
|
) : cn(
|
|
5678
5704
|
"group-data-[active-item]:border-[color:var(--cmp-checkbox-checked-border-inverse)]",
|
|
5679
5705
|
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"
|
|
@@ -5975,7 +6001,8 @@ var STable = react.forwardRef(function STable2({
|
|
|
5975
6001
|
else onSelectedChange?.([...selected, row]);
|
|
5976
6002
|
};
|
|
5977
6003
|
const radiusClass = radius === "full" ? "rounded-none" : radius === "useTop" ? "rounded-b-[var(--cmp-table-radius)] rounded-t-none" : "rounded-[var(--cmp-table-radius)]";
|
|
5978
|
-
const cellPadY = dense ? "var(--cmp-table-body-dense
|
|
6004
|
+
const cellPadY = dense ? "var(--cmp-table-body-paddingY-dense)" : "var(--cmp-table-body-paddingY-default)";
|
|
6005
|
+
const cellPadX = dense ? "var(--cmp-table-body-paddingX-default)" : "var(--cmp-table-body-paddingX-wide)";
|
|
5979
6006
|
const rowH = dense ? "var(--cmp-table-body-dense-height)" : "var(--cmp-table-body-default-height)";
|
|
5980
6007
|
const totalColSpan = visibleCols.length + (selectable ? 1 : 0);
|
|
5981
6008
|
const stickyInfo = (i) => {
|
|
@@ -6150,13 +6177,15 @@ var STable = react.forwardRef(function STable2({
|
|
|
6150
6177
|
className: cn(
|
|
6151
6178
|
// 원본 .td: 컬럼 폭에 맞춰 내용 말줄임(overflow hidden + ellipsis) + 행 구분선(border-b)
|
|
6152
6179
|
// 셀 배경은 흰색으로 채워 뒤 배경이 비치지 않게 하고, hover 시 행 배경(grey_05)을 따른다.
|
|
6153
|
-
"overflow-hidden text-ellipsis whitespace-nowrap border-b border-solid border-[color:var(--cmp-table-border-color)]
|
|
6180
|
+
"overflow-hidden text-ellipsis whitespace-nowrap border-b border-solid border-[color:var(--cmp-table-border-color)] text-[12px] leading-[20px] text-[color:var(--sys-color-fg-primary)]",
|
|
6154
6181
|
rowBg,
|
|
6155
6182
|
"group-hover:bg-[var(--color-grey-05)]",
|
|
6156
6183
|
stickyShadowClass(i),
|
|
6157
6184
|
col.tdClass
|
|
6158
6185
|
),
|
|
6159
6186
|
style: {
|
|
6187
|
+
paddingLeft: cellPadX,
|
|
6188
|
+
paddingRight: cellPadX,
|
|
6160
6189
|
paddingTop: cellPadY,
|
|
6161
6190
|
paddingBottom: cellPadY,
|
|
6162
6191
|
textAlign: col.align ?? "left",
|
|
@@ -6890,7 +6919,7 @@ function SRadioGroup({
|
|
|
6890
6919
|
role: "radiogroup",
|
|
6891
6920
|
className: cn(
|
|
6892
6921
|
"inline-flex",
|
|
6893
|
-
direction === "vertical" ? "flex-col gap-[
|
|
6922
|
+
direction === "vertical" ? "flex-col gap-[var(--cmp-radio-group-gap-vertical)]" : "flex-row gap-[var(--cmp-radio-group-gap-horizontal)]",
|
|
6894
6923
|
className
|
|
6895
6924
|
),
|
|
6896
6925
|
style,
|
|
@@ -7798,7 +7827,10 @@ function SFilePicker({
|
|
|
7798
7827
|
const autoId = react.useId();
|
|
7799
7828
|
const resolvedName = name ?? autoId;
|
|
7800
7829
|
const inputRef = react.useRef(null);
|
|
7830
|
+
const contentBoxRef = react.useRef(null);
|
|
7801
7831
|
const [ruleError, setRuleError] = react.useState("");
|
|
7832
|
+
const [listOpen, setListOpen] = react.useState(false);
|
|
7833
|
+
const portalContainer = usePortalContainer();
|
|
7802
7834
|
const files = multiple ? Array.isArray(value) ? value : [] : value && !Array.isArray(value) ? value : null;
|
|
7803
7835
|
const hasFiles = multiple ? files.length > 0 : !!files;
|
|
7804
7836
|
const displayText = !hasFiles ? placeholder : multiple ? files.map((f) => f.name).join(", ") : files.name;
|
|
@@ -7852,10 +7884,12 @@ function SFilePicker({
|
|
|
7852
7884
|
e.stopPropagation();
|
|
7853
7885
|
if (disabled) return;
|
|
7854
7886
|
onValueChange?.(multiple ? [] : null);
|
|
7887
|
+
setListOpen(false);
|
|
7855
7888
|
};
|
|
7856
7889
|
const removeChip = (i) => {
|
|
7857
7890
|
const next = files.filter((_, idx) => idx !== i);
|
|
7858
7891
|
onValueChange?.(next);
|
|
7892
|
+
if (next.length === 0) setListOpen(false);
|
|
7859
7893
|
};
|
|
7860
7894
|
const open = () => {
|
|
7861
7895
|
if (!disabled) inputRef.current?.click();
|
|
@@ -7866,9 +7900,12 @@ function SFilePicker({
|
|
|
7866
7900
|
const iconSize = size === "md" ? 20 : 16;
|
|
7867
7901
|
const gapCls = size === "md" ? "gap-[var(--cmp-filepicker-md-gap)]" : "gap-[var(--cmp-filepicker-sm-gap)]";
|
|
7868
7902
|
const inlinePlaceholder = inline && !disabled && !hasFiles;
|
|
7869
|
-
const
|
|
7903
|
+
const showListbox = multiple && useMultipleListBox;
|
|
7904
|
+
const filesArr = multiple ? files : [];
|
|
7905
|
+
const contentInner = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7870
7906
|
"div",
|
|
7871
7907
|
{
|
|
7908
|
+
ref: contentBoxRef,
|
|
7872
7909
|
className: cn("group/filepicker flex h-full w-full items-center", gapCls),
|
|
7873
7910
|
style: { padding: inline ? 0 : `0 ${padX}` },
|
|
7874
7911
|
children: [
|
|
@@ -7923,25 +7960,34 @@ function SFilePicker({
|
|
|
7923
7960
|
]
|
|
7924
7961
|
}
|
|
7925
7962
|
),
|
|
7963
|
+
showListbox && hasFiles && !disabled && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7964
|
+
Ariakit__namespace.PopoverDisclosure,
|
|
7965
|
+
{
|
|
7966
|
+
render: /* @__PURE__ */ jsxRuntime.jsx(SGhostButton, { icon: "caretDown", size: "xxs", ariaLabel: "toggle file list" }),
|
|
7967
|
+
className: cn("shrink-0 transition-transform duration-150", listOpen && "rotate-180")
|
|
7968
|
+
}
|
|
7969
|
+
),
|
|
7926
7970
|
!disabled && hasFiles && /* @__PURE__ */ jsxRuntime.jsx(SGhostButton, { icon: "close", size: "xxs", ariaLabel: "clear", onClick: clear })
|
|
7927
7971
|
]
|
|
7928
7972
|
}
|
|
7929
7973
|
);
|
|
7930
|
-
const
|
|
7931
|
-
|
|
7932
|
-
|
|
7933
|
-
|
|
7934
|
-
|
|
7935
|
-
|
|
7936
|
-
|
|
7937
|
-
|
|
7938
|
-
|
|
7939
|
-
|
|
7940
|
-
|
|
7941
|
-
|
|
7942
|
-
|
|
7943
|
-
|
|
7944
|
-
|
|
7974
|
+
const content = showListbox ? /* @__PURE__ */ jsxRuntime.jsxs(Ariakit__namespace.PopoverProvider, { open: listOpen, setOpen: setListOpen, placement: "bottom-start", children: [
|
|
7975
|
+
contentInner,
|
|
7976
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7977
|
+
Ariakit__namespace.Popover,
|
|
7978
|
+
{
|
|
7979
|
+
portal: true,
|
|
7980
|
+
portalElement: portalContainer,
|
|
7981
|
+
gutter: 4,
|
|
7982
|
+
unmountOnHide: true,
|
|
7983
|
+
getAnchorRect: () => contentBoxRef.current?.getBoundingClientRect() ?? null,
|
|
7984
|
+
style: { minWidth: contentBoxRef.current?.offsetWidth },
|
|
7985
|
+
className: "z-50 box-border flex flex-col items-stretch gap-[8px] rounded-[var(--cmp-listBox-radius)] bg-[var(--cmp-listBox-bg)] p-[8px] shadow-[2px_2px_12px_2px_rgba(0,0,0,0.1)]",
|
|
7986
|
+
children: filesArr.map((f, i) => /* @__PURE__ */ jsxRuntime.jsx(SChip, { value: f.name, editable: false, onRemove: () => removeChip(i) }, i))
|
|
7987
|
+
}
|
|
7988
|
+
)
|
|
7989
|
+
] }) : contentInner;
|
|
7990
|
+
const chips = multiple && !useMultipleListBox && filesArr.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-[8px] flex flex-wrap gap-[8px]", children: filesArr.map((f, i) => /* @__PURE__ */ jsxRuntime.jsx(SChip, { value: f.name, editable: false, onRemove: () => removeChip(i) }, i)) });
|
|
7945
7991
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, style, children: [
|
|
7946
7992
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7947
7993
|
SField,
|
|
@@ -7983,7 +8029,7 @@ function SKeyValueTable({
|
|
|
7983
8029
|
if (fields.length === 0) return null;
|
|
7984
8030
|
const emit2 = (name, value) => onChange?.({ name, value });
|
|
7985
8031
|
const cellHeight = dense ? "var(--cmp-table-body-dense-height)" : "var(--cmp-table-keyValue-height)";
|
|
7986
|
-
const cellPadY = dense ? "var(--cmp-table-body-dense
|
|
8032
|
+
const cellPadY = dense ? "var(--cmp-table-body-paddingY-dense)" : "var(--cmp-table-keyValue-body-paddingY)";
|
|
7987
8033
|
const renderField = (f) => {
|
|
7988
8034
|
if (f.render) return f.render;
|
|
7989
8035
|
const opt = f.options ?? {};
|