UNPKG

@ark-ui/solid

Version:

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

135 lines (128 loc) 5.34 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 * as editable from '@zag-js/editable'; export { anatomy } from '@zag-js/editable'; import { createUniqueId, createMemo } from 'solid-js'; // src/components/editable/use-editable-context.ts var [EditableProvider, useEditableContext] = createContext({ hookName: "useEditableContext", providerName: "<EditableProvider />" }); // src/components/editable/editable-area.tsx var EditableArea = (props) => { const api = useEditableContext(); const mergedProps = mergeProps(() => api().getAreaProps(), props); return createComponent(ark.div, mergedProps); }; var EditableCancelTrigger = (props) => { const api = useEditableContext(); const mergedProps = mergeProps(() => api().getCancelTriggerProps(), props); return createComponent(ark.button, mergedProps); }; // src/components/editable/editable-context.tsx var EditableContext = (props) => props.children(useEditableContext()); var EditableControl = (props) => { const api = useEditableContext(); const mergedProps = mergeProps(() => api().getControlProps(), props); return createComponent(ark.div, mergedProps); }; var EditableEditTrigger = (props) => { const api = useEditableContext(); const mergedProps = mergeProps(() => api().getEditTriggerProps(), props); return createComponent(ark.button, mergedProps); }; var EditableInput = (props) => { const api = useEditableContext(); const mergedProps = mergeProps(() => api().getInputProps(), props); const field = useFieldContext(); return createComponent(ark.input, mergeProps$1({ get ["aria-describedby"]() { return field?.().ariaDescribedby; } }, mergedProps)); }; var EditableLabel = (props) => { const api = useEditableContext(); const mergedProps = mergeProps(() => api().getLabelProps(), props); return createComponent(ark.label, mergedProps); }; var EditablePreview = (props) => { const api = useEditableContext(); const mergedProps = mergeProps(() => api().getPreviewProps(), props); return createComponent(ark.span, mergedProps); }; var useEditable = (props) => { const id = createUniqueId(); const locale = useLocaleContext(); const environment = useEnvironmentContext(); const field = useFieldContext(); const machineProps = createMemo(() => ({ id, ids: { label: field?.().ids.label, input: 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(editable.machine, machineProps); return createMemo(() => editable.connect(service, normalizeProps)); }; // src/components/editable/editable-root.tsx var EditableRoot = (props) => { const [useEditableProps, localProps] = createSplitProps()(props, ["activationMode", "autoResize", "defaultEdit", "defaultValue", "disabled", "edit", "finalFocusEl", "form", "id", "ids", "invalid", "maxLength", "name", "onEditChange", "onFocusOutside", "onInteractOutside", "onPointerDownOutside", "onValueChange", "onValueCommit", "onValueRevert", "placeholder", "readOnly", "required", "selectOnFocus", "submitMode", "translations", "value"]); const api = useEditable(useEditableProps); const mergedProps = mergeProps(() => api().getRootProps(), localProps); return createComponent(EditableProvider, { value: api, get children() { return createComponent(ark.div, mergedProps); } }); }; var EditableRootProvider = (props) => { const [{ value: editable2 }, localProps] = createSplitProps()(props, ["value"]); const mergedProps = mergeProps(() => editable2().getRootProps(), localProps); return createComponent(EditableProvider, { value: editable2, get children() { return createComponent(ark.div, mergedProps); } }); }; var EditableSubmitTrigger = (props) => { const api = useEditableContext(); const mergedProps = mergeProps(() => api().getSubmitTriggerProps(), props); return createComponent(ark.button, mergedProps); }; // src/components/editable/editable.ts var editable_exports = {}; __export(editable_exports, { Area: () => EditableArea, CancelTrigger: () => EditableCancelTrigger, Context: () => EditableContext, Control: () => EditableControl, EditTrigger: () => EditableEditTrigger, Input: () => EditableInput, Label: () => EditableLabel, Preview: () => EditablePreview, Root: () => EditableRoot, RootProvider: () => EditableRootProvider, SubmitTrigger: () => EditableSubmitTrigger }); export { EditableArea, EditableCancelTrigger, EditableContext, EditableControl, EditableEditTrigger, EditableInput, EditableLabel, EditablePreview, EditableRoot, EditableRootProvider, EditableSubmitTrigger, editable_exports, useEditable, useEditableContext };