linkedunion-design-kit 1.9.6-beta.0 → 1.9.6-beta.1
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/build/types/validator.js +12 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/src/components/Badge/Badge.stories.d.ts +1 -1
- package/dist/src/components/Badge/Badge.stories.js +1 -1
- package/dist/src/components/Button/Button/Button.module.css +1 -1
- package/dist/src/components/Card/MultipleNews/MultiNews.js +2 -2
- package/dist/src/components/Pagination/pagination.js +7 -7
- package/dist/src/components/Skeleton/skeleton.stories.d.ts +3 -1
- package/dist/src/components/Skeleton/skeleton.stories.js +48 -38
- package/dist/src/components/Title/Title.module.css +1 -1
- package/dist/src/components/Typography/Heading/heading.module.css +1 -1
- package/dist/src/components/VerticalTabs/VerticalTabs.d.ts +18 -0
- package/dist/src/components/VerticalTabs/VerticalTabs.js +60 -0
- package/dist/src/components/VerticalTabs/VerticalTabs.stories.d.ts +11 -0
- package/dist/src/components/VerticalTabs/VerticalTabs.stories.js +100 -0
- package/dist/src/components/VerticalTabs/VerticalTabs.test.d.ts +1 -0
- package/dist/src/components/VerticalTabs/VerticalTabs.test.js +48 -0
- package/dist/styles/global.css +118 -6
- package/package.json +2 -2
- package/dist/app/layout.jsx +0 -13
- package/dist/app/page.jsx +0 -5
- package/dist/src/components/Accordion/Accordion.stories.jsx +0 -33
- package/dist/src/components/Accordion/accordion.jsx +0 -59
- package/dist/src/components/Alerts/Alert/alert.jsx +0 -152
- package/dist/src/components/Alerts/Alert/alert.stories.jsx +0 -344
- package/dist/src/components/Alerts/AlertDialog/alert-dialog.jsx +0 -170
- package/dist/src/components/Alerts/AlertDialog/alert-dialog.stories.jsx +0 -552
- package/dist/src/components/AppIcons/AndroidIcon.jsx +0 -24
- package/dist/src/components/AppIcons/AppIcon.jsx +0 -29
- package/dist/src/components/AppIcons/AppIcon.stories.jsx +0 -223
- package/dist/src/components/AppIcons/AppleIcon.jsx +0 -31
- package/dist/src/components/AppIcons/PlayStoreIcon.jsx +0 -29
- package/dist/src/components/Avatar/Avatar/Avatar.jsx +0 -45
- package/dist/src/components/Avatar/Avatar/Avatar.stories.jsx +0 -95
- package/dist/src/components/Avatar/Avatar/Avatar.test.jsx +0 -9
- package/dist/src/components/Avatar/Avatar/type.d.ts +0 -12
- package/dist/src/components/Avatar/AvatarGroup/AvatarGroup.jsx +0 -17
- package/dist/src/components/Avatar/AvatarGroup/AvatarGroup.stories.jsx +0 -32
- package/dist/src/components/Avatar/StatusIndicator/StatusIndicator.jsx +0 -20
- package/dist/src/components/Avatar/StatusIndicator/StatusIndicator.stories.jsx +0 -50
- package/dist/src/components/Badge/Badge.jsx +0 -54
- package/dist/src/components/Badge/Badge.stories.jsx +0 -201
- package/dist/src/components/Button/Button/Button.jsx +0 -96
- package/dist/src/components/Button/Button/Button.stories.jsx +0 -283
- package/dist/src/components/Button/Button/Button.test.jsx +0 -73
- package/dist/src/components/Button/IconButton/IconButton.jsx +0 -63
- package/dist/src/components/Button/IconButton/IconButton.stories.jsx +0 -128
- package/dist/src/components/Button/IconButton/IconButton.test.jsx +0 -28
- package/dist/src/components/Card/MultipleNews/MultiNews.jsx +0 -70
- package/dist/src/components/Card/MultipleNews/MultiNews.stories.jsx +0 -101
- package/dist/src/components/Card/PostByCategory/PostByCategory.jsx +0 -60
- package/dist/src/components/Card/PostByCategory/PostByCategory.stories.jsx +0 -102
- package/dist/src/components/Card/SinglePost/SinglePost.jsx +0 -26
- package/dist/src/components/Card/SinglePost/SinglePost.stories.jsx +0 -63
- package/dist/src/components/Card/card.jsx +0 -20
- package/dist/src/components/Card/contactProfile/ContactProfile.jsx +0 -60
- package/dist/src/components/Card/contactProfile/ContactProfile.stories.jsx +0 -99
- package/dist/src/components/Card/photoAlbum/PhotoAlbum.jsx +0 -41
- package/dist/src/components/Card/photoAlbum/PhotoAlbum.stories.jsx +0 -51
- package/dist/src/components/Card/photoGallery/PhotoGallery.jsx +0 -17
- package/dist/src/components/Card/photoGallery/PhotoGallery.stories.jsx +0 -34
- package/dist/src/components/Checkbox/checkbox.jsx +0 -47
- package/dist/src/components/Checkbox/checkbox.stories.jsx +0 -113
- package/dist/src/components/ColorPicker/ColorPicker.jsx +0 -67
- package/dist/src/components/ColorPicker/ColorPicker.stories.jsx +0 -138
- package/dist/src/components/Colors/color.jsx +0 -5
- package/dist/src/components/Colors/color.stories.jsx +0 -20
- package/dist/src/components/Colors/color.test.jsx +0 -23
- package/dist/src/components/Dropdown/Combobox/Combobox.jsx +0 -198
- package/dist/src/components/Dropdown/Combobox/Combobox.stories.jsx +0 -289
- package/dist/src/components/Dropdown/Combobox/utils/renderBadge.jsx +0 -7
- package/dist/src/components/Dropdown/DropdownMenu/DropdownMenu.jsx +0 -102
- package/dist/src/components/Dropdown/DropdownMenu/DropdownMenu.stories.jsx +0 -464
- package/dist/src/components/Dropdown/DropdownMenu/SelectAllSection.jsx +0 -19
- package/dist/src/components/Dropdown/Select.stories.jsx +0 -201
- package/dist/src/components/Dropdown/select.jsx +0 -93
- package/dist/src/components/Icons/LUIcon.jsx +0 -41
- package/dist/src/components/Icons/LUIcon.test.jsx +0 -308
- package/dist/src/components/Icons/stories/IconDropdown.jsx +0 -67
- package/dist/src/components/Icons/stories/IconGallery.jsx +0 -77
- package/dist/src/components/Icons/stories/InteractiveIconSelector.jsx +0 -86
- package/dist/src/components/Icons/stories/LUIcon.stories.jsx +0 -108
- package/dist/src/components/ImageUploader/ImageUploader.stories.jsx +0 -50
- package/dist/src/components/ImageUploader/imageUploader.jsx +0 -94
- package/dist/src/components/Images/LuImage.jsx +0 -19
- package/dist/src/components/Images/LuImage.stories.jsx +0 -154
- package/dist/src/components/Images/LuImage.test.jsx +0 -44
- package/dist/src/components/Input/Input.stories.jsx +0 -250
- package/dist/src/components/Input/input.jsx +0 -110
- package/dist/src/components/Label/Label.jsx +0 -32
- package/dist/src/components/Label/Label.stories.jsx +0 -30
- package/dist/src/components/Pagination/pagination.jsx +0 -65
- package/dist/src/components/Pagination/pagination.stories.jsx +0 -301
- package/dist/src/components/RadioGroup/RadioGroup.stories.jsx +0 -146
- package/dist/src/components/RadioGroup/radio-group.jsx +0 -49
- package/dist/src/components/Slider/Slider.stories.jsx +0 -159
- package/dist/src/components/Slider/slider.jsx +0 -31
- package/dist/src/components/SweetAlert/SweetAlert.jsx +0 -147
- package/dist/src/components/SweetAlert/SweetAlert.stories.jsx +0 -505
- package/dist/src/components/Switch/Switch.stories.jsx +0 -66
- package/dist/src/components/Switch/switch.jsx +0 -61
- package/dist/src/components/Table/Table.jsx +0 -221
- package/dist/src/components/Table/Table.stories.jsx +0 -652
- package/dist/src/components/Tabs/Tabs.stories.jsx +0 -29
- package/dist/src/components/Tabs/tabs.jsx +0 -32
- package/dist/src/components/Title/Title.jsx +0 -8
- package/dist/src/components/Title/Title.stories.jsx +0 -37
- package/dist/src/components/Title/Title.test.jsx +0 -24
- package/dist/src/components/ToolTip/Tooltip.jsx +0 -18
- package/dist/src/components/ToolTip/Tooltip.stories.jsx +0 -25
- package/dist/src/components/Typography/Body/Body.stories.jsx +0 -34
- package/dist/src/components/Typography/Body/body.jsx +0 -52
- package/dist/src/components/Typography/Caption/Caption.stories.jsx +0 -24
- package/dist/src/components/Typography/Caption/caption.jsx +0 -25
- package/dist/src/components/Typography/Display/Display.stories.jsx +0 -24
- package/dist/src/components/Typography/Display/display.jsx +0 -39
- package/dist/src/components/Typography/Heading/Heading.stories.jsx +0 -37
- package/dist/src/components/Typography/Heading/heading.jsx +0 -53
- package/dist/src/components/ui/avatar.d.ts +0 -6
- package/dist/src/components/ui/avatar.js +0 -38
- package/dist/src/components/ui/avatar.jsx +0 -27
- package/dist/src/components/ui/button.d.ts +0 -10
- package/dist/src/components/ui/button.js +0 -56
- package/dist/src/components/ui/button.jsx +0 -45
- package/dist/src/components/ui/collapsible.jsx +0 -5
- package/dist/src/components/ui/command.jsx +0 -67
- package/dist/src/components/ui/dialog.jsx +0 -66
- package/dist/src/components/ui/popover.jsx +0 -33
- package/dist/src/components/ui/tooltip.jsx +0 -38
- package/dist/src/components/ui/typography.jsx +0 -56
- /package/dist/{src/components/Avatar/Avatar/type.js → build/types/validator.d.ts} +0 -0
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import ColorPicker from "./ColorPicker";
|
|
2
|
-
import { Label } from "../Label/Label";
|
|
3
|
-
import { inputVariantConfig } from "../Input/input";
|
|
4
|
-
export default {
|
|
5
|
-
title: "Components/ColorPicker",
|
|
6
|
-
component: ColorPicker,
|
|
7
|
-
tags: ["autodocs"],
|
|
8
|
-
argTypes: {
|
|
9
|
-
size: {
|
|
10
|
-
control: "select",
|
|
11
|
-
options: Object.keys(inputVariantConfig.size),
|
|
12
|
-
},
|
|
13
|
-
variant: {
|
|
14
|
-
control: "select",
|
|
15
|
-
options: Object.keys(inputVariantConfig.variant),
|
|
16
|
-
},
|
|
17
|
-
color: {
|
|
18
|
-
control: "select",
|
|
19
|
-
options: Object.keys(inputVariantConfig.color),
|
|
20
|
-
},
|
|
21
|
-
shape: {
|
|
22
|
-
control: "select",
|
|
23
|
-
options: Object.keys(inputVariantConfig.shape),
|
|
24
|
-
},
|
|
25
|
-
value: {
|
|
26
|
-
control: "color",
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
};
|
|
30
|
-
var Template = function (args) { return <ColorPicker {...args}/>; };
|
|
31
|
-
export var Default = Template.bind({});
|
|
32
|
-
Default.args = {
|
|
33
|
-
// Blue color
|
|
34
|
-
onChange: function (color) {
|
|
35
|
-
console.log("Selected color:", color);
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
|
-
export var Sizes = function () { return (<div className="space-y-4">
|
|
39
|
-
<div>
|
|
40
|
-
<Label variant="label-sm">Small</Label>
|
|
41
|
-
<ColorPicker size="sm" value="#ef4444" onChange={function (color) { return console.log("Small:", color); }}/>
|
|
42
|
-
</div>
|
|
43
|
-
<div>
|
|
44
|
-
<Label variant="label-sm">Medium</Label>
|
|
45
|
-
<ColorPicker size="md" value="#10b981" onChange={function (color) { return console.log("Medium:", color); }}/>
|
|
46
|
-
</div>
|
|
47
|
-
<div>
|
|
48
|
-
<Label variant="label-sm">Large</Label>
|
|
49
|
-
<ColorPicker size="lg" value="#8b5cf6" onChange={function (color) { return console.log("Large:", color); }}/>
|
|
50
|
-
</div>
|
|
51
|
-
</div>); };
|
|
52
|
-
export var Variants = function () { return (<div className="space-y-4">
|
|
53
|
-
<div>
|
|
54
|
-
<Label variant="label-sm">Filled</Label>
|
|
55
|
-
<ColorPicker variant="filled" value="#f59e0b" onChange={function (color) { return console.log("Filled:", color); }}/>
|
|
56
|
-
</div>
|
|
57
|
-
<div>
|
|
58
|
-
<Label variant="label-sm">Outlined</Label>
|
|
59
|
-
<ColorPicker variant="outlined" value="#06b6d4" onChange={function (color) { return console.log("Outlined:", color); }}/>
|
|
60
|
-
</div>
|
|
61
|
-
</div>); };
|
|
62
|
-
export var Colors = function () { return (<div className="space-y-4">
|
|
63
|
-
<div>
|
|
64
|
-
<Label variant="label-sm">Default</Label>
|
|
65
|
-
<ColorPicker color="default" value="#6366f1" onChange={function (color) { return console.log("Default:", color); }}/>
|
|
66
|
-
</div>
|
|
67
|
-
<div>
|
|
68
|
-
<Label variant="label-sm">Danger</Label>
|
|
69
|
-
<ColorPicker color="danger" value="#dc2626" onChange={function (color) { return console.log("Danger:", color); }}/>
|
|
70
|
-
</div>
|
|
71
|
-
<div>
|
|
72
|
-
<Label variant="label-sm">Warning</Label>
|
|
73
|
-
<ColorPicker color="warning" value="#d97706" onChange={function (color) { return console.log("Warning:", color); }}/>
|
|
74
|
-
</div>
|
|
75
|
-
<div>
|
|
76
|
-
<Label variant="label-sm">Success</Label>
|
|
77
|
-
<ColorPicker color="success" value="#059669" onChange={function (color) { return console.log("Success:", color); }}/>
|
|
78
|
-
</div>
|
|
79
|
-
</div>); };
|
|
80
|
-
export var Shapes = function () { return (<div className="space-y-4">
|
|
81
|
-
<div>
|
|
82
|
-
<Label variant="label-sm">Square</Label>
|
|
83
|
-
<ColorPicker shape="square" value="#ec4899" onChange={function (color) { return console.log("Square:", color); }}/>
|
|
84
|
-
</div>
|
|
85
|
-
<div>
|
|
86
|
-
<Label variant="label-sm">Rounded</Label>
|
|
87
|
-
<ColorPicker shape="rounded" value="#14b8a6" onChange={function (color) { return console.log("Rounded:", color); }}/>
|
|
88
|
-
</div>
|
|
89
|
-
</div>); };
|
|
90
|
-
export var AllCombinations = function () { return (<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
91
|
-
<div>
|
|
92
|
-
<Label variant="label-sm">Small + Filled + Danger + Rounded</Label>
|
|
93
|
-
<ColorPicker size="sm" variant="filled" color="danger" shape="rounded" value="#ef4444" onChange={function (color) { return console.log("Combo 1:", color); }}/>
|
|
94
|
-
</div>
|
|
95
|
-
<div>
|
|
96
|
-
<Label variant="label-sm">Medium + Outlined + Success + Square</Label>
|
|
97
|
-
<ColorPicker size="md" variant="outlined" color="success" shape="square" value="#10b981" onChange={function (color) { return console.log("Combo 2:", color); }}/>
|
|
98
|
-
</div>
|
|
99
|
-
<div>
|
|
100
|
-
<Label variant="label-sm">Large + Filled + Warning + Rounded</Label>
|
|
101
|
-
<ColorPicker size="lg" variant="filled" color="warning" shape="rounded" value="#f59e0b" onChange={function (color) { return console.log("Combo 3:", color); }}/>
|
|
102
|
-
</div>
|
|
103
|
-
<div>
|
|
104
|
-
<Label variant="label-sm">Small + Outlined + Default + Square</Label>
|
|
105
|
-
<ColorPicker size="sm" variant="outlined" color="default" shape="square" value="#6366f1" onChange={function (color) { return console.log("Combo 4:", color); }}/>
|
|
106
|
-
</div>
|
|
107
|
-
<div>
|
|
108
|
-
<Label variant="label-sm">Large + Outlined + Danger + Rounded</Label>
|
|
109
|
-
<ColorPicker size="lg" variant="outlined" color="danger" shape="rounded" value="#dc2626" onChange={function (color) { return console.log("Combo 5:", color); }}/>
|
|
110
|
-
</div>
|
|
111
|
-
<div>
|
|
112
|
-
<Label variant="label-sm">Medium + Filled + Success + Square</Label>
|
|
113
|
-
<ColorPicker size="md" variant="filled" color="success" shape="square" value="#059669" onChange={function (color) { return console.log("Combo 6:", color); }}/>
|
|
114
|
-
</div>
|
|
115
|
-
</div>); };
|
|
116
|
-
export var WithCustomClassName = Template.bind({});
|
|
117
|
-
WithCustomClassName.args = {
|
|
118
|
-
value: "#8b5cf6",
|
|
119
|
-
className: "border-2 border-purple-500 shadow-lg",
|
|
120
|
-
onChange: function (color) { return console.log("Custom styled:", color); },
|
|
121
|
-
};
|
|
122
|
-
export var Disabled = Template.bind({});
|
|
123
|
-
Disabled.args = {
|
|
124
|
-
value: "#6b7280",
|
|
125
|
-
disabled: true,
|
|
126
|
-
onChange: function (color) { return console.log("Disabled:", color); },
|
|
127
|
-
};
|
|
128
|
-
export var Playground = Template.bind({});
|
|
129
|
-
Playground.args = {
|
|
130
|
-
value: "#3b82f6",
|
|
131
|
-
size: "md",
|
|
132
|
-
variant: "filled",
|
|
133
|
-
color: "default",
|
|
134
|
-
shape: "square",
|
|
135
|
-
onChange: function (color) {
|
|
136
|
-
alert("onChange: ".concat(color));
|
|
137
|
-
},
|
|
138
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { colors } from "../../utils/colors";
|
|
2
|
-
import { Color } from "./color";
|
|
3
|
-
export default {
|
|
4
|
-
title: "Components/Color",
|
|
5
|
-
component: Color,
|
|
6
|
-
};
|
|
7
|
-
var Template = function (args) { return (<Color {...args}/>); };
|
|
8
|
-
export var _Color = Template.bind({});
|
|
9
|
-
_Color.args = {
|
|
10
|
-
color: "black", // Default color
|
|
11
|
-
};
|
|
12
|
-
_Color.argTypes = {
|
|
13
|
-
color: {
|
|
14
|
-
control: {
|
|
15
|
-
type: "select",
|
|
16
|
-
labels: Object.keys(colors),
|
|
17
|
-
},
|
|
18
|
-
options: Object.keys(colors),
|
|
19
|
-
},
|
|
20
|
-
};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { render, screen } from "@testing-library/react";
|
|
2
|
-
import { colors } from "../../utils/colors";
|
|
3
|
-
import { Color } from "./color";
|
|
4
|
-
describe("TextColor Component", function () {
|
|
5
|
-
it("renders with default color (black)", function () {
|
|
6
|
-
render(<Color />);
|
|
7
|
-
var textElement = screen.getByText("black");
|
|
8
|
-
expect(textElement).toBeInTheDocument();
|
|
9
|
-
expect(textElement).toHaveStyle({ color: colors.black });
|
|
10
|
-
});
|
|
11
|
-
it("renders with a specified color", function () {
|
|
12
|
-
render(<Color color="blue-500"/>);
|
|
13
|
-
var textElement = screen.getByText("blue-500");
|
|
14
|
-
expect(textElement).toBeInTheDocument();
|
|
15
|
-
expect(textElement).toHaveStyle({ color: colors["blue-500"] });
|
|
16
|
-
});
|
|
17
|
-
it("handles invalid color gracefully", function () {
|
|
18
|
-
render(<Color color={"invalid-color"}/>);
|
|
19
|
-
var textElement = screen.getByText("invalid-color");
|
|
20
|
-
expect(textElement).toBeInTheDocument();
|
|
21
|
-
expect(textElement).toHaveStyle({ color: colors.black }); // It should default to black
|
|
22
|
-
});
|
|
23
|
-
});
|
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
3
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
4
|
-
if (ar || !(i in from)) {
|
|
5
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
6
|
-
ar[i] = from[i];
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
|
-
};
|
|
11
|
-
import { useRef, useState, useEffect, useMemo } from "react";
|
|
12
|
-
import { cn } from "../../../lib/utils";
|
|
13
|
-
import { Badge } from "../../../components/Badge/Badge";
|
|
14
|
-
import { renderBadge } from "./utils/renderBadge";
|
|
15
|
-
import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, } from "../../../components/ui/command";
|
|
16
|
-
import { Popover, PopoverContent, PopoverTrigger, } from "../../../components/ui/popover";
|
|
17
|
-
import { Button } from "../../../components/Button/Button/Button";
|
|
18
|
-
import LUIcon from "../../../components/Icons/LUIcon";
|
|
19
|
-
import { Checkbox } from "../../../components/Checkbox/checkbox";
|
|
20
|
-
import { comboboxColor, comboboxSelectType, comboboxShapes, comboboxSizes, iconSizeMap, } from ".";
|
|
21
|
-
import { Label } from "../../../components/Label/Label";
|
|
22
|
-
import { Caption } from "../../../components/Typography/Caption/caption";
|
|
23
|
-
import { empty_message } from "../../../utils/constants";
|
|
24
|
-
import Tooltip from "../../../components/ToolTip/Tooltip";
|
|
25
|
-
import { useResponsiveBadges } from "./utils/useResponsiveBadge";
|
|
26
|
-
import { getLabelVariant } from "./utils/getLabelVariant";
|
|
27
|
-
var Combobox = function (props) {
|
|
28
|
-
var _a = props.size, size = _a === void 0 ? "md" : _a, _b = props.placeholder, placeholder = _b === void 0 ? "Select Options" : _b, _c = props.shape, shape = _c === void 0 ? "rectangular" : _c, _d = props.variant, variant = _d === void 0 ? "fill" : _d, _e = props.color, color = _e === void 0 ? "default" : _e, options = props.options, _f = props.isSearch, isSearch = _f === void 0 ? false : _f, _g = props.isMulti, isMulti = _g === void 0 ? false : _g, onSelect = props.onSelect, renderOption = props.renderOption, _h = props.disabled, disabled = _h === void 0 ? false : _h, defaultValue = props.defaultValue;
|
|
29
|
-
var _j = useState(false), open = _j[0], setOpen = _j[1];
|
|
30
|
-
var _k = useState(""), singleValue = _k[0], setSingleValue = _k[1];
|
|
31
|
-
var _l = useState([]), multiValue = _l[0], setMultiValue = _l[1];
|
|
32
|
-
var buttonRef = useRef(null);
|
|
33
|
-
var _m = useState(), popoverWidth = _m[0], setPopoverWidth = _m[1];
|
|
34
|
-
var maxVisibleBadges = useResponsiveBadges();
|
|
35
|
-
useEffect(function () {
|
|
36
|
-
if (isMulti && Array.isArray(defaultValue)) {
|
|
37
|
-
setMultiValue(defaultValue);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
setSingleValue(defaultValue);
|
|
41
|
-
}
|
|
42
|
-
}, [defaultValue, isMulti]);
|
|
43
|
-
useEffect(function () {
|
|
44
|
-
if (open && buttonRef.current) {
|
|
45
|
-
setPopoverWidth("".concat(buttonRef.current.offsetWidth, "px"));
|
|
46
|
-
}
|
|
47
|
-
}, [open]);
|
|
48
|
-
var handleSelect = function (currentValue) {
|
|
49
|
-
if (isMulti) {
|
|
50
|
-
setMultiValue(function (prev) {
|
|
51
|
-
var newValue = prev.includes(currentValue)
|
|
52
|
-
? prev.filter(function (v) { return v !== currentValue; })
|
|
53
|
-
: __spreadArray(__spreadArray([], prev, true), [currentValue], false);
|
|
54
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect(newValue);
|
|
55
|
-
return newValue;
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
var newValue = currentValue === singleValue ? "" : currentValue;
|
|
60
|
-
setSingleValue(newValue);
|
|
61
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect(newValue);
|
|
62
|
-
setOpen(false);
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
var handleSelectAll = function () {
|
|
66
|
-
if (!options)
|
|
67
|
-
return;
|
|
68
|
-
var allValues = options.map(function (option) {
|
|
69
|
-
return typeof option === "string" ? option : option.value;
|
|
70
|
-
});
|
|
71
|
-
var newValues = multiValue.length === allValues.length ? [] : allValues;
|
|
72
|
-
setMultiValue(newValues);
|
|
73
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect(newValues);
|
|
74
|
-
};
|
|
75
|
-
var getDisplay = useMemo(function () {
|
|
76
|
-
var handleRemove = function (value) {
|
|
77
|
-
if (isMulti) {
|
|
78
|
-
var newValues = multiValue.filter(function (val) { return val !== value; });
|
|
79
|
-
setMultiValue(newValues);
|
|
80
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect(newValues);
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
setSingleValue("");
|
|
84
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect("");
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
if (!options)
|
|
88
|
-
return placeholder;
|
|
89
|
-
if (isMulti) {
|
|
90
|
-
if (!multiValue.length)
|
|
91
|
-
return placeholder;
|
|
92
|
-
var selectedOptions = options.filter(function (option) {
|
|
93
|
-
return typeof option === "string"
|
|
94
|
-
? multiValue.includes(option)
|
|
95
|
-
: multiValue.includes(option.value);
|
|
96
|
-
});
|
|
97
|
-
if (selectedOptions.length <= maxVisibleBadges) {
|
|
98
|
-
return (<div className="flex flex-wrap gap-1">
|
|
99
|
-
{selectedOptions.map(function (option) {
|
|
100
|
-
return renderBadge(typeof option === "string"
|
|
101
|
-
? { key: option, value: option }
|
|
102
|
-
: option, handleRemove);
|
|
103
|
-
})}
|
|
104
|
-
</div>);
|
|
105
|
-
}
|
|
106
|
-
var remainingCount = selectedOptions.length - maxVisibleBadges;
|
|
107
|
-
var remainingOptions = selectedOptions.slice(maxVisibleBadges);
|
|
108
|
-
return (<div className="flex flex-wrap gap-1">
|
|
109
|
-
{selectedOptions
|
|
110
|
-
.slice(0, maxVisibleBadges)
|
|
111
|
-
.map(function (option) {
|
|
112
|
-
return renderBadge(typeof option === "string"
|
|
113
|
-
? { key: option, value: option }
|
|
114
|
-
: option, handleRemove);
|
|
115
|
-
})}
|
|
116
|
-
{/* TODO: Update Tooltip design */}
|
|
117
|
-
<Tooltip title={remainingOptions
|
|
118
|
-
.map(function (option) {
|
|
119
|
-
return typeof option === "string" ? option : option.key;
|
|
120
|
-
})
|
|
121
|
-
.join(", ")}>
|
|
122
|
-
<Badge color="light-blue" className="cursor-help">
|
|
123
|
-
+{remainingCount}
|
|
124
|
-
</Badge>
|
|
125
|
-
</Tooltip>
|
|
126
|
-
</div>);
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
if (!singleValue)
|
|
130
|
-
return placeholder;
|
|
131
|
-
var isMatch = function (option) {
|
|
132
|
-
return typeof option === "string"
|
|
133
|
-
? option === singleValue
|
|
134
|
-
: option.value === singleValue;
|
|
135
|
-
};
|
|
136
|
-
var found = options.find(isMatch);
|
|
137
|
-
return found
|
|
138
|
-
? renderBadge(typeof found === "string" ? { key: found, value: found } : found, handleRemove)
|
|
139
|
-
: placeholder;
|
|
140
|
-
}
|
|
141
|
-
}, [
|
|
142
|
-
options,
|
|
143
|
-
placeholder,
|
|
144
|
-
isMulti,
|
|
145
|
-
multiValue,
|
|
146
|
-
singleValue,
|
|
147
|
-
maxVisibleBadges,
|
|
148
|
-
onSelect,
|
|
149
|
-
setMultiValue,
|
|
150
|
-
setSingleValue,
|
|
151
|
-
]);
|
|
152
|
-
var normalizedOptions = useMemo(function () { return (Array.isArray(options) ? options : []); }, [options]);
|
|
153
|
-
return (<Popover open={open} onOpenChange={setOpen}>
|
|
154
|
-
<PopoverTrigger asChild>
|
|
155
|
-
<Button ref={buttonRef} variant="outline" role="combobox" color="light-gray" aria-expanded={open} className={cn("w-full justify-between !py-3 !px-4 font-normal !leading-normal hover:!bg-transparent active:!bg-transparent", comboboxSizes[size], comboboxSelectType[variant], comboboxColor[variant][color], open && comboboxColor[variant]["blue"], disabled && [
|
|
156
|
-
variant === "fill" && "bg-gray-100",
|
|
157
|
-
"border border-gray-300 cursor-not-allowed pointer-events-none",
|
|
158
|
-
], "min-h-[42px]")} shape={comboboxShapes[shape]} disabled={disabled} tabIndex={disabled ? -1 : 0}>
|
|
159
|
-
<div className="flex-grow flex items-center">{getDisplay}</div>
|
|
160
|
-
<LUIcon icon="angle-down" size={iconSizeMap[size]} color="light-gray"/>
|
|
161
|
-
</Button>
|
|
162
|
-
</PopoverTrigger>
|
|
163
|
-
<PopoverContent className="p-0" style={popoverWidth ? { width: popoverWidth } : {}}>
|
|
164
|
-
<Command>
|
|
165
|
-
{isSearch && (<CommandInput placeholder="Search" className={comboboxSizes[size]}/>)}
|
|
166
|
-
{isMulti && normalizedOptions.length > 0 && (<div className="flex flex-col gap-1 !px-4 !py-3 rounded-sm bg-gray-50 text-gray-800">
|
|
167
|
-
<div className="flex items-center gap-2">
|
|
168
|
-
<Checkbox id="select-all" checked={multiValue.length === normalizedOptions.length} onCheckedChange={handleSelectAll} size={size}/>
|
|
169
|
-
<Label variant={getLabelVariant(size)}>Select All</Label>
|
|
170
|
-
</div>
|
|
171
|
-
<Caption variant="sm" className="text-gray-500">
|
|
172
|
-
Selected ({multiValue.length})
|
|
173
|
-
</Caption>
|
|
174
|
-
</div>)}
|
|
175
|
-
<CommandList>
|
|
176
|
-
<CommandEmpty>{empty_message}</CommandEmpty>
|
|
177
|
-
<CommandGroup>
|
|
178
|
-
{normalizedOptions.map(function (option) {
|
|
179
|
-
var normalizedOption = typeof option === "string"
|
|
180
|
-
? { key: option, value: option }
|
|
181
|
-
: option;
|
|
182
|
-
var selected = isMulti
|
|
183
|
-
? multiValue.includes(normalizedOption.value)
|
|
184
|
-
: singleValue === normalizedOption.value;
|
|
185
|
-
return (<CommandItem key={normalizedOption.value} value={normalizedOption.value} onSelect={function () { return handleSelect(normalizedOption.value); }} size={size} className={cn(selected &&
|
|
186
|
-
"bg-blue-50 text-blue-600 hover:text-blue-600")}>
|
|
187
|
-
{renderOption
|
|
188
|
-
? renderOption(normalizedOption)
|
|
189
|
-
: normalizedOption.key}
|
|
190
|
-
</CommandItem>);
|
|
191
|
-
})}
|
|
192
|
-
</CommandGroup>
|
|
193
|
-
</CommandList>
|
|
194
|
-
</Command>
|
|
195
|
-
</PopoverContent>
|
|
196
|
-
</Popover>);
|
|
197
|
-
};
|
|
198
|
-
export default Combobox;
|