@ark-ui/solid
Version:
A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.
195 lines (187 loc) • 7.87 kB
JavaScript
import { splitPresenceProps, usePresence, PresenceProvider, usePresenceContext } from './SIT3D7TL.js';
import { composeRefs } from './ROP6QZQ7.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';
export { parseTime } from '@internationalized/date';
import { createComponent, mergeProps as mergeProps$1 } from 'solid-js/web';
import { mergeProps, useMachine, normalizeProps } from '@zag-js/solid';
import { Show, createUniqueId, createMemo } from 'solid-js';
import * as timePicker from '@zag-js/time-picker';
export { anatomy } from '@zag-js/time-picker';
// src/components/time-picker/use-time-picker-column-props-context.ts
var [TimePickerColumnPropsProvider, useTimePickerColumnPropsContext] = createContext({
hookName: "useTimePickerColumnPropsContext",
providerName: "<TimePickerColumnPropsProvider />"
});
// src/components/time-picker/use-time-picker-context.ts
var [TimePickerProvider, useTimePickerContext] = createContext({
hookName: "useTimePickerContext",
providerName: "<TimePickerProvider />"
});
// src/components/time-picker/time-picker-cell.tsx
var TimePickerCell = (props) => {
const [cellProps, localProps] = createSplitProps()(props, ["value"]);
const timePicker2 = useTimePickerContext();
const columnProps = useTimePickerColumnPropsContext();
const unitToPropsMap = {
hour: () => timePicker2().getHourCellProps(cellProps),
minute: () => timePicker2().getMinuteCellProps(cellProps),
second: () => timePicker2().getSecondCellProps(cellProps),
period: () => timePicker2().getPeriodCellProps(cellProps)
};
const mergedProps = mergeProps(() => unitToPropsMap[columnProps.unit](), localProps);
return createComponent(ark.button, mergedProps);
};
var TimePickerClearTrigger = (props) => {
const timePicker2 = useTimePickerContext();
const mergedProps = mergeProps(() => timePicker2().getClearTriggerProps(), props);
return createComponent(ark.button, mergedProps);
};
var TimePickerColumn = (props) => {
const [columnProps, localProps] = createSplitProps()(props, ["unit"]);
const timePicker2 = useTimePickerContext();
const mergedProps = mergeProps(() => timePicker2().getColumnProps(columnProps), localProps);
return createComponent(TimePickerColumnPropsProvider, {
value: columnProps,
get children() {
return createComponent(ark.div, mergedProps);
}
});
};
var TimePickerContent = (props) => {
const timePicker2 = useTimePickerContext();
const presenceApi = usePresenceContext();
const mergedProps = mergeProps(() => timePicker2().getContentProps(), () => presenceApi().presenceProps, props);
return createComponent(Show, {
get when() {
return !presenceApi().unmounted;
},
get children() {
return createComponent(ark.div, mergeProps$1(mergedProps, {
ref(r$) {
var _ref$ = composeRefs(presenceApi().ref, props.ref);
typeof _ref$ === "function" && _ref$(r$);
}
}));
}
});
};
// src/components/time-picker/time-picker-context.tsx
var TimePickerContext = (props) => props.children(useTimePickerContext());
var TimePickerControl = (props) => {
const timePicker2 = useTimePickerContext();
const mergedProps = mergeProps(() => timePicker2().getControlProps(), props);
return createComponent(ark.div, mergedProps);
};
var TimePickerInput = (props) => {
const timePicker2 = useTimePickerContext();
const mergedProps = mergeProps(() => timePicker2().getInputProps(), props);
return createComponent(ark.input, mergedProps);
};
var TimePickerLabel = (props) => {
const timePicker2 = useTimePickerContext();
const mergedProps = mergeProps(() => timePicker2().getLabelProps(), props);
return createComponent(ark.label, mergedProps);
};
var TimePickerPositioner = (props) => {
const timePicker2 = useTimePickerContext();
const mergedProps = mergeProps(() => timePicker2().getPositionerProps(), props);
const presenceApi = usePresenceContext();
return createComponent(Show, {
get when() {
return !presenceApi().unmounted;
},
get children() {
return createComponent(ark.div, mergedProps);
}
});
};
var useTimePicker = (props) => {
const id = createUniqueId();
const locale = useLocaleContext();
const environment = useEnvironmentContext();
const machineProps = createMemo(() => ({
id,
dir: locale().dir,
getRootNode: environment().getRootNode,
locale: locale().locale,
...runIfFn(props)
}));
const service = useMachine(timePicker.machine, machineProps);
return createMemo(() => timePicker.connect(service, normalizeProps));
};
// src/components/time-picker/time-picker-root.tsx
var TimePickerRoot = (props) => {
const [presenceProps, timePickerProps] = splitPresenceProps(props);
const [useTimePickerProps, localProps] = createSplitProps()(timePickerProps, ["allowSeconds", "defaultOpen", "defaultValue", "disableLayer", "disabled", "id", "ids", "locale", "max", "min", "name", "onFocusChange", "onOpenChange", "onValueChange", "open", "placeholder", "positioning", "readOnly", "steps", "value"]);
const timePicker2 = useTimePicker(useTimePickerProps);
const apiPresence = usePresence(mergeProps(presenceProps, () => ({
present: timePicker2().open
})));
const mergedProps = mergeProps(() => timePicker2().getRootProps(), localProps);
return createComponent(TimePickerProvider, {
value: timePicker2,
get children() {
return createComponent(PresenceProvider, {
value: apiPresence,
get children() {
return createComponent(ark.div, mergedProps);
}
});
}
});
};
var TimePickerRootProvider = (props) => {
const [presenceProps, timePickerProps] = splitPresenceProps(props);
const [{
value: timePicker2
}, localProps] = createSplitProps()(timePickerProps, ["value"]);
const apiPresence = usePresence(mergeProps(presenceProps, () => ({
present: timePicker2().open
})));
const mergedProps = mergeProps(() => timePicker2().getRootProps(), localProps);
return createComponent(TimePickerProvider, {
value: timePicker2,
get children() {
return createComponent(PresenceProvider, {
value: apiPresence,
get children() {
return createComponent(ark.div, mergedProps);
}
});
}
});
};
var TimePickerSpacer = (props) => {
const timePicker2 = useTimePickerContext();
const mergedProps = mergeProps(() => timePicker2().getSpacerProps(), props);
return createComponent(ark.div, mergedProps);
};
var TimePickerTrigger = (props) => {
const timePicker2 = useTimePickerContext();
const mergedProps = mergeProps(() => timePicker2().getTriggerProps(), props);
return createComponent(ark.button, mergedProps);
};
// src/components/time-picker/time-picker.ts
var time_picker_exports = {};
__export(time_picker_exports, {
Cell: () => TimePickerCell,
ClearTrigger: () => TimePickerClearTrigger,
Column: () => TimePickerColumn,
Content: () => TimePickerContent,
Context: () => TimePickerContext,
Control: () => TimePickerControl,
Input: () => TimePickerInput,
Label: () => TimePickerLabel,
Positioner: () => TimePickerPositioner,
Root: () => TimePickerRoot,
RootProvider: () => TimePickerRootProvider,
Spacer: () => TimePickerSpacer,
Trigger: () => TimePickerTrigger
});
export { TimePickerCell, TimePickerClearTrigger, TimePickerColumn, TimePickerContent, TimePickerContext, TimePickerControl, TimePickerInput, TimePickerLabel, TimePickerPositioner, TimePickerRoot, TimePickerRootProvider, TimePickerSpacer, TimePickerTrigger, time_picker_exports, useTimePicker, useTimePickerContext };