@dust-tt/sparkle 0.2.203 → 0.2.204
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/cjs/components/Tree.d.ts +3 -1
- package/dist/cjs/index.js +12 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/stories/Tree.stories.d.ts +1 -2
- package/dist/esm/components/Tree.d.ts +3 -1
- package/dist/esm/index.js +12 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/stories/Tree.stories.d.ts +1 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/components/Tree.tsx +16 -2
- package/src/stories/Tree.stories.tsx +67 -29
package/package.json
CHANGED
package/src/components/Tree.tsx
CHANGED
|
@@ -58,6 +58,8 @@ interface TreeItemProps {
|
|
|
58
58
|
className?: string;
|
|
59
59
|
actions?: React.ReactNode;
|
|
60
60
|
areActionsFading?: boolean;
|
|
61
|
+
isSelected?: boolean;
|
|
62
|
+
onItemClick?: () => void;
|
|
61
63
|
}
|
|
62
64
|
|
|
63
65
|
export interface TreeItemPropsWithChildren extends TreeItemProps {
|
|
@@ -85,6 +87,8 @@ Tree.Item = function ({
|
|
|
85
87
|
areActionsFading = true,
|
|
86
88
|
renderTreeItems,
|
|
87
89
|
children,
|
|
90
|
+
isSelected = false,
|
|
91
|
+
onItemClick,
|
|
88
92
|
}: TreeItemPropsWithChildren | TreeItemPropsWithRender) {
|
|
89
93
|
const [collapsedState, setCollapsedState] = useState<boolean>(
|
|
90
94
|
defaultCollapsed ?? true
|
|
@@ -113,8 +117,13 @@ Tree.Item = function ({
|
|
|
113
117
|
className={classNames(
|
|
114
118
|
className ? className : "",
|
|
115
119
|
"s-group s-flex s-cursor-default s-flex-row s-items-center s-gap-4",
|
|
116
|
-
size === "sm" ? "s-py-1" : "s-py-2"
|
|
120
|
+
size === "sm" ? "s-py-1" : "s-py-2",
|
|
121
|
+
onItemClick ? "s-cursor-pointer" : "",
|
|
122
|
+
isSelected
|
|
123
|
+
? "s-rounded-md s-border s-border-neutral-200 s-bg-white"
|
|
124
|
+
: ""
|
|
117
125
|
)}
|
|
126
|
+
onClick={onItemClick ? onItemClick : undefined}
|
|
118
127
|
>
|
|
119
128
|
{type === "node" && (
|
|
120
129
|
<IconButton
|
|
@@ -125,7 +134,12 @@ Tree.Item = function ({
|
|
|
125
134
|
}
|
|
126
135
|
size="sm"
|
|
127
136
|
variant="secondary"
|
|
128
|
-
onClick={
|
|
137
|
+
onClick={(e) => {
|
|
138
|
+
e.stopPropagation();
|
|
139
|
+
if (effectiveOnChevronClick) {
|
|
140
|
+
effectiveOnChevronClick();
|
|
141
|
+
}
|
|
142
|
+
}}
|
|
129
143
|
/>
|
|
130
144
|
)}
|
|
131
145
|
{type === "leaf" && <div className="s-w-5"></div>}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { Meta } from "@storybook/react";
|
|
2
2
|
import React from "react";
|
|
3
|
-
import { v4 as uuidv4 } from "uuid";
|
|
4
3
|
|
|
5
4
|
import { Dust } from "@sparkle/icons/solid";
|
|
6
5
|
|
|
@@ -33,7 +32,7 @@ export const TreeExample = () => {
|
|
|
33
32
|
<div className="s-text-xl">Tree</div>
|
|
34
33
|
<div>
|
|
35
34
|
<Tree isBoxed>
|
|
36
|
-
<Tree.Item label="item 1 (no children)" variant="folder" />
|
|
35
|
+
<Tree.Item label="item 1 (no children)" variant="folder" isSelected={true}/>
|
|
37
36
|
<Tree.Item label="item 2 (loading)" variant="folder">
|
|
38
37
|
<Tree isLoading />
|
|
39
38
|
</Tree.Item>
|
|
@@ -586,11 +585,76 @@ export const TreeExample = () => {
|
|
|
586
585
|
</Tree>
|
|
587
586
|
</div>
|
|
588
587
|
</div>
|
|
588
|
+
<DummyNavBar/>
|
|
589
589
|
</div>
|
|
590
590
|
</div>
|
|
591
591
|
);
|
|
592
592
|
};
|
|
593
593
|
|
|
594
|
+
export const DummyNavBar = () => {
|
|
595
|
+
return <div className="s-flex s-flex-col s-gap-3">
|
|
596
|
+
<div className="s-text-xl">Nav bar</div>
|
|
597
|
+
<div>
|
|
598
|
+
<Tree isBoxed>
|
|
599
|
+
<Tree.Item
|
|
600
|
+
label="Intercom"
|
|
601
|
+
visual={<IntercomLogo />}
|
|
602
|
+
onItemClick={() => console.log("Clickable")}
|
|
603
|
+
isSelected={true}
|
|
604
|
+
>
|
|
605
|
+
<Tree>
|
|
606
|
+
<Tree.Item
|
|
607
|
+
type="leaf"
|
|
608
|
+
label="item 1"
|
|
609
|
+
checkbox={{
|
|
610
|
+
variant: "checkable",
|
|
611
|
+
checked: false,
|
|
612
|
+
onChange: () => {
|
|
613
|
+
return;
|
|
614
|
+
},
|
|
615
|
+
}}
|
|
616
|
+
/>
|
|
617
|
+
<Tree.Item
|
|
618
|
+
label="item 2"
|
|
619
|
+
type="leaf"
|
|
620
|
+
checkbox={{
|
|
621
|
+
variant: "checkable",
|
|
622
|
+
checked: false,
|
|
623
|
+
onChange: () => {
|
|
624
|
+
return;
|
|
625
|
+
},
|
|
626
|
+
}}
|
|
627
|
+
/>
|
|
628
|
+
<Tree.Item
|
|
629
|
+
label="item 3"
|
|
630
|
+
type="leaf"
|
|
631
|
+
checkbox={{
|
|
632
|
+
variant: "checkable",
|
|
633
|
+
checked: false,
|
|
634
|
+
onChange: () => {
|
|
635
|
+
return;
|
|
636
|
+
},
|
|
637
|
+
}}
|
|
638
|
+
/>
|
|
639
|
+
</Tree>
|
|
640
|
+
</Tree.Item>
|
|
641
|
+
<Tree.Item
|
|
642
|
+
label="Notion"
|
|
643
|
+
visual={<NotionLogo />}
|
|
644
|
+
/>
|
|
645
|
+
<Tree.Item
|
|
646
|
+
label="Slack"
|
|
647
|
+
visual={<SlackLogo />}
|
|
648
|
+
/>
|
|
649
|
+
<Tree.Item
|
|
650
|
+
label="Dust"
|
|
651
|
+
visual={<Dust />}
|
|
652
|
+
/>
|
|
653
|
+
</Tree>
|
|
654
|
+
</div>
|
|
655
|
+
</div>;
|
|
656
|
+
}
|
|
657
|
+
|
|
594
658
|
export const SelectDataSourceExample = () => {
|
|
595
659
|
return (
|
|
596
660
|
<div className="s-flex s-w-full s-flex-col s-gap-10">
|
|
@@ -838,30 +902,4 @@ const createTreeItems = (n = 5, getLabel: () => string) => {
|
|
|
838
902
|
}
|
|
839
903
|
|
|
840
904
|
return <Tree>{items}</Tree>;
|
|
841
|
-
};
|
|
842
|
-
|
|
843
|
-
export const DeeplyNestedTreeWithActions = () => {
|
|
844
|
-
const getLabel = () =>
|
|
845
|
-
`${uuidv4()}-${uuidv4()}-${uuidv4()}-${uuidv4()}-${uuidv4()}-${uuidv4()}-${uuidv4()}-${uuidv4()}-${uuidv4()}-${uuidv4()}-${uuidv4()}-${uuidv4()}`;
|
|
846
|
-
return (
|
|
847
|
-
<div className="s-mx-auto s-max-w-2xl s-gap-3 s-pt-10">
|
|
848
|
-
<div className="s-pb-10 s-text-xl">Huge</div>
|
|
849
|
-
<div>
|
|
850
|
-
<Tree>{createTreeItems(20, getLabel)}</Tree>
|
|
851
|
-
</div>
|
|
852
|
-
</div>
|
|
853
|
-
);
|
|
854
|
-
};
|
|
855
|
-
|
|
856
|
-
export const SmallTreeWithActions = () => {
|
|
857
|
-
const getLabel = () =>
|
|
858
|
-
`${uuidv4().slice(0, Math.floor(Math.random() * 32) + 3)}`;
|
|
859
|
-
return (
|
|
860
|
-
<div className="s-mx-auto s-max-w-2xl s-gap-3 s-pt-10">
|
|
861
|
-
<div className="s-pb-10 s-text-xl">Huge</div>
|
|
862
|
-
<div>
|
|
863
|
-
<Tree>{createTreeItems(5, getLabel)}</Tree>
|
|
864
|
-
</div>
|
|
865
|
-
</div>
|
|
866
|
-
);
|
|
867
|
-
};
|
|
905
|
+
};
|