@premieroctet/next-admin
Version:
Next-Admin provides a customizable and turnkey admin dashboard for applications built with Next.js and powered by the Prisma ORM. It aims to simplify the development process by providing a turnkey admin system that can be easily integrated into your proje
44 lines (43 loc) • 2.11 kB
JavaScript
import { jsx } from "react/jsx-runtime";
import external_clsx_default from "clsx";
import { useCallback } from "react";
import { useFormState } from "../../context/FormStateContext.mjs";
import { ariaDescribedByIds } from "../../utils/rjsf.mjs";
const TextareaWidget_TextareaWidget = ({ id, options = {}, placeholder, value, required, disabled, readonly, autofocus = false, onChange, onBlur, onFocus, rawErrors })=>{
const { setFieldDirty } = useFormState();
const handleChange = useCallback(({ target: { value } })=>{
setFieldDirty(id);
onChange("" === value ? options.emptyValue : value);
}, [
onChange,
options.emptyValue
]);
const handleBlur = useCallback(({ target: { value } })=>onBlur(id, value), [
onBlur,
id
]);
const handleFocus = useCallback(({ target: { value } })=>onFocus(id, value), [
id,
onFocus
]);
return /*#__PURE__*/ jsx("textarea", {
id: id,
name: id,
className: external_clsx_default("form-control", "dark:bg-dark-nextadmin-background-subtle text-nextadmin-content-inverted dark:text-dark-nextadmin-content-inverted ring-nextadmin-border-default focus:ring-nextadmin-brand-default dark:focus:ring-dark-nextadmin-brand-default dark:ring-dark-nextadmin-border-strong block w-full rounded-t-md rounded-bl-md border-0 px-2 py-1.5 text-sm shadow-sm ring-1 ring-inset transition-colors duration-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 sm:leading-6", {
"ring-red-600 dark:ring-red-400": rawErrors
}),
value: value ? value : "",
placeholder: placeholder,
required: required,
disabled: disabled,
readOnly: readonly,
autoFocus: autofocus,
rows: options.rows,
onBlur: handleBlur,
onFocus: handleFocus,
onChange: handleChange,
"aria-describedby": ariaDescribedByIds(id)
});
};
const TextareaWidget = TextareaWidget_TextareaWidget;
export { TextareaWidget as default };