@navikt/ds-react
Version:
React components from the Norwegian Labour and Welfare Administration.
34 lines • 1.46 kB
JavaScript
import React, { useCallback, useState } from "react";
import { createContext } from "../../util/create-context.js";
import { useInputContext } from "./Input/Input.context.js";
const [ComboboxCustomOptionsProvider, useComboboxCustomOptions] = createContext({
name: "ComboboxCustomOptions",
errorMessage: "useComboboxCustomOptions must be used within a ComboboxCustomOptionsProvider",
});
const CustomOptionsProvider = ({ children, value, }) => {
const [customOptions, setCustomOptions] = useState([]);
const { focusInput } = useInputContext();
const { isMultiSelect } = value;
const removeCustomOption = useCallback((option) => {
setCustomOptions((prevCustomOptions) => prevCustomOptions.filter((o) => o.label !== option.label));
focusInput();
}, [focusInput]);
const addCustomOption = useCallback((option) => {
if (isMultiSelect) {
setCustomOptions((prevOptions) => [...prevOptions, option]);
}
else {
setCustomOptions([option]);
}
focusInput();
}, [focusInput, isMultiSelect]);
const customOptionsState = {
customOptions,
removeCustomOption,
addCustomOption,
setCustomOptions,
};
return (React.createElement(ComboboxCustomOptionsProvider, Object.assign({}, customOptionsState), children));
};
export { CustomOptionsProvider, useComboboxCustomOptions };
//# sourceMappingURL=customOptionsContext.js.map