sellmate-design-system-react 9.0.0-beta.4 → 9.0.0-beta.6
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/STree/README.md +1 -0
- package/dist/components/STree/STree.d.ts +2 -0
- package/dist/index.cjs +84 -28
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +84 -28
- package/dist/index.js.map +1 -1
- package/dist/llms-full.txt +1 -0
- package/dist/styles.css +23 -6
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4595,18 +4595,19 @@ function collectSelectableIds(node) {
|
|
|
4595
4595
|
function toSelectedSet(value) {
|
|
4596
4596
|
return new Set(value ?? []);
|
|
4597
4597
|
}
|
|
4598
|
-
|
|
4599
|
-
|
|
4600
|
-
|
|
4598
|
+
var TREE_ALL_NODE = { id: "__all__", label: "\uC804\uCCB4" };
|
|
4599
|
+
function getSelectionState(node, selectedSet, cascadeSelection) {
|
|
4600
|
+
if (!cascadeSelection) {
|
|
4601
|
+
return { selected: selectedSet.has(node.id), indeterminate: false };
|
|
4601
4602
|
}
|
|
4602
4603
|
const selectableChildren = (node.children ?? []).filter(
|
|
4603
4604
|
(child) => collectSelectableIds(child).length > 0
|
|
4604
4605
|
);
|
|
4605
4606
|
if (selectableChildren.length === 0) {
|
|
4606
|
-
return { selected:
|
|
4607
|
+
return { selected: selectedSet.has(node.id), indeterminate: false };
|
|
4607
4608
|
}
|
|
4608
4609
|
const childStates = selectableChildren.map(
|
|
4609
|
-
(child) => getSelectionState(child, selectedSet)
|
|
4610
|
+
(child) => getSelectionState(child, selectedSet, cascadeSelection)
|
|
4610
4611
|
);
|
|
4611
4612
|
const selectedCount = childStates.filter((state2) => state2.selected).length;
|
|
4612
4613
|
return {
|
|
@@ -4651,6 +4652,40 @@ function TreeConnector({
|
|
|
4651
4652
|
] })
|
|
4652
4653
|
] });
|
|
4653
4654
|
}
|
|
4655
|
+
function STreeAllItem({
|
|
4656
|
+
selected,
|
|
4657
|
+
indeterminate,
|
|
4658
|
+
border,
|
|
4659
|
+
onSelect
|
|
4660
|
+
}) {
|
|
4661
|
+
const checkboxValue = indeterminate ? null : selected;
|
|
4662
|
+
return /* @__PURE__ */ jsx(
|
|
4663
|
+
"div",
|
|
4664
|
+
{
|
|
4665
|
+
role: "treeitem",
|
|
4666
|
+
"aria-level": 1,
|
|
4667
|
+
"aria-selected": selected,
|
|
4668
|
+
onClick: onSelect,
|
|
4669
|
+
className: cn(
|
|
4670
|
+
"group/tree-item box-border flex h-[32px] w-full cursor-pointer items-center overflow-hidden bg-(--cmp-tree-item-bg-default) px-(--cmp-tree-item-paddingX) text-left hover:bg-(--cmp-tree-item-bg-hover)",
|
|
4671
|
+
border && "border-b border-(--cmp-tree-item-border-default)"
|
|
4672
|
+
),
|
|
4673
|
+
children: /* @__PURE__ */ jsxs("div", { className: "box-border flex h-full min-w-0 flex-1 items-center gap-(--cmp-tree-item-contentGap) py-(--cmp-tree-item-paddingY)", children: [
|
|
4674
|
+
/* @__PURE__ */ jsx("span", { onClick: (event) => event.stopPropagation(), className: "flex shrink-0", children: /* @__PURE__ */ jsx(SCheckbox, { value: checkboxValue, onValueChange: () => onSelect() }) }),
|
|
4675
|
+
/* @__PURE__ */ jsx(
|
|
4676
|
+
"span",
|
|
4677
|
+
{
|
|
4678
|
+
className: cn(
|
|
4679
|
+
"block min-w-0 flex-1 truncate text-[14px] leading-[24px]",
|
|
4680
|
+
selected || indeterminate ? "font-bold text-(--cmp-tree-item-text-selected)" : "font-medium text-(--cmp-tree-item-text-default)"
|
|
4681
|
+
),
|
|
4682
|
+
children: "\uC804\uCCB4"
|
|
4683
|
+
}
|
|
4684
|
+
)
|
|
4685
|
+
] })
|
|
4686
|
+
}
|
|
4687
|
+
);
|
|
4688
|
+
}
|
|
4654
4689
|
var STreeItemImpl = /* @__PURE__ */ forwardRef(function STreeItem({
|
|
4655
4690
|
node,
|
|
4656
4691
|
depth = 1,
|
|
@@ -4701,7 +4736,7 @@ var STreeItemImpl = /* @__PURE__ */ forwardRef(function STreeItem({
|
|
|
4701
4736
|
"aria-disabled": node.disabled || void 0,
|
|
4702
4737
|
onClick: handleRowClick,
|
|
4703
4738
|
className: cn(
|
|
4704
|
-
"group/tree-item flex
|
|
4739
|
+
"group/tree-item box-border flex h-[32px] w-full items-center gap-(--cmp-tree-item-rowGap) overflow-hidden bg-(--cmp-tree-item-bg-default) px-(--cmp-tree-item-paddingX) text-left",
|
|
4705
4740
|
border && "border-b border-(--cmp-tree-item-border-default)",
|
|
4706
4741
|
!node.disabled && "hover:bg-(--cmp-tree-item-bg-hover)",
|
|
4707
4742
|
node.disabled && "cursor-not-allowed opacity-60",
|
|
@@ -4720,7 +4755,7 @@ var STreeItemImpl = /* @__PURE__ */ forwardRef(function STreeItem({
|
|
|
4720
4755
|
ancestorLast
|
|
4721
4756
|
}
|
|
4722
4757
|
),
|
|
4723
|
-
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-(--cmp-tree-item-contentGap) py-(--cmp-tree-item-paddingY)", children: [
|
|
4758
|
+
/* @__PURE__ */ jsxs("div", { className: "box-border flex h-full min-w-0 flex-1 items-center gap-(--cmp-tree-item-contentGap) py-(--cmp-tree-item-paddingY)", children: [
|
|
4724
4759
|
hasChildren ? /* @__PURE__ */ jsx(
|
|
4725
4760
|
SGhostButton,
|
|
4726
4761
|
{
|
|
@@ -4756,25 +4791,17 @@ var STreeItemImpl = /* @__PURE__ */ forwardRef(function STreeItem({
|
|
|
4756
4791
|
/* @__PURE__ */ jsx(
|
|
4757
4792
|
"span",
|
|
4758
4793
|
{
|
|
4794
|
+
onClick: (event) => {
|
|
4795
|
+
if (!selectable) return;
|
|
4796
|
+
event.stopPropagation();
|
|
4797
|
+
if (!node.disabled && selectable) onTreeSelect?.(node, event);
|
|
4798
|
+
},
|
|
4759
4799
|
className: cn(
|
|
4760
|
-
"min-w-0 flex-1 text-[14px] leading-[24px]",
|
|
4761
|
-
selected || indeterminate ? "font-bold text-(--cmp-tree-item-text-selected)" : "font-medium text-(--cmp-tree-item-text-default)"
|
|
4800
|
+
"block min-w-0 flex-1 truncate text-[14px] leading-[24px]",
|
|
4801
|
+
selected || indeterminate ? "font-bold text-(--cmp-tree-item-text-selected)" : "font-medium text-(--cmp-tree-item-text-default)",
|
|
4802
|
+
node.disabled ? "cursor-not-allowed" : selectable ? "cursor-pointer" : void 0
|
|
4762
4803
|
),
|
|
4763
|
-
children:
|
|
4764
|
-
"span",
|
|
4765
|
-
{
|
|
4766
|
-
onClick: (event) => {
|
|
4767
|
-
if (!selectable) return;
|
|
4768
|
-
event.stopPropagation();
|
|
4769
|
-
if (!node.disabled && selectable) onTreeSelect?.(node, event);
|
|
4770
|
-
},
|
|
4771
|
-
className: cn(
|
|
4772
|
-
"inline-block max-w-full truncate",
|
|
4773
|
-
node.disabled ? "cursor-not-allowed" : selectable ? "cursor-pointer" : void 0
|
|
4774
|
-
),
|
|
4775
|
-
children: node.label
|
|
4776
|
-
}
|
|
4777
|
-
)
|
|
4804
|
+
children: node.label
|
|
4778
4805
|
}
|
|
4779
4806
|
),
|
|
4780
4807
|
trailingNode
|
|
@@ -4791,6 +4818,7 @@ var STreeImpl = /* @__PURE__ */ forwardRef(function STree({
|
|
|
4791
4818
|
expandedIds,
|
|
4792
4819
|
defaultExpandedIds,
|
|
4793
4820
|
selectable = true,
|
|
4821
|
+
useAll = false,
|
|
4794
4822
|
cascadeSelection = true,
|
|
4795
4823
|
guideline = true,
|
|
4796
4824
|
border = true,
|
|
@@ -4809,6 +4837,11 @@ var STreeImpl = /* @__PURE__ */ forwardRef(function STree({
|
|
|
4809
4837
|
const currentExpandedIds = expandedIds ?? internalExpandedIds;
|
|
4810
4838
|
const selectedSet = useMemo(() => toSelectedSet(currentValue), [currentValue]);
|
|
4811
4839
|
const expandedSet = useMemo(() => new Set(currentExpandedIds), [currentExpandedIds]);
|
|
4840
|
+
const selectableIds = useMemo(() => items.flatMap(collectSelectableIds), [items]);
|
|
4841
|
+
const allSelected = selectableIds.length > 0 && selectableIds.every((id) => selectedSet.has(id));
|
|
4842
|
+
const someSelected = selectableIds.some((id) => selectedSet.has(id));
|
|
4843
|
+
const allIndeterminate = someSelected && !allSelected;
|
|
4844
|
+
const showAllItem = selectable && useAll;
|
|
4812
4845
|
const updateExpanded = (node) => {
|
|
4813
4846
|
const next = new Set(currentExpandedIds);
|
|
4814
4847
|
if (next.has(node.id)) next.delete(node.id);
|
|
@@ -4820,7 +4853,7 @@ var STreeImpl = /* @__PURE__ */ forwardRef(function STree({
|
|
|
4820
4853
|
const updateSelected = (node) => {
|
|
4821
4854
|
if (node.disabled) return;
|
|
4822
4855
|
const targetIds = cascadeSelection ? collectSelectableIds(node) : [node.id];
|
|
4823
|
-
const everySelected = getSelectionState(node, selectedSet).selected;
|
|
4856
|
+
const everySelected = getSelectionState(node, selectedSet, cascadeSelection).selected;
|
|
4824
4857
|
const next = new Set(selectedSet);
|
|
4825
4858
|
targetIds.forEach((id) => {
|
|
4826
4859
|
if (everySelected) next.delete(id);
|
|
@@ -4830,10 +4863,22 @@ var STreeImpl = /* @__PURE__ */ forwardRef(function STree({
|
|
|
4830
4863
|
if (value === void 0) setInternalValue(orderedIds);
|
|
4831
4864
|
onValueChange?.(orderedIds, node);
|
|
4832
4865
|
};
|
|
4866
|
+
const updateAllSelected = (event) => {
|
|
4867
|
+
event?.stopPropagation();
|
|
4868
|
+
if (selectableIds.length === 0) return;
|
|
4869
|
+
const next = new Set(selectedSet);
|
|
4870
|
+
selectableIds.forEach((id) => {
|
|
4871
|
+
if (allSelected) next.delete(id);
|
|
4872
|
+
else next.add(id);
|
|
4873
|
+
});
|
|
4874
|
+
const orderedIds = collectIds(items).filter((id) => next.has(id));
|
|
4875
|
+
if (value === void 0) setInternalValue(orderedIds);
|
|
4876
|
+
onValueChange?.(orderedIds, TREE_ALL_NODE);
|
|
4877
|
+
};
|
|
4833
4878
|
const renderNodes = (nodes, depth = 1, ancestorLast = []) => nodes.map((node, index) => {
|
|
4834
4879
|
const isLast = index === nodes.length - 1;
|
|
4835
4880
|
const isExpanded = expandedSet.has(node.id);
|
|
4836
|
-
const { selected, indeterminate } = getSelectionState(node, selectedSet);
|
|
4881
|
+
const { selected, indeterminate } = getSelectionState(node, selectedSet, cascadeSelection);
|
|
4837
4882
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
4838
4883
|
/* @__PURE__ */ jsx(
|
|
4839
4884
|
STreeItem2,
|
|
@@ -4867,14 +4912,25 @@ var STreeImpl = /* @__PURE__ */ forwardRef(function STree({
|
|
|
4867
4912
|
) : null
|
|
4868
4913
|
] }, node.id);
|
|
4869
4914
|
});
|
|
4870
|
-
return /* @__PURE__ */
|
|
4915
|
+
return /* @__PURE__ */ jsxs(
|
|
4871
4916
|
"div",
|
|
4872
4917
|
{
|
|
4873
4918
|
ref,
|
|
4874
4919
|
role: "tree",
|
|
4875
4920
|
className: cn("flex w-full flex-col items-start bg-(--cmp-tree-item-bg-default)", className),
|
|
4876
4921
|
...rest,
|
|
4877
|
-
children:
|
|
4922
|
+
children: [
|
|
4923
|
+
showAllItem && /* @__PURE__ */ jsx(
|
|
4924
|
+
STreeAllItem,
|
|
4925
|
+
{
|
|
4926
|
+
selected: allSelected,
|
|
4927
|
+
indeterminate: allIndeterminate,
|
|
4928
|
+
border,
|
|
4929
|
+
onSelect: updateAllSelected
|
|
4930
|
+
}
|
|
4931
|
+
),
|
|
4932
|
+
renderNodes(items)
|
|
4933
|
+
]
|
|
4878
4934
|
}
|
|
4879
4935
|
);
|
|
4880
4936
|
});
|