@frontify/fondue-components 20.0.0-beta.2 → 20.0.0-beta.4
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-components10.js +23 -19
- package/dist/fondue-components10.js.map +1 -1
- package/dist/fondue-components11.js +84 -66
- package/dist/fondue-components11.js.map +1 -1
- package/dist/fondue-components12.js +1 -1
- package/dist/fondue-components13.js +34 -24
- package/dist/fondue-components13.js.map +1 -1
- package/dist/fondue-components14.js +1 -1
- package/dist/fondue-components15.js +1 -1
- package/dist/fondue-components17.js +1 -1
- package/dist/fondue-components18.js +1 -1
- package/dist/fondue-components19.js +1 -1
- package/dist/fondue-components20.js +1 -1
- package/dist/fondue-components21.js +2 -2
- package/dist/fondue-components22.js +6 -6
- package/dist/fondue-components23.js +1 -1
- package/dist/fondue-components24.js +1 -1
- package/dist/fondue-components25.js +59 -59
- package/dist/fondue-components25.js.map +1 -1
- package/dist/fondue-components26.js +3 -3
- package/dist/fondue-components27.js +1 -1
- package/dist/fondue-components28.js +36 -34
- package/dist/fondue-components28.js.map +1 -1
- package/dist/fondue-components29.js +1 -1
- package/dist/fondue-components30.js +1 -1
- package/dist/fondue-components32.js +2 -2
- package/dist/fondue-components37.js +1 -1
- package/dist/fondue-components40.js +1 -1
- package/dist/fondue-components49.js +5 -60
- package/dist/fondue-components49.js.map +1 -1
- package/dist/fondue-components50.js +59 -17
- package/dist/fondue-components50.js.map +1 -1
- package/dist/fondue-components51.js +18 -19
- package/dist/fondue-components51.js.map +1 -1
- package/dist/fondue-components52.js +18 -4
- package/dist/fondue-components52.js.map +1 -1
- package/dist/fondue-components53.js +3 -13
- package/dist/fondue-components53.js.map +1 -1
- package/dist/fondue-components54.js +13 -3
- package/dist/fondue-components54.js.map +1 -1
- package/dist/fondue-components55.js +3 -17
- package/dist/fondue-components55.js.map +1 -1
- package/dist/fondue-components56.js +19 -35
- package/dist/fondue-components56.js.map +1 -1
- package/dist/fondue-components57.js +35 -5
- package/dist/fondue-components57.js.map +1 -1
- package/dist/fondue-components58.js +4 -12
- package/dist/fondue-components58.js.map +1 -1
- package/dist/fondue-components59.js +12 -4
- package/dist/fondue-components59.js.map +1 -1
- package/dist/fondue-components60.js +4 -24
- package/dist/fondue-components60.js.map +1 -1
- package/dist/fondue-components61.js +24 -16
- package/dist/fondue-components61.js.map +1 -1
- package/dist/fondue-components62.js +16 -146
- package/dist/fondue-components62.js.map +1 -1
- package/dist/fondue-components63.js +151 -19
- package/dist/fondue-components63.js.map +1 -1
- package/dist/fondue-components64.js +19 -77
- package/dist/fondue-components64.js.map +1 -1
- package/dist/fondue-components65.js +77 -8
- package/dist/fondue-components65.js.map +1 -1
- package/dist/fondue-components66.js +8 -35
- package/dist/fondue-components66.js.map +1 -1
- package/dist/fondue-components67.js +34 -48
- package/dist/fondue-components67.js.map +1 -1
- package/dist/fondue-components68.js +70 -10
- package/dist/fondue-components68.js.map +1 -1
- package/dist/fondue-components69.js +8 -10
- package/dist/fondue-components69.js.map +1 -1
- package/dist/fondue-components70.js +12 -12
- package/dist/fondue-components70.js.map +1 -1
- package/dist/fondue-components71.js +12 -20
- package/dist/fondue-components71.js.map +1 -1
- package/dist/fondue-components72.js +21 -29
- package/dist/fondue-components72.js.map +1 -1
- package/dist/fondue-components73.js +33 -55
- package/dist/fondue-components73.js.map +1 -1
- package/dist/fondue-components74.js +55 -14
- package/dist/fondue-components74.js.map +1 -1
- package/dist/fondue-components75.js +14 -25
- package/dist/fondue-components75.js.map +1 -1
- package/dist/fondue-components76.js +24 -13
- package/dist/fondue-components76.js.map +1 -1
- package/dist/fondue-components77.js +14 -8
- package/dist/fondue-components77.js.map +1 -1
- package/dist/fondue-components78.js +8 -6
- package/dist/fondue-components78.js.map +1 -1
- package/dist/fondue-components79.js +5 -3
- package/dist/fondue-components79.js.map +1 -1
- package/dist/fondue-components80.js +4 -4
- package/dist/fondue-components80.js.map +1 -1
- package/dist/fondue-components81.js +5 -2
- package/dist/fondue-components81.js.map +1 -1
- package/dist/fondue-components82.js +14 -14
- package/dist/fondue-components83.js +2 -40
- package/dist/fondue-components83.js.map +1 -1
- package/dist/fondue-components84.js +43 -0
- package/dist/fondue-components84.js.map +1 -0
- package/dist/fondue-components9.js +77 -66
- package/dist/fondue-components9.js.map +1 -1
- package/dist/index.d.ts +18 -3
- package/dist/style.css +1 -1
- package/package.json +4 -4
|
@@ -1,150 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import { useSelectData as _ } from "./fondue-components67.js";
|
|
10
|
-
const S = ({
|
|
11
|
-
children: B,
|
|
12
|
-
onSelect: l,
|
|
13
|
-
value: O,
|
|
14
|
-
defaultValue: R,
|
|
15
|
-
placeholder: v = "",
|
|
16
|
-
status: s = "neutral",
|
|
17
|
-
disabled: g,
|
|
18
|
-
"data-test-id": i = "fondue-select-combobox",
|
|
19
|
-
alignMenu: M = "start",
|
|
20
|
-
side: y = "bottom",
|
|
21
|
-
id: F,
|
|
22
|
-
viewportCollisionPadding: L = "compact",
|
|
23
|
-
...a
|
|
24
|
-
}, P) => {
|
|
25
|
-
const { inputSlots: k, menuSlots: D, items: c, filterText: H, clearButton: f, getItemByValue: p, setFilterText: h } = _(B), [T, b] = W(!1), {
|
|
26
|
-
getInputProps: u,
|
|
27
|
-
getToggleButtonProps: V,
|
|
28
|
-
getMenuProps: z,
|
|
29
|
-
getItemProps: j,
|
|
30
|
-
reset: C,
|
|
31
|
-
selectedItem: r,
|
|
32
|
-
isOpen: $,
|
|
33
|
-
highlightedIndex: A,
|
|
34
|
-
inputValue: d
|
|
35
|
-
} = Q({
|
|
36
|
-
items: c,
|
|
37
|
-
selectedItem: p(O),
|
|
38
|
-
defaultSelectedItem: p(R),
|
|
39
|
-
defaultHighlightedIndex: 0,
|
|
40
|
-
toggleButtonId: F,
|
|
41
|
-
labelId: "aria-labelledby" in a ? a["aria-labelledby"] : void 0,
|
|
42
|
-
onSelectedItemChange: ({ selectedItem: e }) => {
|
|
43
|
-
l == null || l((e == null ? void 0 : e.value) ?? null);
|
|
44
|
-
},
|
|
45
|
-
onInputValueChange: ({ inputValue: e }) => {
|
|
46
|
-
h(e);
|
|
47
|
-
},
|
|
48
|
-
onIsOpenChange: () => {
|
|
49
|
-
b(!1), h("");
|
|
50
|
-
},
|
|
51
|
-
onHighlightedIndexChange: () => {
|
|
52
|
-
b(!0);
|
|
53
|
-
},
|
|
54
|
-
itemToString: (e) => e ? e.label : ""
|
|
55
|
-
}), n = X(!1), x = Y(
|
|
56
|
-
() => !c.find((e) => e.label.toLowerCase().includes(d.toLowerCase())),
|
|
57
|
-
[d, c]
|
|
58
|
-
), E = (e) => {
|
|
59
|
-
var I, w;
|
|
60
|
-
e.target.dataset.showFocusRing = "false", n.current = !1, (r == null ? void 0 : r.label.toLocaleLowerCase()) !== d.toLocaleLowerCase() && C(), u().onBlur && ((w = (I = u()).onBlur) == null || w.call(I, e));
|
|
61
|
-
};
|
|
62
|
-
return /* @__PURE__ */ m(N.Root, { open: $, children: [
|
|
63
|
-
/* @__PURE__ */ t(N.Anchor, { asChild: !0, children: /* @__PURE__ */ m("div", { ref: P, className: o.root, "data-status": x ? "error" : s, children: [
|
|
64
|
-
/* @__PURE__ */ t(
|
|
65
|
-
"input",
|
|
66
|
-
{
|
|
67
|
-
...u({
|
|
68
|
-
"aria-label": "aria-label" in a ? a["aria-label"] : void 0
|
|
69
|
-
}),
|
|
70
|
-
"data-test-id": i,
|
|
71
|
-
placeholder: v,
|
|
72
|
-
className: o.input,
|
|
73
|
-
disabled: g,
|
|
74
|
-
onMouseDown: (e) => {
|
|
75
|
-
n.current = !0, e.currentTarget.dataset.showFocusRing = "false";
|
|
76
|
-
},
|
|
77
|
-
onFocus: (e) => {
|
|
78
|
-
n.current || (e.target.dataset.showFocusRing = "true");
|
|
79
|
-
},
|
|
80
|
-
onBlur: E
|
|
81
|
-
}
|
|
82
|
-
),
|
|
83
|
-
k,
|
|
84
|
-
f && /* @__PURE__ */ t(
|
|
85
|
-
K,
|
|
86
|
-
{
|
|
87
|
-
onClick: (e) => {
|
|
88
|
-
e.stopPropagation(), C();
|
|
89
|
-
},
|
|
90
|
-
className: o.clear,
|
|
91
|
-
role: "button",
|
|
92
|
-
children: f
|
|
93
|
-
}
|
|
94
|
-
),
|
|
95
|
-
/* @__PURE__ */ m("div", { className: o.icons, children: [
|
|
96
|
-
/* @__PURE__ */ t(
|
|
97
|
-
"button",
|
|
98
|
-
{
|
|
99
|
-
"aria-label": "toggle menu",
|
|
100
|
-
...V(),
|
|
101
|
-
type: "button",
|
|
102
|
-
disabled: g,
|
|
103
|
-
onMouseDown: () => {
|
|
104
|
-
n.current = !0;
|
|
105
|
-
},
|
|
106
|
-
children: /* @__PURE__ */ t(q, { size: 16, className: o.caret })
|
|
107
|
-
}
|
|
108
|
-
),
|
|
109
|
-
s === "success" ? /* @__PURE__ */ t(
|
|
110
|
-
G,
|
|
111
|
-
{
|
|
112
|
-
size: 16,
|
|
113
|
-
className: o.iconSuccess,
|
|
114
|
-
"data-test-id": `${i}-success-icon`
|
|
115
|
-
}
|
|
116
|
-
) : null,
|
|
117
|
-
x || s === "error" ? /* @__PURE__ */ t(
|
|
118
|
-
J,
|
|
119
|
-
{
|
|
120
|
-
size: 16,
|
|
121
|
-
className: o.iconError,
|
|
122
|
-
"data-test-id": `${i}-error-icon`
|
|
123
|
-
}
|
|
124
|
-
) : null
|
|
125
|
-
] })
|
|
126
|
-
] }) }),
|
|
127
|
-
/* @__PURE__ */ t(
|
|
128
|
-
Z,
|
|
129
|
-
{
|
|
130
|
-
align: M,
|
|
131
|
-
side: y,
|
|
132
|
-
highlightedIndex: A,
|
|
133
|
-
filterText: H,
|
|
134
|
-
getMenuProps: z,
|
|
135
|
-
getItemProps: j,
|
|
136
|
-
selectedItem: r,
|
|
137
|
-
hasInteractedSinceOpening: T,
|
|
138
|
-
viewportCollisionPadding: L,
|
|
139
|
-
children: D
|
|
140
|
-
}
|
|
141
|
-
)
|
|
142
|
-
] });
|
|
1
|
+
const t = "_root_191ct_5", e = "_item_191ct_30", c = "_itemLabel_191ct_50", a = "_itemLabelActive_191ct_70", i = "_itemLabelInactive_191ct_100", o = "_activeIndicator_191ct_130", _ = "_separator_191ct_227", n = {
|
|
2
|
+
root: t,
|
|
3
|
+
item: e,
|
|
4
|
+
itemLabel: c,
|
|
5
|
+
itemLabelActive: a,
|
|
6
|
+
itemLabelInactive: i,
|
|
7
|
+
activeIndicator: o,
|
|
8
|
+
separator: _
|
|
143
9
|
};
|
|
144
|
-
S.displayName = "Select.Combobox";
|
|
145
|
-
const ce = U(S);
|
|
146
10
|
export {
|
|
147
|
-
|
|
148
|
-
|
|
11
|
+
o as activeIndicator,
|
|
12
|
+
n as default,
|
|
13
|
+
e as item,
|
|
14
|
+
c as itemLabel,
|
|
15
|
+
a as itemLabelActive,
|
|
16
|
+
i as itemLabelInactive,
|
|
17
|
+
t as root,
|
|
18
|
+
_ as separator
|
|
149
19
|
};
|
|
150
20
|
//# sourceMappingURL=fondue-components62.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fondue-components62.js","sources":["../src/components/Select/Combobox.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconCaretDown, IconCheckMark, IconExclamationMarkTriangle } from '@frontify/fondue-icons';\nimport * as RadixPopover from '@radix-ui/react-popover';\nimport { Slot as RadixSlot } from '@radix-ui/react-slot';\nimport { useCombobox } from 'downshift';\nimport { forwardRef, useMemo, useRef, useState, type FocusEvent, type ForwardedRef, type ReactNode } from 'react';\n\nimport { type CommonAriaProps } from '#/helpers/aria';\n\nimport { SelectMenu, type SelectMenuViewportCollisionPadding } from './SelectMenu';\nimport styles from './styles/select.module.scss';\nimport { useSelectData } from './useSelectData';\n\nexport type ComboboxProps = {\n /**\n * Children of the Combobox component. This can contain the `Select.Slot` components for the label, decorators, clear action and menu.\n */\n children?: ReactNode;\n /**\n * Callback function that is called when an item is selected.\n */\n onSelect?: (selectedValue: string | null) => void;\n /**\n * The active value in the combobox component. This is used to control the combobox externally.\n */\n value?: string | null;\n /**\n * The default value of the combobox component. Used for uncontrolled usages.\n */\n defaultValue?: string;\n /**\n * The placeholder in the combobox 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 combobox component.\n */\n disabled?: boolean;\n /**\n * The alignment of the menu.\n * @default \"start\"\n */\n alignMenu?: 'start' | 'center' | 'end' /**\n * Defines the preferred side of the combobox. It will not be respected if there are collisions with the viewport.\n * @default \"bottom\"\n */;\n side?: 'left' | 'right' | 'bottom' | 'top';\n /**\n * Id of the combobox component\n */\n id?: string;\n /**\n * The data test id of the combobox component.\n */\n 'data-test-id'?: string;\n /**\n * Define the minimum distance between the select menu and the viewport edge\n * @default 'compact'\n */\n viewportCollisionPadding?: SelectMenuViewportCollisionPadding;\n} & CommonAriaProps;\n\nexport const SelectCombobox = (\n {\n children,\n onSelect,\n value,\n defaultValue,\n placeholder = '',\n status = 'neutral',\n disabled,\n 'data-test-id': dataTestId = 'fondue-select-combobox',\n alignMenu = 'start',\n side = 'bottom',\n id,\n viewportCollisionPadding = 'compact',\n ...props\n }: ComboboxProps,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n) => {\n const { inputSlots, menuSlots, items, filterText, clearButton, getItemByValue, setFilterText } =\n useSelectData(children);\n\n const [hasInteractedSinceOpening, setHasInteractedSinceOpening] = useState(false);\n\n const {\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n reset,\n selectedItem,\n isOpen,\n highlightedIndex,\n inputValue,\n } = useCombobox({\n items,\n selectedItem: getItemByValue(value),\n defaultSelectedItem: getItemByValue(defaultValue),\n defaultHighlightedIndex: 0,\n toggleButtonId: id,\n labelId: 'aria-labelledby' in props ? props['aria-labelledby'] : undefined,\n onSelectedItemChange: ({ selectedItem }) => {\n onSelect?.(selectedItem?.value ?? null);\n },\n onInputValueChange: ({ inputValue }) => {\n setFilterText(inputValue);\n },\n onIsOpenChange: () => {\n setHasInteractedSinceOpening(false);\n setFilterText('');\n },\n onHighlightedIndexChange: () => {\n setHasInteractedSinceOpening(true);\n },\n itemToString: (item) => (item ? item.label : ''),\n });\n\n const wasClicked = useRef(false);\n\n const valueInvalid = useMemo(\n () => !items.find((item) => item.label.toLowerCase().includes(inputValue.toLowerCase())),\n [inputValue, items],\n );\n\n const onBlurHandler = (blurEvent: FocusEvent<HTMLInputElement, Element>) => {\n blurEvent.target.dataset.showFocusRing = 'false';\n wasClicked.current = false;\n\n const selectedItemNullOrOutdated = selectedItem?.label.toLocaleLowerCase() !== inputValue.toLocaleLowerCase();\n\n if (selectedItemNullOrOutdated) {\n // if there is no selection or\n // the existing selected value is not the same as the input value (old),\n // reset the input\n reset();\n }\n\n if (getInputProps().onBlur) {\n getInputProps().onBlur?.(blurEvent);\n }\n };\n\n return (\n <RadixPopover.Root open={isOpen}>\n <RadixPopover.Anchor asChild>\n <div ref={forwardedRef} className={styles.root} data-status={valueInvalid ? 'error' : status}>\n <input\n {...getInputProps({\n 'aria-label': 'aria-label' in props ? props['aria-label'] : undefined,\n })}\n data-test-id={dataTestId}\n placeholder={placeholder}\n className={styles.input}\n disabled={disabled}\n onMouseDown={(mouseEvent) => {\n wasClicked.current = true;\n mouseEvent.currentTarget.dataset.showFocusRing = 'false';\n }}\n onFocus={(focusEvent) => {\n if (!wasClicked.current) {\n focusEvent.target.dataset.showFocusRing = 'true';\n }\n }}\n onBlur={onBlurHandler}\n />\n {inputSlots}\n {clearButton && (\n <RadixSlot\n onClick={(event) => {\n event.stopPropagation();\n reset();\n }}\n className={styles.clear}\n role=\"button\"\n >\n {clearButton}\n </RadixSlot>\n )}\n <div className={styles.icons}>\n <button\n aria-label=\"toggle menu\"\n {...getToggleButtonProps()}\n type=\"button\"\n disabled={disabled}\n onMouseDown={() => {\n wasClicked.current = true;\n }}\n >\n <IconCaretDown size={16} className={styles.caret} />\n </button>\n {status === 'success' ? (\n <IconCheckMark\n size={16}\n className={styles.iconSuccess}\n data-test-id={`${dataTestId}-success-icon`}\n />\n ) : null}\n {valueInvalid || status === 'error' ? (\n <IconExclamationMarkTriangle\n size={16}\n className={styles.iconError}\n data-test-id={`${dataTestId}-error-icon`}\n />\n ) : null}\n </div>\n </div>\n </RadixPopover.Anchor>\n\n <SelectMenu\n align={alignMenu}\n side={side}\n highlightedIndex={highlightedIndex}\n filterText={filterText}\n getMenuProps={getMenuProps}\n getItemProps={getItemProps}\n selectedItem={selectedItem}\n hasInteractedSinceOpening={hasInteractedSinceOpening}\n viewportCollisionPadding={viewportCollisionPadding}\n >\n {menuSlots}\n </SelectMenu>\n </RadixPopover.Root>\n );\n};\nSelectCombobox.displayName = 'Select.Combobox';\n\nexport const ForwardedRefCombobox = forwardRef<HTMLDivElement, ComboboxProps>(SelectCombobox);\n"],"names":["SelectCombobox","children","onSelect","value","defaultValue","placeholder","status","disabled","dataTestId","alignMenu","side","id","viewportCollisionPadding","props","forwardedRef","inputSlots","menuSlots","items","filterText","clearButton","getItemByValue","setFilterText","useSelectData","hasInteractedSinceOpening","setHasInteractedSinceOpening","useState","getInputProps","getToggleButtonProps","getMenuProps","getItemProps","reset","selectedItem","isOpen","highlightedIndex","inputValue","useCombobox","item","wasClicked","useRef","valueInvalid","useMemo","onBlurHandler","blurEvent","_b","_a","jsxs","RadixPopover","jsx","styles","mouseEvent","focusEvent","RadixSlot","event","IconCaretDown","IconCheckMark","IconExclamationMarkTriangle","SelectMenu","ForwardedRefCombobox","forwardRef"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fondue-components62.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
|
|
@@ -1,22 +1,154 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { IconCheckMark as
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
import { jsxs as g, jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { IconCaretDown as Q, IconCheckMark as U, IconExclamationMarkTriangle as W } from "@frontify/fondue-icons";
|
|
3
|
+
import * as B from "@radix-ui/react-popover";
|
|
4
|
+
import { Slot as X } from "@radix-ui/react-slot";
|
|
5
|
+
import { useCombobox as Y } from "downshift";
|
|
6
|
+
import { forwardRef as Z, useState as _, useRef as A, useMemo as ee } from "react";
|
|
7
|
+
import { LoadingCircle as oe } from "./fondue-components18.js";
|
|
8
|
+
import { ForwardedRefSelectSlot as te } from "./fondue-components66.js";
|
|
9
|
+
import { SelectMenu as re } from "./fondue-components65.js";
|
|
10
|
+
import t from "./fondue-components67.js";
|
|
11
|
+
import { useSelectData as ae } from "./fondue-components68.js";
|
|
12
|
+
const L = ({
|
|
13
|
+
children: O,
|
|
14
|
+
onSelect: i,
|
|
15
|
+
value: v,
|
|
16
|
+
defaultValue: F,
|
|
17
|
+
placeholder: M = "",
|
|
18
|
+
status: s = "neutral",
|
|
19
|
+
disabled: f,
|
|
20
|
+
"data-test-id": r = "fondue-select-combobox",
|
|
21
|
+
alignMenu: P = "start",
|
|
22
|
+
side: k = "bottom",
|
|
23
|
+
id: y,
|
|
24
|
+
viewportCollisionPadding: z = "compact",
|
|
25
|
+
getAsyncItems: c,
|
|
26
|
+
...a
|
|
27
|
+
}, D) => {
|
|
28
|
+
const { inputSlots: H, menuSlots: V, items: u, filterText: $, clearButton: h, getItemByValue: p, setFilterText: b, asyncItemStatus: C } = ae(O, c), [j, x] = _(!1), {
|
|
29
|
+
getInputProps: d,
|
|
30
|
+
getToggleButtonProps: E,
|
|
31
|
+
getMenuProps: T,
|
|
32
|
+
getItemProps: q,
|
|
33
|
+
reset: w,
|
|
34
|
+
selectedItem: l,
|
|
35
|
+
isOpen: S,
|
|
36
|
+
highlightedIndex: G,
|
|
37
|
+
inputValue: m
|
|
38
|
+
} = Y({
|
|
39
|
+
items: u,
|
|
40
|
+
selectedItem: p(v),
|
|
41
|
+
defaultSelectedItem: p(F),
|
|
42
|
+
defaultHighlightedIndex: 0,
|
|
43
|
+
toggleButtonId: y,
|
|
44
|
+
labelId: "aria-labelledby" in a ? a["aria-labelledby"] : void 0,
|
|
45
|
+
onSelectedItemChange: ({ selectedItem: e }) => {
|
|
46
|
+
i == null || i((e == null ? void 0 : e.value) ?? null);
|
|
47
|
+
},
|
|
48
|
+
onInputValueChange: ({ inputValue: e }) => {
|
|
49
|
+
b(e);
|
|
50
|
+
},
|
|
51
|
+
onIsOpenChange: () => {
|
|
52
|
+
x(!1), b("");
|
|
53
|
+
},
|
|
54
|
+
onHighlightedIndexChange: () => {
|
|
55
|
+
x(!0);
|
|
56
|
+
},
|
|
57
|
+
itemToString: (e) => e ? e.label : ""
|
|
58
|
+
}), n = A(!1), J = ee(
|
|
59
|
+
() => !c && !u.find((e) => e.label.toLowerCase().includes(m.toLowerCase())),
|
|
60
|
+
[m, u, c]
|
|
61
|
+
), K = (e) => {
|
|
62
|
+
var N, R;
|
|
63
|
+
e.target.dataset.showFocusRing = "false", n.current = !1, (l == null ? void 0 : l.label.toLocaleLowerCase()) !== m.toLocaleLowerCase() && w(), d().onBlur && ((R = (N = d()).onBlur) == null || R.call(N, e));
|
|
64
|
+
}, I = J || !!C.error || s === "error";
|
|
65
|
+
return /* @__PURE__ */ g(B.Root, { open: S, children: [
|
|
66
|
+
/* @__PURE__ */ o(B.Anchor, { asChild: !0, children: /* @__PURE__ */ g("div", { ref: D, className: t.root, "data-status": I ? "error" : s, children: [
|
|
67
|
+
/* @__PURE__ */ o(
|
|
68
|
+
"input",
|
|
69
|
+
{
|
|
70
|
+
...d({
|
|
71
|
+
"aria-label": "aria-label" in a ? a["aria-label"] : void 0
|
|
72
|
+
}),
|
|
73
|
+
"data-test-id": r,
|
|
74
|
+
placeholder: M,
|
|
75
|
+
className: t.input,
|
|
76
|
+
disabled: f,
|
|
77
|
+
onMouseDown: (e) => {
|
|
78
|
+
n.current = !0, e.currentTarget.dataset.showFocusRing = "false";
|
|
79
|
+
},
|
|
80
|
+
onFocus: (e) => {
|
|
81
|
+
n.current || (e.target.dataset.showFocusRing = "true");
|
|
82
|
+
},
|
|
83
|
+
onBlur: K
|
|
84
|
+
}
|
|
85
|
+
),
|
|
86
|
+
H,
|
|
87
|
+
h && /* @__PURE__ */ o(
|
|
88
|
+
X,
|
|
89
|
+
{
|
|
90
|
+
onClick: (e) => {
|
|
91
|
+
e.stopPropagation(), w();
|
|
92
|
+
},
|
|
93
|
+
className: t.clear,
|
|
94
|
+
role: "button",
|
|
95
|
+
children: h
|
|
96
|
+
}
|
|
97
|
+
),
|
|
98
|
+
C.isLoading && S ? /* @__PURE__ */ o(te, { name: "right", "data-test-id": `${r}-right-slot`, children: /* @__PURE__ */ o(oe, { size: "x-small", "data-test-id": `${r}-loading-circle` }) }) : null,
|
|
99
|
+
/* @__PURE__ */ g("div", { className: t.icons, children: [
|
|
100
|
+
/* @__PURE__ */ o(
|
|
101
|
+
"button",
|
|
102
|
+
{
|
|
103
|
+
"aria-label": "toggle menu",
|
|
104
|
+
...E(),
|
|
105
|
+
type: "button",
|
|
106
|
+
disabled: f,
|
|
107
|
+
onMouseDown: () => {
|
|
108
|
+
n.current = !0;
|
|
109
|
+
},
|
|
110
|
+
children: /* @__PURE__ */ o(Q, { size: 16, className: t.caret })
|
|
111
|
+
}
|
|
112
|
+
),
|
|
113
|
+
s === "success" ? /* @__PURE__ */ o(
|
|
114
|
+
U,
|
|
115
|
+
{
|
|
116
|
+
size: 16,
|
|
117
|
+
className: t.iconSuccess,
|
|
118
|
+
"data-test-id": `${r}-success-icon`
|
|
119
|
+
}
|
|
120
|
+
) : null,
|
|
121
|
+
I ? /* @__PURE__ */ o(
|
|
122
|
+
W,
|
|
123
|
+
{
|
|
124
|
+
size: 16,
|
|
125
|
+
className: t.iconError,
|
|
126
|
+
"data-test-id": `${r}-error-icon`
|
|
127
|
+
}
|
|
128
|
+
) : null
|
|
129
|
+
] })
|
|
130
|
+
] }) }),
|
|
131
|
+
/* @__PURE__ */ o(
|
|
132
|
+
re,
|
|
133
|
+
{
|
|
134
|
+
align: P,
|
|
135
|
+
side: k,
|
|
136
|
+
highlightedIndex: G,
|
|
137
|
+
filterText: $,
|
|
138
|
+
getMenuProps: T,
|
|
139
|
+
getItemProps: q,
|
|
140
|
+
selectedItem: l,
|
|
141
|
+
hasInteractedSinceOpening: j,
|
|
142
|
+
viewportCollisionPadding: z,
|
|
143
|
+
children: V
|
|
144
|
+
}
|
|
145
|
+
)
|
|
146
|
+
] });
|
|
147
|
+
};
|
|
148
|
+
L.displayName = "Select.Combobox";
|
|
149
|
+
const pe = Z(L);
|
|
16
150
|
export {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
o as SelectItem,
|
|
20
|
-
s as SelectItemGroup
|
|
151
|
+
pe as ForwardedRefCombobox,
|
|
152
|
+
L as SelectCombobox
|
|
21
153
|
};
|
|
22
154
|
//# sourceMappingURL=fondue-components63.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fondue-components63.js","sources":["../src/components/Select/SelectItem.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconCheckMark } from '@frontify/fondue-icons';\nimport { forwardRef, type ForwardedRef, type ReactNode } from 'react';\n\nimport styles from './styles/select.module.scss';\n\nexport type SelectItemProps = {\n /**\n * The value of the select item.\n */\n value: string;\n /**\n * The data test id of the select item.\n */\n 'data-test-id'?: string;\n} & (\n | {\n /**\n * The label of the select item. Required when the child is not a string.\n */\n label: string;\n /**\n * The children of the select item. This can be a custom component or a string.\n */\n children?: ReactNode;\n }\n | {\n label?: string;\n children: string;\n }\n);\n\nexport const SelectItem = (\n { 'data-test-id': dataTestId = 'fondue-select-item', ...props }: SelectItemProps,\n forwardedRef?: ForwardedRef<HTMLLIElement>,\n) => {\n return (\n <li data-test-id={dataTestId} ref={forwardedRef} {...props}>\n <div className={styles.itemValue}>{props.children}</div>\n <IconCheckMark className={styles.checkmarkIcon} />\n </li>\n );\n};\nSelectItem.displayName = 'Select.Item';\n\nexport const ForwardedRefSelectItem = forwardRef<HTMLLIElement, SelectItemProps>(SelectItem);\n\nexport type SelectItemGroupProps = {\n /**\n * The children of the select item group. This can contain multiple `Select.Item` components.\n */\n children: ReactNode;\n /**\n * The internal group ID of the select item group.\n */\n groupId: string;\n /**\n * The groups heading\n */\n heading?: string;\n /**\n * The data test id of the select item group.\n */\n 'data-test-id'?: string;\n};\n\nexport const SelectItemGroup = (\n { children, groupId, heading, 'data-test-id': dataTestId = 'fondue-select-item-group' }: SelectItemGroupProps,\n forwardedRef?: ForwardedRef<HTMLDivElement>,\n) => {\n return (\n <div data-test-id={dataTestId} className={styles.group} ref={forwardedRef} key={groupId}>\n {heading ? (\n <div className={styles.groupHeading}>\n <span>{heading}</span>\n </div>\n ) : null}\n {children}\n </div>\n );\n};\nSelectItemGroup.displayName = 'Select.Group';\n\nexport const ForwardedRefSelectItemGroup = forwardRef<HTMLDivElement, SelectItemGroupProps>(SelectItemGroup);\n"],"names":["SelectItem","dataTestId","props","forwardedRef","jsx","styles","IconCheckMark","ForwardedRefSelectItem","forwardRef","SelectItemGroup","children","groupId","heading","jsxs","ForwardedRefSelectItemGroup"],"mappings":";;;;AAiCa,MAAAA,IAAa,CACtB,EAAE,gBAAgBC,IAAa,sBAAsB,GAAGC,EAAM,GAC9DC,wBAGK,MAAG,EAAA,gBAAcF,GAAY,KAAKE,GAAe,GAAGD,GACjD,UAAA;AAAA,EAAA,gBAAAE,EAAC,OAAI,EAAA,WAAWC,EAAO,WAAY,YAAM,UAAS;AAAA,EACjD,gBAAAD,EAAAE,GAAA,EAAc,WAAWD,EAAO,cAAe,CAAA;AAAA,GACpD;AAGRL,EAAW,cAAc;AAEZ,MAAAO,IAAyBC,EAA2CR,CAAU,GAqB9ES,IAAkB,CAC3B,EAAE,UAAAC,GAAU,SAAAC,GAAS,SAAAC,GAAS,gBAAgBX,IAAa,2BAA2B,GACtFE,MAGI,gBAAAU,EAAC,SAAI,gBAAcZ,GAAY,WAAWI,EAAO,OAAO,KAAKF,GACxD,UAAA;AAAA,EACGS,IAAA,gBAAAR,EAAC,SAAI,WAAWC,EAAO,cACnB,UAAC,gBAAAD,EAAA,QAAA,EAAM,UAAQQ,EAAA,CAAA,EAAA,CACnB,IACA;AAAA,EACHF;AAAA,EAAA,GAN2EC,CAOhF;AAGRF,EAAgB,cAAc;AAEjB,MAAAK,IAA8BN,EAAiDC,CAAe;"}
|
|
1
|
+
{"version":3,"file":"fondue-components63.js","sources":["../src/components/Select/Combobox.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconCaretDown, IconCheckMark, IconExclamationMarkTriangle } from '@frontify/fondue-icons';\nimport * as RadixPopover from '@radix-ui/react-popover';\nimport { Slot as RadixSlot } from '@radix-ui/react-slot';\nimport { useCombobox } from 'downshift';\nimport { forwardRef, useMemo, useRef, useState, type FocusEvent, type ForwardedRef, type ReactNode } from 'react';\n\nimport { LoadingCircle } from '#/components/LoadingCircle/LoadingCircle.tsx';\nimport { ForwardedRefSelectSlot } from '#/components/Select/SelectSlot.tsx';\nimport { type CommonAriaProps } from '#/helpers/aria';\n\nimport { SelectMenu, type SelectMenuViewportCollisionPadding } from './SelectMenu';\nimport styles from './styles/select.module.scss';\nimport { type AsyncItemsFetcher, useSelectData } from './useSelectData';\n\nexport type ComboboxProps = {\n /**\n * Children of the Combobox component. This can contain the `Select.Slot` components for the label, decorators, clear action and menu.\n */\n children?: ReactNode;\n /**\n * Callback function that is called when an item is selected.\n */\n onSelect?: (selectedValue: string | null) => void;\n /**\n * The active value in the combobox component. This is used to control the combobox externally.\n */\n value?: string | null;\n /**\n * The default value of the combobox component. Used for uncontrolled usages.\n */\n defaultValue?: string;\n /**\n * The placeholder in the combobox 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 combobox component.\n */\n disabled?: boolean;\n /**\n * The alignment of the menu.\n * @default \"start\"\n */\n alignMenu?: 'start' | 'center' | 'end' /**\n * Defines the preferred side of the combobox. It will not be respected if there are collisions with the viewport.\n * @default \"bottom\"\n */;\n side?: 'left' | 'right' | 'bottom' | 'top';\n /**\n * Id of the combobox component\n */\n id?: string;\n /**\n * The data test id of the combobox component.\n */\n 'data-test-id'?: string;\n /**\n * Define the minimum distance between the select menu and the viewport edge\n * @default 'compact'\n */\n viewportCollisionPadding?: SelectMenuViewportCollisionPadding;\n /**\n * Function to fetch items asynchronously.\n */\n getAsyncItems?: AsyncItemsFetcher;\n} & CommonAriaProps;\n\nexport const SelectCombobox = (\n {\n children,\n onSelect,\n value,\n defaultValue,\n placeholder = '',\n status = 'neutral',\n disabled,\n 'data-test-id': dataTestId = 'fondue-select-combobox',\n alignMenu = 'start',\n side = 'bottom',\n id,\n viewportCollisionPadding = 'compact',\n getAsyncItems,\n ...props\n }: ComboboxProps,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n) => {\n const { inputSlots, menuSlots, items, filterText, clearButton, getItemByValue, setFilterText, asyncItemStatus } =\n useSelectData(children, getAsyncItems);\n\n const [hasInteractedSinceOpening, setHasInteractedSinceOpening] = useState(false);\n\n const {\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n reset,\n selectedItem,\n isOpen,\n highlightedIndex,\n inputValue,\n } = useCombobox({\n items,\n selectedItem: getItemByValue(value),\n defaultSelectedItem: getItemByValue(defaultValue),\n defaultHighlightedIndex: 0,\n toggleButtonId: id,\n labelId: 'aria-labelledby' in props ? props['aria-labelledby'] : undefined,\n onSelectedItemChange: ({ selectedItem }) => {\n onSelect?.(selectedItem?.value ?? null);\n },\n onInputValueChange: ({ inputValue }) => {\n setFilterText(inputValue);\n },\n onIsOpenChange: () => {\n setHasInteractedSinceOpening(false);\n setFilterText('');\n },\n onHighlightedIndexChange: () => {\n setHasInteractedSinceOpening(true);\n },\n itemToString: (item) => (item ? item.label : ''),\n });\n\n const wasClicked = useRef(false);\n\n const valueInvalid = useMemo(\n () => !getAsyncItems && !items.find((item) => item.label.toLowerCase().includes(inputValue.toLowerCase())),\n [inputValue, items, getAsyncItems],\n );\n\n const onBlurHandler = (blurEvent: FocusEvent<HTMLInputElement, Element>) => {\n blurEvent.target.dataset.showFocusRing = 'false';\n wasClicked.current = false;\n\n const selectedItemNullOrOutdated = selectedItem?.label.toLocaleLowerCase() !== inputValue.toLocaleLowerCase();\n\n if (selectedItemNullOrOutdated) {\n // if there is no selection or\n // the existing selected value is not the same as the input value (old),\n // reset the input\n reset();\n }\n\n if (getInputProps().onBlur) {\n getInputProps().onBlur?.(blurEvent);\n }\n };\n const hasError = valueInvalid || !!asyncItemStatus.error || status === 'error';\n\n return (\n <RadixPopover.Root open={isOpen}>\n <RadixPopover.Anchor asChild>\n <div ref={forwardedRef} className={styles.root} data-status={hasError ? 'error' : status}>\n <input\n {...getInputProps({\n 'aria-label': 'aria-label' in props ? props['aria-label'] : undefined,\n })}\n data-test-id={dataTestId}\n placeholder={placeholder}\n className={styles.input}\n disabled={disabled}\n onMouseDown={(mouseEvent) => {\n wasClicked.current = true;\n mouseEvent.currentTarget.dataset.showFocusRing = 'false';\n }}\n onFocus={(focusEvent) => {\n if (!wasClicked.current) {\n focusEvent.target.dataset.showFocusRing = 'true';\n }\n }}\n onBlur={onBlurHandler}\n />\n {inputSlots}\n {clearButton && (\n <RadixSlot\n onClick={(event) => {\n event.stopPropagation();\n reset();\n }}\n className={styles.clear}\n role=\"button\"\n >\n {clearButton}\n </RadixSlot>\n )}\n {asyncItemStatus.isLoading && isOpen ? (\n <ForwardedRefSelectSlot name=\"right\" data-test-id={`${dataTestId}-right-slot`}>\n <LoadingCircle size=\"x-small\" data-test-id={`${dataTestId}-loading-circle`} />\n </ForwardedRefSelectSlot>\n ) : null}\n <div className={styles.icons}>\n <button\n aria-label=\"toggle menu\"\n {...getToggleButtonProps()}\n type=\"button\"\n disabled={disabled}\n onMouseDown={() => {\n wasClicked.current = true;\n }}\n >\n <IconCaretDown size={16} className={styles.caret} />\n </button>\n {status === 'success' ? (\n <IconCheckMark\n size={16}\n className={styles.iconSuccess}\n data-test-id={`${dataTestId}-success-icon`}\n />\n ) : null}\n {hasError ? (\n <IconExclamationMarkTriangle\n size={16}\n className={styles.iconError}\n data-test-id={`${dataTestId}-error-icon`}\n />\n ) : null}\n </div>\n </div>\n </RadixPopover.Anchor>\n\n <SelectMenu\n align={alignMenu}\n side={side}\n highlightedIndex={highlightedIndex}\n filterText={filterText}\n getMenuProps={getMenuProps}\n getItemProps={getItemProps}\n selectedItem={selectedItem}\n hasInteractedSinceOpening={hasInteractedSinceOpening}\n viewportCollisionPadding={viewportCollisionPadding}\n >\n {menuSlots}\n </SelectMenu>\n </RadixPopover.Root>\n );\n};\nSelectCombobox.displayName = 'Select.Combobox';\n\nexport const ForwardedRefCombobox = forwardRef<HTMLDivElement, ComboboxProps>(SelectCombobox);\n"],"names":["SelectCombobox","children","onSelect","value","defaultValue","placeholder","status","disabled","dataTestId","alignMenu","side","id","viewportCollisionPadding","getAsyncItems","props","forwardedRef","inputSlots","menuSlots","items","filterText","clearButton","getItemByValue","setFilterText","asyncItemStatus","useSelectData","hasInteractedSinceOpening","setHasInteractedSinceOpening","useState","getInputProps","getToggleButtonProps","getMenuProps","getItemProps","reset","selectedItem","isOpen","highlightedIndex","inputValue","useCombobox","item","wasClicked","useRef","valueInvalid","useMemo","onBlurHandler","blurEvent","_b","_a","hasError","jsxs","RadixPopover","jsx","styles","mouseEvent","focusEvent","RadixSlot","event","ForwardedRefSelectSlot","LoadingCircle","IconCaretDown","IconCheckMark","IconExclamationMarkTriangle","SelectMenu","ForwardedRefCombobox","forwardRef"],"mappings":"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"}
|
|
@@ -1,80 +1,22 @@
|
|
|
1
|
-
import { jsx as r } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
selectedItem: t,
|
|
17
|
-
hasInteractedSinceOpening: h,
|
|
18
|
-
viewportCollisionPadding: v = "compact"
|
|
19
|
-
}) => {
|
|
20
|
-
const P = (e) => {
|
|
21
|
-
e.preventDefault();
|
|
22
|
-
}, O = {
|
|
23
|
-
compact: 8,
|
|
24
|
-
spacious: 24
|
|
25
|
-
}, N = g();
|
|
26
|
-
return /* @__PURE__ */ r(i.Portal, { children: /* @__PURE__ */ r(A, { theme: N, children: /* @__PURE__ */ r(
|
|
27
|
-
i.Content,
|
|
28
|
-
{
|
|
29
|
-
align: f,
|
|
30
|
-
side: d,
|
|
31
|
-
collisionPadding: O[v] + 8,
|
|
32
|
-
onOpenAutoFocus: P,
|
|
33
|
-
className: n.portal,
|
|
34
|
-
children: /* @__PURE__ */ r(
|
|
35
|
-
"ul",
|
|
36
|
-
{
|
|
37
|
-
className: n.menu,
|
|
38
|
-
...l({}, { suppressRefError: !0 }),
|
|
39
|
-
"data-has-interacted": h ? "true" : "false",
|
|
40
|
-
"data-test-id": "fondue-select-menu",
|
|
41
|
-
children: D(
|
|
42
|
-
u,
|
|
43
|
-
(e, s) => {
|
|
44
|
-
if (((o) => (
|
|
45
|
-
// @ts-expect-error - We are explicitly checking for ref
|
|
46
|
-
V(o) && o.ref !== void 0
|
|
47
|
-
))(e)) {
|
|
48
|
-
const o = M(e.props), a = m({
|
|
49
|
-
item: o,
|
|
50
|
-
index: s,
|
|
51
|
-
...e.ref ? { ref: e.ref } : {}
|
|
52
|
-
});
|
|
53
|
-
return /* @__PURE__ */ r(
|
|
54
|
-
C,
|
|
55
|
-
{
|
|
56
|
-
className: n.item,
|
|
57
|
-
"data-highlighted": p === s,
|
|
58
|
-
"data-selected": (t == null ? void 0 : t.value) === o.value,
|
|
59
|
-
onTouchStart: (S) => {
|
|
60
|
-
a.onClick && a.onClick(S);
|
|
61
|
-
},
|
|
62
|
-
...a,
|
|
63
|
-
children: e
|
|
64
|
-
},
|
|
65
|
-
e.props.value
|
|
66
|
-
);
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
c
|
|
70
|
-
).parsedChildren
|
|
71
|
-
}
|
|
72
|
-
)
|
|
73
|
-
}
|
|
74
|
-
) }) });
|
|
75
|
-
};
|
|
76
|
-
T.displayName = "Select.Menu";
|
|
1
|
+
import { jsxs as d, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { IconCheckMark as n } from "@frontify/fondue-icons";
|
|
3
|
+
import { forwardRef as l } from "react";
|
|
4
|
+
import a from "./fondue-components67.js";
|
|
5
|
+
const o = ({ "data-test-id": c = "fondue-select-item", ...e }, t) => /* @__PURE__ */ d("li", { "data-test-id": c, ref: t, ...e, children: [
|
|
6
|
+
/* @__PURE__ */ r("div", { className: a.itemValue, children: e.children }),
|
|
7
|
+
/* @__PURE__ */ r(n, { className: a.checkmarkIcon })
|
|
8
|
+
] });
|
|
9
|
+
o.displayName = "Select.Item";
|
|
10
|
+
const I = l(o), s = ({ children: c, groupId: e, heading: t, "data-test-id": i = "fondue-select-item-group" }, m) => /* @__PURE__ */ d("div", { "data-test-id": i, className: a.group, ref: m, children: [
|
|
11
|
+
t ? /* @__PURE__ */ r("div", { className: a.groupHeading, children: /* @__PURE__ */ r("span", { children: t }) }) : null,
|
|
12
|
+
c
|
|
13
|
+
] }, e);
|
|
14
|
+
s.displayName = "Select.Group";
|
|
15
|
+
const N = l(s);
|
|
77
16
|
export {
|
|
78
|
-
|
|
17
|
+
I as ForwardedRefSelectItem,
|
|
18
|
+
N as ForwardedRefSelectItemGroup,
|
|
19
|
+
o as SelectItem,
|
|
20
|
+
s as SelectItemGroup
|
|
79
21
|
};
|
|
80
22
|
//# sourceMappingURL=fondue-components64.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fondue-components64.js","sources":["../src/components/Select/
|
|
1
|
+
{"version":3,"file":"fondue-components64.js","sources":["../src/components/Select/SelectItem.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconCheckMark } from '@frontify/fondue-icons';\nimport { forwardRef, type ForwardedRef, type ReactNode } from 'react';\n\nimport styles from './styles/select.module.scss';\n\nexport type SelectItemProps = {\n /**\n * The value of the select item.\n */\n value: string;\n /**\n * The data test id of the select item.\n */\n 'data-test-id'?: string;\n} & (\n | {\n /**\n * The label of the select item. Required when the child is not a string.\n */\n label: string;\n /**\n * The children of the select item. This can be a custom component or a string.\n */\n children?: ReactNode;\n }\n | {\n label?: string;\n children: string;\n }\n);\n\nexport const SelectItem = (\n { 'data-test-id': dataTestId = 'fondue-select-item', ...props }: SelectItemProps,\n forwardedRef?: ForwardedRef<HTMLLIElement>,\n) => {\n return (\n <li data-test-id={dataTestId} ref={forwardedRef} {...props}>\n <div className={styles.itemValue}>{props.children}</div>\n <IconCheckMark className={styles.checkmarkIcon} />\n </li>\n );\n};\nSelectItem.displayName = 'Select.Item';\n\nexport const ForwardedRefSelectItem = forwardRef<HTMLLIElement, SelectItemProps>(SelectItem);\n\nexport type SelectItemGroupProps = {\n /**\n * The children of the select item group. This can contain multiple `Select.Item` components.\n */\n children: ReactNode;\n /**\n * The internal group ID of the select item group.\n */\n groupId: string;\n /**\n * The groups heading\n */\n heading?: string;\n /**\n * The data test id of the select item group.\n */\n 'data-test-id'?: string;\n};\n\nexport const SelectItemGroup = (\n { children, groupId, heading, 'data-test-id': dataTestId = 'fondue-select-item-group' }: SelectItemGroupProps,\n forwardedRef?: ForwardedRef<HTMLDivElement>,\n) => {\n return (\n <div data-test-id={dataTestId} className={styles.group} ref={forwardedRef} key={groupId}>\n {heading ? (\n <div className={styles.groupHeading}>\n <span>{heading}</span>\n </div>\n ) : null}\n {children}\n </div>\n );\n};\nSelectItemGroup.displayName = 'Select.Group';\n\nexport const ForwardedRefSelectItemGroup = forwardRef<HTMLDivElement, SelectItemGroupProps>(SelectItemGroup);\n"],"names":["SelectItem","dataTestId","props","forwardedRef","jsx","styles","IconCheckMark","ForwardedRefSelectItem","forwardRef","SelectItemGroup","children","groupId","heading","jsxs","ForwardedRefSelectItemGroup"],"mappings":";;;;AAiCa,MAAAA,IAAa,CACtB,EAAE,gBAAgBC,IAAa,sBAAsB,GAAGC,EAAM,GAC9DC,wBAGK,MAAG,EAAA,gBAAcF,GAAY,KAAKE,GAAe,GAAGD,GACjD,UAAA;AAAA,EAAA,gBAAAE,EAAC,OAAI,EAAA,WAAWC,EAAO,WAAY,YAAM,UAAS;AAAA,EACjD,gBAAAD,EAAAE,GAAA,EAAc,WAAWD,EAAO,cAAe,CAAA;AAAA,GACpD;AAGRL,EAAW,cAAc;AAEZ,MAAAO,IAAyBC,EAA2CR,CAAU,GAqB9ES,IAAkB,CAC3B,EAAE,UAAAC,GAAU,SAAAC,GAAS,SAAAC,GAAS,gBAAgBX,IAAa,2BAA2B,GACtFE,MAGI,gBAAAU,EAAC,SAAI,gBAAcZ,GAAY,WAAWI,EAAO,OAAO,KAAKF,GACxD,UAAA;AAAA,EACGS,IAAA,gBAAAR,EAAC,SAAI,WAAWC,EAAO,cACnB,UAAC,gBAAAD,EAAA,QAAA,EAAM,UAAQQ,EAAA,CAAA,EAAA,CACnB,IACA;AAAA,EACHF;AAAA,EAAA,GAN2EC,CAOhF;AAGRF,EAAgB,cAAc;AAEjB,MAAAK,IAA8BN,EAAiDC,CAAe;"}
|