{"version":3,"sources":["../src/form-control.tsx"],"sourcesContent":["import type { CSSUIObject, HTMLUIProps, ThemeProps } from \"@yamada-ui/core\"\nimport type { Dict } from \"@yamada-ui/utils\"\nimport type { FocusEventHandler, ReactNode } from \"react\"\nimport {\n  forwardRef,\n  omitThemeProps,\n  ui,\n  useComponentMultiStyle,\n} from \"@yamada-ui/core\"\nimport {\n  ariaAttr,\n  createContext,\n  cx,\n  dataAttr,\n  findChild,\n  getValidChildren,\n  handlerAll,\n} from \"@yamada-ui/utils\"\nimport { isValidElement, useId, useState } from \"react\"\n\nexport interface FormControlOptions {\n  /**\n   * If `true`, the form control will be disabled.\n   *\n   * @default false\n   */\n  disabled?: boolean\n  /**\n   * If `true`, the form control will be invalid.\n   *\n   * @default false\n   */\n  invalid?: boolean\n  /**\n   * If `true`, the form control will be disabled.\n   *\n   * @default false\n   *\n   * @deprecated Use `disabled` instead.\n   */\n  isDisabled?: boolean\n  /**\n   * If `true`, the form control will be invalid.\n   *\n   * @default false\n   *\n   * @deprecated Use `invalid` instead.\n   */\n  isInvalid?: boolean\n  /**\n   * If `true`, the form control will be readonly.\n   *\n   * @default false\n   *\n   * @deprecated Use `readOnly` instead.\n   */\n  isReadOnly?: boolean\n  /**\n   * If `true`, the form control will be required.\n   *\n   * @default false\n   *\n   * @deprecated Use `required` instead.\n   */\n  isRequired?: boolean\n  /**\n   * If `true`, the form control will be readonly.\n   *\n   * @default false\n   */\n  readOnly?: boolean\n  /**\n   * If `true`, the form control will be required.\n   *\n   * @default false\n   */\n  required?: boolean\n}\n\ninterface FormControlAdditionalOptions extends LabelOptions {\n  /**\n   * The form control error message to use.\n   */\n  errorMessage?: ReactNode\n  /**\n   * The form control helper message to use.\n   */\n  helperMessage?: ReactNode\n  /**\n   * If `true`, switch between helper message and error message using isInvalid.\n   *\n   * @default true\n   *\n   * @deprecated Use `replace` instead.\n   */\n  isReplace?: boolean\n  /**\n   * The form control label to use.\n   */\n  label?: ReactNode\n  /**\n   * If `true`, switch between helper message and error message using isInvalid.\n   *\n   * @default true\n   */\n  replace?: boolean\n  /**\n   * Props the error message component.\n   */\n  errorMessageProps?: ErrorMessageProps\n  /**\n   * Props the label component.\n   */\n  helperMessageProps?: HelperMessageProps\n  /**\n   * Props the label component.\n   */\n  labelProps?: LabelProps\n}\n\nexport interface FormControlProps\n  extends HTMLUIProps,\n    ThemeProps<\"FormControl\">,\n    FormControlOptions,\n    FormControlAdditionalOptions {}\n\ninterface FormControlContext {\n  disabled: boolean\n  focused: boolean\n  invalid: boolean\n  readOnly: boolean\n  replace: boolean\n  required: boolean\n  onBlur: () => void\n  onFocus: () => void\n  id?: string\n  labelId?: string\n}\n\nexport const [FormControlContextProvider, useFormControlContext] =\n  createContext<FormControlContext | undefined>({\n    name: \"FormControlContext\",\n    strict: false,\n  })\n\ninterface FormControlStylesContext {\n  [key: string]: CSSUIObject | undefined\n}\n\nexport const [FormControlStylesProvider, useFormControlStyles] = createContext<\n  FormControlStylesContext | undefined\n>({\n  name: \"FormControlStyleContext\",\n  strict: false,\n})\n\n/**\n * `FormControl` is a component used to group form elements with label, helper message, error message, etc.\n *\n * @see Docs https://yamada-ui.com/components/forms/form-control\n */\nexport const FormControl = forwardRef<FormControlProps, \"div\">(\n  ({ id, ...props }, ref) => {\n    const [styles, mergedProps] = useComponentMultiStyle(\"FormControl\", props)\n    const uuid = useId()\n    const labelId = useId()\n    const {\n      className,\n      children,\n      isDisabled = false,\n      disabled = isDisabled,\n      errorMessage,\n      helperMessage,\n      isInvalid = false,\n      invalid = isInvalid,\n      isReadOnly = false,\n      isReplace = true,\n      isRequired = false,\n      label,\n      optionalIndicator,\n      readOnly = isReadOnly,\n      replace = isReplace,\n      required = isRequired,\n      requiredIndicator,\n      errorMessageProps,\n      helperMessageProps,\n      labelProps,\n      ...rest\n    } = omitThemeProps(mergedProps)\n    const [focused, setFocused] = useState<boolean>(false)\n    const validChildren = getValidChildren(children)\n    const customLabel = findChild(validChildren, Label)\n    const customHelperMessage = findChild(validChildren, HelperMessage)\n    const customErrorMessage = findChild(validChildren, ErrorMessage)\n    const isCustomLabel = !!customLabel\n    const isCustomHelperMessage = !!customHelperMessage\n    const isCustomErrorMessage = !!customErrorMessage\n    const css: CSSUIObject = { ...styles.container }\n\n    id ??= uuid\n\n    return (\n      <FormControlContextProvider\n        value={{\n          id,\n          disabled,\n          focused,\n          invalid,\n          labelId,\n          readOnly,\n          replace,\n          required,\n          onBlur: () => setFocused(false),\n          onFocus: () => setFocused(true),\n        }}\n      >\n        <FormControlStylesProvider value={styles}>\n          <ui.div\n            ref={ref}\n            className={cx(\"ui-form__control\", className)}\n            data-disabled={dataAttr(disabled)}\n            data-focus={dataAttr(focused)}\n            data-invalid={dataAttr(invalid)}\n            data-readonly={dataAttr(readOnly)}\n            __css={css}\n            {...rest}\n          >\n            {!isCustomLabel && label ? (\n              <Label\n                optionalIndicator={optionalIndicator}\n                requiredIndicator={requiredIndicator}\n                {...labelProps}\n              >\n                {label}\n              </Label>\n            ) : null}\n            {children}\n            {!isCustomHelperMessage && helperMessage ? (\n              <HelperMessage {...helperMessageProps}>\n                {helperMessage}\n              </HelperMessage>\n            ) : null}\n            {!isCustomErrorMessage && errorMessage ? (\n              <ErrorMessage {...errorMessageProps}>{errorMessage}</ErrorMessage>\n            ) : null}\n          </ui.div>\n        </FormControlStylesProvider>\n      </FormControlContextProvider>\n    )\n  },\n)\n\nFormControl.displayName = \"FormControl\"\nFormControl.__ui__ = \"FormControl\"\n\ninterface UseFormControlOptions extends FormControlOptions {\n  id?: string\n  disabled?: boolean\n  readOnly?: boolean\n  required?: boolean\n}\n\nexport const useFormControl = <Y extends Dict = Dict>({\n  id: idProp,\n  disabled: disabledProp,\n  invalid: invalidProp,\n  isDisabled: isDisabledProp,\n  isInvalid: isInvalidProp,\n  isReadOnly: isReadOnlyProp,\n  isRequired: isRequiredProp,\n  readOnly: readOnlyProp,\n  required: requiredProp,\n  ...rest\n}: UseFormControlOptions & Y) => {\n  const control = useFormControlContext()\n\n  const id = idProp ?? control?.id\n  const labelId = control?.labelId\n  const disabled = disabledProp ?? isDisabledProp ?? control?.disabled\n  const readOnly = readOnlyProp ?? isReadOnlyProp ?? control?.readOnly\n  const required = requiredProp ?? isRequiredProp ?? control?.required\n  const invalid = invalidProp ?? isInvalidProp ?? control?.invalid\n\n  return {\n    id,\n    disabled,\n    invalid,\n    /**\n     * @deprecated Use `disabled` instead.\n     */\n    isDisabled: disabled,\n    /**\n     * @deprecated Use `invalid` instead.\n     */\n    isInvalid: invalid,\n    /**\n     * @deprecated Use `readOnly` instead.\n     */\n    isReadOnly: readOnly,\n    /**\n     * @deprecated Use `required` instead.\n     */\n    isRequired: required,\n    labelId,\n    readOnly,\n    required,\n    ...rest,\n  }\n}\n\nexport interface UseFormControlProps<Y extends HTMLElement>\n  extends FormControlOptions {\n  id?: string\n  disabled?: boolean\n  readOnly?: boolean\n  required?: boolean\n  onBlur?: FocusEventHandler<Y>\n  onFocus?: FocusEventHandler<Y>\n}\n\nexport const useFormControlProps = <Y extends HTMLElement, M extends Dict>({\n  id,\n  disabled,\n  invalid,\n  isDisabled,\n  isInvalid,\n  isReadOnly,\n  isRequired,\n  readOnly,\n  required,\n  onBlur,\n  onFocus,\n  ...rest\n}: M & UseFormControlProps<Y>) => {\n  const control = useFormControlContext()\n\n  disabled ??= isDisabled ?? control?.disabled\n  required ??= isRequired ?? control?.required\n  readOnly ??= isReadOnly ?? control?.readOnly\n  invalid ??= isInvalid ?? control?.invalid\n\n  return {\n    id: id ?? control?.id,\n    \"aria-disabled\": ariaAttr(disabled),\n    \"aria-invalid\": ariaAttr(invalid),\n    \"aria-readonly\": ariaAttr(readOnly),\n    \"aria-required\": ariaAttr(required),\n    \"data-readonly\": dataAttr(readOnly),\n    disabled,\n    readOnly,\n    required,\n    onBlur: handlerAll(control?.onBlur, onBlur),\n    onFocus: handlerAll(control?.onFocus, onFocus),\n    ...(disabled || readOnly\n      ? {\n          _active: {},\n          _focus: {},\n          _focusVisible: {},\n          _hover: {},\n          _invalid: {},\n        }\n      : {}),\n    ...rest,\n  }\n}\n\nexport type FormControlProperty = (typeof formControlProperties)[number]\n\nexport const formControlProperties = [\n  \"disabled\",\n  \"required\",\n  \"readOnly\",\n  \"aria-disabled\",\n  \"aria-readonly\",\n  \"aria-required\",\n  \"aria-invalid\",\n  \"data-readonly\",\n  \"onFocus\",\n  \"onBlur\",\n  \"_hover\",\n  \"_active\",\n  \"_focus\",\n  \"_invalid\",\n  \"_focusVisible\",\n] as const\n\nexport const getFormControlProperties = ({\n  omit = [],\n  pick = [],\n}: {\n  omit?: FormControlProperty[]\n  pick?: FormControlProperty[]\n} = {}) => {\n  let result = [...formControlProperties]\n\n  if (pick.length) {\n    result = result.filter((property) => pick.includes(property))\n  }\n\n  if (omit.length) {\n    result = result.filter((property) => !omit.includes(property))\n  }\n\n  return result\n}\n\ninterface LabelOptions {\n  /**\n   * @deprecated Use `required` instead.\n   */\n  isRequired?: boolean\n  optionalIndicator?: ReactNode\n  required?: boolean\n  requiredIndicator?: ReactNode\n}\n\nexport interface LabelProps extends HTMLUIProps<\"label\">, LabelOptions {}\n\nexport const Label = forwardRef<LabelProps, \"label\">(\n  (\n    {\n      id,\n      htmlFor,\n      className,\n      children,\n      isRequired,\n      optionalIndicator = null,\n      required: requiredProp = isRequired,\n      requiredIndicator = null,\n      ...rest\n    },\n    ref,\n  ) => {\n    const {\n      id: formControlId,\n      disabled,\n      focused,\n      invalid,\n      labelId,\n      readOnly,\n      required,\n    } = useFormControlContext() ?? {}\n    const styles = useFormControlStyles() ?? {}\n    const css: CSSUIObject = {\n      display: \"block\",\n      pointerEvents: readOnly ? \"none\" : undefined,\n      ...styles.label,\n    }\n\n    id ??= labelId\n    requiredProp ??= required\n\n    return (\n      <ui.label\n        id={id}\n        ref={ref}\n        htmlFor={htmlFor ?? formControlId}\n        className={cx(\"ui-form__label\", className)}\n        style={{ cursor: disabled ? \"not-allowed\" : undefined }}\n        data-disabled={dataAttr(disabled)}\n        data-focus={dataAttr(focused)}\n        data-invalid={dataAttr(invalid)}\n        data-readonly={dataAttr(readOnly)}\n        __css={css}\n        {...rest}\n      >\n        {children}\n        {requiredProp ? (\n          requiredIndicator ? (\n            <RequiredIndicator>{requiredIndicator}</RequiredIndicator>\n          ) : (\n            <RequiredIndicator />\n          )\n        ) : (\n          optionalIndicator\n        )}\n      </ui.label>\n    )\n  },\n)\n\nLabel.displayName = \"Label\"\nLabel.__ui__ = \"Label\"\n\nexport interface RequiredIndicatorProps extends HTMLUIProps<\"span\"> {}\n\nexport const RequiredIndicator = forwardRef<RequiredIndicatorProps, \"span\">(\n  ({ className, children, ...rest }, ref) => {\n    const styles = useFormControlStyles() ?? {}\n    const css: CSSUIObject = { ...styles.requiredIndicator }\n\n    return !isValidElement(children) ? (\n      <ui.span\n        ref={ref}\n        className={cx(\"ui-form__required-indicator\", className)}\n        aria-hidden\n        role=\"presentation\"\n        __css={css}\n        {...rest}\n      >\n        {children ?? <>*</>}\n      </ui.span>\n    ) : (\n      children\n    )\n  },\n)\n\nRequiredIndicator.displayName = \"RequiredIndicator\"\nRequiredIndicator.__ui__ = \"RequiredIndicator\"\n\nexport interface HelperMessageProps extends HTMLUIProps<\"span\"> {}\n\nexport const HelperMessage = forwardRef<HelperMessageProps, \"span\">(\n  ({ className, ...rest }, ref) => {\n    const { id, invalid, replace } = useFormControlContext() ?? {}\n    const styles = useFormControlStyles() ?? {}\n    const css: CSSUIObject = { ...styles.helperMessage }\n\n    if (replace && invalid) return null\n\n    return (\n      <ui.span\n        ref={ref}\n        className={cx(\"ui-form__helper-message\", className)}\n        aria-describedby={id}\n        __css={css}\n        {...rest}\n      />\n    )\n  },\n)\n\nHelperMessage.displayName = \"HelperMessage\"\nHelperMessage.__ui__ = \"HelperMessage\"\n\nexport interface ErrorMessageProps extends HTMLUIProps<\"span\"> {}\n\nexport const ErrorMessage = forwardRef<ErrorMessageProps, \"span\">(\n  ({ className, ...rest }, ref) => {\n    const { invalid } = useFormControlContext() ?? {}\n    const styles = useFormControlStyles() ?? {}\n    const css: CSSUIObject = { ...styles.errorMessage }\n\n    if (!invalid) return null\n\n    return (\n      <ui.span\n        ref={ref}\n        className={cx(\"ui-form__error-message\", className)}\n        aria-live=\"polite\"\n        __css={css}\n        {...rest}\n      />\n    )\n  },\n)\n\nErrorMessage.displayName = \"ErrorMessage\"\nErrorMessage.__ui__ = \"ErrorMessage\"\n"],"mappings":"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","names":[]}