refactor(contacts-footer-hero-section): remove placeholder text from input fields for cleaner UI
- Removed placeholder text from various input fields in ContactsStep, FooterStep, HeroStep, and SectionStep components to streamline the user interface. - Updated MarketingForm to enhance form field handling and validation logic. - Improved default values in useMarketingForm for better initial state management.
This commit is contained in:
@@ -45,14 +45,12 @@ const ContactsStep = forwardRef<unknown, ContactsStepProps>(
|
|||||||
label="Description"
|
label="Description"
|
||||||
{...register("description")}
|
{...register("description")}
|
||||||
name="description"
|
name="description"
|
||||||
placeholder="Enter Description"
|
|
||||||
/>
|
/>
|
||||||
<InputGroup
|
<InputGroup
|
||||||
{...register("submit_button_text")}
|
{...register("submit_button_text")}
|
||||||
label="Submit Button Text"
|
label="Submit Button Text"
|
||||||
name="submit_button_text"
|
name="submit_button_text"
|
||||||
type="text"
|
type="text"
|
||||||
placeholder="Enter Submit Button Text"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</ShowcaseSection>
|
</ShowcaseSection>
|
||||||
@@ -67,7 +65,6 @@ const ContactsStep = forwardRef<unknown, ContactsStepProps>(
|
|||||||
label="Field Name"
|
label="Field Name"
|
||||||
name={`fields.${index}.name`}
|
name={`fields.${index}.name`}
|
||||||
type="text"
|
type="text"
|
||||||
placeholder="Field Name"
|
|
||||||
disabled
|
disabled
|
||||||
/>
|
/>
|
||||||
<InputGroup
|
<InputGroup
|
||||||
@@ -75,14 +72,12 @@ const ContactsStep = forwardRef<unknown, ContactsStepProps>(
|
|||||||
label="Label"
|
label="Label"
|
||||||
name={`fields.${index}.label`}
|
name={`fields.${index}.label`}
|
||||||
type="text"
|
type="text"
|
||||||
placeholder="Enter Label"
|
|
||||||
/>
|
/>
|
||||||
<InputGroup
|
<InputGroup
|
||||||
{...register(`fields.${index}.placeholder`)}
|
{...register(`fields.${index}.placeholder`)}
|
||||||
label="Placeholder"
|
label="Placeholder"
|
||||||
name={`fields.${index}.placeholder`}
|
name={`fields.${index}.placeholder`}
|
||||||
type="text"
|
type="text"
|
||||||
placeholder="Enter Placeholder"
|
|
||||||
/>
|
/>
|
||||||
<Checkbox
|
<Checkbox
|
||||||
{...register(`fields.${index}.required`)}
|
{...register(`fields.${index}.required`)}
|
||||||
|
|||||||
@@ -48,27 +48,23 @@ const FooterStep = forwardRef<unknown, FooterStepProps>(
|
|||||||
label="Phone Number"
|
label="Phone Number"
|
||||||
name="phone"
|
name="phone"
|
||||||
type="text"
|
type="text"
|
||||||
placeholder="Enter Phone Number"
|
|
||||||
/>
|
/>
|
||||||
<InputGroup
|
<InputGroup
|
||||||
{...register("location")}
|
{...register("location")}
|
||||||
label="Location"
|
label="Location"
|
||||||
name="location"
|
name="location"
|
||||||
type="text"
|
type="text"
|
||||||
placeholder="Enter Location"
|
|
||||||
/>
|
/>
|
||||||
<TextAreaGroup
|
<TextAreaGroup
|
||||||
label="Tagline"
|
label="Tagline"
|
||||||
{...register("tagline")}
|
{...register("tagline")}
|
||||||
name="tagline"
|
name="tagline"
|
||||||
placeholder="Enter Tagline"
|
|
||||||
/>
|
/>
|
||||||
<InputGroup
|
<InputGroup
|
||||||
{...register("copyright")}
|
{...register("copyright")}
|
||||||
label="Copyright"
|
label="Copyright"
|
||||||
name="copyright"
|
name="copyright"
|
||||||
type="text"
|
type="text"
|
||||||
placeholder="Enter Copyright Text"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</ShowcaseSection>
|
</ShowcaseSection>
|
||||||
|
|||||||
@@ -61,7 +61,6 @@ const HeroStep = forwardRef<unknown, HeroStepProps>(({ initialData }, ref) => {
|
|||||||
},
|
},
|
||||||
})}
|
})}
|
||||||
name="description"
|
name="description"
|
||||||
placeholder="Enter Description"
|
|
||||||
/>
|
/>
|
||||||
{errors.description && (
|
{errors.description && (
|
||||||
<p className="mt-1 text-sm text-red-500">
|
<p className="mt-1 text-sm text-red-500">
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ const MarketingForm = ({
|
|||||||
handleStepChange,
|
handleStepChange,
|
||||||
handleSubmitAll,
|
handleSubmitAll,
|
||||||
registerPageType,
|
registerPageType,
|
||||||
|
watchPageType,
|
||||||
pageTypeErrors,
|
pageTypeErrors,
|
||||||
isCompany,
|
isCompany,
|
||||||
setValue,
|
setValue,
|
||||||
@@ -55,106 +56,123 @@ const MarketingForm = ({
|
|||||||
<>
|
<>
|
||||||
<Breadcrumb items={breadcrumbItems} />
|
<Breadcrumb items={breadcrumbItems} />
|
||||||
<ShowcaseSection title={title}>
|
<ShowcaseSection title={title}>
|
||||||
<div className="mb-6 rounded-xl bg-gray-1 p-6 dark:bg-gray-7">
|
<div className="mb-6 rounded-xl bg-gray-1 p-10 dark:bg-gray-7">
|
||||||
<h3 className="mb-4 text-lg font-semibold text-dark dark:text-white">
|
<h3 className="mb-4 text-lg font-semibold text-dark dark:text-white">
|
||||||
Page Configuration
|
Page Configuration
|
||||||
</h3>
|
</h3>
|
||||||
<div className="grid grid-cols-1 gap-5 sm:grid-cols-2">
|
<div className="grid grid-cols-1 gap-5 sm:grid-cols-2">
|
||||||
<Select
|
<div>
|
||||||
{...registerPageType("type", {
|
<Select
|
||||||
required: { message: FormErrorMessages.required, value: true },
|
{...registerPageType("type", {
|
||||||
})}
|
required: {
|
||||||
name="type"
|
message: FormErrorMessages.required,
|
||||||
label="Page Type"
|
value: true,
|
||||||
required
|
},
|
||||||
items={[
|
})}
|
||||||
{ value: "company", label: "Company" },
|
errors={pageTypeErrors}
|
||||||
{ value: "organization", label: "Organization" },
|
name="type"
|
||||||
]}
|
label="Page Type"
|
||||||
/>
|
required
|
||||||
{pageTypeErrors.type && (
|
value={watchPageType("type")}
|
||||||
<p className="mt-1 text-sm text-red-500">
|
items={[
|
||||||
{pageTypeErrors.type.message}
|
{ value: "company", label: "Company" },
|
||||||
</p>
|
{ value: "organization", label: "Organization" },
|
||||||
)}
|
]}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
<Select
|
<div>
|
||||||
{...registerPageType("language")}
|
<Select
|
||||||
label="Language"
|
{...registerPageType("language", {
|
||||||
name="language"
|
validate: (v) =>
|
||||||
items={Languages}
|
!isCompany ||
|
||||||
defaultValue="en"
|
(typeof v === "string" && v.length > 0) ||
|
||||||
clearable
|
FormErrorMessages.required,
|
||||||
prefixIcon={<GlobeIcon />}
|
})}
|
||||||
disabled={!isCompany}
|
errors={pageTypeErrors}
|
||||||
required={isCompany}
|
label="Language"
|
||||||
placeholder="Please select language"
|
name="language"
|
||||||
onClear={() => setValue("language", undefined)}
|
items={Languages}
|
||||||
/>
|
defaultValue="en"
|
||||||
{pageTypeErrors.language && (
|
value={watchPageType("language")}
|
||||||
<p className="mt-1 text-sm text-red-500">
|
clearable
|
||||||
{pageTypeErrors.language.message}
|
prefixIcon={<GlobeIcon />}
|
||||||
</p>
|
disabled={!isCompany}
|
||||||
)}
|
required={isCompany}
|
||||||
<InputGroup
|
placeholder={
|
||||||
{...registerPageType("company_name", {
|
isCompany ? "Please select language" : undefined
|
||||||
required: isCompany
|
}
|
||||||
? { message: FormErrorMessages.required, value: true }
|
onClear={() => setValue("language", "")}
|
||||||
: false,
|
/>
|
||||||
minLength: isCompany
|
</div>
|
||||||
? { value: 2, message: FormErrorMessages.minLength(2) }
|
<div>
|
||||||
: undefined,
|
<InputGroup
|
||||||
maxLength: isCompany
|
{...registerPageType("company_name", {
|
||||||
? { value: 200, message: FormErrorMessages.maxLength(200) }
|
required: isCompany
|
||||||
: undefined,
|
? { message: FormErrorMessages.required, value: true }
|
||||||
})}
|
: false,
|
||||||
label="Company Name"
|
minLength: isCompany
|
||||||
name="company_name"
|
? { value: 2, message: FormErrorMessages.minLength(2) }
|
||||||
type="text"
|
: undefined,
|
||||||
placeholder="Enter Company Name"
|
maxLength: isCompany
|
||||||
disabled={!isCompany}
|
? { value: 200, message: FormErrorMessages.maxLength(200) }
|
||||||
required={isCompany}
|
: undefined,
|
||||||
/>
|
})}
|
||||||
{pageTypeErrors.company_name && (
|
label="Company Name"
|
||||||
<p className="mt-1 text-sm text-red-500">
|
name="company_name"
|
||||||
{pageTypeErrors.company_name.message}
|
type="text"
|
||||||
</p>
|
placeholder={isCompany ? "Enter Company Name" : undefined}
|
||||||
)}
|
disabled={!isCompany}
|
||||||
<Select
|
required={isCompany}
|
||||||
{...registerPageType("country")}
|
/>
|
||||||
name="country"
|
{pageTypeErrors.company_name && (
|
||||||
label="Country"
|
<p className="mt-1 text-sm text-red-500">
|
||||||
items={Countries}
|
{pageTypeErrors.company_name.message}
|
||||||
defaultValue="USA"
|
</p>
|
||||||
clearable
|
)}
|
||||||
prefixIcon={<GlobeIcon />}
|
</div>
|
||||||
disabled={!isCompany}
|
<div>
|
||||||
required={isCompany}
|
<Select
|
||||||
placeholder="Please select country"
|
{...registerPageType("country", {
|
||||||
onClear={() => setValue("country", undefined)}
|
validate: (v) =>
|
||||||
/>
|
!isCompany ||
|
||||||
{pageTypeErrors.country && (
|
(typeof v === "string" && v.length > 0) ||
|
||||||
<p className="mt-1 text-sm text-red-500">
|
FormErrorMessages.required,
|
||||||
{pageTypeErrors.country.message}
|
})}
|
||||||
</p>
|
errors={pageTypeErrors}
|
||||||
)}
|
name="country"
|
||||||
<InputGroup
|
label="Country"
|
||||||
{...registerPageType("key", {
|
items={Countries}
|
||||||
required: {
|
defaultValue="USA"
|
||||||
value: true,
|
value={watchPageType("country")}
|
||||||
message: FormErrorMessages.required,
|
clearable
|
||||||
},
|
prefixIcon={<GlobeIcon />}
|
||||||
})}
|
disabled={!isCompany}
|
||||||
label="Page key"
|
required={isCompany}
|
||||||
name="key"
|
placeholder={isCompany ? "Please select country" : undefined}
|
||||||
placeholder="Please enter page key"
|
onClear={() => setValue("country", "")}
|
||||||
type="text"
|
/>
|
||||||
/>
|
</div>
|
||||||
{pageTypeErrors.key && (
|
<div className="sm:col-span-2">
|
||||||
<p className="mt-1 text-sm text-red-500">
|
<InputGroup
|
||||||
{pageTypeErrors.key.message}
|
{...registerPageType("key", {
|
||||||
</p>
|
required: {
|
||||||
)}
|
value: true,
|
||||||
|
message: FormErrorMessages.required,
|
||||||
|
},
|
||||||
|
})}
|
||||||
|
label="Page key"
|
||||||
|
name="key"
|
||||||
|
required
|
||||||
|
placeholder="Please enter page key"
|
||||||
|
type="text"
|
||||||
|
/>
|
||||||
|
{pageTypeErrors.key && (
|
||||||
|
<p className="mt-1 text-sm text-red-500">
|
||||||
|
{pageTypeErrors.key.message}
|
||||||
|
</p>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -71,7 +71,6 @@ const SectionStep = <T extends FieldValues>({
|
|||||||
label="Section Description"
|
label="Section Description"
|
||||||
{...register("description" as Path<T>)}
|
{...register("description" as Path<T>)}
|
||||||
name="description"
|
name="description"
|
||||||
placeholder="Enter Section Description"
|
|
||||||
/>
|
/>
|
||||||
</ShowcaseSection>
|
</ShowcaseSection>
|
||||||
<ShowcaseSection
|
<ShowcaseSection
|
||||||
@@ -117,7 +116,6 @@ const SectionStep = <T extends FieldValues>({
|
|||||||
{...register(`cards.${index}.description` as Path<T>)}
|
{...register(`cards.${index}.description` as Path<T>)}
|
||||||
label="Description"
|
label="Description"
|
||||||
name={`cards.${index}.description`}
|
name={`cards.${index}.description`}
|
||||||
placeholder="Enter Description"
|
|
||||||
className="sm:col-span-2"
|
className="sm:col-span-2"
|
||||||
/>
|
/>
|
||||||
<button
|
<button
|
||||||
|
|||||||
@@ -39,6 +39,10 @@ const useMarketingForm = (
|
|||||||
} = useForm<IPageTypeFields>({
|
} = useForm<IPageTypeFields>({
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
type: "company",
|
type: "company",
|
||||||
|
language: "en",
|
||||||
|
country: "USA",
|
||||||
|
company_name: "",
|
||||||
|
key: "",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -46,9 +50,9 @@ const useMarketingForm = (
|
|||||||
if (initialData) {
|
if (initialData) {
|
||||||
const formValues = {
|
const formValues = {
|
||||||
type: initialData.type || "company",
|
type: initialData.type || "company",
|
||||||
language: initialData.language || "",
|
language: initialData.language ?? "en",
|
||||||
company_name: initialData.company_name || "",
|
company_name: initialData.company_name || "",
|
||||||
country: initialData.country || "",
|
country: initialData.country ?? "USA",
|
||||||
key: initialData.key || "",
|
key: initialData.key || "",
|
||||||
};
|
};
|
||||||
reset(formValues);
|
reset(formValues);
|
||||||
@@ -238,6 +242,7 @@ const useMarketingForm = (
|
|||||||
handleStepChange,
|
handleStepChange,
|
||||||
handleSubmitAll,
|
handleSubmitAll,
|
||||||
registerPageType,
|
registerPageType,
|
||||||
|
watchPageType,
|
||||||
pageTypeErrors,
|
pageTypeErrors,
|
||||||
isCompany,
|
isCompany,
|
||||||
setValue,
|
setValue,
|
||||||
|
|||||||
@@ -100,9 +100,8 @@ const InputGroup = <T extends FieldValues>({
|
|||||||
})}
|
})}
|
||||||
className={cn(
|
className={cn(
|
||||||
"w-full rounded-xl border border-stroke/70 bg-white/90 shadow-[0_1px_2px_rgba(16,24,40,0.04),0_8px_20px_rgba(16,24,40,0.04)] outline-none backdrop-blur-[1px] transition-all duration-200 focus:border-primary/70 focus:bg-white focus:shadow-[0_0_0_2px_rgba(59,130,246,0.14),0_10px_24px_rgba(59,130,246,0.08)] disabled:cursor-default disabled:bg-gray-2/70 data-[active=true]:border-primary/70 dark:border-dark-3/80 dark:bg-dark-2/85 dark:focus:border-primary/80 dark:focus:shadow-[0_0_0_2px_rgba(59,130,246,0.2),0_10px_24px_rgba(15,23,42,0.45)] dark:disabled:bg-dark dark:data-[active=true]:border-primary/80",
|
"w-full rounded-xl border border-stroke/70 bg-white/90 shadow-[0_1px_2px_rgba(16,24,40,0.04),0_8px_20px_rgba(16,24,40,0.04)] outline-none backdrop-blur-[1px] transition-all duration-200 focus:border-primary/70 focus:bg-white focus:shadow-[0_0_0_2px_rgba(59,130,246,0.14),0_10px_24px_rgba(59,130,246,0.08)] disabled:cursor-default disabled:bg-gray-2/70 data-[active=true]:border-primary/70 dark:border-dark-3/80 dark:bg-dark-2/85 dark:focus:border-primary/80 dark:focus:shadow-[0_0_0_2px_rgba(59,130,246,0.2),0_10px_24px_rgba(15,23,42,0.45)] dark:disabled:bg-dark dark:data-[active=true]:border-primary/80",
|
||||||
// Add error styles conditionally
|
|
||||||
error &&
|
error &&
|
||||||
"border-red/80 focus:border-red focus:shadow-[0_0_0_2px_rgba(239,68,68,0.16),0_10px_24px_rgba(239,68,68,0.1)] dark:border-red/80 dark:focus:shadow-[0_0_0_2px_rgba(239,68,68,0.24),0_10px_24px_rgba(127,29,29,0.45)]",
|
"focus:border-red border-none focus:shadow-[0_0_0_2px_rgba(239,68,68,0.16),0_10px_24px_rgba(239,68,68,0.1)] dark:border-none",
|
||||||
type === "file"
|
type === "file"
|
||||||
? getFileStyles(props.fileStyleVariant!)
|
? getFileStyles(props.fileStyleVariant!)
|
||||||
: "px-5.5 py-3 text-dark placeholder:text-dark-6 dark:text-white",
|
: "px-5.5 py-3 text-dark placeholder:text-dark-6 dark:text-white",
|
||||||
@@ -117,7 +116,7 @@ const InputGroup = <T extends FieldValues>({
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{error && (
|
{error && (
|
||||||
<p className="text-red mt-1.5 text-sm font-medium">
|
<p className="mt-1.5 text-sm font-medium text-error">
|
||||||
{error.message as string}
|
{error.message as string}
|
||||||
</p>
|
</p>
|
||||||
)}
|
)}
|
||||||
|
|||||||
Reference in New Issue
Block a user