@gooddata/sdk-ui-kit 11.13.0-alpha.6 → 11.13.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/esm/@ui/UiCombobox/UiCombobox.d.ts +32 -0
- package/esm/@ui/UiCombobox/UiCombobox.d.ts.map +1 -0
- package/esm/@ui/UiCombobox/UiCombobox.js +32 -0
- package/esm/@ui/UiCombobox/UiCombobox.js.map +1 -0
- package/esm/@ui/UiCombobox/UiComboboxContext.d.ts +10 -0
- package/esm/@ui/UiCombobox/UiComboboxContext.d.ts.map +1 -0
- package/esm/@ui/UiCombobox/UiComboboxContext.js +16 -0
- package/esm/@ui/UiCombobox/UiComboboxContext.js.map +1 -0
- package/esm/@ui/UiCombobox/UiComboboxInput.d.ts +6 -0
- package/esm/@ui/UiCombobox/UiComboboxInput.d.ts.map +1 -0
- package/esm/@ui/UiCombobox/UiComboboxInput.js +38 -0
- package/esm/@ui/UiCombobox/UiComboboxInput.js.map +1 -0
- package/esm/@ui/UiCombobox/UiComboboxList.d.ts +12 -0
- package/esm/@ui/UiCombobox/UiComboboxList.d.ts.map +1 -0
- package/esm/@ui/UiCombobox/UiComboboxList.js +13 -0
- package/esm/@ui/UiCombobox/UiComboboxList.js.map +1 -0
- package/esm/@ui/UiCombobox/UiComboboxListItem.d.ts +38 -0
- package/esm/@ui/UiCombobox/UiComboboxListItem.d.ts.map +1 -0
- package/esm/@ui/UiCombobox/UiComboboxListItem.js +56 -0
- package/esm/@ui/UiCombobox/UiComboboxListItem.js.map +1 -0
- package/esm/@ui/UiCombobox/UiComboboxPopup.d.ts +6 -0
- package/esm/@ui/UiCombobox/UiComboboxPopup.d.ts.map +1 -0
- package/esm/@ui/UiCombobox/UiComboboxPopup.js +13 -0
- package/esm/@ui/UiCombobox/UiComboboxPopup.js.map +1 -0
- package/esm/@ui/UiCombobox/comboboxBem.d.ts +2 -0
- package/esm/@ui/UiCombobox/comboboxBem.d.ts.map +1 -0
- package/esm/@ui/UiCombobox/comboboxBem.js +4 -0
- package/esm/@ui/UiCombobox/comboboxBem.js.map +1 -0
- package/esm/@ui/UiCombobox/index.d.ts +8 -0
- package/esm/@ui/UiCombobox/index.d.ts.map +1 -0
- package/esm/@ui/UiCombobox/index.js +8 -0
- package/esm/@ui/UiCombobox/index.js.map +1 -0
- package/esm/@ui/UiCombobox/types.d.ts +57 -0
- package/esm/@ui/UiCombobox/types.d.ts.map +1 -0
- package/esm/@ui/UiCombobox/types.js +3 -0
- package/esm/@ui/UiCombobox/types.js.map +1 -0
- package/esm/@ui/UiCombobox/useCombobox.d.ts +4 -0
- package/esm/@ui/UiCombobox/useCombobox.d.ts.map +1 -0
- package/esm/@ui/UiCombobox/useCombobox.js +168 -0
- package/esm/@ui/UiCombobox/useCombobox.js.map +1 -0
- package/esm/@ui/UiCombobox/utils.d.ts +3 -0
- package/esm/@ui/UiCombobox/utils.d.ts.map +1 -0
- package/esm/@ui/UiCombobox/utils.js +6 -0
- package/esm/@ui/UiCombobox/utils.js.map +1 -0
- package/esm/@ui/UiPagedVirtualList/UiPagedVirtualList.d.ts.map +1 -1
- package/esm/@ui/UiPagedVirtualList/UiPagedVirtualList.js +4 -4
- package/esm/@ui/UiPagedVirtualList/UiPagedVirtualList.js.map +1 -1
- package/esm/@ui/UiTags/UiTags.d.ts +1 -1
- package/esm/@ui/UiTags/UiTags.d.ts.map +1 -1
- package/esm/@ui/UiTags/UiTags.js +24 -14
- package/esm/@ui/UiTags/UiTags.js.map +1 -1
- package/esm/@ui/UiTags/interactions.d.ts.map +1 -1
- package/esm/@ui/UiTags/interactions.js +4 -5
- package/esm/@ui/UiTags/interactions.js.map +1 -1
- package/esm/@ui/UiTags/types.d.ts +2 -0
- package/esm/@ui/UiTags/types.d.ts.map +1 -1
- package/esm/@ui/UiTags/types.js +1 -0
- package/esm/@ui/UiTags/types.js.map +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/measureNumberFormat/hooks/useMetricTypePresets.d.ts +1 -28
- package/esm/measureNumberFormat/hooks/useMetricTypePresets.d.ts.map +1 -1
- package/esm/measureNumberFormat/hooks/useMetricTypePresets.js +18 -21
- package/esm/measureNumberFormat/hooks/useMetricTypePresets.js.map +1 -1
- package/esm/measureNumberFormat/index.d.ts +2 -2
- package/esm/measureNumberFormat/index.d.ts.map +1 -1
- package/esm/measureNumberFormat/index.js +2 -2
- package/esm/measureNumberFormat/index.js.map +1 -1
- package/esm/measureNumberFormat/presets/currencyPresets.d.ts +1 -7
- package/esm/measureNumberFormat/presets/currencyPresets.d.ts.map +1 -1
- package/esm/measureNumberFormat/presets/currencyPresets.js +5 -14
- package/esm/measureNumberFormat/presets/currencyPresets.js.map +1 -1
- package/esm/measureNumberFormat/presets/standardPresets.d.ts +1 -7
- package/esm/measureNumberFormat/presets/standardPresets.d.ts.map +1 -1
- package/esm/measureNumberFormat/presets/standardPresets.js +21 -17
- package/esm/measureNumberFormat/presets/standardPresets.js.map +1 -1
- package/esm/measureNumberFormat/presets/templates.d.ts +4 -4
- package/esm/measureNumberFormat/presets/templates.d.ts.map +1 -1
- package/esm/measureNumberFormat/presets/templates.js +65 -25
- package/esm/measureNumberFormat/presets/templates.js.map +1 -1
- package/esm/sdk-ui-kit.d.ts +158 -49
- package/package.json +9 -9
- package/src/@ui/UiCombobox/UiCombobox.scss +128 -0
- package/src/@ui/index.scss +1 -0
- package/styles/css/main.css +127 -3
- package/styles/css/main.css.map +1 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import type { IUiComboboxParams } from "./types.js";
|
|
3
|
+
/** @internal */
|
|
4
|
+
export interface UiComboboxProps extends IUiComboboxParams {
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* A composable combobox component that enables users to select from a filtered list of options.
|
|
9
|
+
*
|
|
10
|
+
* @internal
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
*
|
|
14
|
+
* ```tsx
|
|
15
|
+
* import { UiCombobox, UiComboboxInput, UiComboboxList, UiComboboxPopup } from "@gooddata/sdk-ui-kit";
|
|
16
|
+
*
|
|
17
|
+
* const options = [
|
|
18
|
+
* { id: "apple", label: "Apple" },
|
|
19
|
+
* { id: "banana", label: "Banana" },
|
|
20
|
+
* { id: "apricot", label: "Apricot" },
|
|
21
|
+
* ];
|
|
22
|
+
*
|
|
23
|
+
* <UiCombobox options={options}>
|
|
24
|
+
* <UiComboboxInput placeholder="Select a fruit..." />
|
|
25
|
+
* <UiComboboxPopup>
|
|
26
|
+
* <UiComboboxList />
|
|
27
|
+
* </UiComboboxPopup>
|
|
28
|
+
* </UiCombobox>
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function UiCombobox({ children, ...props }: UiComboboxProps): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
//# sourceMappingURL=UiCombobox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UiCombobox.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/UiCombobox.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAIpD,gBAAgB;AAChB,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACtD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,2CAIjE"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { UiComboboxContextProvider } from "./UiComboboxContext.js";
|
|
3
|
+
import { useCombobox } from "./useCombobox.js";
|
|
4
|
+
/**
|
|
5
|
+
* A composable combobox component that enables users to select from a filtered list of options.
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
*
|
|
11
|
+
* ```tsx
|
|
12
|
+
* import { UiCombobox, UiComboboxInput, UiComboboxList, UiComboboxPopup } from "@gooddata/sdk-ui-kit";
|
|
13
|
+
*
|
|
14
|
+
* const options = [
|
|
15
|
+
* { id: "apple", label: "Apple" },
|
|
16
|
+
* { id: "banana", label: "Banana" },
|
|
17
|
+
* { id: "apricot", label: "Apricot" },
|
|
18
|
+
* ];
|
|
19
|
+
*
|
|
20
|
+
* <UiCombobox options={options}>
|
|
21
|
+
* <UiComboboxInput placeholder="Select a fruit..." />
|
|
22
|
+
* <UiComboboxPopup>
|
|
23
|
+
* <UiComboboxList />
|
|
24
|
+
* </UiComboboxPopup>
|
|
25
|
+
* </UiCombobox>
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export function UiCombobox({ children, ...props }) {
|
|
29
|
+
const state = useCombobox(props);
|
|
30
|
+
return _jsx(UiComboboxContextProvider, { state: state, children: children });
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=UiCombobox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UiCombobox.js","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/UiCombobox.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAO/C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAmB;IAC9D,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAEjC,OAAO,KAAC,yBAAyB,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA6B,CAAC;AAC3F,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type PropsWithChildren } from "react";
|
|
2
|
+
import type { IUiComboboxState } from "./types.js";
|
|
3
|
+
type Props = PropsWithChildren<{
|
|
4
|
+
state: IUiComboboxState;
|
|
5
|
+
}>;
|
|
6
|
+
export declare function UiComboboxContextProvider({ state, children }: Props): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
/** @internal */
|
|
8
|
+
export declare function useComboboxState(): IUiComboboxState;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=UiComboboxContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UiComboboxContext.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/UiComboboxContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAA6B,MAAM,OAAO,CAAC;AAE1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAInD,KAAK,KAAK,GAAG,iBAAiB,CAAC;IAC3B,KAAK,EAAE,gBAAgB,CAAC;CAC3B,CAAC,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,2CAEnE;AAED,gBAAgB;AAChB,wBAAgB,gBAAgB,IAAI,gBAAgB,CAMnD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// (C) 2025 GoodData Corporation
|
|
3
|
+
import { createContext, useContext } from "react";
|
|
4
|
+
const StateContext = createContext(null);
|
|
5
|
+
export function UiComboboxContextProvider({ state, children }) {
|
|
6
|
+
return _jsx(StateContext.Provider, { value: state, children: children });
|
|
7
|
+
}
|
|
8
|
+
/** @internal */
|
|
9
|
+
export function useComboboxState() {
|
|
10
|
+
const state = useContext(StateContext);
|
|
11
|
+
if (!state) {
|
|
12
|
+
throw new Error("`useComboboxState` must be used within `UiCombobox`");
|
|
13
|
+
}
|
|
14
|
+
return state;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=UiComboboxContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UiComboboxContext.js","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/UiComboboxContext.tsx"],"names":[],"mappings":";AAAA,gCAAgC;AAEhC,OAAO,EAA0B,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAI1E,MAAM,YAAY,GAAG,aAAa,CAA0B,IAAI,CAAC,CAAC;AAMlE,MAAM,UAAU,yBAAyB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAS;IAChE,OAAO,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAyB,CAAC;AACnF,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,gBAAgB;IAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type InputHTMLAttributes } from "react";
|
|
2
|
+
/** @internal */
|
|
3
|
+
export type UiComboboxInputProps = InputHTMLAttributes<HTMLInputElement>;
|
|
4
|
+
/** @internal */
|
|
5
|
+
export declare const UiComboboxInput: import("react").ForwardRefExoticComponent<UiComboboxInputProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
6
|
+
//# sourceMappingURL=UiComboboxInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UiComboboxInput.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/UiComboboxInput.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGH,KAAK,mBAAmB,EAG3B,MAAM,OAAO,CAAC;AAQf,gBAAgB;AAChB,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;AAEzE,gBAAgB;AAChB,eAAO,MAAM,eAAe,mHAqD3B,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// (C) 2025 GoodData Corporation
|
|
3
|
+
import { forwardRef, } from "react";
|
|
4
|
+
import { useMergeRefs } from "@floating-ui/react";
|
|
5
|
+
import cx from "classnames";
|
|
6
|
+
import { e } from "./comboboxBem.js";
|
|
7
|
+
import { useComboboxState } from "./UiComboboxContext.js";
|
|
8
|
+
/** @internal */
|
|
9
|
+
export const UiComboboxInput = forwardRef(function UiComboboxInput(props, forwardedRef) {
|
|
10
|
+
const { type, className, ...htmlInputProps } = props;
|
|
11
|
+
const { inputValue, onInputChange, onInputKeyDown, onInputBlur, setReferenceRef, getReferenceProps, activeOption, } = useComboboxState();
|
|
12
|
+
const ref = useMergeRefs([forwardedRef, setReferenceRef]);
|
|
13
|
+
const referenceProps = getReferenceProps({
|
|
14
|
+
...htmlInputProps,
|
|
15
|
+
autoComplete: "off",
|
|
16
|
+
autoCapitalize: "none",
|
|
17
|
+
autoCorrect: "off",
|
|
18
|
+
// Most of the aria attributes already come from `getReferenceProps`
|
|
19
|
+
"aria-activedescendant": activeOption?.id,
|
|
20
|
+
"aria-autocomplete": "list",
|
|
21
|
+
onKeyDown: handleKeyDown,
|
|
22
|
+
onBlur: handleBlur,
|
|
23
|
+
});
|
|
24
|
+
function handleChange(event) {
|
|
25
|
+
onInputChange(event.target.value);
|
|
26
|
+
htmlInputProps.onChange?.(event);
|
|
27
|
+
}
|
|
28
|
+
function handleKeyDown(event) {
|
|
29
|
+
onInputKeyDown(event);
|
|
30
|
+
htmlInputProps.onKeyDown?.(event);
|
|
31
|
+
}
|
|
32
|
+
function handleBlur(event) {
|
|
33
|
+
onInputBlur();
|
|
34
|
+
htmlInputProps.onBlur?.(event);
|
|
35
|
+
}
|
|
36
|
+
return (_jsx("input", { ...referenceProps, ref: ref, className: cx(e("input"), className), type: type ?? "text", value: inputValue, onChange: handleChange }));
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=UiComboboxInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UiComboboxInput.js","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/UiComboboxInput.tsx"],"names":[],"mappings":";AAAA,gCAAgC;AAEhC,OAAO,EAKH,UAAU,GACb,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK1D,gBAAgB;AAChB,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CACrC,SAAS,eAAe,CAAC,KAAK,EAAE,YAAY;IACxC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,GAAG,KAAK,CAAC;IACrD,MAAM,EACF,UAAU,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,YAAY,GACf,GAAG,gBAAgB,EAAE,CAAC;IAEvB,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;IAE1D,MAAM,cAAc,GAAG,iBAAiB,CAAC;QACrC,GAAG,cAAc;QACjB,YAAY,EAAE,KAAK;QACnB,cAAc,EAAE,MAAM;QACtB,WAAW,EAAE,KAAK;QAClB,oEAAoE;QACpE,uBAAuB,EAAE,YAAY,EAAE,EAAE;QACzC,mBAAmB,EAAE,MAAM;QAC3B,SAAS,EAAE,aAAa;QACxB,MAAM,EAAE,UAAU;KACrB,CAAC,CAAC;IAEH,SAAS,YAAY,CAAC,KAAoC;QACtD,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,cAAc,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,SAAS,aAAa,CAAC,KAAsC;QACzD,cAAc,CAAC,KAAK,CAAC,CAAC;QACtB,cAAc,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,SAAS,UAAU,CAAC,KAAmC;QACnD,WAAW,EAAE,CAAC;QACd,cAAc,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,CACH,mBACQ,cAAc,EAClB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,EACpC,IAAI,EAAE,IAAI,IAAI,MAAM,EACpB,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,YAAY,GACxB,CACL,CAAC;AACN,CAAC,CACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from "react";
|
|
2
|
+
import type { IUiComboboxOption } from "./types.js";
|
|
3
|
+
/** @internal */
|
|
4
|
+
export interface UiComboboxListProps extends Omit<HTMLAttributes<HTMLUListElement>, "children"> {
|
|
5
|
+
/**
|
|
6
|
+
* The children to render for each option. Renders a `UiComboboxListItem` when not provided.
|
|
7
|
+
*/
|
|
8
|
+
children?: (option: IUiComboboxOption, index: number) => ReactNode;
|
|
9
|
+
}
|
|
10
|
+
/** @internal */
|
|
11
|
+
export declare function UiComboboxList({ children, className, ...htmlProps }: UiComboboxListProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=UiComboboxList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UiComboboxList.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/UiComboboxList.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAIpD,gBAAgB;AAChB,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC3F;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;CACtE;AAED,gBAAgB;AAChB,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,EAAE,mBAAmB,2CAexF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// (C) 2025 GoodData Corporation
|
|
3
|
+
import { Fragment } from "react";
|
|
4
|
+
import cx from "classnames";
|
|
5
|
+
import { e } from "./comboboxBem.js";
|
|
6
|
+
import { useComboboxState } from "./UiComboboxContext.js";
|
|
7
|
+
import { UiComboboxListItem } from "./UiComboboxListItem.js";
|
|
8
|
+
/** @internal */
|
|
9
|
+
export function UiComboboxList({ children, className, ...htmlProps }) {
|
|
10
|
+
const { availableOptions } = useComboboxState();
|
|
11
|
+
return (_jsx("ul", { ...htmlProps, className: cx(e("list"), className), role: "listbox", children: availableOptions.map((option, index) => children ? (_jsx(Fragment, { children: children(option, index) }, option.id)) : (_jsx(UiComboboxListItem, { option: option, index: index }, option.id))) }));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=UiComboboxList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UiComboboxList.js","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/UiComboboxList.tsx"],"names":[],"mappings":";AAAA,gCAAgC;AAEhC,OAAO,EAAE,QAAQ,EAAuC,MAAM,OAAO,CAAC;AAEtE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAU7D,gBAAgB;AAChB,MAAM,UAAU,cAAc,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,SAAS,EAAuB;IACrF,MAAM,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAEhD,OAAO,CACH,gBAAQ,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,EAAE,IAAI,EAAC,SAAS,YAEjE,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CACpC,QAAQ,CAAC,CAAC,CAAC,CACP,KAAC,QAAQ,cAAkB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,IAAnC,MAAM,CAAC,EAAE,CAAsC,CACjE,CAAC,CAAC,CAAC,CACA,KAAC,kBAAkB,IAAiB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,IAAvC,MAAM,CAAC,EAAE,CAAkC,CACvE,CACJ,GACA,CACR,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type HTMLAttributes } from "react";
|
|
2
|
+
import type { IUiComboboxOption, IUiComboboxState } from "./types.js";
|
|
3
|
+
/** @internal */
|
|
4
|
+
export interface UiComboboxListItemProps extends HTMLAttributes<HTMLLIElement> {
|
|
5
|
+
option: IUiComboboxOption;
|
|
6
|
+
index: number;
|
|
7
|
+
}
|
|
8
|
+
/** @internal */
|
|
9
|
+
export declare function UiComboboxListItem(props: UiComboboxListItemProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
type UiComboboxListItemImplProps = UiComboboxListItemProps & {
|
|
11
|
+
isActive: boolean;
|
|
12
|
+
isSelected: boolean;
|
|
13
|
+
isDisabled: boolean;
|
|
14
|
+
getItemProps: IUiComboboxState["getItemProps"];
|
|
15
|
+
registerItemRef: IUiComboboxState["registerItemRef"];
|
|
16
|
+
selectOption: IUiComboboxState["selectOption"];
|
|
17
|
+
};
|
|
18
|
+
export declare const UiComboboxListItemImpl: import("react").NamedExoticComponent<UiComboboxListItemImplProps>;
|
|
19
|
+
/** @internal */
|
|
20
|
+
export type UiComboboxListItemLabelProps = HTMLAttributes<HTMLSpanElement>;
|
|
21
|
+
/**
|
|
22
|
+
* Renders the primary label content within a combobox list item.
|
|
23
|
+
* Use this component for composable customization of list item content.
|
|
24
|
+
*
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
export declare function UiComboboxListItemLabel(props: UiComboboxListItemLabelProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
/** @internal */
|
|
29
|
+
export type UiComboboxListItemCreatableLabelProps = HTMLAttributes<HTMLSpanElement>;
|
|
30
|
+
/**
|
|
31
|
+
* Renders the "creatable" label suffix within a combobox list item.
|
|
32
|
+
* Use this component for composable customization of list item content.
|
|
33
|
+
*
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
export declare function UiComboboxListItemCreatableLabel(props: UiComboboxListItemCreatableLabelProps): import("react/jsx-runtime").JSX.Element;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=UiComboboxListItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UiComboboxListItem.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/UiComboboxListItem.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAyB,MAAM,OAAO,CAAC;AAKnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGtE,gBAAgB;AAChB,MAAM,WAAW,uBAAwB,SAAQ,cAAc,CAAC,aAAa,CAAC;IAC1E,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CAmBhE;AAED,KAAK,2BAA2B,GAAG,uBAAuB,GAAG;IACzD,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAC/C,eAAe,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACrD,YAAY,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;CAClD,CAAC;AAEF,eAAO,MAAM,sBAAsB,mEAuDjC,CAAC;AAEH,gBAAgB;AAChB,MAAM,MAAM,4BAA4B,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC;AAE3E;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,2CAO1E;AAED,gBAAgB;AAChB,MAAM,MAAM,qCAAqC,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC;AAEpF;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,qCAAqC,2CAO5F"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// (C) 2025 GoodData Corporation
|
|
3
|
+
import { memo } from "react";
|
|
4
|
+
import cx from "classnames";
|
|
5
|
+
import { e } from "./comboboxBem.js";
|
|
6
|
+
import { useComboboxState } from "./UiComboboxContext.js";
|
|
7
|
+
/** @internal */
|
|
8
|
+
export function UiComboboxListItem(props) {
|
|
9
|
+
const { option } = props;
|
|
10
|
+
const { registerItemRef, getItemProps, selectOption, activeOption, selectedOption } = useComboboxState();
|
|
11
|
+
const isDisabled = Boolean(option.disabled);
|
|
12
|
+
const isActive = activeOption?.id === option.id;
|
|
13
|
+
const isSelected = selectedOption?.id === option.id;
|
|
14
|
+
return (_jsx(UiComboboxListItemImpl, { ...props, isActive: isActive, isSelected: isSelected, isDisabled: isDisabled, getItemProps: getItemProps, registerItemRef: registerItemRef, selectOption: selectOption }));
|
|
15
|
+
}
|
|
16
|
+
export const UiComboboxListItemImpl = memo(function UiComboboxListItemImpl(props) {
|
|
17
|
+
const { option, index, className, children, onClick, isActive, isSelected, isDisabled, getItemProps, registerItemRef, selectOption, ...htmlProps } = props;
|
|
18
|
+
// https://floating-ui.com/docs/useRole#component-roles
|
|
19
|
+
const itemProps = getItemProps({
|
|
20
|
+
...htmlProps,
|
|
21
|
+
active: isActive,
|
|
22
|
+
selected: isSelected,
|
|
23
|
+
});
|
|
24
|
+
function handleClick(event) {
|
|
25
|
+
if (isDisabled) {
|
|
26
|
+
event.preventDefault();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
selectOption(option, index);
|
|
30
|
+
onClick?.(event);
|
|
31
|
+
}
|
|
32
|
+
return (_jsx("li", { ...itemProps, ref: (node) => {
|
|
33
|
+
registerItemRef(node, index);
|
|
34
|
+
}, id: option.id, role: "option", "aria-selected": isSelected, "aria-disabled": isDisabled, className: cx(e("item", { isActive, isSelected, isDisabled }), className), onClick: handleClick, children: children ?? (_jsxs(_Fragment, { children: [_jsx(UiComboboxListItemLabel, { children: option.label }), option.creatable ? _jsx(UiComboboxListItemCreatableLabel, {}) : null] })) }));
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* Renders the primary label content within a combobox list item.
|
|
38
|
+
* Use this component for composable customization of list item content.
|
|
39
|
+
*
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
export function UiComboboxListItemLabel(props) {
|
|
43
|
+
const { children, className, ...htmlProps } = props;
|
|
44
|
+
return (_jsx("span", { ...htmlProps, className: cx(e("item-label"), className), children: children }));
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Renders the "creatable" label suffix within a combobox list item.
|
|
48
|
+
* Use this component for composable customization of list item content.
|
|
49
|
+
*
|
|
50
|
+
* @internal
|
|
51
|
+
*/
|
|
52
|
+
export function UiComboboxListItemCreatableLabel(props) {
|
|
53
|
+
const { children = "(create new)", className, ...htmlProps } = props;
|
|
54
|
+
return (_jsx("span", { ...htmlProps, className: cx(e("item-creatable"), className), children: children }));
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=UiComboboxListItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UiComboboxListItem.js","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/UiComboboxListItem.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { HTMLAttributes } from "react";
|
|
2
|
+
/** @internal */
|
|
3
|
+
export type UiComboboxPopupProps = HTMLAttributes<HTMLDivElement>;
|
|
4
|
+
/** @internal */
|
|
5
|
+
export declare function UiComboboxPopup({ style, className, children, ...htmlProps }: UiComboboxPopupProps): import("react/jsx-runtime").JSX.Element | null;
|
|
6
|
+
//# sourceMappingURL=UiComboboxPopup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UiComboboxPopup.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/UiComboboxPopup.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAO5C,gBAAgB;AAChB,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAElE,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,EAAE,oBAAoB,kDAiBjG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import cx from "classnames";
|
|
3
|
+
import { e } from "./comboboxBem.js";
|
|
4
|
+
import { useComboboxState } from "./UiComboboxContext.js";
|
|
5
|
+
/** @internal */
|
|
6
|
+
export function UiComboboxPopup({ style, className, children, ...htmlProps }) {
|
|
7
|
+
const { isOpen, setFloatingRef, getFloatingProps, floatingStyles, availableOptions } = useComboboxState();
|
|
8
|
+
if (!isOpen || availableOptions.length === 0) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
return (_jsx("div", { ...getFloatingProps(htmlProps), ref: setFloatingRef, style: { ...style, ...floatingStyles }, className: cx(e("popup"), className), "data-open": isOpen, children: children }));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=UiComboboxPopup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UiComboboxPopup.js","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/UiComboboxPopup.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK1D,gBAAgB;AAChB,MAAM,UAAU,eAAe,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAwB;IAC9F,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAE1G,IAAI,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,CACH,iBACQ,gBAAgB,CAAC,SAAS,CAAC,EAC/B,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,cAAc,EAAE,EACtC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,eACzB,MAAM,YAEhB,QAAQ,GACP,CACT,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comboboxBem.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/comboboxBem.ts"],"names":[],"mappings":"AAIA,eAAO,MAAQ,CAAC,6DAAE,CAAC,4EAA8B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comboboxBem.js","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/comboboxBem.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { UiCombobox, type UiComboboxProps } from "./UiCombobox.js";
|
|
2
|
+
export { UiComboboxInput, type UiComboboxInputProps } from "./UiComboboxInput.js";
|
|
3
|
+
export { UiComboboxPopup, type UiComboboxPopupProps } from "./UiComboboxPopup.js";
|
|
4
|
+
export { UiComboboxList, type UiComboboxListProps } from "./UiComboboxList.js";
|
|
5
|
+
export { UiComboboxListItem, UiComboboxListItemLabel, UiComboboxListItemCreatableLabel, type UiComboboxListItemProps, type UiComboboxListItemLabelProps, type UiComboboxListItemCreatableLabelProps, } from "./UiComboboxListItem.js";
|
|
6
|
+
export { useComboboxState } from "./UiComboboxContext.js";
|
|
7
|
+
export type { IUiComboboxOption, IUiComboboxParams, IUiComboboxState } from "./types.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACH,kBAAkB,EAClB,uBAAuB,EACvB,gCAAgC,EAChC,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EACjC,KAAK,qCAAqC,GAC7C,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
export { UiCombobox } from "./UiCombobox.js";
|
|
3
|
+
export { UiComboboxInput } from "./UiComboboxInput.js";
|
|
4
|
+
export { UiComboboxPopup } from "./UiComboboxPopup.js";
|
|
5
|
+
export { UiComboboxList } from "./UiComboboxList.js";
|
|
6
|
+
export { UiComboboxListItem, UiComboboxListItemLabel, UiComboboxListItemCreatableLabel, } from "./UiComboboxListItem.js";
|
|
7
|
+
export { useComboboxState } from "./UiComboboxContext.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,eAAe,EAA6B,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,eAAe,EAA6B,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,cAAc,EAA4B,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACH,kBAAkB,EAClB,uBAAuB,EACvB,gCAAgC,GAInC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { CSSProperties, KeyboardEvent } from "react";
|
|
2
|
+
import type { ReferenceType, UseInteractionsReturn } from "@floating-ui/react";
|
|
3
|
+
/** @internal */
|
|
4
|
+
export interface IUiComboboxOption {
|
|
5
|
+
id: string;
|
|
6
|
+
label: string;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
creatable?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/** @internal */
|
|
11
|
+
export interface IUiComboboxParams {
|
|
12
|
+
/**
|
|
13
|
+
* The options to display in the combobox.
|
|
14
|
+
*/
|
|
15
|
+
options: IUiComboboxOption[];
|
|
16
|
+
/**
|
|
17
|
+
* The selected value of the combobox. Use when controlled.
|
|
18
|
+
*/
|
|
19
|
+
value?: string;
|
|
20
|
+
/**
|
|
21
|
+
* The default value of the combobox. Use when uncontrolled.
|
|
22
|
+
*/
|
|
23
|
+
defaultValue?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Event handler called when the selected value of the combobox changes.
|
|
26
|
+
*/
|
|
27
|
+
onValueChange?: (value: string) => void;
|
|
28
|
+
/**
|
|
29
|
+
* When enabled, the combobox will include a "creatable" option for the current input
|
|
30
|
+
* if there is not exactly one matching option.
|
|
31
|
+
*/
|
|
32
|
+
creatable?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/** @internal */
|
|
35
|
+
export interface IUiComboboxState {
|
|
36
|
+
inputValue: string;
|
|
37
|
+
onInputChange: (value: string) => void;
|
|
38
|
+
onInputKeyDown: (event: KeyboardEvent<HTMLInputElement>) => void;
|
|
39
|
+
onInputBlur: () => void;
|
|
40
|
+
availableOptions: IUiComboboxOption[];
|
|
41
|
+
activeIndex: number | null;
|
|
42
|
+
setActiveIndex: (index: number | null) => void;
|
|
43
|
+
activeOption: IUiComboboxOption | undefined;
|
|
44
|
+
selectedOption: IUiComboboxOption | undefined;
|
|
45
|
+
selectOption: (option: IUiComboboxOption, index?: number) => void;
|
|
46
|
+
isOpen: boolean;
|
|
47
|
+
setIsOpen: (isOpen: boolean) => void;
|
|
48
|
+
setReferenceRef: (node: ReferenceType | null) => void;
|
|
49
|
+
setFloatingRef: (node: HTMLDivElement | null) => void;
|
|
50
|
+
registerItemRef: (node: HTMLElement | null, index: number) => void;
|
|
51
|
+
getReferenceProps: UseInteractionsReturn["getReferenceProps"];
|
|
52
|
+
getFloatingProps: UseInteractionsReturn["getFloatingProps"];
|
|
53
|
+
getItemProps: UseInteractionsReturn["getItemProps"];
|
|
54
|
+
floatingStyles: CSSProperties;
|
|
55
|
+
creatable: boolean;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE/E,gBAAgB;AAChB,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,gBAAgB;AAChB,MAAM,WAAW,iBAAiB;IAC9B;;OAEG;IACH,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,gBAAgB;AAChB,MAAM,WAAW,gBAAgB;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,cAAc,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACjE,WAAW,EAAE,MAAM,IAAI,CAAC;IAExB,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C,cAAc,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC9C,YAAY,EAAE,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAElE,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,eAAe,EAAE,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC;IACtD,cAAc,EAAE,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;IACtD,eAAe,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,iBAAiB,EAAE,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;IAC9D,gBAAgB,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IAC5D,YAAY,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC;IACpD,cAAc,EAAE,aAAa,CAAC;IAE9B,SAAS,EAAE,OAAO,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/types.ts"],"names":[],"mappings":"AAAA,gCAAgC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCombobox.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiCombobox/useCombobox.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAqB,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGzF,gBAAgB;AAChB,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,gBAAgB,CAwIvE"}
|