UNPKG

@ark-ui/solid

Version:

A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.

181 lines (170 loc) 7.44 kB
import { useFieldContext } from './VJ2ZFW6U.js'; import { createSplitProps } from './ZMHI4GDJ.js'; import { ark } from './EPLBB4QN.js'; import { useEnvironmentContext } from './YO2MCGXO.js'; import { useLocaleContext } from './OKZ64GSY.js'; import { createContext } from './TROPIN4C.js'; import { runIfFn } from './DT73WLR4.js'; import { __export } from './ESLJRKWD.js'; import { createComponent, mergeProps as mergeProps$1 } from 'solid-js/web'; import { mergeProps, useMachine, normalizeProps } from '@zag-js/solid'; import { createMemo, createUniqueId } from 'solid-js'; import * as tagsInput from '@zag-js/tags-input'; export { anatomy } from '@zag-js/tags-input'; // src/components/tags-input/use-tags-input-context.ts var [TagsInputProvider, useTagsInputContext] = createContext({ hookName: "useTagsInputContext", providerName: "<TagsInputProvider />" }); // src/components/tags-input/tags-input-clear-trigger.tsx var TagsInputClearTrigger = (props) => { const api = useTagsInputContext(); const mergedProps = mergeProps(() => api().getClearTriggerProps(), props); return createComponent(ark.button, mergedProps); }; // src/components/tags-input/tags-input-context.tsx var TagsInputContext = (props) => props.children(useTagsInputContext()); var TagsInputControl = (props) => { const api = useTagsInputContext(); const mergedProps = mergeProps(() => api().getControlProps(), props); return createComponent(ark.div, mergedProps); }; var TagsInputHiddenInput = (props) => { const tagsInput2 = useTagsInputContext(); const mergedProps = mergeProps(() => tagsInput2().getHiddenInputProps(), props); const field = useFieldContext(); return createComponent(ark.input, mergeProps$1({ get ["aria-describedby"]() { return field?.().ariaDescribedby; } }, mergedProps)); }; var TagsInputInput = (props) => { const api = useTagsInputContext(); const mergedProps = mergeProps(() => api().getInputProps(), props); return createComponent(ark.input, mergedProps); }; // src/components/tags-input/use-tags-input-item-context.ts var [TagsInputItemProvider, useTagsInputItemContext] = createContext({ hookName: "useTagsInputItemContext", providerName: "<TagsInputItemProvider />" }); // src/components/tags-input/use-tags-input-item-props-context.ts var [TagsInputItemPropsProvider, useTagsInputItemPropsContext] = createContext({ hookName: "useTagsInputItemPropsContext", providerName: "<TagsInputItemPropsProvider />" }); // src/components/tags-input/tags-input-item.tsx var TagsInputItem = (props) => { const [itemProps, localProps] = createSplitProps()(props, ["disabled", "index", "value"]); const api = useTagsInputContext(); const mergedProps = mergeProps(() => api().getItemProps(itemProps), localProps); const itemState = createMemo(() => api().getItemState(itemProps)); return createComponent(TagsInputItemPropsProvider, { value: itemProps, get children() { return createComponent(TagsInputItemProvider, { value: itemState, get children() { return createComponent(ark.div, mergedProps); } }); } }); }; // src/components/tags-input/tags-input-item-context.tsx var TagsInputItemContext = (props) => props.children(useTagsInputItemContext()); var TagsInputItemDeleteTrigger = (props) => { const api = useTagsInputContext(); const itemProps = useTagsInputItemPropsContext(); const mergedProps = mergeProps(() => api().getItemDeleteTriggerProps(itemProps), props); return createComponent(ark.button, mergedProps); }; var TagsInputItemInput = (props) => { const api = useTagsInputContext(); const itemProps = useTagsInputItemPropsContext(); const mergedProps = mergeProps(() => api().getItemInputProps(itemProps), props); return createComponent(ark.input, mergedProps); }; var TagsInputItemPreview = (props) => { const api = useTagsInputContext(); const itemProps = useTagsInputItemPropsContext(); const mergedProps = mergeProps(() => api().getItemPreviewProps(itemProps), props); return createComponent(ark.div, mergedProps); }; var TagsInputItemText = (props) => { const api = useTagsInputContext(); const itemProps = useTagsInputItemPropsContext(); const mergedProps = mergeProps(() => api().getItemTextProps(itemProps), props); return createComponent(ark.span, mergedProps); }; var TagsInputLabel = (props) => { const api = useTagsInputContext(); const mergedProps = mergeProps(() => api().getLabelProps(), props); return createComponent(ark.label, mergedProps); }; var useTagsInput = (props) => { const id = createUniqueId(); const locale = useLocaleContext(); const environment = useEnvironmentContext(); const field = useFieldContext(); const machineProps = createMemo(() => ({ id, ids: { label: field?.().ids.label, hiddenInput: field?.().ids.control }, dir: locale().dir, disabled: field?.().disabled, invalid: field?.().invalid, readOnly: field?.().readOnly, required: field?.().required, getRootNode: environment().getRootNode, ...runIfFn(props) })); const service = useMachine(tagsInput.machine, machineProps); return createMemo(() => tagsInput.connect(service, normalizeProps)); }; // src/components/tags-input/tags-input-root.tsx var TagsInputRoot = (props) => { const [useTagsInputProps, localProps] = createSplitProps()(props, ["addOnPaste", "allowOverflow", "autoFocus", "blurBehavior", "defaultInputValue", "defaultValue", "delimiter", "disabled", "editable", "form", "id", "ids", "inputValue", "invalid", "max", "maxLength", "name", "onFocusOutside", "onHighlightChange", "onInputValueChange", "onInteractOutside", "onPointerDownOutside", "onValueChange", "onValueInvalid", "readOnly", "required", "translations", "validate", "value"]); const api = useTagsInput(useTagsInputProps); const mergedProps = mergeProps(() => api().getRootProps(), localProps); return createComponent(TagsInputProvider, { value: api, get children() { return createComponent(ark.div, mergedProps); } }); }; var TagsInputRootProvider = (props) => { const [{ value: tagsInput2 }, localProps] = createSplitProps()(props, ["value"]); const mergedProps = mergeProps(() => tagsInput2().getRootProps(), localProps); return createComponent(TagsInputProvider, { value: tagsInput2, get children() { return createComponent(ark.div, mergedProps); } }); }; // src/components/tags-input/tags-input.ts var tags_input_exports = {}; __export(tags_input_exports, { ClearTrigger: () => TagsInputClearTrigger, Context: () => TagsInputContext, Control: () => TagsInputControl, HiddenInput: () => TagsInputHiddenInput, Input: () => TagsInputInput, Item: () => TagsInputItem, ItemContext: () => TagsInputItemContext, ItemDeleteTrigger: () => TagsInputItemDeleteTrigger, ItemInput: () => TagsInputItemInput, ItemPreview: () => TagsInputItemPreview, ItemText: () => TagsInputItemText, Label: () => TagsInputLabel, Root: () => TagsInputRoot, RootProvider: () => TagsInputRootProvider }); export { TagsInputClearTrigger, TagsInputContext, TagsInputControl, TagsInputHiddenInput, TagsInputInput, TagsInputItem, TagsInputItemContext, TagsInputItemDeleteTrigger, TagsInputItemInput, TagsInputItemPreview, TagsInputItemText, TagsInputLabel, TagsInputRoot, TagsInputRootProvider, tags_input_exports, useTagsInput, useTagsInputContext, useTagsInputItemContext };