@frontify/fondue-components 26.0.3 → 27.0.0
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/fondue-components104.js +1 -1
- package/dist/fondue-components105.js +1 -1
- package/dist/fondue-components106.js +1 -1
- package/dist/fondue-components107.js +1 -1
- package/dist/fondue-components108.js +1 -1
- package/dist/fondue-components32.js +62 -60
- package/dist/fondue-components32.js.map +1 -1
- package/dist/fondue-components4.js +56 -48
- package/dist/fondue-components4.js.map +1 -1
- package/dist/fondue-components40.js +2 -2
- package/dist/fondue-components41.js +4 -2
- package/dist/fondue-components41.js.map +1 -1
- package/dist/fondue-components47.js +1 -1
- package/dist/fondue-components53.js +14 -12
- package/dist/fondue-components53.js.map +1 -1
- package/dist/fondue-components71.js +2 -2
- package/dist/fondue-components72.js +2 -2
- package/dist/fondue-components73.js +2 -2
- package/dist/fondue-components74.js +2 -2
- package/dist/fondue-components75.js +1 -1
- package/dist/fondue-components76.js +1 -1
- package/dist/fondue-components85.js +10 -10
- package/dist/fondue-components9.js +95 -83
- package/dist/fondue-components9.js.map +1 -1
- package/dist/fondue-components92.js +4 -216
- package/dist/fondue-components92.js.map +1 -1
- package/dist/fondue-components93.js +4 -18
- package/dist/fondue-components93.js.map +1 -1
- package/dist/fondue-components94.js +16 -16
- package/dist/fondue-components94.js.map +1 -1
- package/dist/fondue-components95.js +188 -122
- package/dist/fondue-components95.js.map +1 -1
- package/dist/fondue-components96.js +18 -44
- package/dist/fondue-components96.js.map +1 -1
- package/dist/fondue-components97.js +16 -16
- package/dist/fondue-components97.js.map +1 -1
- package/dist/fondue-components98.js +150 -4
- package/dist/fondue-components98.js.map +1 -1
- package/dist/fondue-components99.js +44 -4
- package/dist/fondue-components99.js.map +1 -1
- package/dist/index.d.ts +15 -3
- package/dist/style.css +1 -1
- package/package.json +3 -3
|
@@ -1,48 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
groupHeading: I,
|
|
19
|
-
badgesContainer: b,
|
|
20
|
-
badgeWrapper: k,
|
|
21
|
-
srOnly: S,
|
|
22
|
-
multiSelectInput: V
|
|
1
|
+
import { useState as f } from "react";
|
|
2
|
+
const I = (i, l, r) => {
|
|
3
|
+
const [d, n] = f(r ?? []), e = l ?? d, s = (t) => {
|
|
4
|
+
l || n(t), i == null || i(t);
|
|
5
|
+
};
|
|
6
|
+
return {
|
|
7
|
+
selectedItemValues: e,
|
|
8
|
+
toggleSelectedItem: (t) => {
|
|
9
|
+
if (t === void 0)
|
|
10
|
+
return;
|
|
11
|
+
const c = e.findIndex((o) => t === o);
|
|
12
|
+
c > 0 ? s([...e.slice(0, c), ...e.slice(c + 1)]) : s(c === 0 ? [...e.slice(1)] : [...e, t]);
|
|
13
|
+
},
|
|
14
|
+
clear: () => {
|
|
15
|
+
s([]);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
23
18
|
};
|
|
24
19
|
export {
|
|
25
|
-
|
|
26
|
-
b as badgesContainer,
|
|
27
|
-
i as caret,
|
|
28
|
-
g as checkmarkIcon,
|
|
29
|
-
t as clear,
|
|
30
|
-
n as clearIcon,
|
|
31
|
-
y as default,
|
|
32
|
-
d as group,
|
|
33
|
-
I as groupHeading,
|
|
34
|
-
s as iconError,
|
|
35
|
-
r as iconSuccess,
|
|
36
|
-
u as icons,
|
|
37
|
-
_ as input,
|
|
38
|
-
p as item,
|
|
39
|
-
m as itemValue,
|
|
40
|
-
a as menu,
|
|
41
|
-
V as multiSelectInput,
|
|
42
|
-
l as portal,
|
|
43
|
-
c as root,
|
|
44
|
-
e as selectedValue,
|
|
45
|
-
o as slot,
|
|
46
|
-
S as srOnly
|
|
20
|
+
I as useMultiselect
|
|
47
21
|
};
|
|
48
22
|
//# sourceMappingURL=fondue-components96.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fondue-components96.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fondue-components96.js","sources":["../src/components/Select/hooks/useMultiselect.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useState } from 'react';\n\nexport const useMultiselect = (\n onSelect?: (value: string[] | null) => void,\n value?: string[] | null,\n defaultValue?: string[],\n) => {\n const [selectedItemsState, setSelectedItemsState] = useState<string[]>(defaultValue ?? []);\n\n const selectedItemValues = value ?? selectedItemsState;\n const setSelectedItems = (items: string[]) => {\n if (!value) {\n setSelectedItemsState(items);\n }\n onSelect?.(items);\n };\n\n const toggleSelectedItem = (toggledItem?: string) => {\n if (toggledItem === undefined) {\n return;\n }\n const index = selectedItemValues.findIndex((selectedItemValue) => toggledItem === selectedItemValue);\n if (index > 0) {\n setSelectedItems([...selectedItemValues.slice(0, index), ...selectedItemValues.slice(index + 1)]);\n } else if (index === 0) {\n setSelectedItems([...selectedItemValues.slice(1)]);\n } else {\n setSelectedItems([...selectedItemValues, toggledItem]);\n }\n };\n\n const clear = () => {\n setSelectedItems([]);\n };\n\n return {\n selectedItemValues,\n toggleSelectedItem,\n clear,\n };\n};\n"],"names":["useMultiselect","onSelect","value","defaultValue","selectedItemsState","setSelectedItemsState","useState","selectedItemValues","setSelectedItems","items","toggledItem","index","selectedItemValue"],"mappings":";AAIO,MAAMA,IAAiB,CAC1BC,GACAC,GACAC,MACC;AACD,QAAM,CAACC,GAAoBC,CAAqB,IAAIC,EAAmBH,KAAgB,CAAA,CAAE,GAEnFI,IAAqBL,KAASE,GAC9BI,IAAmB,CAACC,MAAoB;AAC1C,IAAKP,KACDG,EAAsBI,CAAK,GAE/BR,KAAA,QAAAA,EAAWQ;AAAA,EACf;AAoBA,SAAO;AAAA,IACH,oBAAAF;AAAA,IACA,oBApBuB,CAACG,MAAyB;AACjD,UAAIA,MAAgB;AAChB;AAEJ,YAAMC,IAAQJ,EAAmB,UAAU,CAACK,MAAsBF,MAAgBE,CAAiB;AACnG,MAAID,IAAQ,IACRH,EAAiB,CAAC,GAAGD,EAAmB,MAAM,GAAGI,CAAK,GAAG,GAAGJ,EAAmB,MAAMI,IAAQ,CAAC,CAAC,CAAC,IAEhGH,EADOG,MAAU,IACA,CAAC,GAAGJ,EAAmB,MAAM,CAAC,CAAC,IAE/B,CAAC,GAAGA,GAAoBG,CAAW,CAFH;AAAA,IAIzD;AAAA,IASI,OAPU,MAAM;AAChB,MAAAF,EAAiB,CAAA,CAAE;AAAA,IACvB;AAAA,EAKI;AAER;"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { useState as a, useCallback as u } from "react";
|
|
2
|
+
const n = (s, t, e) => {
|
|
3
|
+
const [f, r] = a(e ?? null), i = t !== void 0 ? t : f, l = i !== null ? [i] : [], m = u(
|
|
4
|
+
(d) => {
|
|
5
|
+
d !== void 0 && (t === void 0 && r(d), s == null || s(d));
|
|
6
|
+
},
|
|
7
|
+
[t, s]
|
|
8
|
+
), I = u(() => {
|
|
9
|
+
t === void 0 && r(null), s == null || s(null);
|
|
10
|
+
}, [t, s]);
|
|
11
|
+
return {
|
|
12
|
+
selectedItemValues: l,
|
|
13
|
+
selectItem: m,
|
|
14
|
+
clear: I
|
|
15
|
+
};
|
|
9
16
|
};
|
|
10
17
|
export {
|
|
11
|
-
|
|
12
|
-
n as button,
|
|
13
|
-
c as caret,
|
|
14
|
-
a as clearIcon,
|
|
15
|
-
_ as colorIndicator,
|
|
16
|
-
t as colorName,
|
|
17
|
-
s as default,
|
|
18
|
-
o as root
|
|
18
|
+
n as useSingleSelect
|
|
19
19
|
};
|
|
20
20
|
//# sourceMappingURL=fondue-components97.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fondue-components97.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fondue-components97.js","sources":["../src/components/Select/hooks/useSingleSelect.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useCallback, useState } from 'react';\n\nexport const useSingleSelect = (\n onSelect?: (value: string | null) => void,\n value?: string | null,\n defaultValue?: string,\n) => {\n const [selectedItemState, setSelectedItemState] = useState<string | null>(defaultValue ?? null);\n\n const selectedValue = value !== undefined ? value : selectedItemState;\n const selectedItemValues = selectedValue !== null ? [selectedValue] : [];\n\n const selectItem = useCallback(\n (item?: string) => {\n if (item === undefined) {\n return;\n }\n if (value === undefined) {\n setSelectedItemState(item);\n }\n onSelect?.(item);\n },\n [value, onSelect],\n );\n\n const clear = useCallback(() => {\n if (value === undefined) {\n setSelectedItemState(null);\n }\n onSelect?.(null);\n }, [value, onSelect]);\n\n return {\n selectedItemValues,\n selectItem,\n clear,\n };\n};\n"],"names":["useSingleSelect","onSelect","value","defaultValue","selectedItemState","setSelectedItemState","useState","selectedValue","selectedItemValues","selectItem","useCallback","item","clear"],"mappings":";AAIO,MAAMA,IAAkB,CAC3BC,GACAC,GACAC,MACC;AACD,QAAM,CAACC,GAAmBC,CAAoB,IAAIC,EAAwBH,KAAgB,IAAI,GAExFI,IAAgBL,MAAU,SAAYA,IAAQE,GAC9CI,IAAqBD,MAAkB,OAAO,CAACA,CAAa,IAAI,CAAA,GAEhEE,IAAaC;AAAA,IACf,CAACC,MAAkB;AACf,MAAIA,MAAS,WAGTT,MAAU,UACVG,EAAqBM,CAAI,GAE7BV,KAAA,QAAAA,EAAWU;AAAA,IACf;AAAA,IACA,CAACT,GAAOD,CAAQ;AAAA,EAAA,GAGdW,IAAQF,EAAY,MAAM;AAC5B,IAAIR,MAAU,UACVG,EAAqB,IAAI,GAE7BJ,KAAA,QAAAA,EAAW;AAAA,EACf,GAAG,CAACC,GAAOD,CAAQ,CAAC;AAEpB,SAAO;AAAA,IACH,oBAAAO;AAAA,IACA,YAAAC;AAAA,IACA,OAAAG;AAAA,EAAA;AAER;"}
|
|
@@ -1,8 +1,154 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { jsxs as d, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { IconCaretDown as V } from "@frontify/fondue-icons";
|
|
3
|
+
import * as I from "@radix-ui/react-popover";
|
|
4
|
+
import { useSelect as s } from "downshift";
|
|
5
|
+
import { forwardRef as ee, useRef as te, useCallback as N, useState as ne, useMemo as oe } from "react";
|
|
6
|
+
import { useBadgeItems as re } from "./fondue-components100.js";
|
|
7
|
+
import { useFocusRing as ae } from "./fondue-components101.js";
|
|
8
|
+
import { useSelectData as se } from "./fondue-components102.js";
|
|
9
|
+
import { useSelectionDescription as ie } from "./fondue-components103.js";
|
|
10
|
+
import r from "./fondue-components99.js";
|
|
11
|
+
import { ClearButton as le } from "./fondue-components104.js";
|
|
12
|
+
import { CollapsibleBadges as ce } from "./fondue-components105.js";
|
|
13
|
+
import { SelectMenu as ue } from "./fondue-components106.js";
|
|
14
|
+
import { StatusIcons as ge } from "./fondue-components107.js";
|
|
15
|
+
const O = ({
|
|
16
|
+
children: M,
|
|
17
|
+
selectedItemValues: o,
|
|
18
|
+
onItemSelect: p,
|
|
19
|
+
onClear: P,
|
|
20
|
+
placeholder: c = "",
|
|
21
|
+
status: u = "neutral",
|
|
22
|
+
disabled: f,
|
|
23
|
+
alignMenu: R = "start",
|
|
24
|
+
side: j = "bottom",
|
|
25
|
+
id: k,
|
|
26
|
+
showStringValue: y = !0,
|
|
27
|
+
"data-test-id": b = "fondue-select",
|
|
28
|
+
viewportCollisionPadding: E = "compact",
|
|
29
|
+
onEscapeKeyDown: F,
|
|
30
|
+
multiple: g,
|
|
31
|
+
...i
|
|
32
|
+
}, a) => {
|
|
33
|
+
const C = te(null), B = N(
|
|
34
|
+
(e) => {
|
|
35
|
+
C.current = e, typeof a == "function" ? a(e) : a && (a.current = e);
|
|
36
|
+
},
|
|
37
|
+
[a]
|
|
38
|
+
), { inputSlots: H, menuSlots: K, items: w, clearButton: S, getItemByValue: l } = se(M), { onMouseDown: z, onFocus: A, onBlur: q } = ae(), { selectionDescriptionId: D, selectionDescription: m } = ie(
|
|
39
|
+
g,
|
|
40
|
+
o,
|
|
41
|
+
l
|
|
42
|
+
), G = re(o, l), [J, v] = ne(!1), x = N(
|
|
43
|
+
(e) => {
|
|
44
|
+
const t = l(e);
|
|
45
|
+
if (t)
|
|
46
|
+
return !y && (t != null && t.children) ? t.children : t == null ? void 0 : t.label;
|
|
47
|
+
},
|
|
48
|
+
[l, y]
|
|
49
|
+
), { getToggleButtonProps: L, getMenuProps: Q, getItemProps: U, reset: W, isOpen: X, highlightedIndex: Y } = s({
|
|
50
|
+
items: w,
|
|
51
|
+
selectedItem: null,
|
|
52
|
+
toggleButtonId: k,
|
|
53
|
+
labelId: "aria-labelledby" in i ? i["aria-labelledby"] : void 0,
|
|
54
|
+
onIsOpenChange: () => {
|
|
55
|
+
v(!1);
|
|
56
|
+
},
|
|
57
|
+
onHighlightedIndexChange: () => {
|
|
58
|
+
v(!0);
|
|
59
|
+
},
|
|
60
|
+
onSelectedItemChange: ({ selectedItem: e }) => {
|
|
61
|
+
p(e == null ? void 0 : e.value);
|
|
62
|
+
},
|
|
63
|
+
itemToString: (e) => e ? e.label : "",
|
|
64
|
+
...g ? {
|
|
65
|
+
stateReducer: (e, t) => {
|
|
66
|
+
const { changes: h, type: $ } = t;
|
|
67
|
+
switch ($) {
|
|
68
|
+
case s.stateChangeTypes.ToggleButtonKeyDownEnter:
|
|
69
|
+
case s.stateChangeTypes.ToggleButtonKeyDownSpaceButton:
|
|
70
|
+
case s.stateChangeTypes.ItemClick:
|
|
71
|
+
return {
|
|
72
|
+
...h,
|
|
73
|
+
isOpen: !0,
|
|
74
|
+
highlightedIndex: e.highlightedIndex
|
|
75
|
+
};
|
|
76
|
+
case s.stateChangeTypes.ToggleButtonBlur:
|
|
77
|
+
return {
|
|
78
|
+
...h,
|
|
79
|
+
selectedItem: e.selectedItem
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return h;
|
|
83
|
+
}
|
|
84
|
+
} : {}
|
|
85
|
+
}), T = u === "error", Z = () => {
|
|
86
|
+
P(), W();
|
|
87
|
+
}, _ = oe(
|
|
88
|
+
() => x(o[0]) || c,
|
|
89
|
+
[x, o, c]
|
|
90
|
+
);
|
|
91
|
+
return /* @__PURE__ */ d(I.Root, { open: X, children: [
|
|
92
|
+
/* @__PURE__ */ n(I.Anchor, { asChild: !0, onMouseDown: z, onFocus: A, onBlur: q, children: /* @__PURE__ */ d(
|
|
93
|
+
"div",
|
|
94
|
+
{
|
|
95
|
+
ref: B,
|
|
96
|
+
className: r.root,
|
|
97
|
+
"data-status": T ? "error" : u,
|
|
98
|
+
"data-disabled": f,
|
|
99
|
+
"data-empty": o.length === 0,
|
|
100
|
+
"data-test-id": b,
|
|
101
|
+
...f ? {} : (
|
|
102
|
+
// eslint-disable-next-line react-hooks/refs
|
|
103
|
+
L({
|
|
104
|
+
"aria-label": "aria-label" in i ? i["aria-label"] : void 0,
|
|
105
|
+
"aria-describedby": m ? D : void 0,
|
|
106
|
+
ref: B
|
|
107
|
+
})
|
|
108
|
+
),
|
|
109
|
+
children: [
|
|
110
|
+
m ? /* @__PURE__ */ n("span", { id: D, className: r.srOnly, children: m }) : null,
|
|
111
|
+
g ? /* @__PURE__ */ n("div", { className: r.selectedValue, children: /* @__PURE__ */ n(
|
|
112
|
+
ce,
|
|
113
|
+
{
|
|
114
|
+
items: G,
|
|
115
|
+
placeholder: c,
|
|
116
|
+
onDismiss: (e) => {
|
|
117
|
+
var t;
|
|
118
|
+
p(e), (t = C.current) == null || t.focus();
|
|
119
|
+
},
|
|
120
|
+
selectedCount: o.length
|
|
121
|
+
}
|
|
122
|
+
) }) : /* @__PURE__ */ n("span", { className: r.selectedValue, children: _ }),
|
|
123
|
+
H,
|
|
124
|
+
S ? /* @__PURE__ */ n(le, { onClear: Z, children: S }) : null,
|
|
125
|
+
/* @__PURE__ */ d("div", { className: r.icons, children: [
|
|
126
|
+
/* @__PURE__ */ n(V, { size: 16, className: r.caret }),
|
|
127
|
+
/* @__PURE__ */ n(ge, { status: u, hasError: T, dataTestId: b })
|
|
128
|
+
] })
|
|
129
|
+
]
|
|
130
|
+
}
|
|
131
|
+
) }),
|
|
132
|
+
/* @__PURE__ */ n(
|
|
133
|
+
ue,
|
|
134
|
+
{
|
|
135
|
+
align: R,
|
|
136
|
+
side: j,
|
|
137
|
+
highlightedIndex: Y,
|
|
138
|
+
getMenuProps: Q,
|
|
139
|
+
getItemProps: U,
|
|
140
|
+
selectedItemValues: o,
|
|
141
|
+
hasInteractedSinceOpening: J,
|
|
142
|
+
viewportCollisionPadding: E,
|
|
143
|
+
onEscapeKeyDown: F,
|
|
144
|
+
children: K
|
|
145
|
+
}
|
|
146
|
+
)
|
|
147
|
+
] });
|
|
3
148
|
};
|
|
149
|
+
O.displayName = "Select";
|
|
150
|
+
const Te = ee(O);
|
|
4
151
|
export {
|
|
5
|
-
|
|
6
|
-
o as root
|
|
152
|
+
Te as SelectBase
|
|
7
153
|
};
|
|
8
154
|
//# sourceMappingURL=fondue-components98.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fondue-components98.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
1
|
+
{"version":3,"file":"fondue-components98.js","sources":["../src/components/Select/components/SelectBase.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconCaretDown } from '@frontify/fondue-icons';\nimport * as RadixPopover from '@radix-ui/react-popover';\nimport { useSelect } from 'downshift';\nimport { forwardRef, useCallback, useMemo, useRef, useState, type ForwardedRef, type ReactNode } from 'react';\n\nimport { type CommonAriaProps } from '#/helpers/aria';\n\nimport { useBadgeItems } from '../hooks/useBadgeItems';\nimport { useFocusRing } from '../hooks/useFocusRing';\nimport { useSelectData } from '../hooks/useSelectData';\nimport { useSelectionDescription } from '../hooks/useSelectionDescription';\nimport styles from '../styles/select.module.scss';\n\nimport { ClearButton } from './ClearButton';\nimport { CollapsibleBadges } from './CollapsibleBadges';\nimport { SelectMenu, type SelectMenuViewportCollisionPadding } from './SelectMenu';\nimport { StatusIcons } from './StatusIcons';\n\nexport type SelectSharedProps = {\n /**\n * Children of the Select component. This can contain the `Select.Slot` components for the label, decorators, clear action and menu\n */\n children?: ReactNode;\n /**\n * The placeholder in the select component\n */\n placeholder?: string;\n /**\n * Status of the text input\n * @default \"neutral\"\n */\n status?: 'neutral' | 'success' | 'error';\n /**\n * Disables the select component\n */\n disabled?: boolean;\n /**\n * The alignment of the menu\n * @default \"start\"\n */\n alignMenu?: 'start' | 'center' | 'end';\n /**\n * Defines the preferred side of the select. It will not be respected if there are collisions with the viewport\n * @default \"bottom\"\n */\n side?: 'left' | 'right' | 'bottom' | 'top';\n /**\n * The data test id of the select component\n */\n 'data-test-id'?: string;\n /**\n * Id of the select component\n */\n id?: string;\n /**\n * The value of the select is shown as plain text (from the label prop) when set to true\n * Items child components are used if set to false\n * @default true\n */\n showStringValue?: boolean;\n /**\n * Define the minimum distance between the select menu and the viewport edge\n * @default 'compact'\n */\n viewportCollisionPadding?: SelectMenuViewportCollisionPadding;\n /**\n * Event handler called when the escape key is pressed\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n} & CommonAriaProps;\n\ntype SelectBaseProps = SelectSharedProps & {\n /**\n * The currently selected item values\n */\n selectedItemValues: string[];\n /**\n * Callback fired when an item is selected or deselected\n */\n onItemSelect: (value?: string) => void;\n /**\n * Callback fired when the selection is cleared\n */\n onClear: () => void;\n /**\n * Whether the select allows multiple selections\n */\n multiple: boolean;\n};\n\nconst SelectBaseInput = (\n {\n children,\n selectedItemValues,\n onItemSelect,\n onClear,\n placeholder = '',\n status = 'neutral',\n disabled,\n alignMenu = 'start',\n side = 'bottom',\n id,\n showStringValue = true,\n 'data-test-id': dataTestId = 'fondue-select',\n viewportCollisionPadding = 'compact',\n onEscapeKeyDown,\n multiple,\n ...props\n }: SelectBaseProps,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n): ReactNode => {\n const internalRef = useRef<HTMLDivElement | null>(null);\n const triggerRef = useCallback(\n (node: HTMLDivElement | null): void => {\n internalRef.current = node;\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n },\n [forwardedRef],\n );\n const { inputSlots, menuSlots, items, clearButton, getItemByValue } = useSelectData(children);\n const { onMouseDown, onFocus, onBlur } = useFocusRing();\n const { selectionDescriptionId, selectionDescription } = useSelectionDescription(\n multiple,\n selectedItemValues,\n getItemByValue,\n );\n const badgeItems = useBadgeItems(selectedItemValues, getItemByValue);\n\n const [hasInteractedSinceOpening, setHasInteractedSinceOpening] = useState(false);\n\n const getDisplayedValue = useCallback(\n (itemValue?: string): ReactNode => {\n const selectedItem = getItemByValue(itemValue);\n if (selectedItem) {\n return !showStringValue && selectedItem?.children ? selectedItem.children : selectedItem?.label;\n }\n return undefined;\n },\n [getItemByValue, showStringValue],\n );\n\n const { getToggleButtonProps, getMenuProps, getItemProps, reset, isOpen, highlightedIndex } = useSelect<{\n value: string;\n label: string;\n children?: ReactNode;\n }>({\n items,\n selectedItem: null,\n toggleButtonId: id,\n labelId: 'aria-labelledby' in props ? props['aria-labelledby'] : undefined,\n onIsOpenChange: () => {\n setHasInteractedSinceOpening(false);\n },\n onHighlightedIndexChange: () => {\n setHasInteractedSinceOpening(true);\n },\n onSelectedItemChange: ({ selectedItem }) => {\n onItemSelect(selectedItem?.value);\n },\n itemToString: (item) => (item ? item.label : ''),\n ...(multiple\n ? {\n stateReducer: (state, actionAndChanges) => {\n const { changes, type } = actionAndChanges;\n switch (type) {\n case useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton:\n case useSelect.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen: true,\n highlightedIndex: state.highlightedIndex,\n };\n case useSelect.stateChangeTypes.ToggleButtonBlur:\n return {\n ...changes,\n selectedItem: state.selectedItem,\n };\n }\n return changes;\n },\n }\n : {}),\n });\n\n const hasError = status === 'error';\n\n const handleClear = (): void => {\n onClear();\n reset();\n };\n\n const singleSelectValue = useMemo(\n (): ReactNode => getDisplayedValue(selectedItemValues[0]) || placeholder,\n [getDisplayedValue, selectedItemValues, placeholder],\n );\n\n return (\n <RadixPopover.Root open={isOpen}>\n <RadixPopover.Anchor asChild onMouseDown={onMouseDown} onFocus={onFocus} onBlur={onBlur}>\n <div\n ref={triggerRef}\n className={styles.root}\n data-status={hasError ? 'error' : status}\n data-disabled={disabled}\n data-empty={selectedItemValues.length === 0}\n data-test-id={dataTestId}\n {...(disabled\n ? {}\n : // eslint-disable-next-line react-hooks/refs\n getToggleButtonProps({\n 'aria-label': 'aria-label' in props ? props['aria-label'] : undefined,\n 'aria-describedby': selectionDescription ? selectionDescriptionId : undefined,\n ref: triggerRef,\n }))}\n >\n {selectionDescription ? (\n <span id={selectionDescriptionId} className={styles.srOnly}>\n {selectionDescription}\n </span>\n ) : null}\n {multiple ? (\n <div className={styles.selectedValue}>\n <CollapsibleBadges\n items={badgeItems}\n placeholder={placeholder}\n onDismiss={(value) => {\n onItemSelect(value);\n internalRef.current?.focus();\n }}\n selectedCount={selectedItemValues.length}\n />\n </div>\n ) : (\n <span className={styles.selectedValue}>{singleSelectValue}</span>\n )}\n {inputSlots}\n {clearButton ? <ClearButton onClear={handleClear}>{clearButton}</ClearButton> : null}\n <div className={styles.icons}>\n <IconCaretDown size={16} className={styles.caret} />\n <StatusIcons status={status} hasError={hasError} dataTestId={dataTestId} />\n </div>\n </div>\n </RadixPopover.Anchor>\n\n <SelectMenu\n align={alignMenu}\n side={side}\n highlightedIndex={highlightedIndex}\n getMenuProps={getMenuProps}\n getItemProps={getItemProps}\n selectedItemValues={selectedItemValues}\n hasInteractedSinceOpening={hasInteractedSinceOpening}\n viewportCollisionPadding={viewportCollisionPadding}\n onEscapeKeyDown={onEscapeKeyDown}\n >\n {menuSlots}\n </SelectMenu>\n </RadixPopover.Root>\n );\n};\nSelectBaseInput.displayName = 'Select';\n\nexport const SelectBase = forwardRef<HTMLDivElement, SelectBaseProps>(SelectBaseInput);\n"],"names":["SelectBaseInput","children","selectedItemValues","onItemSelect","onClear","placeholder","status","disabled","alignMenu","side","id","showStringValue","dataTestId","viewportCollisionPadding","onEscapeKeyDown","multiple","props","forwardedRef","internalRef","useRef","triggerRef","useCallback","node","inputSlots","menuSlots","items","clearButton","getItemByValue","useSelectData","onMouseDown","onFocus","onBlur","useFocusRing","selectionDescriptionId","selectionDescription","useSelectionDescription","badgeItems","useBadgeItems","hasInteractedSinceOpening","setHasInteractedSinceOpening","useState","getDisplayedValue","itemValue","selectedItem","getToggleButtonProps","getMenuProps","getItemProps","reset","isOpen","highlightedIndex","useSelect","item","state","actionAndChanges","changes","type","hasError","handleClear","singleSelectValue","useMemo","jsxs","RadixPopover","jsx","styles","CollapsibleBadges","value","_a","ClearButton","IconCaretDown","StatusIcons","SelectMenu","SelectBase","forwardRef"],"mappings":"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"}
|
|
@@ -1,8 +1,48 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
const c = "_root_13ciu_7", e = "_selectedValue_13ciu_63", _ = "_input_13ciu_80", o = "_slot_13ciu_106", t = "_clear_13ciu_156", n = "_clearIcon_13ciu_163", u = "_icons_13ciu_167", i = "_caret_13ciu_173", r = "_iconSuccess_13ciu_201", s = "_iconError_13ciu_207", a = "_menu_13ciu_213", l = "_portal_13ciu_236", p = "_item_13ciu_252", g = "_checkmarkIcon_13ciu_281", m = "_itemValue_13ciu_287", d = "_group_13ciu_301", I = "_groupHeading_13ciu_312", b = "_badgesContainer_13ciu_324", k = "_badgeWrapper_13ciu_336", S = "_srOnly_13ciu_345", V = "_multiSelectInput_13ciu_357", y = {
|
|
2
|
+
root: c,
|
|
3
|
+
selectedValue: e,
|
|
4
|
+
input: _,
|
|
5
|
+
slot: o,
|
|
6
|
+
clear: t,
|
|
7
|
+
clearIcon: n,
|
|
8
|
+
icons: u,
|
|
9
|
+
caret: i,
|
|
10
|
+
iconSuccess: r,
|
|
11
|
+
iconError: s,
|
|
12
|
+
menu: a,
|
|
13
|
+
portal: l,
|
|
14
|
+
item: p,
|
|
15
|
+
checkmarkIcon: g,
|
|
16
|
+
itemValue: m,
|
|
17
|
+
group: d,
|
|
18
|
+
groupHeading: I,
|
|
19
|
+
badgesContainer: b,
|
|
20
|
+
badgeWrapper: k,
|
|
21
|
+
srOnly: S,
|
|
22
|
+
multiSelectInput: V
|
|
4
23
|
};
|
|
5
24
|
export {
|
|
6
|
-
|
|
25
|
+
k as badgeWrapper,
|
|
26
|
+
b as badgesContainer,
|
|
27
|
+
i as caret,
|
|
28
|
+
g as checkmarkIcon,
|
|
29
|
+
t as clear,
|
|
30
|
+
n as clearIcon,
|
|
31
|
+
y as default,
|
|
32
|
+
d as group,
|
|
33
|
+
I as groupHeading,
|
|
34
|
+
s as iconError,
|
|
35
|
+
r as iconSuccess,
|
|
36
|
+
u as icons,
|
|
37
|
+
_ as input,
|
|
38
|
+
p as item,
|
|
39
|
+
m as itemValue,
|
|
40
|
+
a as menu,
|
|
41
|
+
V as multiSelectInput,
|
|
42
|
+
l as portal,
|
|
43
|
+
c as root,
|
|
44
|
+
e as selectedValue,
|
|
45
|
+
o as slot,
|
|
46
|
+
S as srOnly
|
|
7
47
|
};
|
|
8
48
|
//# sourceMappingURL=fondue-components99.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fondue-components99.js","sources":[
|
|
1
|
+
{"version":3,"file":"fondue-components99.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -519,11 +519,11 @@ export declare const Dialog: {
|
|
|
519
519
|
displayName: string;
|
|
520
520
|
};
|
|
521
521
|
Title: {
|
|
522
|
-
({ children, asChild }: DialogAnnouncementProps): JSX_2.Element;
|
|
522
|
+
({ children, asChild, screenReaderOnly }: DialogAnnouncementProps): JSX_2.Element;
|
|
523
523
|
displayName: string;
|
|
524
524
|
};
|
|
525
525
|
Description: {
|
|
526
|
-
({ children, asChild }: DialogAnnouncementProps): JSX_2.Element;
|
|
526
|
+
({ children, asChild, screenReaderOnly }: DialogAnnouncementProps): JSX_2.Element;
|
|
527
527
|
displayName: string;
|
|
528
528
|
};
|
|
529
529
|
Close: {
|
|
@@ -541,6 +541,11 @@ export declare const Dialog: {
|
|
|
541
541
|
declare type DialogAnnouncementProps = {
|
|
542
542
|
children?: ReactNode;
|
|
543
543
|
asChild?: boolean;
|
|
544
|
+
/**
|
|
545
|
+
* Visually hide the element while keeping it accessible to screen readers
|
|
546
|
+
* @default false
|
|
547
|
+
*/
|
|
548
|
+
screenReaderOnly?: boolean;
|
|
544
549
|
};
|
|
545
550
|
|
|
546
551
|
declare type DialogBodyProps = {
|
|
@@ -2226,9 +2231,16 @@ declare type TabsRootProps = {
|
|
|
2226
2231
|
onActiveTabChange?: (value: string) => void;
|
|
2227
2232
|
/**
|
|
2228
2233
|
* Select the used variant
|
|
2229
|
-
*
|
|
2234
|
+
* @default 'default'
|
|
2230
2235
|
*/
|
|
2231
2236
|
variant?: 'default' | 'pill';
|
|
2237
|
+
/**
|
|
2238
|
+
* Add a divider line below the tabs
|
|
2239
|
+
* Only available when variant is 'pill'
|
|
2240
|
+
* Useful for tabs placed inside Dialog content
|
|
2241
|
+
* @default false
|
|
2242
|
+
*/
|
|
2243
|
+
withDivider?: boolean;
|
|
2232
2244
|
};
|
|
2233
2245
|
|
|
2234
2246
|
declare type TabsTabProps = {
|