@elementos-development/alchemy-ui 0.1.22 → 0.1.23
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/dist/forms/index.cjs +3 -1
- package/dist/forms/index.cjs.map +1 -1
- package/dist/forms/index.js +3 -1
- package/dist/forms/index.js.map +1 -1
- package/dist/index.cjs +33 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +64 -3
- package/dist/index.d.ts +64 -3
- package/dist/index.js +33 -3
- package/dist/index.js.map +1 -1
- package/dist/theme/index.d.mts +2 -2
- package/dist/theme/index.d.ts +2 -2
- package/package.json +1 -1
package/dist/forms/index.cjs
CHANGED
|
@@ -517,7 +517,9 @@ function ControlledAutocomplete({
|
|
|
517
517
|
const extra = items.length - visible.length;
|
|
518
518
|
return [
|
|
519
519
|
...visible.map((option, index) => {
|
|
520
|
-
const chipProps = getCustomizedItemProps({
|
|
520
|
+
const { key: _chipKey, ...chipProps } = getCustomizedItemProps({
|
|
521
|
+
index
|
|
522
|
+
});
|
|
521
523
|
const lbl = getOptionLabel(option);
|
|
522
524
|
const finalKey = genKey(
|
|
523
525
|
option,
|
package/dist/forms/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/forms/useAlchemyForm.ts","../../src/atoms/TextField/TextField.tsx","../../src/forms/ControlledTextField.tsx","../../src/atoms/Select/Select.tsx","../../src/forms/ControlledSelect.tsx","../../src/atoms/Checkbox/Checkbox.tsx","../../src/forms/ControlledCheckbox.tsx","../../src/atoms/Switch/Switch.tsx","../../src/forms/ControlledSwitch.tsx","../../src/atoms/RadioGroup/RadioGroup.tsx","../../src/forms/ControlledRadioGroup.tsx","../../src/forms/ControlledAutocomplete.tsx"],"names":["useForm","zodResolver","React","jsx","InputAdornment","MuiTextField","Controller","jsxs","FormControl","InputLabel","MuiSelect","MenuItem","FormHelperText","FormControlLabel","MuiCheckbox","MuiSwitch","FormLabel","MuiRadioGroup","MuiRadio","createFilterOptions","useId","useRef","useController","useState","useEffect","useLayoutEffect","CheckBoxOutlineBlankIcon","CheckBoxIcon","Box","MuiAutocomplete","Checkbox","Tooltip","Chip","Popover","List","ListItem"],"mappings":"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","file":"index.cjs","sourcesContent":["import { useForm } from \"react-hook-form\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport type { UseFormProps, FieldValues, Resolver } from \"react-hook-form\";\n\nexport interface UseAlchemyFormProps<T extends FieldValues> extends UseFormProps<T> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n schema?: any;\n}\n\nexport function useAlchemyForm<T extends FieldValues>({\n schema,\n mode = \"onTouched\",\n ...props\n}: UseAlchemyFormProps<T> = {}) {\n return useForm<T>({\n resolver: schema ? (zodResolver(schema) as Resolver<T>) : undefined,\n mode,\n ...props,\n });\n}\n","import React from \"react\";\nimport MuiTextField from \"@mui/material/TextField\";\nimport type { OutlinedTextFieldProps } from \"@mui/material/TextField\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\n\nexport interface TextFieldProps extends Omit<OutlinedTextFieldProps, \"variant\"> {\n variant?: \"outlined\" | \"filled\" | \"standard\";\n startAdornment?: React.ReactNode;\n endAdornment?: React.ReactNode;\n}\n\nexport const TextField = React.forwardRef<HTMLDivElement, TextFieldProps>(\n ({ startAdornment, endAdornment, slotProps, ...props }, ref) => {\n const inputSlotProps: Record<string, unknown> = {\n ...(slotProps?.input as Record<string, unknown> | undefined),\n };\n\n if (startAdornment) {\n inputSlotProps.startAdornment = (\n <InputAdornment position=\"start\">{startAdornment}</InputAdornment>\n );\n }\n if (endAdornment) {\n inputSlotProps.endAdornment = (\n <InputAdornment position=\"end\">{endAdornment}</InputAdornment>\n );\n }\n\n return (\n <MuiTextField\n ref={ref}\n variant={props.variant ?? \"outlined\"}\n slotProps={{\n ...slotProps,\n input: inputSlotProps,\n }}\n {...props}\n />\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { TextField } from \"../atoms/TextField\";\nimport type { TextFieldProps } from \"../atoms/TextField\";\n\nexport type ControlledTextFieldProps<T extends FieldValues> = Omit<\n TextFieldProps,\n \"name\" | \"value\" | \"onChange\" | \"onBlur\" | \"error\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n};\n\nexport function ControlledTextField<T extends FieldValues>({\n control,\n name,\n helperText,\n ...props\n}: ControlledTextFieldProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field, fieldState }) => (\n <TextField\n {...field}\n {...props}\n error={!!fieldState.error}\n helperText={fieldState.error?.message ?? helperText}\n />\n )}\n />\n );\n}\n","import React from \"react\";\nimport MuiSelect, { type SelectProps as MuiSelectProps } from \"@mui/material/Select\";\nimport FormControl from \"@mui/material/FormControl\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport FormHelperText from \"@mui/material/FormHelperText\";\nimport MenuItem from \"@mui/material/MenuItem\";\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps extends Omit<MuiSelectProps, \"label\"> {\n label?: string;\n options?: SelectOption[];\n helperText?: string;\n error?: boolean;\n fullWidth?: boolean;\n}\n\nexport const Select = React.forwardRef<HTMLDivElement, SelectProps>(\n (\n { label, options = [], helperText, error = false, fullWidth = false, size, ...props },\n ref\n ) => {\n const labelId = label\n ? `${label.toLowerCase().replace(/\\s+/g, \"-\")}-label`\n : undefined;\n\n return (\n <FormControl\n ref={ref}\n fullWidth={fullWidth}\n error={error}\n size={size as \"small\" | \"medium\" | undefined}\n >\n {label && <InputLabel id={labelId}>{label}</InputLabel>}\n <MuiSelect label={label} labelId={labelId} {...props}>\n {options.map((option) => (\n <MenuItem key={option.value} value={option.value} disabled={option.disabled}>\n {option.label}\n </MenuItem>\n ))}\n </MuiSelect>\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\n </FormControl>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { Select } from \"../atoms/Select\";\nimport type { SelectProps, SelectOption } from \"../atoms/Select\";\n\nexport type ControlledSelectProps<T extends FieldValues> = Omit<\n SelectProps,\n \"name\" | \"value\" | \"onChange\" | \"onBlur\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n options: SelectOption[];\n};\n\nexport function ControlledSelect<T extends FieldValues>({\n control,\n name,\n helperText,\n ...props\n}: ControlledSelectProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field, fieldState }) => (\n <Select\n {...field}\n {...props}\n error={!!fieldState.error}\n helperText={fieldState.error?.message ?? helperText}\n />\n )}\n />\n );\n}\n","import React from \"react\";\nimport MuiCheckbox, {\n type CheckboxProps as MuiCheckboxProps,\n} from \"@mui/material/Checkbox\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\n\nexport interface CheckboxProps extends MuiCheckboxProps {\n label?: string;\n labelPlacement?: \"start\" | \"end\" | \"top\" | \"bottom\";\n}\n\nexport const Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n ({ label, labelPlacement = \"end\", ...props }, ref) => {\n if (label) {\n return (\n <FormControlLabel\n control={<MuiCheckbox ref={ref} {...props} />}\n label={label}\n labelPlacement={labelPlacement}\n />\n );\n }\n\n return <MuiCheckbox ref={ref} {...props} />;\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { Checkbox } from \"../atoms/Checkbox\";\nimport type { CheckboxProps } from \"../atoms/Checkbox\";\n\nexport type ControlledCheckboxProps<T extends FieldValues> = Omit<\n CheckboxProps,\n \"name\" | \"checked\" | \"onChange\" | \"onBlur\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n};\n\nexport function ControlledCheckbox<T extends FieldValues>({\n control,\n name,\n ...props\n}: ControlledCheckboxProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field }) => (\n <Checkbox\n {...props}\n checked={!!field.value}\n onChange={field.onChange}\n onBlur={field.onBlur}\n name={field.name}\n />\n )}\n />\n );\n}\n","import React from \"react\";\nimport MuiSwitch, { type SwitchProps as MuiSwitchProps } from \"@mui/material/Switch\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\n\nexport interface SwitchProps extends MuiSwitchProps {\n label?: string;\n labelPlacement?: \"start\" | \"end\" | \"top\" | \"bottom\";\n}\n\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n ({ label, labelPlacement = \"end\", ...props }, ref) => {\n if (label) {\n return (\n <FormControlLabel\n control={<MuiSwitch ref={ref} {...props} />}\n label={label}\n labelPlacement={labelPlacement}\n />\n );\n }\n\n return <MuiSwitch ref={ref} {...props} />;\n }\n);\n\nSwitch.displayName = \"Switch\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { Switch } from \"../atoms/Switch\";\nimport type { SwitchProps } from \"../atoms/Switch\";\n\nexport type ControlledSwitchProps<T extends FieldValues> = Omit<\n SwitchProps,\n \"name\" | \"checked\" | \"onChange\" | \"onBlur\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n};\n\nexport function ControlledSwitch<T extends FieldValues>({\n control,\n name,\n ...props\n}: ControlledSwitchProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field }) => (\n <Switch\n {...props}\n checked={!!field.value}\n onChange={field.onChange}\n onBlur={field.onBlur}\n name={field.name}\n />\n )}\n />\n );\n}\n","import React from \"react\";\nimport MuiRadio, { type RadioProps as MuiRadioProps } from \"@mui/material/Radio\";\nimport MuiRadioGroup, {\n type RadioGroupProps as MuiRadioGroupProps,\n} from \"@mui/material/RadioGroup\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport FormControl from \"@mui/material/FormControl\";\nimport FormLabel from \"@mui/material/FormLabel\";\n\nexport interface RadioOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps extends Omit<MuiRadioGroupProps, \"children\"> {\n label?: string;\n options: RadioOption[];\n size?: \"small\" | \"medium\" | \"large\";\n radioProps?: MuiRadioProps;\n}\n\nexport const RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\n ({ label, options, size, radioProps, ...props }, ref) => {\n const radioSize = size === \"large\" ? \"medium\" : size;\n const effectiveRadioProps: MuiRadioProps =\n radioSize !== undefined ? { size: radioSize, ...radioProps } : { ...radioProps };\n return (\n <FormControl>\n {label && <FormLabel>{label}</FormLabel>}\n <MuiRadioGroup ref={ref} {...props}>\n {options.map((option) => (\n <FormControlLabel\n key={option.value}\n value={option.value}\n label={option.label}\n disabled={option.disabled}\n control={<MuiRadio {...effectiveRadioProps} />}\n />\n ))}\n </MuiRadioGroup>\n </FormControl>\n );\n }\n);\n\nRadioGroup.displayName = \"RadioGroup\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { RadioGroup } from \"../atoms/RadioGroup\";\nimport type { RadioGroupProps } from \"../atoms/RadioGroup\";\n\nexport type ControlledRadioGroupProps<T extends FieldValues> = Omit<\n RadioGroupProps,\n \"name\" | \"value\" | \"onChange\" | \"onBlur\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n};\n\nexport function ControlledRadioGroup<T extends FieldValues>({\n control,\n name,\n ...props\n}: ControlledRadioGroupProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field }) => (\n <RadioGroup\n {...props}\n value={field.value ?? \"\"}\n onChange={field.onChange}\n onBlur={field.onBlur}\n name={field.name}\n />\n )}\n />\n );\n}\n","import React, { useEffect, useId, useLayoutEffect, useRef, useState } from \"react\";\nimport MuiAutocomplete, { createFilterOptions } from \"@mui/material/Autocomplete\";\nimport Checkbox from \"@mui/material/Checkbox\";\nimport MuiTextField from \"@mui/material/TextField\";\nimport CheckBoxOutlineBlankIcon from \"@mui/icons-material/CheckBoxOutlineBlank\";\nimport CheckBoxIcon from \"@mui/icons-material/CheckBox\";\nimport {\n Box,\n Chip,\n List,\n ListItem,\n Popover,\n Tooltip,\n type SxProps,\n type Theme,\n type InputLabelProps,\n} from \"@mui/material\";\nimport {\n type Control,\n type FieldValues,\n type Path,\n useController,\n} from \"react-hook-form\";\n\n// ─── Styles ───────────────────────────────────────────────────────────────────\n\nconst inputLabelSx: SxProps<Theme> = {\n color: \"rgba(21, 35, 86, 0.38)\",\n fontWeight: 400,\n \"&.MuiInputLabel-outlined\": { transform: \"translate(14px, 12.5px) scale(1)\" },\n \"&.MuiInputLabel-outlined.MuiInputLabel-sizeSmall\": {\n transform: \"translate(14px, 8.5px) scale(1)\",\n },\n \"&.MuiInputLabel-outlined.MuiInputLabel-shrink\": {\n transform: \"translate(14px, -9px) scale(0.75)\",\n },\n \"&.Mui-focused\": { color: \"rgba(21, 35, 86, 0.38)\" },\n};\n\nconst autocompleteSx: SxProps<Theme> = {\n \"& .MuiAutocomplete-inputRoot\": {\n alignItems: \"center\",\n flexWrap: \"nowrap\",\n overflow: \"hidden\",\n },\n \"& .MuiAutocomplete-tag\": { maxHeight: 24 },\n \"& .MuiOutlinedInput-root\": {\n minHeight: \"48px\",\n \"& .MuiOutlinedInput-notchedOutline\": { borderColor: \"rgba(21, 35, 86, 0.23)\" },\n \"&:hover .MuiOutlinedInput-notchedOutline\": { borderColor: \"rgba(21, 35, 86, 0.23)\" },\n },\n};\n\nconst textFieldSx: SxProps<Theme> = {\n color: \"text.disabled\",\n \"& .MuiInputLabel-root\": inputLabelSx,\n \"& .MuiOutlinedInput-root\": { minHeight: \"48px\" },\n \"& .MuiOutlinedInput-input\": { paddingTop: \"12.5px\", paddingBottom: \"12.5px\" },\n \"& .MuiOutlinedInput-root.MuiInputBase-sizeSmall\": { minHeight: \"40px\" },\n \"& .MuiOutlinedInput-input.MuiInputBase-inputSizeSmall\": {\n paddingTop: \"8.5px\",\n paddingBottom: \"8.5px\",\n },\n};\n\nconst checkboxSx: SxProps<Theme> = { mr: 1 };\nconst popoverPaperSx: SxProps<Theme> = {\n maxHeight: 320,\n overflowY: \"auto\",\n p: 1,\n borderRadius: \"10px\",\n};\nconst listItemSx: SxProps<Theme> = { py: 0.5, fontSize: \"14px\" };\nconst getChipSx = (maxWidth: number): SxProps<Theme> => ({\n maxWidth,\n \"& .MuiChip-label\": {\n display: \"block\",\n maxWidth: maxWidth - 24,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n});\nconst getMoreChipSx = (maxWidth: number): SxProps<Theme> => ({\n cursor: \"default\",\n maxWidth,\n});\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst filter = createFilterOptions<any>();\n\nconst stableId = (v: string) =>\n v\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\") || \"field\";\n\nlet _seq = 0;\nconst uniqueKey = (base: string) => `${base}-${++_seq}`;\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface ControlledAutocompleteProps<T, TFieldValues extends FieldValues> {\n name: Path<TFieldValues>;\n control: Control<TFieldValues>;\n data: ReadonlyArray<T>;\n label: string;\n placeholder?: string;\n getOptionLabel: (option: T) => string;\n getOptionValue: (option: T) => string | number;\n InputLabelProps?: InputLabelProps;\n chipMaxWidth?: number;\n disabled?: boolean;\n /** Appends a counter suffix to each React key — use when option values may repeat. */\n enableUniqueKeys?: boolean;\n noOptionsText?: React.ReactNode;\n freeSolo?: boolean;\n /** Called with the typed input when freeSolo triggers a new-item action. */\n onOpenModal?: (inputValue: string) => void;\n hideCheckbox?: boolean;\n singleSelect?: boolean;\n onClick?: () => void;\n error?: boolean;\n helperText?: React.ReactNode;\n onBlur?: () => void;\n size?: \"small\" | \"medium\";\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport function ControlledAutocomplete<T, TFieldValues extends FieldValues>({\n name,\n control,\n data,\n label,\n placeholder,\n getOptionLabel,\n getOptionValue,\n InputLabelProps: inputLabelProps,\n chipMaxWidth = 120,\n disabled = false,\n enableUniqueKeys = false,\n noOptionsText = \"No Options\",\n freeSolo = false,\n onOpenModal,\n hideCheckbox = false,\n singleSelect = false,\n onClick,\n error: externalError,\n helperText: externalHelperText,\n onBlur: externalOnBlur,\n size = \"medium\",\n}: ControlledAutocompleteProps<T, TFieldValues>) {\n const instanceId = useId().replace(/:/g, \"\");\n const autocompleteId = `autocomplete-${stableId(String(name))}-${instanceId}`;\n const containerRef = useRef<HTMLDivElement>(null);\n\n const {\n field: { onChange, value, onBlur: rhfOnBlur },\n fieldState: { error },\n } = useController({ name, control });\n\n const shouldShowCheckbox = !singleSelect && !hideCheckbox;\n\n const getSelectedItems = (): T | T[] | null => {\n if (singleSelect) {\n return data.find((item) => getOptionValue(item) === value) ?? null;\n }\n const ids = (value || []) as (string | number)[];\n return (data as T[]).filter((item) => ids.includes(getOptionValue(item)));\n };\n\n const selectedValue = getSelectedItems();\n\n const [visibleCount, setVisibleCount] = useState(1);\n const [moreOpen, setMoreOpen] = useState(false);\n const [moreAnchor, setMoreAnchor] = useState<HTMLElement | null>(null);\n const [moreItems, setMoreItems] = useState<T[]>([]);\n const hoverAreaRef = useRef(false);\n const closeTimerRef = useRef<number | null>(null);\n const lastSanitizeRef = useRef<string | null>(null);\n\n const openPopover = (anchor: HTMLElement, items: T[]) => {\n setMoreItems(items);\n setMoreAnchor(anchor);\n setMoreOpen(true);\n };\n\n const closePopover = () => {\n setMoreOpen(false);\n setMoreAnchor(null);\n };\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLElement>, items: T[]) => {\n if (closeTimerRef.current) window.clearTimeout(closeTimerRef.current);\n hoverAreaRef.current = true;\n openPopover(e.currentTarget, items);\n };\n\n const handleMouseLeave = () => {\n hoverAreaRef.current = false;\n if (closeTimerRef.current) window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = window.setTimeout(() => {}, 250);\n };\n\n useEffect(\n () => () => {\n if (closeTimerRef.current) window.clearTimeout(closeTimerRef.current);\n },\n []\n );\n\n // Remove stale ids from the form value when data changes\n useEffect(() => {\n if (singleSelect) return;\n const currentValue = value || [];\n if (!Array.isArray(currentValue)) return;\n\n const currentIds = currentValue as (string | number)[];\n const validIds = new Set(data.map(getOptionValue));\n const cleanIds = currentIds.filter((id) => validIds.has(id));\n\n const hasChanges =\n cleanIds.length !== currentIds.length ||\n cleanIds.some((id, i) => id !== currentIds[i]);\n if (!hasChanges) {\n lastSanitizeRef.current = null;\n return;\n }\n\n const sig = `${JSON.stringify(currentIds)}=>${JSON.stringify(cleanIds)}`;\n if (lastSanitizeRef.current === sig) return;\n lastSanitizeRef.current = sig;\n onChange(cleanIds);\n }, [value, data, getOptionValue, onChange, singleSelect]);\n\n useEffect(() => {\n if (singleSelect) lastSanitizeRef.current = null;\n }, [singleSelect]);\n\n const selectedCount = singleSelect ? 0 : (selectedValue as T[]).length;\n\n useLayoutEffect(() => {\n if (singleSelect) return;\n const el = containerRef.current;\n if (!el) return;\n const compute = () => {\n const available = el.clientWidth - 72;\n const chipWidth = chipMaxWidth + 8;\n const max = Math.floor(available / chipWidth);\n setVisibleCount(Math.max(1, isFinite(max) ? max : 1));\n };\n compute();\n const ro = new ResizeObserver(compute);\n ro.observe(el);\n return () => ro.disconnect();\n }, [chipMaxWidth, selectedCount, singleSelect]);\n\n const icon = <CheckBoxOutlineBlankIcon fontSize=\"small\" />;\n const checkedIcon = <CheckBoxIcon fontSize=\"small\" />;\n const genKey = (option: T, base: string) => (enableUniqueKeys ? uniqueKey(base) : base);\n\n return (\n <Box>\n <Box ref={containerRef} onClick={onClick}>\n <MuiAutocomplete\n id={autocompleteId}\n multiple={!singleSelect}\n options={data as T[]}\n disableCloseOnSelect={!singleSelect}\n onBlur={() => {\n rhfOnBlur();\n externalOnBlur?.();\n }}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getOptionLabel={(option: any) => {\n if (typeof option === \"string\") return option;\n if (option?.inputValue) return option.inputValue;\n return getOptionLabel(option as T);\n }}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value={selectedValue as any}\n disabled={disabled}\n freeSolo={freeSolo}\n noOptionsText={freeSolo ? null : noOptionsText}\n filterOptions={(options, params) => {\n const filtered = filter(options, params);\n if (freeSolo && params.inputValue !== \"\") {\n filtered.push({\n inputValue: params.inputValue,\n label: `Add \"${params.inputValue}\"`,\n isNewOption: true,\n });\n }\n return filtered;\n }}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onChange={(_e, newValue: any) => {\n const target = singleSelect ? newValue : newValue[newValue.length - 1];\n if (\n freeSolo &&\n target &&\n (typeof target === \"string\" || target?.inputValue)\n ) {\n onOpenModal?.(typeof target === \"string\" ? target : target.inputValue);\n return;\n }\n if (singleSelect) {\n onChange(newValue ? getOptionValue(newValue as T) : null);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const ids = (newValue as any[])\n .map((item) => {\n if (typeof item === \"string\" || item?.inputValue) return null;\n return getOptionValue(item as T);\n })\n .filter(Boolean) as (string | number)[];\n onChange(ids);\n }\n }}\n isOptionEqualToValue={(option, v) =>\n getOptionValue(option as T) === getOptionValue(v as T)\n }\n renderOption={(props, option, { selected }) => {\n const { key, ...rest } = props;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((option as any)?.isNewOption) {\n return (\n <li key=\"add-new-option\" {...rest}>\n {/* eslint-disable-next-line @typescript-eslint/no-explicit-any */}\n {`Add \"${(option as any).inputValue}\"`}\n </li>\n );\n }\n const baseKey = String(key ?? getOptionValue(option as T));\n const finalKey = genKey(option as T, baseKey);\n return (\n <li key={finalKey} {...rest}>\n {shouldShowCheckbox && (\n <Checkbox\n sx={checkboxSx}\n icon={icon}\n checkedIcon={checkedIcon}\n checked={selected}\n />\n )}\n {getOptionLabel(option as T)}\n </li>\n );\n }}\n renderValue={\n singleSelect\n ? undefined\n : (tagValue, getCustomizedItemProps) => {\n const items = tagValue as T[];\n if (items.length === 0) return null;\n const count = Math.max(1, visibleCount);\n const visible = items.slice(0, count);\n const extra = items.length - visible.length;\n return [\n ...visible.map((option, index) => {\n const chipProps = getCustomizedItemProps({ index });\n const lbl = getOptionLabel(option as T);\n const finalKey = genKey(\n option as T,\n String(getOptionValue(option as T))\n );\n return (\n <Tooltip key={finalKey} title={lbl} arrow enterDelay={300}>\n <span>\n <Chip\n {...chipProps}\n label={lbl}\n size=\"small\"\n sx={getChipSx(chipMaxWidth)}\n />\n </span>\n </Tooltip>\n );\n }),\n extra > 0 ? (\n <Box\n key=\"more-wrapper\"\n onMouseEnter={(e) => handleMouseEnter(e, items.slice(count))}\n onMouseLeave={handleMouseLeave}\n sx={{ display: \"inline-flex\" }}\n >\n <Chip\n label={`+${extra} more`}\n size=\"small\"\n disabled={disabled}\n sx={getMoreChipSx(chipMaxWidth)}\n />\n </Box>\n ) : null,\n ];\n }\n }\n renderInput={(params) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const p = params as any;\n // Separate slot-related keys from the base params (id, disabled, fullWidth, size).\n // MUI ≥ v9 moves InputProps/inputProps/InputLabelProps into params.slotProps;\n // earlier versions keep them as top-level legacy keys. Support both so the ref\n // is always forwarded.\n const {\n InputLabelProps: pInputLabelProps,\n InputProps: pInputProps,\n inputProps: pHtmlInputProps,\n slotProps: pSlotProps,\n ...restParams\n } = p;\n const inputLabelSlot = pInputLabelProps ?? pSlotProps?.inputLabel;\n const inputSlot = pInputProps ?? pSlotProps?.input;\n const htmlInputSlot = pHtmlInputProps ?? pSlotProps?.htmlInput;\n return (\n <MuiTextField\n {...restParams}\n label={label}\n size={size}\n placeholder={\n disabled\n ? undefined\n : (singleSelect && selectedValue) ||\n (!singleSelect && (selectedValue as T[]).length > 0)\n ? undefined\n : placeholder\n }\n error={externalError !== undefined ? externalError : !!error}\n helperText={\n externalHelperText !== undefined\n ? externalHelperText\n : (error?.message ?? \" \")\n }\n slotProps={{\n inputLabel: { ...inputLabelSlot, ...inputLabelProps },\n input: inputSlot,\n htmlInput: htmlInputSlot,\n }}\n disabled={disabled}\n sx={textFieldSx}\n />\n );\n }}\n sx={autocompleteSx}\n />\n </Box>\n\n {!singleSelect && (\n <Popover\n open={moreOpen}\n anchorEl={moreAnchor}\n disableAutoFocus\n disableEnforceFocus\n disableRestoreFocus\n onClose={closePopover}\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n transformOrigin={{ vertical: \"top\", horizontal: \"left\" }}\n slotProps={{ paper: { sx: popoverPaperSx } }}\n >\n <List dense sx={{ minWidth: 240 }}>\n {moreItems.map((item) => (\n <ListItem key={String(getOptionValue(item))} sx={listItemSx}>\n {getOptionLabel(item)}\n </ListItem>\n ))}\n </List>\n </Popover>\n )}\n </Box>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/forms/useAlchemyForm.ts","../../src/atoms/TextField/TextField.tsx","../../src/forms/ControlledTextField.tsx","../../src/atoms/Select/Select.tsx","../../src/forms/ControlledSelect.tsx","../../src/atoms/Checkbox/Checkbox.tsx","../../src/forms/ControlledCheckbox.tsx","../../src/atoms/Switch/Switch.tsx","../../src/forms/ControlledSwitch.tsx","../../src/atoms/RadioGroup/RadioGroup.tsx","../../src/forms/ControlledRadioGroup.tsx","../../src/forms/ControlledAutocomplete.tsx"],"names":["useForm","zodResolver","React","jsx","InputAdornment","MuiTextField","Controller","jsxs","FormControl","InputLabel","MuiSelect","MenuItem","FormHelperText","FormControlLabel","MuiCheckbox","MuiSwitch","FormLabel","MuiRadioGroup","MuiRadio","createFilterOptions","useId","useRef","useController","useState","useEffect","useLayoutEffect","CheckBoxOutlineBlankIcon","CheckBoxIcon","Box","MuiAutocomplete","Checkbox","Tooltip","Chip","Popover","List","ListItem"],"mappings":"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","file":"index.cjs","sourcesContent":["import { useForm } from \"react-hook-form\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport type { UseFormProps, FieldValues, Resolver } from \"react-hook-form\";\n\nexport interface UseAlchemyFormProps<T extends FieldValues> extends UseFormProps<T> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n schema?: any;\n}\n\nexport function useAlchemyForm<T extends FieldValues>({\n schema,\n mode = \"onTouched\",\n ...props\n}: UseAlchemyFormProps<T> = {}) {\n return useForm<T>({\n resolver: schema ? (zodResolver(schema) as Resolver<T>) : undefined,\n mode,\n ...props,\n });\n}\n","import React from \"react\";\nimport MuiTextField from \"@mui/material/TextField\";\nimport type { OutlinedTextFieldProps } from \"@mui/material/TextField\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\n\nexport interface TextFieldProps extends Omit<OutlinedTextFieldProps, \"variant\"> {\n variant?: \"outlined\" | \"filled\" | \"standard\";\n startAdornment?: React.ReactNode;\n endAdornment?: React.ReactNode;\n}\n\nexport const TextField = React.forwardRef<HTMLDivElement, TextFieldProps>(\n ({ startAdornment, endAdornment, slotProps, ...props }, ref) => {\n const inputSlotProps: Record<string, unknown> = {\n ...(slotProps?.input as Record<string, unknown> | undefined),\n };\n\n if (startAdornment) {\n inputSlotProps.startAdornment = (\n <InputAdornment position=\"start\">{startAdornment}</InputAdornment>\n );\n }\n if (endAdornment) {\n inputSlotProps.endAdornment = (\n <InputAdornment position=\"end\">{endAdornment}</InputAdornment>\n );\n }\n\n return (\n <MuiTextField\n ref={ref}\n variant={props.variant ?? \"outlined\"}\n slotProps={{\n ...slotProps,\n input: inputSlotProps,\n }}\n {...props}\n />\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { TextField } from \"../atoms/TextField\";\nimport type { TextFieldProps } from \"../atoms/TextField\";\n\nexport type ControlledTextFieldProps<T extends FieldValues> = Omit<\n TextFieldProps,\n \"name\" | \"value\" | \"onChange\" | \"onBlur\" | \"error\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n};\n\nexport function ControlledTextField<T extends FieldValues>({\n control,\n name,\n helperText,\n ...props\n}: ControlledTextFieldProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field, fieldState }) => (\n <TextField\n {...field}\n {...props}\n error={!!fieldState.error}\n helperText={fieldState.error?.message ?? helperText}\n />\n )}\n />\n );\n}\n","import React from \"react\";\nimport MuiSelect, { type SelectProps as MuiSelectProps } from \"@mui/material/Select\";\nimport FormControl from \"@mui/material/FormControl\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport FormHelperText from \"@mui/material/FormHelperText\";\nimport MenuItem from \"@mui/material/MenuItem\";\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps extends Omit<MuiSelectProps, \"label\"> {\n label?: string;\n options?: SelectOption[];\n helperText?: string;\n error?: boolean;\n fullWidth?: boolean;\n}\n\nexport const Select = React.forwardRef<HTMLDivElement, SelectProps>(\n (\n { label, options = [], helperText, error = false, fullWidth = false, size, ...props },\n ref\n ) => {\n const labelId = label\n ? `${label.toLowerCase().replace(/\\s+/g, \"-\")}-label`\n : undefined;\n\n return (\n <FormControl\n ref={ref}\n fullWidth={fullWidth}\n error={error}\n size={size as \"small\" | \"medium\" | undefined}\n >\n {label && <InputLabel id={labelId}>{label}</InputLabel>}\n <MuiSelect label={label} labelId={labelId} {...props}>\n {options.map((option) => (\n <MenuItem key={option.value} value={option.value} disabled={option.disabled}>\n {option.label}\n </MenuItem>\n ))}\n </MuiSelect>\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\n </FormControl>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { Select } from \"../atoms/Select\";\nimport type { SelectProps, SelectOption } from \"../atoms/Select\";\n\nexport type ControlledSelectProps<T extends FieldValues> = Omit<\n SelectProps,\n \"name\" | \"value\" | \"onChange\" | \"onBlur\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n options: SelectOption[];\n};\n\nexport function ControlledSelect<T extends FieldValues>({\n control,\n name,\n helperText,\n ...props\n}: ControlledSelectProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field, fieldState }) => (\n <Select\n {...field}\n {...props}\n error={!!fieldState.error}\n helperText={fieldState.error?.message ?? helperText}\n />\n )}\n />\n );\n}\n","import React from \"react\";\nimport MuiCheckbox, {\n type CheckboxProps as MuiCheckboxProps,\n} from \"@mui/material/Checkbox\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\n\nexport interface CheckboxProps extends MuiCheckboxProps {\n label?: string;\n labelPlacement?: \"start\" | \"end\" | \"top\" | \"bottom\";\n}\n\nexport const Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n ({ label, labelPlacement = \"end\", ...props }, ref) => {\n if (label) {\n return (\n <FormControlLabel\n control={<MuiCheckbox ref={ref} {...props} />}\n label={label}\n labelPlacement={labelPlacement}\n />\n );\n }\n\n return <MuiCheckbox ref={ref} {...props} />;\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { Checkbox } from \"../atoms/Checkbox\";\nimport type { CheckboxProps } from \"../atoms/Checkbox\";\n\nexport type ControlledCheckboxProps<T extends FieldValues> = Omit<\n CheckboxProps,\n \"name\" | \"checked\" | \"onChange\" | \"onBlur\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n};\n\nexport function ControlledCheckbox<T extends FieldValues>({\n control,\n name,\n ...props\n}: ControlledCheckboxProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field }) => (\n <Checkbox\n {...props}\n checked={!!field.value}\n onChange={field.onChange}\n onBlur={field.onBlur}\n name={field.name}\n />\n )}\n />\n );\n}\n","import React from \"react\";\nimport MuiSwitch, { type SwitchProps as MuiSwitchProps } from \"@mui/material/Switch\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\n\nexport interface SwitchProps extends MuiSwitchProps {\n label?: string;\n labelPlacement?: \"start\" | \"end\" | \"top\" | \"bottom\";\n}\n\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n ({ label, labelPlacement = \"end\", ...props }, ref) => {\n if (label) {\n return (\n <FormControlLabel\n control={<MuiSwitch ref={ref} {...props} />}\n label={label}\n labelPlacement={labelPlacement}\n />\n );\n }\n\n return <MuiSwitch ref={ref} {...props} />;\n }\n);\n\nSwitch.displayName = \"Switch\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { Switch } from \"../atoms/Switch\";\nimport type { SwitchProps } from \"../atoms/Switch\";\n\nexport type ControlledSwitchProps<T extends FieldValues> = Omit<\n SwitchProps,\n \"name\" | \"checked\" | \"onChange\" | \"onBlur\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n};\n\nexport function ControlledSwitch<T extends FieldValues>({\n control,\n name,\n ...props\n}: ControlledSwitchProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field }) => (\n <Switch\n {...props}\n checked={!!field.value}\n onChange={field.onChange}\n onBlur={field.onBlur}\n name={field.name}\n />\n )}\n />\n );\n}\n","import React from \"react\";\nimport MuiRadio, { type RadioProps as MuiRadioProps } from \"@mui/material/Radio\";\nimport MuiRadioGroup, {\n type RadioGroupProps as MuiRadioGroupProps,\n} from \"@mui/material/RadioGroup\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport FormControl from \"@mui/material/FormControl\";\nimport FormLabel from \"@mui/material/FormLabel\";\n\nexport interface RadioOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps extends Omit<MuiRadioGroupProps, \"children\"> {\n label?: string;\n options: RadioOption[];\n size?: \"small\" | \"medium\" | \"large\";\n radioProps?: MuiRadioProps;\n}\n\nexport const RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\n ({ label, options, size, radioProps, ...props }, ref) => {\n const radioSize = size === \"large\" ? \"medium\" : size;\n const effectiveRadioProps: MuiRadioProps =\n radioSize !== undefined ? { size: radioSize, ...radioProps } : { ...radioProps };\n return (\n <FormControl>\n {label && <FormLabel>{label}</FormLabel>}\n <MuiRadioGroup ref={ref} {...props}>\n {options.map((option) => (\n <FormControlLabel\n key={option.value}\n value={option.value}\n label={option.label}\n disabled={option.disabled}\n control={<MuiRadio {...effectiveRadioProps} />}\n />\n ))}\n </MuiRadioGroup>\n </FormControl>\n );\n }\n);\n\nRadioGroup.displayName = \"RadioGroup\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { RadioGroup } from \"../atoms/RadioGroup\";\nimport type { RadioGroupProps } from \"../atoms/RadioGroup\";\n\nexport type ControlledRadioGroupProps<T extends FieldValues> = Omit<\n RadioGroupProps,\n \"name\" | \"value\" | \"onChange\" | \"onBlur\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n};\n\nexport function ControlledRadioGroup<T extends FieldValues>({\n control,\n name,\n ...props\n}: ControlledRadioGroupProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field }) => (\n <RadioGroup\n {...props}\n value={field.value ?? \"\"}\n onChange={field.onChange}\n onBlur={field.onBlur}\n name={field.name}\n />\n )}\n />\n );\n}\n","import React, { useEffect, useId, useLayoutEffect, useRef, useState } from \"react\";\nimport MuiAutocomplete, { createFilterOptions } from \"@mui/material/Autocomplete\";\nimport Checkbox from \"@mui/material/Checkbox\";\nimport MuiTextField from \"@mui/material/TextField\";\nimport CheckBoxOutlineBlankIcon from \"@mui/icons-material/CheckBoxOutlineBlank\";\nimport CheckBoxIcon from \"@mui/icons-material/CheckBox\";\nimport {\n Box,\n Chip,\n List,\n ListItem,\n Popover,\n Tooltip,\n type SxProps,\n type Theme,\n type InputLabelProps,\n} from \"@mui/material\";\nimport {\n type Control,\n type FieldValues,\n type Path,\n useController,\n} from \"react-hook-form\";\n\n// ─── Styles ───────────────────────────────────────────────────────────────────\n\nconst inputLabelSx: SxProps<Theme> = {\n color: \"rgba(21, 35, 86, 0.38)\",\n fontWeight: 400,\n \"&.MuiInputLabel-outlined\": { transform: \"translate(14px, 12.5px) scale(1)\" },\n \"&.MuiInputLabel-outlined.MuiInputLabel-sizeSmall\": {\n transform: \"translate(14px, 8.5px) scale(1)\",\n },\n \"&.MuiInputLabel-outlined.MuiInputLabel-shrink\": {\n transform: \"translate(14px, -9px) scale(0.75)\",\n },\n \"&.Mui-focused\": { color: \"rgba(21, 35, 86, 0.38)\" },\n};\n\nconst autocompleteSx: SxProps<Theme> = {\n \"& .MuiAutocomplete-inputRoot\": {\n alignItems: \"center\",\n flexWrap: \"nowrap\",\n overflow: \"hidden\",\n },\n \"& .MuiAutocomplete-tag\": { maxHeight: 24 },\n \"& .MuiOutlinedInput-root\": {\n minHeight: \"48px\",\n \"& .MuiOutlinedInput-notchedOutline\": { borderColor: \"rgba(21, 35, 86, 0.23)\" },\n \"&:hover .MuiOutlinedInput-notchedOutline\": { borderColor: \"rgba(21, 35, 86, 0.23)\" },\n },\n};\n\nconst textFieldSx: SxProps<Theme> = {\n color: \"text.disabled\",\n \"& .MuiInputLabel-root\": inputLabelSx,\n \"& .MuiOutlinedInput-root\": { minHeight: \"48px\" },\n \"& .MuiOutlinedInput-input\": { paddingTop: \"12.5px\", paddingBottom: \"12.5px\" },\n \"& .MuiOutlinedInput-root.MuiInputBase-sizeSmall\": { minHeight: \"40px\" },\n \"& .MuiOutlinedInput-input.MuiInputBase-inputSizeSmall\": {\n paddingTop: \"8.5px\",\n paddingBottom: \"8.5px\",\n },\n};\n\nconst checkboxSx: SxProps<Theme> = { mr: 1 };\nconst popoverPaperSx: SxProps<Theme> = {\n maxHeight: 320,\n overflowY: \"auto\",\n p: 1,\n borderRadius: \"10px\",\n};\nconst listItemSx: SxProps<Theme> = { py: 0.5, fontSize: \"14px\" };\nconst getChipSx = (maxWidth: number): SxProps<Theme> => ({\n maxWidth,\n \"& .MuiChip-label\": {\n display: \"block\",\n maxWidth: maxWidth - 24,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n});\nconst getMoreChipSx = (maxWidth: number): SxProps<Theme> => ({\n cursor: \"default\",\n maxWidth,\n});\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst filter = createFilterOptions<any>();\n\nconst stableId = (v: string) =>\n v\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\") || \"field\";\n\nlet _seq = 0;\nconst uniqueKey = (base: string) => `${base}-${++_seq}`;\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface ControlledAutocompleteProps<T, TFieldValues extends FieldValues> {\n name: Path<TFieldValues>;\n control: Control<TFieldValues>;\n data: ReadonlyArray<T>;\n label: string;\n placeholder?: string;\n getOptionLabel: (option: T) => string;\n getOptionValue: (option: T) => string | number;\n InputLabelProps?: InputLabelProps;\n chipMaxWidth?: number;\n disabled?: boolean;\n /** Appends a counter suffix to each React key — use when option values may repeat. */\n enableUniqueKeys?: boolean;\n noOptionsText?: React.ReactNode;\n freeSolo?: boolean;\n /** Called with the typed input when freeSolo triggers a new-item action. */\n onOpenModal?: (inputValue: string) => void;\n hideCheckbox?: boolean;\n singleSelect?: boolean;\n onClick?: () => void;\n error?: boolean;\n helperText?: React.ReactNode;\n onBlur?: () => void;\n size?: \"small\" | \"medium\";\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport function ControlledAutocomplete<T, TFieldValues extends FieldValues>({\n name,\n control,\n data,\n label,\n placeholder,\n getOptionLabel,\n getOptionValue,\n InputLabelProps: inputLabelProps,\n chipMaxWidth = 120,\n disabled = false,\n enableUniqueKeys = false,\n noOptionsText = \"No Options\",\n freeSolo = false,\n onOpenModal,\n hideCheckbox = false,\n singleSelect = false,\n onClick,\n error: externalError,\n helperText: externalHelperText,\n onBlur: externalOnBlur,\n size = \"medium\",\n}: ControlledAutocompleteProps<T, TFieldValues>) {\n const instanceId = useId().replace(/:/g, \"\");\n const autocompleteId = `autocomplete-${stableId(String(name))}-${instanceId}`;\n const containerRef = useRef<HTMLDivElement>(null);\n\n const {\n field: { onChange, value, onBlur: rhfOnBlur },\n fieldState: { error },\n } = useController({ name, control });\n\n const shouldShowCheckbox = !singleSelect && !hideCheckbox;\n\n const getSelectedItems = (): T | T[] | null => {\n if (singleSelect) {\n return data.find((item) => getOptionValue(item) === value) ?? null;\n }\n const ids = (value || []) as (string | number)[];\n return (data as T[]).filter((item) => ids.includes(getOptionValue(item)));\n };\n\n const selectedValue = getSelectedItems();\n\n const [visibleCount, setVisibleCount] = useState(1);\n const [moreOpen, setMoreOpen] = useState(false);\n const [moreAnchor, setMoreAnchor] = useState<HTMLElement | null>(null);\n const [moreItems, setMoreItems] = useState<T[]>([]);\n const hoverAreaRef = useRef(false);\n const closeTimerRef = useRef<number | null>(null);\n const lastSanitizeRef = useRef<string | null>(null);\n\n const openPopover = (anchor: HTMLElement, items: T[]) => {\n setMoreItems(items);\n setMoreAnchor(anchor);\n setMoreOpen(true);\n };\n\n const closePopover = () => {\n setMoreOpen(false);\n setMoreAnchor(null);\n };\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLElement>, items: T[]) => {\n if (closeTimerRef.current) window.clearTimeout(closeTimerRef.current);\n hoverAreaRef.current = true;\n openPopover(e.currentTarget, items);\n };\n\n const handleMouseLeave = () => {\n hoverAreaRef.current = false;\n if (closeTimerRef.current) window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = window.setTimeout(() => {}, 250);\n };\n\n useEffect(\n () => () => {\n if (closeTimerRef.current) window.clearTimeout(closeTimerRef.current);\n },\n []\n );\n\n // Remove stale ids from the form value when data changes\n useEffect(() => {\n if (singleSelect) return;\n const currentValue = value || [];\n if (!Array.isArray(currentValue)) return;\n\n const currentIds = currentValue as (string | number)[];\n const validIds = new Set(data.map(getOptionValue));\n const cleanIds = currentIds.filter((id) => validIds.has(id));\n\n const hasChanges =\n cleanIds.length !== currentIds.length ||\n cleanIds.some((id, i) => id !== currentIds[i]);\n if (!hasChanges) {\n lastSanitizeRef.current = null;\n return;\n }\n\n const sig = `${JSON.stringify(currentIds)}=>${JSON.stringify(cleanIds)}`;\n if (lastSanitizeRef.current === sig) return;\n lastSanitizeRef.current = sig;\n onChange(cleanIds);\n }, [value, data, getOptionValue, onChange, singleSelect]);\n\n useEffect(() => {\n if (singleSelect) lastSanitizeRef.current = null;\n }, [singleSelect]);\n\n const selectedCount = singleSelect ? 0 : (selectedValue as T[]).length;\n\n useLayoutEffect(() => {\n if (singleSelect) return;\n const el = containerRef.current;\n if (!el) return;\n const compute = () => {\n const available = el.clientWidth - 72;\n const chipWidth = chipMaxWidth + 8;\n const max = Math.floor(available / chipWidth);\n setVisibleCount(Math.max(1, isFinite(max) ? max : 1));\n };\n compute();\n const ro = new ResizeObserver(compute);\n ro.observe(el);\n return () => ro.disconnect();\n }, [chipMaxWidth, selectedCount, singleSelect]);\n\n const icon = <CheckBoxOutlineBlankIcon fontSize=\"small\" />;\n const checkedIcon = <CheckBoxIcon fontSize=\"small\" />;\n const genKey = (option: T, base: string) => (enableUniqueKeys ? uniqueKey(base) : base);\n\n return (\n <Box>\n <Box ref={containerRef} onClick={onClick}>\n <MuiAutocomplete\n id={autocompleteId}\n multiple={!singleSelect}\n options={data as T[]}\n disableCloseOnSelect={!singleSelect}\n onBlur={() => {\n rhfOnBlur();\n externalOnBlur?.();\n }}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getOptionLabel={(option: any) => {\n if (typeof option === \"string\") return option;\n if (option?.inputValue) return option.inputValue;\n return getOptionLabel(option as T);\n }}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value={selectedValue as any}\n disabled={disabled}\n freeSolo={freeSolo}\n noOptionsText={freeSolo ? null : noOptionsText}\n filterOptions={(options, params) => {\n const filtered = filter(options, params);\n if (freeSolo && params.inputValue !== \"\") {\n filtered.push({\n inputValue: params.inputValue,\n label: `Add \"${params.inputValue}\"`,\n isNewOption: true,\n });\n }\n return filtered;\n }}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onChange={(_e, newValue: any) => {\n const target = singleSelect ? newValue : newValue[newValue.length - 1];\n if (\n freeSolo &&\n target &&\n (typeof target === \"string\" || target?.inputValue)\n ) {\n onOpenModal?.(typeof target === \"string\" ? target : target.inputValue);\n return;\n }\n if (singleSelect) {\n onChange(newValue ? getOptionValue(newValue as T) : null);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const ids = (newValue as any[])\n .map((item) => {\n if (typeof item === \"string\" || item?.inputValue) return null;\n return getOptionValue(item as T);\n })\n .filter(Boolean) as (string | number)[];\n onChange(ids);\n }\n }}\n isOptionEqualToValue={(option, v) =>\n getOptionValue(option as T) === getOptionValue(v as T)\n }\n renderOption={(props, option, { selected }) => {\n const { key, ...rest } = props;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((option as any)?.isNewOption) {\n return (\n <li key=\"add-new-option\" {...rest}>\n {/* eslint-disable-next-line @typescript-eslint/no-explicit-any */}\n {`Add \"${(option as any).inputValue}\"`}\n </li>\n );\n }\n const baseKey = String(key ?? getOptionValue(option as T));\n const finalKey = genKey(option as T, baseKey);\n return (\n <li key={finalKey} {...rest}>\n {shouldShowCheckbox && (\n <Checkbox\n sx={checkboxSx}\n icon={icon}\n checkedIcon={checkedIcon}\n checked={selected}\n />\n )}\n {getOptionLabel(option as T)}\n </li>\n );\n }}\n renderValue={\n singleSelect\n ? undefined\n : (tagValue, getCustomizedItemProps) => {\n const items = tagValue as T[];\n if (items.length === 0) return null;\n const count = Math.max(1, visibleCount);\n const visible = items.slice(0, count);\n const extra = items.length - visible.length;\n return [\n ...visible.map((option, index) => {\n const { key: _chipKey, ...chipProps } = getCustomizedItemProps({\n index,\n }) as {\n key: number;\n className: string;\n disabled: boolean;\n \"data-item-index\": number;\n tabIndex: -1;\n onDelete: (event: React.SyntheticEvent) => void;\n };\n const lbl = getOptionLabel(option as T);\n const finalKey = genKey(\n option as T,\n String(getOptionValue(option as T))\n );\n return (\n <Tooltip key={finalKey} title={lbl} arrow enterDelay={300}>\n <span>\n <Chip\n {...chipProps}\n label={lbl}\n size=\"small\"\n sx={getChipSx(chipMaxWidth)}\n />\n </span>\n </Tooltip>\n );\n }),\n extra > 0 ? (\n <Box\n key=\"more-wrapper\"\n onMouseEnter={(e) => handleMouseEnter(e, items.slice(count))}\n onMouseLeave={handleMouseLeave}\n sx={{ display: \"inline-flex\" }}\n >\n <Chip\n label={`+${extra} more`}\n size=\"small\"\n disabled={disabled}\n sx={getMoreChipSx(chipMaxWidth)}\n />\n </Box>\n ) : null,\n ];\n }\n }\n renderInput={(params) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const p = params as any;\n // Separate slot-related keys from the base params (id, disabled, fullWidth, size).\n // MUI ≥ v9 moves InputProps/inputProps/InputLabelProps into params.slotProps;\n // earlier versions keep them as top-level legacy keys. Support both so the ref\n // is always forwarded.\n const {\n InputLabelProps: pInputLabelProps,\n InputProps: pInputProps,\n inputProps: pHtmlInputProps,\n slotProps: pSlotProps,\n ...restParams\n } = p;\n const inputLabelSlot = pInputLabelProps ?? pSlotProps?.inputLabel;\n const inputSlot = pInputProps ?? pSlotProps?.input;\n const htmlInputSlot = pHtmlInputProps ?? pSlotProps?.htmlInput;\n return (\n <MuiTextField\n {...restParams}\n label={label}\n size={size}\n placeholder={\n disabled\n ? undefined\n : (singleSelect && selectedValue) ||\n (!singleSelect && (selectedValue as T[]).length > 0)\n ? undefined\n : placeholder\n }\n error={externalError !== undefined ? externalError : !!error}\n helperText={\n externalHelperText !== undefined\n ? externalHelperText\n : (error?.message ?? \" \")\n }\n slotProps={{\n inputLabel: { ...inputLabelSlot, ...inputLabelProps },\n input: inputSlot,\n htmlInput: htmlInputSlot,\n }}\n disabled={disabled}\n sx={textFieldSx}\n />\n );\n }}\n sx={autocompleteSx}\n />\n </Box>\n\n {!singleSelect && (\n <Popover\n open={moreOpen}\n anchorEl={moreAnchor}\n disableAutoFocus\n disableEnforceFocus\n disableRestoreFocus\n onClose={closePopover}\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n transformOrigin={{ vertical: \"top\", horizontal: \"left\" }}\n slotProps={{ paper: { sx: popoverPaperSx } }}\n >\n <List dense sx={{ minWidth: 240 }}>\n {moreItems.map((item) => (\n <ListItem key={String(getOptionValue(item))} sx={listItemSx}>\n {getOptionLabel(item)}\n </ListItem>\n ))}\n </List>\n </Popover>\n )}\n </Box>\n );\n}\n"]}
|
package/dist/forms/index.js
CHANGED
|
@@ -495,7 +495,9 @@ function ControlledAutocomplete({
|
|
|
495
495
|
const extra = items.length - visible.length;
|
|
496
496
|
return [
|
|
497
497
|
...visible.map((option, index) => {
|
|
498
|
-
const chipProps = getCustomizedItemProps({
|
|
498
|
+
const { key: _chipKey, ...chipProps } = getCustomizedItemProps({
|
|
499
|
+
index
|
|
500
|
+
});
|
|
499
501
|
const lbl = getOptionLabel(option);
|
|
500
502
|
const finalKey = genKey(
|
|
501
503
|
option,
|
package/dist/forms/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/forms/useAlchemyForm.ts","../../src/atoms/TextField/TextField.tsx","../../src/forms/ControlledTextField.tsx","../../src/atoms/Select/Select.tsx","../../src/forms/ControlledSelect.tsx","../../src/atoms/Checkbox/Checkbox.tsx","../../src/forms/ControlledCheckbox.tsx","../../src/atoms/Switch/Switch.tsx","../../src/forms/ControlledSwitch.tsx","../../src/atoms/RadioGroup/RadioGroup.tsx","../../src/forms/ControlledRadioGroup.tsx","../../src/forms/ControlledAutocomplete.tsx"],"names":["jsx","React","Controller","FormControlLabel","jsxs","FormControl","Checkbox","MuiTextField"],"mappings":"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","file":"index.js","sourcesContent":["import { useForm } from \"react-hook-form\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport type { UseFormProps, FieldValues, Resolver } from \"react-hook-form\";\n\nexport interface UseAlchemyFormProps<T extends FieldValues> extends UseFormProps<T> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n schema?: any;\n}\n\nexport function useAlchemyForm<T extends FieldValues>({\n schema,\n mode = \"onTouched\",\n ...props\n}: UseAlchemyFormProps<T> = {}) {\n return useForm<T>({\n resolver: schema ? (zodResolver(schema) as Resolver<T>) : undefined,\n mode,\n ...props,\n });\n}\n","import React from \"react\";\nimport MuiTextField from \"@mui/material/TextField\";\nimport type { OutlinedTextFieldProps } from \"@mui/material/TextField\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\n\nexport interface TextFieldProps extends Omit<OutlinedTextFieldProps, \"variant\"> {\n variant?: \"outlined\" | \"filled\" | \"standard\";\n startAdornment?: React.ReactNode;\n endAdornment?: React.ReactNode;\n}\n\nexport const TextField = React.forwardRef<HTMLDivElement, TextFieldProps>(\n ({ startAdornment, endAdornment, slotProps, ...props }, ref) => {\n const inputSlotProps: Record<string, unknown> = {\n ...(slotProps?.input as Record<string, unknown> | undefined),\n };\n\n if (startAdornment) {\n inputSlotProps.startAdornment = (\n <InputAdornment position=\"start\">{startAdornment}</InputAdornment>\n );\n }\n if (endAdornment) {\n inputSlotProps.endAdornment = (\n <InputAdornment position=\"end\">{endAdornment}</InputAdornment>\n );\n }\n\n return (\n <MuiTextField\n ref={ref}\n variant={props.variant ?? \"outlined\"}\n slotProps={{\n ...slotProps,\n input: inputSlotProps,\n }}\n {...props}\n />\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { TextField } from \"../atoms/TextField\";\nimport type { TextFieldProps } from \"../atoms/TextField\";\n\nexport type ControlledTextFieldProps<T extends FieldValues> = Omit<\n TextFieldProps,\n \"name\" | \"value\" | \"onChange\" | \"onBlur\" | \"error\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n};\n\nexport function ControlledTextField<T extends FieldValues>({\n control,\n name,\n helperText,\n ...props\n}: ControlledTextFieldProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field, fieldState }) => (\n <TextField\n {...field}\n {...props}\n error={!!fieldState.error}\n helperText={fieldState.error?.message ?? helperText}\n />\n )}\n />\n );\n}\n","import React from \"react\";\nimport MuiSelect, { type SelectProps as MuiSelectProps } from \"@mui/material/Select\";\nimport FormControl from \"@mui/material/FormControl\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport FormHelperText from \"@mui/material/FormHelperText\";\nimport MenuItem from \"@mui/material/MenuItem\";\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps extends Omit<MuiSelectProps, \"label\"> {\n label?: string;\n options?: SelectOption[];\n helperText?: string;\n error?: boolean;\n fullWidth?: boolean;\n}\n\nexport const Select = React.forwardRef<HTMLDivElement, SelectProps>(\n (\n { label, options = [], helperText, error = false, fullWidth = false, size, ...props },\n ref\n ) => {\n const labelId = label\n ? `${label.toLowerCase().replace(/\\s+/g, \"-\")}-label`\n : undefined;\n\n return (\n <FormControl\n ref={ref}\n fullWidth={fullWidth}\n error={error}\n size={size as \"small\" | \"medium\" | undefined}\n >\n {label && <InputLabel id={labelId}>{label}</InputLabel>}\n <MuiSelect label={label} labelId={labelId} {...props}>\n {options.map((option) => (\n <MenuItem key={option.value} value={option.value} disabled={option.disabled}>\n {option.label}\n </MenuItem>\n ))}\n </MuiSelect>\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\n </FormControl>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { Select } from \"../atoms/Select\";\nimport type { SelectProps, SelectOption } from \"../atoms/Select\";\n\nexport type ControlledSelectProps<T extends FieldValues> = Omit<\n SelectProps,\n \"name\" | \"value\" | \"onChange\" | \"onBlur\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n options: SelectOption[];\n};\n\nexport function ControlledSelect<T extends FieldValues>({\n control,\n name,\n helperText,\n ...props\n}: ControlledSelectProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field, fieldState }) => (\n <Select\n {...field}\n {...props}\n error={!!fieldState.error}\n helperText={fieldState.error?.message ?? helperText}\n />\n )}\n />\n );\n}\n","import React from \"react\";\nimport MuiCheckbox, {\n type CheckboxProps as MuiCheckboxProps,\n} from \"@mui/material/Checkbox\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\n\nexport interface CheckboxProps extends MuiCheckboxProps {\n label?: string;\n labelPlacement?: \"start\" | \"end\" | \"top\" | \"bottom\";\n}\n\nexport const Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n ({ label, labelPlacement = \"end\", ...props }, ref) => {\n if (label) {\n return (\n <FormControlLabel\n control={<MuiCheckbox ref={ref} {...props} />}\n label={label}\n labelPlacement={labelPlacement}\n />\n );\n }\n\n return <MuiCheckbox ref={ref} {...props} />;\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { Checkbox } from \"../atoms/Checkbox\";\nimport type { CheckboxProps } from \"../atoms/Checkbox\";\n\nexport type ControlledCheckboxProps<T extends FieldValues> = Omit<\n CheckboxProps,\n \"name\" | \"checked\" | \"onChange\" | \"onBlur\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n};\n\nexport function ControlledCheckbox<T extends FieldValues>({\n control,\n name,\n ...props\n}: ControlledCheckboxProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field }) => (\n <Checkbox\n {...props}\n checked={!!field.value}\n onChange={field.onChange}\n onBlur={field.onBlur}\n name={field.name}\n />\n )}\n />\n );\n}\n","import React from \"react\";\nimport MuiSwitch, { type SwitchProps as MuiSwitchProps } from \"@mui/material/Switch\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\n\nexport interface SwitchProps extends MuiSwitchProps {\n label?: string;\n labelPlacement?: \"start\" | \"end\" | \"top\" | \"bottom\";\n}\n\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n ({ label, labelPlacement = \"end\", ...props }, ref) => {\n if (label) {\n return (\n <FormControlLabel\n control={<MuiSwitch ref={ref} {...props} />}\n label={label}\n labelPlacement={labelPlacement}\n />\n );\n }\n\n return <MuiSwitch ref={ref} {...props} />;\n }\n);\n\nSwitch.displayName = \"Switch\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { Switch } from \"../atoms/Switch\";\nimport type { SwitchProps } from \"../atoms/Switch\";\n\nexport type ControlledSwitchProps<T extends FieldValues> = Omit<\n SwitchProps,\n \"name\" | \"checked\" | \"onChange\" | \"onBlur\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n};\n\nexport function ControlledSwitch<T extends FieldValues>({\n control,\n name,\n ...props\n}: ControlledSwitchProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field }) => (\n <Switch\n {...props}\n checked={!!field.value}\n onChange={field.onChange}\n onBlur={field.onBlur}\n name={field.name}\n />\n )}\n />\n );\n}\n","import React from \"react\";\nimport MuiRadio, { type RadioProps as MuiRadioProps } from \"@mui/material/Radio\";\nimport MuiRadioGroup, {\n type RadioGroupProps as MuiRadioGroupProps,\n} from \"@mui/material/RadioGroup\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport FormControl from \"@mui/material/FormControl\";\nimport FormLabel from \"@mui/material/FormLabel\";\n\nexport interface RadioOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps extends Omit<MuiRadioGroupProps, \"children\"> {\n label?: string;\n options: RadioOption[];\n size?: \"small\" | \"medium\" | \"large\";\n radioProps?: MuiRadioProps;\n}\n\nexport const RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\n ({ label, options, size, radioProps, ...props }, ref) => {\n const radioSize = size === \"large\" ? \"medium\" : size;\n const effectiveRadioProps: MuiRadioProps =\n radioSize !== undefined ? { size: radioSize, ...radioProps } : { ...radioProps };\n return (\n <FormControl>\n {label && <FormLabel>{label}</FormLabel>}\n <MuiRadioGroup ref={ref} {...props}>\n {options.map((option) => (\n <FormControlLabel\n key={option.value}\n value={option.value}\n label={option.label}\n disabled={option.disabled}\n control={<MuiRadio {...effectiveRadioProps} />}\n />\n ))}\n </MuiRadioGroup>\n </FormControl>\n );\n }\n);\n\nRadioGroup.displayName = \"RadioGroup\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { RadioGroup } from \"../atoms/RadioGroup\";\nimport type { RadioGroupProps } from \"../atoms/RadioGroup\";\n\nexport type ControlledRadioGroupProps<T extends FieldValues> = Omit<\n RadioGroupProps,\n \"name\" | \"value\" | \"onChange\" | \"onBlur\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n};\n\nexport function ControlledRadioGroup<T extends FieldValues>({\n control,\n name,\n ...props\n}: ControlledRadioGroupProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field }) => (\n <RadioGroup\n {...props}\n value={field.value ?? \"\"}\n onChange={field.onChange}\n onBlur={field.onBlur}\n name={field.name}\n />\n )}\n />\n );\n}\n","import React, { useEffect, useId, useLayoutEffect, useRef, useState } from \"react\";\nimport MuiAutocomplete, { createFilterOptions } from \"@mui/material/Autocomplete\";\nimport Checkbox from \"@mui/material/Checkbox\";\nimport MuiTextField from \"@mui/material/TextField\";\nimport CheckBoxOutlineBlankIcon from \"@mui/icons-material/CheckBoxOutlineBlank\";\nimport CheckBoxIcon from \"@mui/icons-material/CheckBox\";\nimport {\n Box,\n Chip,\n List,\n ListItem,\n Popover,\n Tooltip,\n type SxProps,\n type Theme,\n type InputLabelProps,\n} from \"@mui/material\";\nimport {\n type Control,\n type FieldValues,\n type Path,\n useController,\n} from \"react-hook-form\";\n\n// ─── Styles ───────────────────────────────────────────────────────────────────\n\nconst inputLabelSx: SxProps<Theme> = {\n color: \"rgba(21, 35, 86, 0.38)\",\n fontWeight: 400,\n \"&.MuiInputLabel-outlined\": { transform: \"translate(14px, 12.5px) scale(1)\" },\n \"&.MuiInputLabel-outlined.MuiInputLabel-sizeSmall\": {\n transform: \"translate(14px, 8.5px) scale(1)\",\n },\n \"&.MuiInputLabel-outlined.MuiInputLabel-shrink\": {\n transform: \"translate(14px, -9px) scale(0.75)\",\n },\n \"&.Mui-focused\": { color: \"rgba(21, 35, 86, 0.38)\" },\n};\n\nconst autocompleteSx: SxProps<Theme> = {\n \"& .MuiAutocomplete-inputRoot\": {\n alignItems: \"center\",\n flexWrap: \"nowrap\",\n overflow: \"hidden\",\n },\n \"& .MuiAutocomplete-tag\": { maxHeight: 24 },\n \"& .MuiOutlinedInput-root\": {\n minHeight: \"48px\",\n \"& .MuiOutlinedInput-notchedOutline\": { borderColor: \"rgba(21, 35, 86, 0.23)\" },\n \"&:hover .MuiOutlinedInput-notchedOutline\": { borderColor: \"rgba(21, 35, 86, 0.23)\" },\n },\n};\n\nconst textFieldSx: SxProps<Theme> = {\n color: \"text.disabled\",\n \"& .MuiInputLabel-root\": inputLabelSx,\n \"& .MuiOutlinedInput-root\": { minHeight: \"48px\" },\n \"& .MuiOutlinedInput-input\": { paddingTop: \"12.5px\", paddingBottom: \"12.5px\" },\n \"& .MuiOutlinedInput-root.MuiInputBase-sizeSmall\": { minHeight: \"40px\" },\n \"& .MuiOutlinedInput-input.MuiInputBase-inputSizeSmall\": {\n paddingTop: \"8.5px\",\n paddingBottom: \"8.5px\",\n },\n};\n\nconst checkboxSx: SxProps<Theme> = { mr: 1 };\nconst popoverPaperSx: SxProps<Theme> = {\n maxHeight: 320,\n overflowY: \"auto\",\n p: 1,\n borderRadius: \"10px\",\n};\nconst listItemSx: SxProps<Theme> = { py: 0.5, fontSize: \"14px\" };\nconst getChipSx = (maxWidth: number): SxProps<Theme> => ({\n maxWidth,\n \"& .MuiChip-label\": {\n display: \"block\",\n maxWidth: maxWidth - 24,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n});\nconst getMoreChipSx = (maxWidth: number): SxProps<Theme> => ({\n cursor: \"default\",\n maxWidth,\n});\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst filter = createFilterOptions<any>();\n\nconst stableId = (v: string) =>\n v\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\") || \"field\";\n\nlet _seq = 0;\nconst uniqueKey = (base: string) => `${base}-${++_seq}`;\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface ControlledAutocompleteProps<T, TFieldValues extends FieldValues> {\n name: Path<TFieldValues>;\n control: Control<TFieldValues>;\n data: ReadonlyArray<T>;\n label: string;\n placeholder?: string;\n getOptionLabel: (option: T) => string;\n getOptionValue: (option: T) => string | number;\n InputLabelProps?: InputLabelProps;\n chipMaxWidth?: number;\n disabled?: boolean;\n /** Appends a counter suffix to each React key — use when option values may repeat. */\n enableUniqueKeys?: boolean;\n noOptionsText?: React.ReactNode;\n freeSolo?: boolean;\n /** Called with the typed input when freeSolo triggers a new-item action. */\n onOpenModal?: (inputValue: string) => void;\n hideCheckbox?: boolean;\n singleSelect?: boolean;\n onClick?: () => void;\n error?: boolean;\n helperText?: React.ReactNode;\n onBlur?: () => void;\n size?: \"small\" | \"medium\";\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport function ControlledAutocomplete<T, TFieldValues extends FieldValues>({\n name,\n control,\n data,\n label,\n placeholder,\n getOptionLabel,\n getOptionValue,\n InputLabelProps: inputLabelProps,\n chipMaxWidth = 120,\n disabled = false,\n enableUniqueKeys = false,\n noOptionsText = \"No Options\",\n freeSolo = false,\n onOpenModal,\n hideCheckbox = false,\n singleSelect = false,\n onClick,\n error: externalError,\n helperText: externalHelperText,\n onBlur: externalOnBlur,\n size = \"medium\",\n}: ControlledAutocompleteProps<T, TFieldValues>) {\n const instanceId = useId().replace(/:/g, \"\");\n const autocompleteId = `autocomplete-${stableId(String(name))}-${instanceId}`;\n const containerRef = useRef<HTMLDivElement>(null);\n\n const {\n field: { onChange, value, onBlur: rhfOnBlur },\n fieldState: { error },\n } = useController({ name, control });\n\n const shouldShowCheckbox = !singleSelect && !hideCheckbox;\n\n const getSelectedItems = (): T | T[] | null => {\n if (singleSelect) {\n return data.find((item) => getOptionValue(item) === value) ?? null;\n }\n const ids = (value || []) as (string | number)[];\n return (data as T[]).filter((item) => ids.includes(getOptionValue(item)));\n };\n\n const selectedValue = getSelectedItems();\n\n const [visibleCount, setVisibleCount] = useState(1);\n const [moreOpen, setMoreOpen] = useState(false);\n const [moreAnchor, setMoreAnchor] = useState<HTMLElement | null>(null);\n const [moreItems, setMoreItems] = useState<T[]>([]);\n const hoverAreaRef = useRef(false);\n const closeTimerRef = useRef<number | null>(null);\n const lastSanitizeRef = useRef<string | null>(null);\n\n const openPopover = (anchor: HTMLElement, items: T[]) => {\n setMoreItems(items);\n setMoreAnchor(anchor);\n setMoreOpen(true);\n };\n\n const closePopover = () => {\n setMoreOpen(false);\n setMoreAnchor(null);\n };\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLElement>, items: T[]) => {\n if (closeTimerRef.current) window.clearTimeout(closeTimerRef.current);\n hoverAreaRef.current = true;\n openPopover(e.currentTarget, items);\n };\n\n const handleMouseLeave = () => {\n hoverAreaRef.current = false;\n if (closeTimerRef.current) window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = window.setTimeout(() => {}, 250);\n };\n\n useEffect(\n () => () => {\n if (closeTimerRef.current) window.clearTimeout(closeTimerRef.current);\n },\n []\n );\n\n // Remove stale ids from the form value when data changes\n useEffect(() => {\n if (singleSelect) return;\n const currentValue = value || [];\n if (!Array.isArray(currentValue)) return;\n\n const currentIds = currentValue as (string | number)[];\n const validIds = new Set(data.map(getOptionValue));\n const cleanIds = currentIds.filter((id) => validIds.has(id));\n\n const hasChanges =\n cleanIds.length !== currentIds.length ||\n cleanIds.some((id, i) => id !== currentIds[i]);\n if (!hasChanges) {\n lastSanitizeRef.current = null;\n return;\n }\n\n const sig = `${JSON.stringify(currentIds)}=>${JSON.stringify(cleanIds)}`;\n if (lastSanitizeRef.current === sig) return;\n lastSanitizeRef.current = sig;\n onChange(cleanIds);\n }, [value, data, getOptionValue, onChange, singleSelect]);\n\n useEffect(() => {\n if (singleSelect) lastSanitizeRef.current = null;\n }, [singleSelect]);\n\n const selectedCount = singleSelect ? 0 : (selectedValue as T[]).length;\n\n useLayoutEffect(() => {\n if (singleSelect) return;\n const el = containerRef.current;\n if (!el) return;\n const compute = () => {\n const available = el.clientWidth - 72;\n const chipWidth = chipMaxWidth + 8;\n const max = Math.floor(available / chipWidth);\n setVisibleCount(Math.max(1, isFinite(max) ? max : 1));\n };\n compute();\n const ro = new ResizeObserver(compute);\n ro.observe(el);\n return () => ro.disconnect();\n }, [chipMaxWidth, selectedCount, singleSelect]);\n\n const icon = <CheckBoxOutlineBlankIcon fontSize=\"small\" />;\n const checkedIcon = <CheckBoxIcon fontSize=\"small\" />;\n const genKey = (option: T, base: string) => (enableUniqueKeys ? uniqueKey(base) : base);\n\n return (\n <Box>\n <Box ref={containerRef} onClick={onClick}>\n <MuiAutocomplete\n id={autocompleteId}\n multiple={!singleSelect}\n options={data as T[]}\n disableCloseOnSelect={!singleSelect}\n onBlur={() => {\n rhfOnBlur();\n externalOnBlur?.();\n }}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getOptionLabel={(option: any) => {\n if (typeof option === \"string\") return option;\n if (option?.inputValue) return option.inputValue;\n return getOptionLabel(option as T);\n }}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value={selectedValue as any}\n disabled={disabled}\n freeSolo={freeSolo}\n noOptionsText={freeSolo ? null : noOptionsText}\n filterOptions={(options, params) => {\n const filtered = filter(options, params);\n if (freeSolo && params.inputValue !== \"\") {\n filtered.push({\n inputValue: params.inputValue,\n label: `Add \"${params.inputValue}\"`,\n isNewOption: true,\n });\n }\n return filtered;\n }}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onChange={(_e, newValue: any) => {\n const target = singleSelect ? newValue : newValue[newValue.length - 1];\n if (\n freeSolo &&\n target &&\n (typeof target === \"string\" || target?.inputValue)\n ) {\n onOpenModal?.(typeof target === \"string\" ? target : target.inputValue);\n return;\n }\n if (singleSelect) {\n onChange(newValue ? getOptionValue(newValue as T) : null);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const ids = (newValue as any[])\n .map((item) => {\n if (typeof item === \"string\" || item?.inputValue) return null;\n return getOptionValue(item as T);\n })\n .filter(Boolean) as (string | number)[];\n onChange(ids);\n }\n }}\n isOptionEqualToValue={(option, v) =>\n getOptionValue(option as T) === getOptionValue(v as T)\n }\n renderOption={(props, option, { selected }) => {\n const { key, ...rest } = props;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((option as any)?.isNewOption) {\n return (\n <li key=\"add-new-option\" {...rest}>\n {/* eslint-disable-next-line @typescript-eslint/no-explicit-any */}\n {`Add \"${(option as any).inputValue}\"`}\n </li>\n );\n }\n const baseKey = String(key ?? getOptionValue(option as T));\n const finalKey = genKey(option as T, baseKey);\n return (\n <li key={finalKey} {...rest}>\n {shouldShowCheckbox && (\n <Checkbox\n sx={checkboxSx}\n icon={icon}\n checkedIcon={checkedIcon}\n checked={selected}\n />\n )}\n {getOptionLabel(option as T)}\n </li>\n );\n }}\n renderValue={\n singleSelect\n ? undefined\n : (tagValue, getCustomizedItemProps) => {\n const items = tagValue as T[];\n if (items.length === 0) return null;\n const count = Math.max(1, visibleCount);\n const visible = items.slice(0, count);\n const extra = items.length - visible.length;\n return [\n ...visible.map((option, index) => {\n const chipProps = getCustomizedItemProps({ index });\n const lbl = getOptionLabel(option as T);\n const finalKey = genKey(\n option as T,\n String(getOptionValue(option as T))\n );\n return (\n <Tooltip key={finalKey} title={lbl} arrow enterDelay={300}>\n <span>\n <Chip\n {...chipProps}\n label={lbl}\n size=\"small\"\n sx={getChipSx(chipMaxWidth)}\n />\n </span>\n </Tooltip>\n );\n }),\n extra > 0 ? (\n <Box\n key=\"more-wrapper\"\n onMouseEnter={(e) => handleMouseEnter(e, items.slice(count))}\n onMouseLeave={handleMouseLeave}\n sx={{ display: \"inline-flex\" }}\n >\n <Chip\n label={`+${extra} more`}\n size=\"small\"\n disabled={disabled}\n sx={getMoreChipSx(chipMaxWidth)}\n />\n </Box>\n ) : null,\n ];\n }\n }\n renderInput={(params) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const p = params as any;\n // Separate slot-related keys from the base params (id, disabled, fullWidth, size).\n // MUI ≥ v9 moves InputProps/inputProps/InputLabelProps into params.slotProps;\n // earlier versions keep them as top-level legacy keys. Support both so the ref\n // is always forwarded.\n const {\n InputLabelProps: pInputLabelProps,\n InputProps: pInputProps,\n inputProps: pHtmlInputProps,\n slotProps: pSlotProps,\n ...restParams\n } = p;\n const inputLabelSlot = pInputLabelProps ?? pSlotProps?.inputLabel;\n const inputSlot = pInputProps ?? pSlotProps?.input;\n const htmlInputSlot = pHtmlInputProps ?? pSlotProps?.htmlInput;\n return (\n <MuiTextField\n {...restParams}\n label={label}\n size={size}\n placeholder={\n disabled\n ? undefined\n : (singleSelect && selectedValue) ||\n (!singleSelect && (selectedValue as T[]).length > 0)\n ? undefined\n : placeholder\n }\n error={externalError !== undefined ? externalError : !!error}\n helperText={\n externalHelperText !== undefined\n ? externalHelperText\n : (error?.message ?? \" \")\n }\n slotProps={{\n inputLabel: { ...inputLabelSlot, ...inputLabelProps },\n input: inputSlot,\n htmlInput: htmlInputSlot,\n }}\n disabled={disabled}\n sx={textFieldSx}\n />\n );\n }}\n sx={autocompleteSx}\n />\n </Box>\n\n {!singleSelect && (\n <Popover\n open={moreOpen}\n anchorEl={moreAnchor}\n disableAutoFocus\n disableEnforceFocus\n disableRestoreFocus\n onClose={closePopover}\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n transformOrigin={{ vertical: \"top\", horizontal: \"left\" }}\n slotProps={{ paper: { sx: popoverPaperSx } }}\n >\n <List dense sx={{ minWidth: 240 }}>\n {moreItems.map((item) => (\n <ListItem key={String(getOptionValue(item))} sx={listItemSx}>\n {getOptionLabel(item)}\n </ListItem>\n ))}\n </List>\n </Popover>\n )}\n </Box>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/forms/useAlchemyForm.ts","../../src/atoms/TextField/TextField.tsx","../../src/forms/ControlledTextField.tsx","../../src/atoms/Select/Select.tsx","../../src/forms/ControlledSelect.tsx","../../src/atoms/Checkbox/Checkbox.tsx","../../src/forms/ControlledCheckbox.tsx","../../src/atoms/Switch/Switch.tsx","../../src/forms/ControlledSwitch.tsx","../../src/atoms/RadioGroup/RadioGroup.tsx","../../src/forms/ControlledRadioGroup.tsx","../../src/forms/ControlledAutocomplete.tsx"],"names":["jsx","React","Controller","FormControlLabel","jsxs","FormControl","Checkbox","MuiTextField"],"mappings":"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","file":"index.js","sourcesContent":["import { useForm } from \"react-hook-form\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport type { UseFormProps, FieldValues, Resolver } from \"react-hook-form\";\n\nexport interface UseAlchemyFormProps<T extends FieldValues> extends UseFormProps<T> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n schema?: any;\n}\n\nexport function useAlchemyForm<T extends FieldValues>({\n schema,\n mode = \"onTouched\",\n ...props\n}: UseAlchemyFormProps<T> = {}) {\n return useForm<T>({\n resolver: schema ? (zodResolver(schema) as Resolver<T>) : undefined,\n mode,\n ...props,\n });\n}\n","import React from \"react\";\nimport MuiTextField from \"@mui/material/TextField\";\nimport type { OutlinedTextFieldProps } from \"@mui/material/TextField\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\n\nexport interface TextFieldProps extends Omit<OutlinedTextFieldProps, \"variant\"> {\n variant?: \"outlined\" | \"filled\" | \"standard\";\n startAdornment?: React.ReactNode;\n endAdornment?: React.ReactNode;\n}\n\nexport const TextField = React.forwardRef<HTMLDivElement, TextFieldProps>(\n ({ startAdornment, endAdornment, slotProps, ...props }, ref) => {\n const inputSlotProps: Record<string, unknown> = {\n ...(slotProps?.input as Record<string, unknown> | undefined),\n };\n\n if (startAdornment) {\n inputSlotProps.startAdornment = (\n <InputAdornment position=\"start\">{startAdornment}</InputAdornment>\n );\n }\n if (endAdornment) {\n inputSlotProps.endAdornment = (\n <InputAdornment position=\"end\">{endAdornment}</InputAdornment>\n );\n }\n\n return (\n <MuiTextField\n ref={ref}\n variant={props.variant ?? \"outlined\"}\n slotProps={{\n ...slotProps,\n input: inputSlotProps,\n }}\n {...props}\n />\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { TextField } from \"../atoms/TextField\";\nimport type { TextFieldProps } from \"../atoms/TextField\";\n\nexport type ControlledTextFieldProps<T extends FieldValues> = Omit<\n TextFieldProps,\n \"name\" | \"value\" | \"onChange\" | \"onBlur\" | \"error\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n};\n\nexport function ControlledTextField<T extends FieldValues>({\n control,\n name,\n helperText,\n ...props\n}: ControlledTextFieldProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field, fieldState }) => (\n <TextField\n {...field}\n {...props}\n error={!!fieldState.error}\n helperText={fieldState.error?.message ?? helperText}\n />\n )}\n />\n );\n}\n","import React from \"react\";\nimport MuiSelect, { type SelectProps as MuiSelectProps } from \"@mui/material/Select\";\nimport FormControl from \"@mui/material/FormControl\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport FormHelperText from \"@mui/material/FormHelperText\";\nimport MenuItem from \"@mui/material/MenuItem\";\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps extends Omit<MuiSelectProps, \"label\"> {\n label?: string;\n options?: SelectOption[];\n helperText?: string;\n error?: boolean;\n fullWidth?: boolean;\n}\n\nexport const Select = React.forwardRef<HTMLDivElement, SelectProps>(\n (\n { label, options = [], helperText, error = false, fullWidth = false, size, ...props },\n ref\n ) => {\n const labelId = label\n ? `${label.toLowerCase().replace(/\\s+/g, \"-\")}-label`\n : undefined;\n\n return (\n <FormControl\n ref={ref}\n fullWidth={fullWidth}\n error={error}\n size={size as \"small\" | \"medium\" | undefined}\n >\n {label && <InputLabel id={labelId}>{label}</InputLabel>}\n <MuiSelect label={label} labelId={labelId} {...props}>\n {options.map((option) => (\n <MenuItem key={option.value} value={option.value} disabled={option.disabled}>\n {option.label}\n </MenuItem>\n ))}\n </MuiSelect>\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\n </FormControl>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { Select } from \"../atoms/Select\";\nimport type { SelectProps, SelectOption } from \"../atoms/Select\";\n\nexport type ControlledSelectProps<T extends FieldValues> = Omit<\n SelectProps,\n \"name\" | \"value\" | \"onChange\" | \"onBlur\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n options: SelectOption[];\n};\n\nexport function ControlledSelect<T extends FieldValues>({\n control,\n name,\n helperText,\n ...props\n}: ControlledSelectProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field, fieldState }) => (\n <Select\n {...field}\n {...props}\n error={!!fieldState.error}\n helperText={fieldState.error?.message ?? helperText}\n />\n )}\n />\n );\n}\n","import React from \"react\";\nimport MuiCheckbox, {\n type CheckboxProps as MuiCheckboxProps,\n} from \"@mui/material/Checkbox\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\n\nexport interface CheckboxProps extends MuiCheckboxProps {\n label?: string;\n labelPlacement?: \"start\" | \"end\" | \"top\" | \"bottom\";\n}\n\nexport const Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n ({ label, labelPlacement = \"end\", ...props }, ref) => {\n if (label) {\n return (\n <FormControlLabel\n control={<MuiCheckbox ref={ref} {...props} />}\n label={label}\n labelPlacement={labelPlacement}\n />\n );\n }\n\n return <MuiCheckbox ref={ref} {...props} />;\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { Checkbox } from \"../atoms/Checkbox\";\nimport type { CheckboxProps } from \"../atoms/Checkbox\";\n\nexport type ControlledCheckboxProps<T extends FieldValues> = Omit<\n CheckboxProps,\n \"name\" | \"checked\" | \"onChange\" | \"onBlur\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n};\n\nexport function ControlledCheckbox<T extends FieldValues>({\n control,\n name,\n ...props\n}: ControlledCheckboxProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field }) => (\n <Checkbox\n {...props}\n checked={!!field.value}\n onChange={field.onChange}\n onBlur={field.onBlur}\n name={field.name}\n />\n )}\n />\n );\n}\n","import React from \"react\";\nimport MuiSwitch, { type SwitchProps as MuiSwitchProps } from \"@mui/material/Switch\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\n\nexport interface SwitchProps extends MuiSwitchProps {\n label?: string;\n labelPlacement?: \"start\" | \"end\" | \"top\" | \"bottom\";\n}\n\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n ({ label, labelPlacement = \"end\", ...props }, ref) => {\n if (label) {\n return (\n <FormControlLabel\n control={<MuiSwitch ref={ref} {...props} />}\n label={label}\n labelPlacement={labelPlacement}\n />\n );\n }\n\n return <MuiSwitch ref={ref} {...props} />;\n }\n);\n\nSwitch.displayName = \"Switch\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { Switch } from \"../atoms/Switch\";\nimport type { SwitchProps } from \"../atoms/Switch\";\n\nexport type ControlledSwitchProps<T extends FieldValues> = Omit<\n SwitchProps,\n \"name\" | \"checked\" | \"onChange\" | \"onBlur\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n};\n\nexport function ControlledSwitch<T extends FieldValues>({\n control,\n name,\n ...props\n}: ControlledSwitchProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field }) => (\n <Switch\n {...props}\n checked={!!field.value}\n onChange={field.onChange}\n onBlur={field.onBlur}\n name={field.name}\n />\n )}\n />\n );\n}\n","import React from \"react\";\nimport MuiRadio, { type RadioProps as MuiRadioProps } from \"@mui/material/Radio\";\nimport MuiRadioGroup, {\n type RadioGroupProps as MuiRadioGroupProps,\n} from \"@mui/material/RadioGroup\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport FormControl from \"@mui/material/FormControl\";\nimport FormLabel from \"@mui/material/FormLabel\";\n\nexport interface RadioOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps extends Omit<MuiRadioGroupProps, \"children\"> {\n label?: string;\n options: RadioOption[];\n size?: \"small\" | \"medium\" | \"large\";\n radioProps?: MuiRadioProps;\n}\n\nexport const RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\n ({ label, options, size, radioProps, ...props }, ref) => {\n const radioSize = size === \"large\" ? \"medium\" : size;\n const effectiveRadioProps: MuiRadioProps =\n radioSize !== undefined ? { size: radioSize, ...radioProps } : { ...radioProps };\n return (\n <FormControl>\n {label && <FormLabel>{label}</FormLabel>}\n <MuiRadioGroup ref={ref} {...props}>\n {options.map((option) => (\n <FormControlLabel\n key={option.value}\n value={option.value}\n label={option.label}\n disabled={option.disabled}\n control={<MuiRadio {...effectiveRadioProps} />}\n />\n ))}\n </MuiRadioGroup>\n </FormControl>\n );\n }\n);\n\nRadioGroup.displayName = \"RadioGroup\";\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport type { Control, FieldValues, Path } from \"react-hook-form\";\nimport { RadioGroup } from \"../atoms/RadioGroup\";\nimport type { RadioGroupProps } from \"../atoms/RadioGroup\";\n\nexport type ControlledRadioGroupProps<T extends FieldValues> = Omit<\n RadioGroupProps,\n \"name\" | \"value\" | \"onChange\" | \"onBlur\" | \"ref\"\n> & {\n control: Control<T>;\n name: Path<T>;\n};\n\nexport function ControlledRadioGroup<T extends FieldValues>({\n control,\n name,\n ...props\n}: ControlledRadioGroupProps<T>) {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field }) => (\n <RadioGroup\n {...props}\n value={field.value ?? \"\"}\n onChange={field.onChange}\n onBlur={field.onBlur}\n name={field.name}\n />\n )}\n />\n );\n}\n","import React, { useEffect, useId, useLayoutEffect, useRef, useState } from \"react\";\nimport MuiAutocomplete, { createFilterOptions } from \"@mui/material/Autocomplete\";\nimport Checkbox from \"@mui/material/Checkbox\";\nimport MuiTextField from \"@mui/material/TextField\";\nimport CheckBoxOutlineBlankIcon from \"@mui/icons-material/CheckBoxOutlineBlank\";\nimport CheckBoxIcon from \"@mui/icons-material/CheckBox\";\nimport {\n Box,\n Chip,\n List,\n ListItem,\n Popover,\n Tooltip,\n type SxProps,\n type Theme,\n type InputLabelProps,\n} from \"@mui/material\";\nimport {\n type Control,\n type FieldValues,\n type Path,\n useController,\n} from \"react-hook-form\";\n\n// ─── Styles ───────────────────────────────────────────────────────────────────\n\nconst inputLabelSx: SxProps<Theme> = {\n color: \"rgba(21, 35, 86, 0.38)\",\n fontWeight: 400,\n \"&.MuiInputLabel-outlined\": { transform: \"translate(14px, 12.5px) scale(1)\" },\n \"&.MuiInputLabel-outlined.MuiInputLabel-sizeSmall\": {\n transform: \"translate(14px, 8.5px) scale(1)\",\n },\n \"&.MuiInputLabel-outlined.MuiInputLabel-shrink\": {\n transform: \"translate(14px, -9px) scale(0.75)\",\n },\n \"&.Mui-focused\": { color: \"rgba(21, 35, 86, 0.38)\" },\n};\n\nconst autocompleteSx: SxProps<Theme> = {\n \"& .MuiAutocomplete-inputRoot\": {\n alignItems: \"center\",\n flexWrap: \"nowrap\",\n overflow: \"hidden\",\n },\n \"& .MuiAutocomplete-tag\": { maxHeight: 24 },\n \"& .MuiOutlinedInput-root\": {\n minHeight: \"48px\",\n \"& .MuiOutlinedInput-notchedOutline\": { borderColor: \"rgba(21, 35, 86, 0.23)\" },\n \"&:hover .MuiOutlinedInput-notchedOutline\": { borderColor: \"rgba(21, 35, 86, 0.23)\" },\n },\n};\n\nconst textFieldSx: SxProps<Theme> = {\n color: \"text.disabled\",\n \"& .MuiInputLabel-root\": inputLabelSx,\n \"& .MuiOutlinedInput-root\": { minHeight: \"48px\" },\n \"& .MuiOutlinedInput-input\": { paddingTop: \"12.5px\", paddingBottom: \"12.5px\" },\n \"& .MuiOutlinedInput-root.MuiInputBase-sizeSmall\": { minHeight: \"40px\" },\n \"& .MuiOutlinedInput-input.MuiInputBase-inputSizeSmall\": {\n paddingTop: \"8.5px\",\n paddingBottom: \"8.5px\",\n },\n};\n\nconst checkboxSx: SxProps<Theme> = { mr: 1 };\nconst popoverPaperSx: SxProps<Theme> = {\n maxHeight: 320,\n overflowY: \"auto\",\n p: 1,\n borderRadius: \"10px\",\n};\nconst listItemSx: SxProps<Theme> = { py: 0.5, fontSize: \"14px\" };\nconst getChipSx = (maxWidth: number): SxProps<Theme> => ({\n maxWidth,\n \"& .MuiChip-label\": {\n display: \"block\",\n maxWidth: maxWidth - 24,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n});\nconst getMoreChipSx = (maxWidth: number): SxProps<Theme> => ({\n cursor: \"default\",\n maxWidth,\n});\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst filter = createFilterOptions<any>();\n\nconst stableId = (v: string) =>\n v\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\") || \"field\";\n\nlet _seq = 0;\nconst uniqueKey = (base: string) => `${base}-${++_seq}`;\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface ControlledAutocompleteProps<T, TFieldValues extends FieldValues> {\n name: Path<TFieldValues>;\n control: Control<TFieldValues>;\n data: ReadonlyArray<T>;\n label: string;\n placeholder?: string;\n getOptionLabel: (option: T) => string;\n getOptionValue: (option: T) => string | number;\n InputLabelProps?: InputLabelProps;\n chipMaxWidth?: number;\n disabled?: boolean;\n /** Appends a counter suffix to each React key — use when option values may repeat. */\n enableUniqueKeys?: boolean;\n noOptionsText?: React.ReactNode;\n freeSolo?: boolean;\n /** Called with the typed input when freeSolo triggers a new-item action. */\n onOpenModal?: (inputValue: string) => void;\n hideCheckbox?: boolean;\n singleSelect?: boolean;\n onClick?: () => void;\n error?: boolean;\n helperText?: React.ReactNode;\n onBlur?: () => void;\n size?: \"small\" | \"medium\";\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport function ControlledAutocomplete<T, TFieldValues extends FieldValues>({\n name,\n control,\n data,\n label,\n placeholder,\n getOptionLabel,\n getOptionValue,\n InputLabelProps: inputLabelProps,\n chipMaxWidth = 120,\n disabled = false,\n enableUniqueKeys = false,\n noOptionsText = \"No Options\",\n freeSolo = false,\n onOpenModal,\n hideCheckbox = false,\n singleSelect = false,\n onClick,\n error: externalError,\n helperText: externalHelperText,\n onBlur: externalOnBlur,\n size = \"medium\",\n}: ControlledAutocompleteProps<T, TFieldValues>) {\n const instanceId = useId().replace(/:/g, \"\");\n const autocompleteId = `autocomplete-${stableId(String(name))}-${instanceId}`;\n const containerRef = useRef<HTMLDivElement>(null);\n\n const {\n field: { onChange, value, onBlur: rhfOnBlur },\n fieldState: { error },\n } = useController({ name, control });\n\n const shouldShowCheckbox = !singleSelect && !hideCheckbox;\n\n const getSelectedItems = (): T | T[] | null => {\n if (singleSelect) {\n return data.find((item) => getOptionValue(item) === value) ?? null;\n }\n const ids = (value || []) as (string | number)[];\n return (data as T[]).filter((item) => ids.includes(getOptionValue(item)));\n };\n\n const selectedValue = getSelectedItems();\n\n const [visibleCount, setVisibleCount] = useState(1);\n const [moreOpen, setMoreOpen] = useState(false);\n const [moreAnchor, setMoreAnchor] = useState<HTMLElement | null>(null);\n const [moreItems, setMoreItems] = useState<T[]>([]);\n const hoverAreaRef = useRef(false);\n const closeTimerRef = useRef<number | null>(null);\n const lastSanitizeRef = useRef<string | null>(null);\n\n const openPopover = (anchor: HTMLElement, items: T[]) => {\n setMoreItems(items);\n setMoreAnchor(anchor);\n setMoreOpen(true);\n };\n\n const closePopover = () => {\n setMoreOpen(false);\n setMoreAnchor(null);\n };\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLElement>, items: T[]) => {\n if (closeTimerRef.current) window.clearTimeout(closeTimerRef.current);\n hoverAreaRef.current = true;\n openPopover(e.currentTarget, items);\n };\n\n const handleMouseLeave = () => {\n hoverAreaRef.current = false;\n if (closeTimerRef.current) window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = window.setTimeout(() => {}, 250);\n };\n\n useEffect(\n () => () => {\n if (closeTimerRef.current) window.clearTimeout(closeTimerRef.current);\n },\n []\n );\n\n // Remove stale ids from the form value when data changes\n useEffect(() => {\n if (singleSelect) return;\n const currentValue = value || [];\n if (!Array.isArray(currentValue)) return;\n\n const currentIds = currentValue as (string | number)[];\n const validIds = new Set(data.map(getOptionValue));\n const cleanIds = currentIds.filter((id) => validIds.has(id));\n\n const hasChanges =\n cleanIds.length !== currentIds.length ||\n cleanIds.some((id, i) => id !== currentIds[i]);\n if (!hasChanges) {\n lastSanitizeRef.current = null;\n return;\n }\n\n const sig = `${JSON.stringify(currentIds)}=>${JSON.stringify(cleanIds)}`;\n if (lastSanitizeRef.current === sig) return;\n lastSanitizeRef.current = sig;\n onChange(cleanIds);\n }, [value, data, getOptionValue, onChange, singleSelect]);\n\n useEffect(() => {\n if (singleSelect) lastSanitizeRef.current = null;\n }, [singleSelect]);\n\n const selectedCount = singleSelect ? 0 : (selectedValue as T[]).length;\n\n useLayoutEffect(() => {\n if (singleSelect) return;\n const el = containerRef.current;\n if (!el) return;\n const compute = () => {\n const available = el.clientWidth - 72;\n const chipWidth = chipMaxWidth + 8;\n const max = Math.floor(available / chipWidth);\n setVisibleCount(Math.max(1, isFinite(max) ? max : 1));\n };\n compute();\n const ro = new ResizeObserver(compute);\n ro.observe(el);\n return () => ro.disconnect();\n }, [chipMaxWidth, selectedCount, singleSelect]);\n\n const icon = <CheckBoxOutlineBlankIcon fontSize=\"small\" />;\n const checkedIcon = <CheckBoxIcon fontSize=\"small\" />;\n const genKey = (option: T, base: string) => (enableUniqueKeys ? uniqueKey(base) : base);\n\n return (\n <Box>\n <Box ref={containerRef} onClick={onClick}>\n <MuiAutocomplete\n id={autocompleteId}\n multiple={!singleSelect}\n options={data as T[]}\n disableCloseOnSelect={!singleSelect}\n onBlur={() => {\n rhfOnBlur();\n externalOnBlur?.();\n }}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getOptionLabel={(option: any) => {\n if (typeof option === \"string\") return option;\n if (option?.inputValue) return option.inputValue;\n return getOptionLabel(option as T);\n }}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value={selectedValue as any}\n disabled={disabled}\n freeSolo={freeSolo}\n noOptionsText={freeSolo ? null : noOptionsText}\n filterOptions={(options, params) => {\n const filtered = filter(options, params);\n if (freeSolo && params.inputValue !== \"\") {\n filtered.push({\n inputValue: params.inputValue,\n label: `Add \"${params.inputValue}\"`,\n isNewOption: true,\n });\n }\n return filtered;\n }}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onChange={(_e, newValue: any) => {\n const target = singleSelect ? newValue : newValue[newValue.length - 1];\n if (\n freeSolo &&\n target &&\n (typeof target === \"string\" || target?.inputValue)\n ) {\n onOpenModal?.(typeof target === \"string\" ? target : target.inputValue);\n return;\n }\n if (singleSelect) {\n onChange(newValue ? getOptionValue(newValue as T) : null);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const ids = (newValue as any[])\n .map((item) => {\n if (typeof item === \"string\" || item?.inputValue) return null;\n return getOptionValue(item as T);\n })\n .filter(Boolean) as (string | number)[];\n onChange(ids);\n }\n }}\n isOptionEqualToValue={(option, v) =>\n getOptionValue(option as T) === getOptionValue(v as T)\n }\n renderOption={(props, option, { selected }) => {\n const { key, ...rest } = props;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((option as any)?.isNewOption) {\n return (\n <li key=\"add-new-option\" {...rest}>\n {/* eslint-disable-next-line @typescript-eslint/no-explicit-any */}\n {`Add \"${(option as any).inputValue}\"`}\n </li>\n );\n }\n const baseKey = String(key ?? getOptionValue(option as T));\n const finalKey = genKey(option as T, baseKey);\n return (\n <li key={finalKey} {...rest}>\n {shouldShowCheckbox && (\n <Checkbox\n sx={checkboxSx}\n icon={icon}\n checkedIcon={checkedIcon}\n checked={selected}\n />\n )}\n {getOptionLabel(option as T)}\n </li>\n );\n }}\n renderValue={\n singleSelect\n ? undefined\n : (tagValue, getCustomizedItemProps) => {\n const items = tagValue as T[];\n if (items.length === 0) return null;\n const count = Math.max(1, visibleCount);\n const visible = items.slice(0, count);\n const extra = items.length - visible.length;\n return [\n ...visible.map((option, index) => {\n const { key: _chipKey, ...chipProps } = getCustomizedItemProps({\n index,\n }) as {\n key: number;\n className: string;\n disabled: boolean;\n \"data-item-index\": number;\n tabIndex: -1;\n onDelete: (event: React.SyntheticEvent) => void;\n };\n const lbl = getOptionLabel(option as T);\n const finalKey = genKey(\n option as T,\n String(getOptionValue(option as T))\n );\n return (\n <Tooltip key={finalKey} title={lbl} arrow enterDelay={300}>\n <span>\n <Chip\n {...chipProps}\n label={lbl}\n size=\"small\"\n sx={getChipSx(chipMaxWidth)}\n />\n </span>\n </Tooltip>\n );\n }),\n extra > 0 ? (\n <Box\n key=\"more-wrapper\"\n onMouseEnter={(e) => handleMouseEnter(e, items.slice(count))}\n onMouseLeave={handleMouseLeave}\n sx={{ display: \"inline-flex\" }}\n >\n <Chip\n label={`+${extra} more`}\n size=\"small\"\n disabled={disabled}\n sx={getMoreChipSx(chipMaxWidth)}\n />\n </Box>\n ) : null,\n ];\n }\n }\n renderInput={(params) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const p = params as any;\n // Separate slot-related keys from the base params (id, disabled, fullWidth, size).\n // MUI ≥ v9 moves InputProps/inputProps/InputLabelProps into params.slotProps;\n // earlier versions keep them as top-level legacy keys. Support both so the ref\n // is always forwarded.\n const {\n InputLabelProps: pInputLabelProps,\n InputProps: pInputProps,\n inputProps: pHtmlInputProps,\n slotProps: pSlotProps,\n ...restParams\n } = p;\n const inputLabelSlot = pInputLabelProps ?? pSlotProps?.inputLabel;\n const inputSlot = pInputProps ?? pSlotProps?.input;\n const htmlInputSlot = pHtmlInputProps ?? pSlotProps?.htmlInput;\n return (\n <MuiTextField\n {...restParams}\n label={label}\n size={size}\n placeholder={\n disabled\n ? undefined\n : (singleSelect && selectedValue) ||\n (!singleSelect && (selectedValue as T[]).length > 0)\n ? undefined\n : placeholder\n }\n error={externalError !== undefined ? externalError : !!error}\n helperText={\n externalHelperText !== undefined\n ? externalHelperText\n : (error?.message ?? \" \")\n }\n slotProps={{\n inputLabel: { ...inputLabelSlot, ...inputLabelProps },\n input: inputSlot,\n htmlInput: htmlInputSlot,\n }}\n disabled={disabled}\n sx={textFieldSx}\n />\n );\n }}\n sx={autocompleteSx}\n />\n </Box>\n\n {!singleSelect && (\n <Popover\n open={moreOpen}\n anchorEl={moreAnchor}\n disableAutoFocus\n disableEnforceFocus\n disableRestoreFocus\n onClose={closePopover}\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n transformOrigin={{ vertical: \"top\", horizontal: \"left\" }}\n slotProps={{ paper: { sx: popoverPaperSx } }}\n >\n <List dense sx={{ minWidth: 240 }}>\n {moreItems.map((item) => (\n <ListItem key={String(getOptionValue(item))} sx={listItemSx}>\n {getOptionLabel(item)}\n </ListItem>\n ))}\n </List>\n </Popover>\n )}\n </Box>\n );\n}\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -1139,9 +1139,39 @@ var Avatar = React41__default.default.forwardRef(
|
|
|
1139
1139
|
}
|
|
1140
1140
|
);
|
|
1141
1141
|
Avatar.displayName = "Avatar";
|
|
1142
|
-
var
|
|
1143
|
-
|
|
1144
|
-
}
|
|
1142
|
+
var ALCHEMY_CHIP_PRESETS = {
|
|
1143
|
+
sent: { backgroundColor: "#FFF3E0", color: "#E65100", border: "1px solid #FFE0B2" },
|
|
1144
|
+
viewed: { backgroundColor: "#E3F2FD", color: "#1565C0", border: "1px solid #BBDEFB" },
|
|
1145
|
+
signed: { backgroundColor: "#E8F5E9", color: "#1B5E20", border: "1px solid #C8E6C9" },
|
|
1146
|
+
expired: { backgroundColor: "#FFEBEE", color: "#C62828", border: "1px solid #FFCDD2" },
|
|
1147
|
+
admin: { backgroundColor: "#EEF6FF", color: "#1649DF", border: "1px solid #DAEAFF" },
|
|
1148
|
+
public: { backgroundColor: "#F3E5F5", color: "#6A1B9A", border: "1px solid #E1BEE7" },
|
|
1149
|
+
system: { backgroundColor: "#E0F7FA", color: "#03859B", border: "1px solid #B2EBF2" },
|
|
1150
|
+
contractor: {
|
|
1151
|
+
backgroundColor: "#FFF8E1",
|
|
1152
|
+
color: "#EF6C00",
|
|
1153
|
+
border: "1px solid #FFE082"
|
|
1154
|
+
},
|
|
1155
|
+
active: { backgroundColor: "#E8F5E9", color: "#1B5E20", border: "1px solid #C8E6C9" },
|
|
1156
|
+
inactive: { backgroundColor: "#EEEEEE", color: "#616161", border: "1px solid #E0E0E0" },
|
|
1157
|
+
version: { backgroundColor: "#EAFFFD", color: "#03859B", border: "1px solid #CBFFFD" }
|
|
1158
|
+
};
|
|
1159
|
+
var presetBaseSx = {
|
|
1160
|
+
borderRadius: "100px",
|
|
1161
|
+
fontWeight: 500,
|
|
1162
|
+
fontSize: "0.75rem",
|
|
1163
|
+
lineHeight: 1.4
|
|
1164
|
+
};
|
|
1165
|
+
var Chip = React41__default.default.forwardRef(
|
|
1166
|
+
({ preset, sx, ...props }, ref) => {
|
|
1167
|
+
const resolvedSx = preset ? [
|
|
1168
|
+
presetBaseSx,
|
|
1169
|
+
ALCHEMY_CHIP_PRESETS[preset],
|
|
1170
|
+
...Array.isArray(sx) ? sx : sx ? [sx] : []
|
|
1171
|
+
] : sx ?? {};
|
|
1172
|
+
return /* @__PURE__ */ jsxRuntime.jsx(MuiChip__default.default, { ref, sx: resolvedSx, ...props });
|
|
1173
|
+
}
|
|
1174
|
+
);
|
|
1145
1175
|
Chip.displayName = "Chip";
|
|
1146
1176
|
var IconButton = React41__default.default.forwardRef(
|
|
1147
1177
|
({ tooltip, children, ...props }, ref) => {
|