@ledgerhq/react-ui 0.41.2-nightly.20251129023709 → 0.41.2

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.
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var DropdownGeneric_stories_exports = {};
30
+ __export(DropdownGeneric_stories_exports, {
31
+ DropdownGeneric: () => DropdownGeneric,
32
+ default: () => DropdownGeneric_stories_default
33
+ });
34
+ module.exports = __toCommonJS(DropdownGeneric_stories_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var import_Flex = __toESM(require("../../layout/Flex"));
37
+ var import_Box = __toESM(require("../../layout/Box"));
38
+ var import_Text = __toESM(require("../../asorted/Text"));
39
+ var import_Alert = __toESM(require("../../message/Alert"));
40
+ var import__ = __toESM(require("."));
41
+ var import_Divider = __toESM(require("../../asorted/Divider"));
42
+ const SmallChild = () => /* @__PURE__ */ import_react.default.createElement(
43
+ import_Flex.default,
44
+ {
45
+ height: 200,
46
+ width: 180,
47
+ padding: 10,
48
+ backgroundColor: "neutral.c30",
49
+ justifyContent: "center",
50
+ alignItems: "center"
51
+ },
52
+ /* @__PURE__ */ import_react.default.createElement(import_Text.default, { variant: "small", color: "neutral.c60", textAlign: "center" }, "I'm a simple div with a grey background and no margin passed as children of the dropdown component.")
53
+ );
54
+ const BigChild = ({ containerProps }) => /* @__PURE__ */ import_react.default.createElement(
55
+ import_Box.default,
56
+ {
57
+ padding: 10,
58
+ flexDirection: "column",
59
+ width: "300px",
60
+ justifyContent: "center",
61
+ alignItems: "center",
62
+ ...containerProps
63
+ },
64
+ /* @__PURE__ */ import_react.default.createElement(import_Text.default, { variant: "small", color: "neutral.c60", textAlign: "center" }, "If the children node of the dropdown is bigger than the available space, the dropdown will restrict its own height to avoid overflowing and its inner container will scroll."),
65
+ /* @__PURE__ */ import_react.default.createElement(import_Box.default, { height: "100px", width: "100%", backgroundColor: "primary.c100" }),
66
+ /* @__PURE__ */ import_react.default.createElement(import_Box.default, { height: "100px", width: "100%", backgroundColor: "primary.c90" }),
67
+ /* @__PURE__ */ import_react.default.createElement(import_Box.default, { height: "100px", width: "100%", backgroundColor: "primary.c80" }),
68
+ /* @__PURE__ */ import_react.default.createElement(import_Box.default, { height: "100px", width: "100%", backgroundColor: "primary.c70" }),
69
+ /* @__PURE__ */ import_react.default.createElement(import_Box.default, { height: "100px", width: "100%", backgroundColor: "primary.c60" })
70
+ );
71
+ const BottomPlaceholder = () => /* @__PURE__ */ import_react.default.createElement(
72
+ import_Flex.default,
73
+ {
74
+ width: "100%",
75
+ height: "100px",
76
+ backgroundColor: "neutral.c30",
77
+ justifyContent: "center",
78
+ alignItems: "center",
79
+ padding: 20
80
+ },
81
+ /* @__PURE__ */ import_react.default.createElement(import_Text.default, { variant: "small", color: "palette.neutral.c50", textAlign: "center" }, "Ignore me, I'm just an item placed below to illustrate that the dropdown is a floating component")
82
+ );
83
+ const DropdownStoryTemplate = (props) => {
84
+ const { containerProps = {}, big = false, bigWithMaxHeight = false, ...rest } = props;
85
+ return /* @__PURE__ */ import_react.default.createElement(import_Flex.default, { flexDirection: "column", ...containerProps }, /* @__PURE__ */ import_react.default.createElement(import__.default, { ...rest }, big ? bigWithMaxHeight ? /* @__PURE__ */ import_react.default.createElement(BigChild, { containerProps: { maxHeight: "400px", overflow: "scroll" } }) : /* @__PURE__ */ import_react.default.createElement(BigChild, null) : /* @__PURE__ */ import_react.default.createElement(SmallChild, null)), /* @__PURE__ */ import_react.default.createElement(BottomPlaceholder, null));
86
+ };
87
+ const DropdownGeneric = (args) => {
88
+ const alignItemsPossibilities = ["flex-start", "center", "flex-end"];
89
+ const containerPropsPossibilities = alignItemsPossibilities.map((alignItems) => ({ alignItems }));
90
+ return /* @__PURE__ */ import_react.default.createElement(import_Flex.default, { flexDirection: "column", rowGap: 5 }, /* @__PURE__ */ import_react.default.createElement(import_Text.default, { variant: "h5" }, "Small content:"), containerPropsPossibilities.map(
91
+ (containerProps) => DropdownStoryTemplate({ ...args, containerProps })
92
+ ), /* @__PURE__ */ import_react.default.createElement(import_Divider.default, null), /* @__PURE__ */ import_react.default.createElement(import_Text.default, { variant: "h5" }, "Big content:"), containerPropsPossibilities.map(
93
+ (containerProps) => DropdownStoryTemplate({ ...args, big: true, containerProps })
94
+ ), /* @__PURE__ */ import_react.default.createElement(import_Divider.default, null), /* @__PURE__ */ import_react.default.createElement(import_Text.default, { variant: "h5" }, "Big content (max height on child)"), /* @__PURE__ */ import_react.default.createElement(
95
+ import_Alert.default,
96
+ {
97
+ type: "info",
98
+ title: "In the following examples, the component passed as a child has its own internal maxHeight\n setup"
99
+ }
100
+ ), containerPropsPossibilities.map(
101
+ (containerProps) => DropdownStoryTemplate({ ...args, big: true, bigWithMaxHeight: true, containerProps })
102
+ ));
103
+ };
104
+ var DropdownGeneric_stories_default = {
105
+ title: "Form/SelectAndDialogs",
106
+ component: import__.default,
107
+ argTypes: {
108
+ label: { type: "string" },
109
+ placement: { control: { type: "select" } },
110
+ closeOnClickOutside: { type: "boolean" },
111
+ closeOnClickInside: { type: "boolean" },
112
+ disabled: { type: "boolean" },
113
+ flipDisabled: { type: "boolean" }
114
+ },
115
+ args: {
116
+ label: "Label",
117
+ placement: "bottom",
118
+ closeOnClickOutside: true,
119
+ closeOnClickInside: false,
120
+ disabled: false,
121
+ flipDisabled: false
122
+ }
123
+ };
124
+ //# sourceMappingURL=DropdownGeneric.stories.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/form/DropdownGeneric/DropdownGeneric.stories.tsx"],
4
+ "sourcesContent": ["import React from \"react\";\nimport Flex from \"../../layout/Flex\";\nimport Box from \"../../layout/Box\";\nimport Text from \"../../asorted/Text\";\nimport Alert from \"../../message/Alert\";\nimport DropdownGenericComponent, { Props as DropdownGenericProps } from \".\";\nimport Divider from \"../../asorted/Divider\";\n\nconst SmallChild = () => (\n <Flex\n height={200}\n width={180}\n padding={10}\n backgroundColor=\"neutral.c30\"\n justifyContent=\"center\"\n alignItems=\"center\"\n >\n <Text variant=\"small\" color=\"neutral.c60\" textAlign=\"center\">\n I'm a simple div with a grey background and no margin passed as children of the dropdown\n component.\n </Text>\n </Flex>\n);\n\nconst BigChild = ({ containerProps }: { containerProps?: Record<string, unknown> }) => (\n <Box\n padding={10}\n flexDirection=\"column\"\n width=\"300px\"\n justifyContent=\"center\"\n alignItems=\"center\"\n {...containerProps}\n >\n <Text variant=\"small\" color=\"neutral.c60\" textAlign=\"center\">\n If the children node of the dropdown is bigger than the available space, the dropdown will\n restrict its own height to avoid overflowing and its inner container will scroll.\n </Text>\n <Box height=\"100px\" width=\"100%\" backgroundColor=\"primary.c100\" />\n <Box height=\"100px\" width=\"100%\" backgroundColor=\"primary.c90\" />\n <Box height=\"100px\" width=\"100%\" backgroundColor=\"primary.c80\" />\n <Box height=\"100px\" width=\"100%\" backgroundColor=\"primary.c70\" />\n <Box height=\"100px\" width=\"100%\" backgroundColor=\"primary.c60\" />\n </Box>\n);\n\nconst BottomPlaceholder = () => (\n <Flex\n width=\"100%\"\n height=\"100px\"\n backgroundColor=\"neutral.c30\"\n justifyContent=\"center\"\n alignItems=\"center\"\n padding={20}\n >\n <Text variant=\"small\" color=\"palette.neutral.c50\" textAlign=\"center\">\n Ignore me, I'm just an item placed below to illustrate that the dropdown is a floating\n component\n </Text>\n </Flex>\n);\n\nconst DropdownStoryTemplate = (\n props: Omit<DropdownGenericProps, \"children\"> & {\n big?: boolean;\n bigWithMaxHeight?: boolean;\n containerProps: Record<string, unknown>;\n },\n) => {\n const { containerProps = {}, big = false, bigWithMaxHeight = false, ...rest } = props;\n return (\n <Flex flexDirection=\"column\" {...containerProps}>\n <DropdownGenericComponent {...rest}>\n {big ? (\n bigWithMaxHeight ? (\n <BigChild containerProps={{ maxHeight: \"400px\", overflow: \"scroll\" }} />\n ) : (\n <BigChild />\n )\n ) : (\n <SmallChild />\n )}\n </DropdownGenericComponent>\n <BottomPlaceholder />\n </Flex>\n );\n};\n\nexport const DropdownGeneric = (args: DropdownGenericProps): React.ReactNode => {\n const alignItemsPossibilities = [\"flex-start\", \"center\", \"flex-end\"];\n const containerPropsPossibilities = alignItemsPossibilities.map(alignItems => ({ alignItems }));\n return (\n <Flex flexDirection=\"column\" rowGap={5}>\n {/**\n * Calling DropdownTemplate as a function here to trick storybook into displaying\n * the actual code in \"show code\" instead of an opaque \"DropdownTemplate\" component\n * */}\n <Text variant=\"h5\">Small content:</Text>\n {containerPropsPossibilities.map(containerProps =>\n DropdownStoryTemplate({ ...args, containerProps }),\n )}\n <Divider />\n <Text variant=\"h5\">Big content:</Text>\n {containerPropsPossibilities.map(containerProps =>\n DropdownStoryTemplate({ ...args, big: true, containerProps }),\n )}\n <Divider />\n <Text variant=\"h5\">Big content (max height on child)</Text>\n <Alert\n type=\"info\"\n title=\"In the following examples, the component passed as a child has its own internal maxHeight\n setup\"\n ></Alert>\n {containerPropsPossibilities.map(containerProps =>\n DropdownStoryTemplate({ ...args, big: true, bigWithMaxHeight: true, containerProps }),\n )}\n </Flex>\n );\n};\n\nexport default {\n title: \"Form/SelectAndDialogs\",\n component: DropdownGenericComponent,\n argTypes: {\n label: { type: \"string\" },\n placement: { control: { type: \"select\" } },\n closeOnClickOutside: { type: \"boolean\" },\n closeOnClickInside: { type: \"boolean\" },\n disabled: { type: \"boolean\" },\n flipDisabled: { type: \"boolean\" },\n },\n args: {\n label: \"Label\",\n placement: \"bottom\",\n closeOnClickOutside: true,\n closeOnClickInside: false,\n disabled: false,\n flipDisabled: false,\n },\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "Flex", "Text", "Box", "DropdownGenericComponent", "Divider", "Alert"]
7
+ }
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var DropdownGeneric_exports = {};
30
+ __export(DropdownGeneric_exports, {
31
+ default: () => DropdownGeneric_default,
32
+ placements: () => placements
33
+ });
34
+ module.exports = __toCommonJS(DropdownGeneric_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var import_react_dom = require("@floating-ui/react-dom");
37
+ var import_styled_components = __toESM(require("styled-components"));
38
+ var import__ = require("../../../");
39
+ var import_Flex = __toESM(require("../../layout/Flex"));
40
+ var import_Flex2 = __toESM(require("../../layout/Flex"));
41
+ var import_Text = __toESM(require("../../asorted/Text"));
42
+ const ButtonContainer = (0, import_styled_components.default)(import_Flex2.default).attrs({
43
+ flexDirection: "row",
44
+ width: "auto",
45
+ alignItems: "center",
46
+ height: "36px"
47
+ })`
48
+ cursor: ${(p) => !p.disabled && "pointer"};
49
+ > :last-child {
50
+ /* targeting the dropdown icon */
51
+ ${(p) => p.opened && "transform: rotate(180deg);"}
52
+ margin-left: ${(p) => p.theme.space[3]}px;
53
+ }
54
+ `;
55
+ const DropdownContainer = (0, import_styled_components.default)(import_Flex.default).attrs(({ theme }) => {
56
+ const isLight = theme.colors.type === "light";
57
+ return {
58
+ zIndex: 1,
59
+ flexDirection: "column",
60
+ padding: 3,
61
+ border: `1px solid ${theme.colors.neutral[isLight ? "c20" : "c30"]}`,
62
+ borderRadius: "8px",
63
+ backgroundColor: isLight ? "neutral.c00" : "neutral.c20",
64
+ color: theme.colors.neutral.c80
65
+ };
66
+ })`
67
+ overflow-y: auto;
68
+ box-shadow: 0px 6px 12px rgba(0, 0, 0, ${(p) => p.theme.colors.type === "light" ? 0.04 : 0.08});
69
+ `;
70
+ const placements = ["bottom-start", "bottom", "bottom-end"];
71
+ const DropdownGeneric = ({
72
+ label,
73
+ closeOnClickOutside = true,
74
+ closeOnClickInside = false,
75
+ disabled = false,
76
+ placement = "bottom",
77
+ flipDisabled = false,
78
+ children
79
+ }) => {
80
+ const divRef = (0, import_react.useRef)(null);
81
+ const [maxHeight, setMaxHeight] = (0, import_react.useState)();
82
+ const [maxWidth, setMaxWidth] = (0, import_react.useState)();
83
+ const [opened, setOpened] = (0, import_react.useState)(false);
84
+ const handleClickButton = (0, import_react.useCallback)(() => {
85
+ if (!disabled)
86
+ setOpened(!opened);
87
+ }, [opened, disabled]);
88
+ const handleClickInside = (0, import_react.useCallback)(() => {
89
+ if (closeOnClickInside)
90
+ setOpened(false);
91
+ }, [setOpened, closeOnClickInside]);
92
+ const { x, y, reference, floating, strategy, update, refs } = (0, import_react_dom.useFloating)({
93
+ placement: placements.includes(placement) ? placement : "bottom",
94
+ middleware: [
95
+ (0, import_react_dom.shift)(),
96
+ ...flipDisabled ? [] : [(0, import_react_dom.flip)()],
97
+ (0, import_react_dom.size)({
98
+ padding: 6,
99
+ apply({ height, width }) {
100
+ setMaxHeight(height);
101
+ setMaxWidth(width);
102
+ }
103
+ })
104
+ ]
105
+ });
106
+ const handleResizeOrScroll = (0, import_react.useCallback)(() => {
107
+ if (opened && !disabled)
108
+ update();
109
+ }, [opened, disabled, update]);
110
+ (0, import_react.useEffect)(() => {
111
+ if (!refs.reference.current || !refs.floating.current) {
112
+ return;
113
+ }
114
+ const parents = [
115
+ ...(0, import_react_dom.getScrollParents)(refs.reference.current),
116
+ ...(0, import_react_dom.getScrollParents)(refs.floating.current)
117
+ ];
118
+ parents.forEach((parent) => {
119
+ parent.addEventListener("scroll", handleResizeOrScroll);
120
+ parent.addEventListener("resize", handleResizeOrScroll);
121
+ });
122
+ return () => {
123
+ parents.forEach((parent) => {
124
+ parent.removeEventListener("scroll", handleResizeOrScroll);
125
+ parent.removeEventListener("resize", handleResizeOrScroll);
126
+ });
127
+ };
128
+ }, [flipDisabled, refs.reference, refs.floating, handleResizeOrScroll]);
129
+ (0, import_react.useEffect)(() => {
130
+ function handleClickOutside(event) {
131
+ if (closeOnClickOutside && opened && divRef.current && !divRef.current.contains(event.target)) {
132
+ setOpened(false);
133
+ }
134
+ }
135
+ document.addEventListener("mousedown", handleClickOutside);
136
+ return () => {
137
+ document.removeEventListener("mousedown", handleClickOutside);
138
+ };
139
+ }, [closeOnClickOutside, opened, setOpened, divRef]);
140
+ const color = disabled ? "neutral.c50" : "neutral.c100";
141
+ return /* @__PURE__ */ import_react.default.createElement(import_Flex2.default, { ref: divRef }, /* @__PURE__ */ import_react.default.createElement(
142
+ ButtonContainer,
143
+ {
144
+ ref: reference,
145
+ onClick: handleClickButton,
146
+ disabled,
147
+ opened: opened && !disabled
148
+ },
149
+ /* @__PURE__ */ import_react.default.createElement(import_Text.default, { variant: "paragraph", fontWeight: "medium", color }, label),
150
+ /* @__PURE__ */ import_react.default.createElement(import__.IconsLegacy.DropdownMedium, { size: 20, color })
151
+ ), opened && !disabled && /* @__PURE__ */ import_react.default.createElement(
152
+ DropdownContainer,
153
+ {
154
+ ref: floating,
155
+ style: {
156
+ position: strategy,
157
+ top: y ?? "",
158
+ left: x ?? "",
159
+ maxHeight: maxHeight ? `${maxHeight}px` : "",
160
+ maxWidth: maxWidth ? "" : ""
161
+ // maxWidth: maxWidth ? `${maxWidth}px` : "", /* TODO: fix this */
162
+ },
163
+ onClick: handleClickInside
164
+ },
165
+ children
166
+ ));
167
+ };
168
+ var DropdownGeneric_default = DropdownGeneric;
169
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/form/DropdownGeneric/index.tsx"],
4
+ "sourcesContent": ["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useFloating, getScrollParents, shift, size, flip } from \"@floating-ui/react-dom\";\nimport styled from \"styled-components\";\nimport { IconsLegacy } from \"../../../\";\nimport Flex from \"../../layout/Flex\";\nimport Box from \"../../layout/Flex\";\nimport Text from \"../../asorted/Text\";\n\nconst ButtonContainer = styled(Box).attrs({\n flexDirection: \"row\",\n width: \"auto\",\n alignItems: \"center\",\n height: \"36px\",\n})<{ disabled?: boolean; opened: boolean }>`\n cursor: ${p => !p.disabled && \"pointer\"};\n > :last-child {\n /* targeting the dropdown icon */\n ${p => p.opened && \"transform: rotate(180deg);\"}\n margin-left: ${p => p.theme.space[3]}px;\n }\n`;\n\nconst DropdownContainer = styled(Flex).attrs(({ theme }) => {\n const isLight = theme.colors.type === \"light\";\n return {\n zIndex: 1,\n flexDirection: \"column\",\n padding: 3,\n border: `1px solid ${theme.colors.neutral[isLight ? \"c20\" : \"c30\"]}`,\n borderRadius: \"8px\",\n backgroundColor: isLight ? \"neutral.c00\" : \"neutral.c20\",\n color: theme.colors.neutral.c80,\n };\n})`\n overflow-y: auto;\n box-shadow: 0px 6px 12px rgba(0, 0, 0, ${p => (p.theme.colors.type === \"light\" ? 0.04 : 0.08)});\n`;\n\nexport const placements = [\"bottom-start\", \"bottom\", \"bottom-end\"] as const;\ntype Placement = (typeof placements)[number];\n\nexport type Props = {\n /**\n * Label of the dropdown button, displayed before the dropdown icon.\n */\n label: string | React.ReactNode;\n /**\n * Controls whether the dropdown can be open.\n * Defaults to false.\n */\n disabled?: boolean;\n /**\n * Controls whether the dropdown will close on a click event happening outside of this component.\n * Defaults to true.\n */\n closeOnClickOutside?: boolean;\n /**\n * Controls whether the dropdown will close on a click event happening inside the dropdown.\n * Defaults to false.\n */\n closeOnClickInside?: boolean;\n /**\n * Content of the dropdown.\n */\n children: React.ReactNode;\n /**\n * Vertical alignment of the dropdown relative to the dropdown button.\n * Will automatically adjust to the document to avoid overflowing.\n * Defaults to \"bottom\".\n */\n placement?: Placement;\n /**\n * Controls whether the dropdown will flip its side to keep it in view\n * in case there isn't enough space available. See https://floating-ui.com/docs/flip\n * Defaults to false.\n */\n flipDisabled?: boolean;\n};\n\nconst DropdownGeneric = ({\n label,\n closeOnClickOutside = true,\n closeOnClickInside = false,\n disabled = false,\n placement = \"bottom\",\n flipDisabled = false,\n children,\n}: Props) => {\n const divRef = useRef<HTMLDivElement>(null);\n\n const [maxHeight, setMaxHeight] = useState<number>();\n const [maxWidth, setMaxWidth] = useState<number>();\n\n const [opened, setOpened] = useState(false);\n\n const handleClickButton = useCallback(() => {\n if (!disabled) setOpened(!opened);\n }, [opened, disabled]);\n\n const handleClickInside = useCallback(() => {\n if (closeOnClickInside) setOpened(false);\n }, [setOpened, closeOnClickInside]);\n\n const { x, y, reference, floating, strategy, update, refs } = useFloating({\n placement: placements.includes(placement) ? placement : \"bottom\",\n middleware: [\n shift(),\n ...(flipDisabled ? [] : [flip()]),\n size({\n padding: 6,\n apply({ height, width }: { height: number; width: number }) {\n setMaxHeight(height);\n setMaxWidth(width);\n },\n }),\n ],\n });\n\n const handleResizeOrScroll = useCallback(() => {\n if (opened && !disabled) update();\n }, [opened, disabled, update]);\n\n useEffect(() => {\n if (!refs.reference.current || !refs.floating.current) {\n return;\n }\n const parents = [\n ...getScrollParents(refs.reference.current),\n ...getScrollParents(refs.floating.current),\n ];\n parents.forEach(parent => {\n parent.addEventListener(\"scroll\", handleResizeOrScroll);\n parent.addEventListener(\"resize\", handleResizeOrScroll);\n });\n return () => {\n parents.forEach(parent => {\n parent.removeEventListener(\"scroll\", handleResizeOrScroll);\n parent.removeEventListener(\"resize\", handleResizeOrScroll);\n });\n };\n }, [flipDisabled, refs.reference, refs.floating, handleResizeOrScroll]);\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n closeOnClickOutside &&\n opened &&\n divRef.current &&\n !divRef.current.contains(event.target as Node)\n ) {\n setOpened(false);\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [closeOnClickOutside, opened, setOpened, divRef]);\n\n const color = disabled ? \"neutral.c50\" : \"neutral.c100\";\n\n return (\n <Box ref={divRef}>\n <ButtonContainer\n ref={reference}\n onClick={handleClickButton}\n disabled={disabled}\n opened={opened && !disabled}\n >\n <Text variant=\"paragraph\" fontWeight=\"medium\" color={color}>\n {label}\n </Text>\n <IconsLegacy.DropdownMedium size={20} color={color} />\n </ButtonContainer>\n {opened && !disabled && (\n <DropdownContainer\n ref={floating}\n style={{\n position: strategy,\n top: y ?? \"\",\n left: x ?? \"\",\n maxHeight: maxHeight ? `${maxHeight}px` : \"\",\n maxWidth: maxWidth ? \"\" : \"\",\n // maxWidth: maxWidth ? `${maxWidth}px` : \"\", /* TODO: fix this */\n }}\n onClick={handleClickInside}\n >\n {children}\n </DropdownContainer>\n )}\n </Box>\n );\n};\n\nexport default DropdownGeneric;\n"],
5
+ "mappings": "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",
6
+ "names": ["import_Flex", "styled", "Box", "Flex", "React", "Text"]
7
+ }
@@ -30,6 +30,7 @@ var form_exports = {};
30
30
  __export(form_exports, {
31
31
  Checkbox: () => import_Checkbox.default,
32
32
  Dropdown: () => import_Dropdown.default,
33
+ DropdownGeneric: () => import_DropdownGeneric.default,
33
34
  Input: () => import_BaseInput.default,
34
35
  LegendInput: () => import_LegendInput.default,
35
36
  NumberInput: () => import_NumberInput.default,
@@ -46,6 +47,7 @@ module.exports = __toCommonJS(form_exports);
46
47
  var import_BaseInput = __toESM(require("./BaseInput"));
47
48
  var import_Checkbox = __toESM(require("./Checkbox"));
48
49
  var import_Dropdown = __toESM(require("./Dropdown"));
50
+ var import_DropdownGeneric = __toESM(require("./DropdownGeneric"));
49
51
  var import_LegendInput = __toESM(require("./LegendInput"));
50
52
  var import_NumberInput = __toESM(require("./NumberInput"));
51
53
  var import_QrCodeInput = __toESM(require("./QrCodeInput"));
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/form/index.ts"],
4
- "sourcesContent": ["export { default as Input } from \"./BaseInput\";\nexport { default as Checkbox } from \"./Checkbox\";\nexport { default as Dropdown } from \"./Dropdown\";\nexport { default as LegendInput } from \"./LegendInput\";\nexport { default as NumberInput } from \"./NumberInput\";\nexport { default as QrCodeInput } from \"./QrCodeInput\";\nexport { default as QuantityInput } from \"./QuantityInput\";\nexport { default as Radio } from \"./Radio\";\nexport { default as SearchInput } from \"./SearchInput\";\nexport { default as SelectInput } from \"./SelectInput\";\nexport { default as SplitInput } from \"./SplitInput\";\nexport { default as Switch } from \"./Switch\";\nexport { default as TabSelector } from \"./TabSelector\";\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAiC;AACjC,sBAAoC;AACpC,sBAAoC;AACpC,yBAAuC;AACvC,yBAAuC;AACvC,yBAAuC;AACvC,2BAAyC;AACzC,mBAAiC;AACjC,yBAAuC;AACvC,yBAAuC;AACvC,wBAAsC;AACtC,oBAAkC;AAClC,yBAAuC;",
4
+ "sourcesContent": ["export { default as Input } from \"./BaseInput\";\nexport { default as Checkbox } from \"./Checkbox\";\nexport { default as Dropdown } from \"./Dropdown\";\nexport { default as DropdownGeneric } from \"./DropdownGeneric\";\nexport { default as LegendInput } from \"./LegendInput\";\nexport { default as NumberInput } from \"./NumberInput\";\nexport { default as QrCodeInput } from \"./QrCodeInput\";\nexport { default as QuantityInput } from \"./QuantityInput\";\nexport { default as Radio } from \"./Radio\";\nexport { default as SearchInput } from \"./SearchInput\";\nexport { default as SelectInput } from \"./SelectInput\";\nexport { default as SplitInput } from \"./SplitInput\";\nexport { default as Switch } from \"./Switch\";\nexport { default as TabSelector } from \"./TabSelector\";\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAiC;AACjC,sBAAoC;AACpC,sBAAoC;AACpC,6BAA2C;AAC3C,yBAAuC;AACvC,yBAAuC;AACvC,yBAAuC;AACvC,2BAAyC;AACzC,mBAAiC;AACjC,yBAAuC;AACvC,yBAAuC;AACvC,wBAAsC;AACtC,oBAAkC;AAClC,yBAAuC;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,43 @@
1
+ import React from "react";
2
+ export declare const placements: readonly ["bottom-start", "bottom", "bottom-end"];
3
+ type Placement = (typeof placements)[number];
4
+ export type Props = {
5
+ /**
6
+ * Label of the dropdown button, displayed before the dropdown icon.
7
+ */
8
+ label: string | React.ReactNode;
9
+ /**
10
+ * Controls whether the dropdown can be open.
11
+ * Defaults to false.
12
+ */
13
+ disabled?: boolean;
14
+ /**
15
+ * Controls whether the dropdown will close on a click event happening outside of this component.
16
+ * Defaults to true.
17
+ */
18
+ closeOnClickOutside?: boolean;
19
+ /**
20
+ * Controls whether the dropdown will close on a click event happening inside the dropdown.
21
+ * Defaults to false.
22
+ */
23
+ closeOnClickInside?: boolean;
24
+ /**
25
+ * Content of the dropdown.
26
+ */
27
+ children: React.ReactNode;
28
+ /**
29
+ * Vertical alignment of the dropdown relative to the dropdown button.
30
+ * Will automatically adjust to the document to avoid overflowing.
31
+ * Defaults to "bottom".
32
+ */
33
+ placement?: Placement;
34
+ /**
35
+ * Controls whether the dropdown will flip its side to keep it in view
36
+ * in case there isn't enough space available. See https://floating-ui.com/docs/flip
37
+ * Defaults to false.
38
+ */
39
+ flipDisabled?: boolean;
40
+ };
41
+ declare const DropdownGeneric: ({ label, closeOnClickOutside, closeOnClickInside, disabled, placement, flipDisabled, children, }: Props) => React.JSX.Element;
42
+ export default DropdownGeneric;
43
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/form/DropdownGeneric/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAsCxE,eAAO,MAAM,UAAU,mDAAoD,CAAC;AAC5E,KAAK,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7C,MAAM,MAAM,KAAK,GAAG;IAClB;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,QAAA,MAAM,eAAe,qGAQlB,KAAK,sBAyGP,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,116 @@
1
+ import React, { useCallback, useEffect, useRef, useState } from "react";
2
+ import { useFloating, getScrollParents, shift, size, flip } from "@floating-ui/react-dom";
3
+ import styled from "styled-components";
4
+ import { IconsLegacy } from "../../../";
5
+ import Flex from "../../layout/Flex";
6
+ import Box from "../../layout/Flex";
7
+ import Text from "../../asorted/Text";
8
+ const ButtonContainer = styled(Box).attrs({
9
+ flexDirection: "row",
10
+ width: "auto",
11
+ alignItems: "center",
12
+ height: "36px",
13
+ }) `
14
+ cursor: ${p => !p.disabled && "pointer"};
15
+ > :last-child {
16
+ /* targeting the dropdown icon */
17
+ ${p => p.opened && "transform: rotate(180deg);"}
18
+ margin-left: ${p => p.theme.space[3]}px;
19
+ }
20
+ `;
21
+ const DropdownContainer = styled(Flex).attrs(({ theme }) => {
22
+ const isLight = theme.colors.type === "light";
23
+ return {
24
+ zIndex: 1,
25
+ flexDirection: "column",
26
+ padding: 3,
27
+ border: `1px solid ${theme.colors.neutral[isLight ? "c20" : "c30"]}`,
28
+ borderRadius: "8px",
29
+ backgroundColor: isLight ? "neutral.c00" : "neutral.c20",
30
+ color: theme.colors.neutral.c80,
31
+ };
32
+ }) `
33
+ overflow-y: auto;
34
+ box-shadow: 0px 6px 12px rgba(0, 0, 0, ${p => (p.theme.colors.type === "light" ? 0.04 : 0.08)});
35
+ `;
36
+ export const placements = ["bottom-start", "bottom", "bottom-end"];
37
+ const DropdownGeneric = ({ label, closeOnClickOutside = true, closeOnClickInside = false, disabled = false, placement = "bottom", flipDisabled = false, children, }) => {
38
+ const divRef = useRef(null);
39
+ const [maxHeight, setMaxHeight] = useState();
40
+ const [maxWidth, setMaxWidth] = useState();
41
+ const [opened, setOpened] = useState(false);
42
+ const handleClickButton = useCallback(() => {
43
+ if (!disabled)
44
+ setOpened(!opened);
45
+ }, [opened, disabled]);
46
+ const handleClickInside = useCallback(() => {
47
+ if (closeOnClickInside)
48
+ setOpened(false);
49
+ }, [setOpened, closeOnClickInside]);
50
+ const { x, y, reference, floating, strategy, update, refs } = useFloating({
51
+ placement: placements.includes(placement) ? placement : "bottom",
52
+ middleware: [
53
+ shift(),
54
+ ...(flipDisabled ? [] : [flip()]),
55
+ size({
56
+ padding: 6,
57
+ apply({ height, width }) {
58
+ setMaxHeight(height);
59
+ setMaxWidth(width);
60
+ },
61
+ }),
62
+ ],
63
+ });
64
+ const handleResizeOrScroll = useCallback(() => {
65
+ if (opened && !disabled)
66
+ update();
67
+ }, [opened, disabled, update]);
68
+ useEffect(() => {
69
+ if (!refs.reference.current || !refs.floating.current) {
70
+ return;
71
+ }
72
+ const parents = [
73
+ ...getScrollParents(refs.reference.current),
74
+ ...getScrollParents(refs.floating.current),
75
+ ];
76
+ parents.forEach(parent => {
77
+ parent.addEventListener("scroll", handleResizeOrScroll);
78
+ parent.addEventListener("resize", handleResizeOrScroll);
79
+ });
80
+ return () => {
81
+ parents.forEach(parent => {
82
+ parent.removeEventListener("scroll", handleResizeOrScroll);
83
+ parent.removeEventListener("resize", handleResizeOrScroll);
84
+ });
85
+ };
86
+ }, [flipDisabled, refs.reference, refs.floating, handleResizeOrScroll]);
87
+ useEffect(() => {
88
+ function handleClickOutside(event) {
89
+ if (closeOnClickOutside &&
90
+ opened &&
91
+ divRef.current &&
92
+ !divRef.current.contains(event.target)) {
93
+ setOpened(false);
94
+ }
95
+ }
96
+ document.addEventListener("mousedown", handleClickOutside);
97
+ return () => {
98
+ document.removeEventListener("mousedown", handleClickOutside);
99
+ };
100
+ }, [closeOnClickOutside, opened, setOpened, divRef]);
101
+ const color = disabled ? "neutral.c50" : "neutral.c100";
102
+ return (React.createElement(Box, { ref: divRef },
103
+ React.createElement(ButtonContainer, { ref: reference, onClick: handleClickButton, disabled: disabled, opened: opened && !disabled },
104
+ React.createElement(Text, { variant: "paragraph", fontWeight: "medium", color: color }, label),
105
+ React.createElement(IconsLegacy.DropdownMedium, { size: 20, color: color })),
106
+ opened && !disabled && (React.createElement(DropdownContainer, { ref: floating, style: {
107
+ position: strategy,
108
+ top: y ?? "",
109
+ left: x ?? "",
110
+ maxHeight: maxHeight ? `${maxHeight}px` : "",
111
+ maxWidth: maxWidth ? "" : "",
112
+ // maxWidth: maxWidth ? `${maxWidth}px` : "", /* TODO: fix this */
113
+ }, onClick: handleClickInside }, children))));
114
+ };
115
+ export default DropdownGeneric;
116
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/form/DropdownGeneric/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,IAAI,MAAM,mBAAmB,CAAC;AACrC,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,IAAI,MAAM,oBAAoB,CAAC;AAEtC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IACxC,aAAa,EAAE,KAAK;IACpB,KAAK,EAAE,MAAM;IACb,UAAU,EAAE,QAAQ;IACpB,MAAM,EAAE,MAAM;CACf,CAAC,CAAyC;YAC/B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,SAAS;;;MAGnC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,4BAA4B;mBAChC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;;CAEvC,CAAC;AAEF,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IACzD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC;IAC9C,OAAO;QACL,MAAM,EAAE,CAAC;QACT,aAAa,EAAE,QAAQ;QACvB,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,aAAa,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;QACpE,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa;QACxD,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG;KAChC,CAAC;AACJ,CAAC,CAAC,CAAA;;2CAEyC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;CAC9F,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,cAAc,EAAE,QAAQ,EAAE,YAAY,CAAU,CAAC;AAyC5E,MAAM,eAAe,GAAG,CAAC,EACvB,KAAK,EACL,mBAAmB,GAAG,IAAI,EAC1B,kBAAkB,GAAG,KAAK,EAC1B,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,QAAQ,EACpB,YAAY,GAAG,KAAK,EACpB,QAAQ,GACF,EAAE,EAAE;IACV,MAAM,MAAM,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE5C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,EAAU,CAAC;IACrD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAU,CAAC;IAEnD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;QACzC,IAAI,CAAC,QAAQ;YAAE,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvB,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;QACzC,IAAI,kBAAkB;YAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEpC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC;QACxE,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;QAChE,UAAU,EAAE;YACV,KAAK,EAAE;YACP,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACjC,IAAI,CAAC;gBACH,OAAO,EAAE,CAAC;gBACV,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAqC;oBACxD,YAAY,CAAC,MAAM,CAAC,CAAC;oBACrB,WAAW,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;aACF,CAAC;SACH;KACF,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5C,IAAI,MAAM,IAAI,CAAC,QAAQ;YAAE,MAAM,EAAE,CAAC;IACpC,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAE/B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtD,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG;YACd,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC3C,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;SAC3C,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACvB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;YACxD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACvB,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;gBAC3D,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAExE,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,kBAAkB,CAAC,KAAiB;YAC3C,IACE,mBAAmB;gBACnB,MAAM;gBACN,MAAM,CAAC,OAAO;gBACd,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAC9C,CAAC;gBACD,SAAS,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAC3D,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAChE,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,mBAAmB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAErD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC;IAExD,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,MAAM;QACd,oBAAC,eAAe,IACd,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,IAAI,CAAC,QAAQ;YAE3B,oBAAC,IAAI,IAAC,OAAO,EAAC,WAAW,EAAC,UAAU,EAAC,QAAQ,EAAC,KAAK,EAAE,KAAK,IACvD,KAAK,CACD;YACP,oBAAC,WAAW,CAAC,cAAc,IAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,GAAI,CACtC;QACjB,MAAM,IAAI,CAAC,QAAQ,IAAI,CACtB,oBAAC,iBAAiB,IAChB,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE;gBACL,QAAQ,EAAE,QAAQ;gBAClB,GAAG,EAAE,CAAC,IAAI,EAAE;gBACZ,IAAI,EAAE,CAAC,IAAI,EAAE;gBACb,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE;gBAC5C,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;gBAC5B,kEAAkE;aACnE,EACD,OAAO,EAAE,iBAAiB,IAEzB,QAAQ,CACS,CACrB,CACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,6 +1,7 @@
1
1
  export { default as Input } from "./BaseInput";
2
2
  export { default as Checkbox } from "./Checkbox";
3
3
  export { default as Dropdown } from "./Dropdown";
4
+ export { default as DropdownGeneric } from "./DropdownGeneric";
4
5
  export { default as LegendInput } from "./LegendInput";
5
6
  export { default as NumberInput } from "./NumberInput";
6
7
  export { default as QrCodeInput } from "./QrCodeInput";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/form/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/form/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -1,6 +1,7 @@
1
1
  export { default as Input } from "./BaseInput";
2
2
  export { default as Checkbox } from "./Checkbox";
3
3
  export { default as Dropdown } from "./Dropdown";
4
+ export { default as DropdownGeneric } from "./DropdownGeneric";
4
5
  export { default as LegendInput } from "./LegendInput";
5
6
  export { default as NumberInput } from "./NumberInput";
6
7
  export { default as QrCodeInput } from "./QrCodeInput";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/form/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/form/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/react-ui",
3
- "version": "0.41.2-nightly.20251129023709",
3
+ "version": "0.41.2",
4
4
  "description": "Ledger Live - Desktop UI",
5
5
  "author": "Ledger Wallet Team <team-live@ledger.fr>",
6
6
  "repository": {
@@ -60,6 +60,7 @@
60
60
  "lib/**/*"
61
61
  ],
62
62
  "dependencies": {
63
+ "@floating-ui/react-dom": "^0.4.0",
63
64
  "@ledgerhq/crypto-icons": "1.1.1",
64
65
  "@tanstack/react-virtual": "3.13.6",
65
66
  "@tippyjs/react": "^4.2.6",
@@ -74,8 +75,8 @@
74
75
  "react-transition-group": "^4.4.2",
75
76
  "react-window": "^1.8.6",
76
77
  "styled-system": "^5.1.5",
77
- "@ledgerhq/crypto-icons-ui": "^1.24.0-nightly.20251129023709",
78
- "@ledgerhq/icons-ui": "^0.17.0-nightly.20251129023709",
78
+ "@ledgerhq/crypto-icons-ui": "^1.24.0",
79
+ "@ledgerhq/icons-ui": "^0.17.0",
79
80
  "@ledgerhq/ui-shared": "^0.5.0"
80
81
  },
81
82
  "peerDependencies": {