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
|
@@ -3128,7 +3128,7 @@ var STooltip = forwardRef(function STooltip2({
|
|
|
3128
3128
|
if (disabled || body == null) return /* @__PURE__ */ jsx(Fragment, { children: triggerNode });
|
|
3129
3129
|
const isHover = trigger === "hover";
|
|
3130
3130
|
const contentClass = cn(
|
|
3131
|
-
"z-50 max-w-xs rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px]
|
|
3131
|
+
"z-50 max-w-xs rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px]",
|
|
3132
3132
|
FLOATING_SLIDE_ANIM,
|
|
3133
3133
|
className
|
|
3134
3134
|
);
|
|
@@ -4471,7 +4471,7 @@ function ItemList({
|
|
|
4471
4471
|
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",
|
|
4472
4472
|
// 하위가 전부 비활성이면(select.config 에서 bubble-up) 어미 그룹도 비활성 처리:
|
|
4473
4473
|
// 텍스트는 회색(#888), depth1 그룹은 파란 배경 대신 회색(#EEE)으로 (depth2 는 #F6F6F6 유지)
|
|
4474
|
-
o.disabled && "text-[color:var(--cmp-listItem-content-disabled)]",
|
|
4474
|
+
o.disabled && "cursor-not-allowed text-[color:var(--cmp-listItem-content-disabled)]",
|
|
4475
4475
|
o.disabled && isDepth1 && "bg-[var(--cmp-listItem-depth1-bg-disabled)]"
|
|
4476
4476
|
),
|
|
4477
4477
|
style: { paddingLeft: padLeft },
|
|
@@ -4486,10 +4486,14 @@ function ItemList({
|
|
|
4486
4486
|
{
|
|
4487
4487
|
value: o.value,
|
|
4488
4488
|
disabled: o.disabled,
|
|
4489
|
+
accessibleWhenDisabled: true,
|
|
4489
4490
|
className: cn(
|
|
4490
4491
|
itemBase,
|
|
4491
4492
|
isSelected && !multi && "font-bold text-[color:var(--cmp-listItem-content-selected)]",
|
|
4492
|
-
|
|
4493
|
+
// Ariakit은 disabled 항목도 hover 시 active(data-active-item) 처리하므로,
|
|
4494
|
+
// 비활성 항목에는 hover 하이라이트를 적용하지 않아 회색 비활성 스타일을 유지한다.
|
|
4495
|
+
// (원본 Stencil의 `--focused...:not(--disabled)` 규칙과 동일한 의도)
|
|
4496
|
+
!o.disabled && activeClass
|
|
4493
4497
|
),
|
|
4494
4498
|
style: { paddingTop: 4, paddingBottom: 4, paddingRight: 12, paddingLeft: padLeft },
|
|
4495
4499
|
render: useSearch ? /* @__PURE__ */ jsx(Ariakit.ComboboxItem, {}) : void 0,
|
|
@@ -4502,7 +4506,7 @@ function ItemList({
|
|
|
4502
4506
|
"flex h-[16px] w-[16px] flex-shrink-0 items-center justify-center rounded-[2px] border border-solid",
|
|
4503
4507
|
o.disabled ? (
|
|
4504
4508
|
// 비활성: 회색 채움(#E1E1E1) + 회색 테두리(#CCCCCC)
|
|
4505
|
-
"border-[color:var(--cmp-checkbox-border-disabled)] bg-[var(--cmp-checkbox-bg-disabled)]"
|
|
4509
|
+
"cursor-not-allowed border-[color:var(--cmp-checkbox-border-disabled)] bg-[var(--cmp-checkbox-bg-disabled)]"
|
|
4506
4510
|
) : cn(
|
|
4507
4511
|
"group-data-[active-item]:border-[color:var(--cmp-checkbox-checked-border-inverse)]",
|
|
4508
4512
|
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"
|
|
@@ -4637,7 +4641,7 @@ function SRadioGroup({
|
|
|
4637
4641
|
role: "radiogroup",
|
|
4638
4642
|
className: cn(
|
|
4639
4643
|
"inline-flex",
|
|
4640
|
-
direction === "vertical" ? "flex-col gap-[
|
|
4644
|
+
direction === "vertical" ? "flex-col gap-[var(--cmp-radio-group-gap-vertical)]" : "flex-row gap-[var(--cmp-radio-group-gap-horizontal)]",
|
|
4641
4645
|
className
|
|
4642
4646
|
),
|
|
4643
4647
|
style,
|
|
@@ -5615,7 +5619,10 @@ function SFilePicker({
|
|
|
5615
5619
|
const autoId = useId();
|
|
5616
5620
|
const resolvedName = name ?? autoId;
|
|
5617
5621
|
const inputRef = useRef(null);
|
|
5622
|
+
const contentBoxRef = useRef(null);
|
|
5618
5623
|
const [ruleError, setRuleError] = useState("");
|
|
5624
|
+
const [listOpen, setListOpen] = useState(false);
|
|
5625
|
+
const portalContainer = usePortalContainer();
|
|
5619
5626
|
const files = multiple ? Array.isArray(value) ? value : [] : value && !Array.isArray(value) ? value : null;
|
|
5620
5627
|
const hasFiles = multiple ? files.length > 0 : !!files;
|
|
5621
5628
|
const displayText = !hasFiles ? placeholder : multiple ? files.map((f) => f.name).join(", ") : files.name;
|
|
@@ -5669,10 +5676,12 @@ function SFilePicker({
|
|
|
5669
5676
|
e.stopPropagation();
|
|
5670
5677
|
if (disabled) return;
|
|
5671
5678
|
onValueChange?.(multiple ? [] : null);
|
|
5679
|
+
setListOpen(false);
|
|
5672
5680
|
};
|
|
5673
5681
|
const removeChip = (i) => {
|
|
5674
5682
|
const next = files.filter((_, idx) => idx !== i);
|
|
5675
5683
|
onValueChange?.(next);
|
|
5684
|
+
if (next.length === 0) setListOpen(false);
|
|
5676
5685
|
};
|
|
5677
5686
|
const open = () => {
|
|
5678
5687
|
if (!disabled) inputRef.current?.click();
|
|
@@ -5683,9 +5692,12 @@ function SFilePicker({
|
|
|
5683
5692
|
const iconSize = size === "md" ? 20 : 16;
|
|
5684
5693
|
const gapCls = size === "md" ? "gap-[var(--cmp-filepicker-md-gap)]" : "gap-[var(--cmp-filepicker-sm-gap)]";
|
|
5685
5694
|
const inlinePlaceholder = inline && !disabled && !hasFiles;
|
|
5686
|
-
const
|
|
5695
|
+
const showListbox = multiple && useMultipleListBox;
|
|
5696
|
+
const filesArr = multiple ? files : [];
|
|
5697
|
+
const contentInner = /* @__PURE__ */ jsxs(
|
|
5687
5698
|
"div",
|
|
5688
5699
|
{
|
|
5700
|
+
ref: contentBoxRef,
|
|
5689
5701
|
className: cn("group/filepicker flex h-full w-full items-center", gapCls),
|
|
5690
5702
|
style: { padding: inline ? 0 : `0 ${padX}` },
|
|
5691
5703
|
children: [
|
|
@@ -5740,25 +5752,34 @@ function SFilePicker({
|
|
|
5740
5752
|
]
|
|
5741
5753
|
}
|
|
5742
5754
|
),
|
|
5755
|
+
showListbox && hasFiles && !disabled && /* @__PURE__ */ jsx(
|
|
5756
|
+
Ariakit.PopoverDisclosure,
|
|
5757
|
+
{
|
|
5758
|
+
render: /* @__PURE__ */ jsx(SGhostButton, { icon: "caretDown", size: "xxs", ariaLabel: "toggle file list" }),
|
|
5759
|
+
className: cn("shrink-0 transition-transform duration-150", listOpen && "rotate-180")
|
|
5760
|
+
}
|
|
5761
|
+
),
|
|
5743
5762
|
!disabled && hasFiles && /* @__PURE__ */ jsx(SGhostButton, { icon: "close", size: "xxs", ariaLabel: "clear", onClick: clear })
|
|
5744
5763
|
]
|
|
5745
5764
|
}
|
|
5746
5765
|
);
|
|
5747
|
-
const
|
|
5748
|
-
|
|
5749
|
-
|
|
5750
|
-
|
|
5751
|
-
|
|
5752
|
-
|
|
5753
|
-
|
|
5754
|
-
|
|
5755
|
-
|
|
5756
|
-
|
|
5757
|
-
|
|
5758
|
-
|
|
5759
|
-
|
|
5760
|
-
|
|
5761
|
-
|
|
5766
|
+
const content = showListbox ? /* @__PURE__ */ jsxs(Ariakit.PopoverProvider, { open: listOpen, setOpen: setListOpen, placement: "bottom-start", children: [
|
|
5767
|
+
contentInner,
|
|
5768
|
+
/* @__PURE__ */ jsx(
|
|
5769
|
+
Ariakit.Popover,
|
|
5770
|
+
{
|
|
5771
|
+
portal: true,
|
|
5772
|
+
portalElement: portalContainer,
|
|
5773
|
+
gutter: 4,
|
|
5774
|
+
unmountOnHide: true,
|
|
5775
|
+
getAnchorRect: () => contentBoxRef.current?.getBoundingClientRect() ?? null,
|
|
5776
|
+
style: { minWidth: contentBoxRef.current?.offsetWidth },
|
|
5777
|
+
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)]",
|
|
5778
|
+
children: filesArr.map((f, i) => /* @__PURE__ */ jsx(SChip, { value: f.name, editable: false, onRemove: () => removeChip(i) }, i))
|
|
5779
|
+
}
|
|
5780
|
+
)
|
|
5781
|
+
] }) : contentInner;
|
|
5782
|
+
const chips = multiple && !useMultipleListBox && filesArr.length > 0 && /* @__PURE__ */ jsx("div", { className: "mt-[8px] flex flex-wrap gap-[8px]", children: filesArr.map((f, i) => /* @__PURE__ */ jsx(SChip, { value: f.name, editable: false, onRemove: () => removeChip(i) }, i)) });
|
|
5762
5783
|
return /* @__PURE__ */ jsxs("div", { className, style, children: [
|
|
5763
5784
|
/* @__PURE__ */ jsx(
|
|
5764
5785
|
SField,
|
|
@@ -5800,7 +5821,7 @@ function SKeyValueTable({
|
|
|
5800
5821
|
if (fields.length === 0) return null;
|
|
5801
5822
|
const emit = (name, value) => onChange?.({ name, value });
|
|
5802
5823
|
const cellHeight = dense ? "var(--cmp-table-body-dense-height)" : "var(--cmp-table-keyValue-height)";
|
|
5803
|
-
const cellPadY = dense ? "var(--cmp-table-body-dense
|
|
5824
|
+
const cellPadY = dense ? "var(--cmp-table-body-paddingY-dense)" : "var(--cmp-table-keyValue-body-paddingY)";
|
|
5804
5825
|
const renderField = (f) => {
|
|
5805
5826
|
if (f.render) return f.render;
|
|
5806
5827
|
const opt = f.options ?? {};
|