Skip to content

Commit 97cf3eb

Browse files
committed
fix: better consent error required visability and constant presence of labels
1 parent 0529635 commit 97cf3eb

File tree

3 files changed

+49
-8
lines changed

3 files changed

+49
-8
lines changed

apps/website/src/components/BaseContactForm.astro

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,11 @@ const { onDark, classNames, formId, formClassNames } = Astro.props;
178178
const errorSpan = form?.querySelector(`#error-text-value-${input.id}`);
179179
const placeholderSpan = form?.querySelector(`#label-value-${input.id}`);
180180

181-
placeholderSpan?.classList.add("hidden");
181+
placeholderSpan?.classList.add(
182+
"-translate-y-[37px]",
183+
"-translate-x-[17px]",
184+
"absolute",
185+
);
182186
errorSpan?.classList.add("!inline", "text-red-500");
183187
if (errorSpan) errorSpan.textContent = errorMessage;
184188
};
@@ -213,23 +217,35 @@ const { onDark, classNames, formId, formClassNames } = Astro.props;
213217
form?.querySelector<HTMLInputElement>("#form-full-name");
214218
const consentInput =
215219
form?.querySelector<HTMLInputElement>("#form-consent");
220+
const consentLabel =
221+
form?.querySelector<HTMLLabelElement>("#form-consent-text");
216222

217223
if (form && nameInput && emailInput && messageInput && consentInput) {
218224
form.addEventListener("click", (e) => {
219225
if (!(e.currentTarget instanceof HTMLFormElement)) return;
220-
const isInputTarget = e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement;
226+
const isInputTarget =
227+
e.target instanceof HTMLInputElement ||
228+
e.target instanceof HTMLTextAreaElement;
221229
if (isInputTarget && e.target.type !== "checkbox") {
222230
const errorSpan = e.currentTarget.querySelector(
223231
`#error-text-value-${e.target.id}`,
224232
);
225233
const placeholderSpan = e.currentTarget.querySelector(
226234
`#label-value-${e.target.id}`,
227235
);
228-
placeholderSpan?.classList.remove("hidden");
236+
placeholderSpan?.classList.remove(
237+
"-translate-y-[37px]",
238+
"-translate-x-[17px]",
239+
"absolute",
240+
);
229241
errorSpan?.classList.remove("!inline", "text-red-500");
230242
}
231243
if (isInputTarget && e.target.type === "checkbox") {
232244
consentInput.classList.replace("border-red-600", "border-gray-300");
245+
consentLabel?.classList.replace(
246+
"text-red-600",
247+
"[&_b]:text-[#67a807]",
248+
);
233249
consentInput.classList.remove("border-2");
234250
}
235251
});
@@ -284,6 +300,10 @@ const { onDark, classNames, formId, formClassNames } = Astro.props;
284300
"border-gray-300",
285301
"border-red-600",
286302
);
303+
304+
consentLabel?.classList.remove("text-secondary", "text-neutral-50", "[&_b]:text-[#67a807]");
305+
consentLabel?.classList.add("text-red-600");
306+
287307
consentInput?.classList.add("border-2");
288308
}
289309
return;

apps/website/src/components/Field.astro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ const fieldId = isTextArea ? props.textAreaProps.id : props.inputProps.id
122122
},
123123
)}
124124
>
125-
<span id=`label-value-${fieldId}`>{label}</span>
125+
<span id=`label-value-${fieldId}` class="transition-transform">{label}</span>
126126
<span id=`error-text-value-${fieldId}` class="truncate text-ellipsis">{errorText || "Invalid field"}</span>
127127
</label>
128128
<div

apps/website/src/components/staff-agmentation/GetYourPlanForm.astro

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import "../../styles/loader.css";
55
import * as formContent from "../../content/contact/get-your-plan-form.md";
66
---
77

8-
<div class="col-span-6 lg:col-span-6 lg:col-start-1 md:row-start-2 xl:col-start-2 xl:col-span-5">
8+
<div
9+
class="col-span-6 lg:col-span-6 lg:col-start-1 md:row-start-2 xl:col-start-2 xl:col-span-5"
10+
>
911
<form
1012
id="get-your-plan-form"
1113
class="group/contact-us mx-auto bg-white rounded-xl flex-col py-7 gap-2 px-7"
@@ -59,7 +61,8 @@ import * as formContent from "../../content/contact/get-your-plan-form.md";
5961
set:html={formContent.frontmatter.consent}
6062
id="form-consent-text"
6163
for="form-consent"
62-
class="text-[#3C3843] [&>em]:not-italic [&>em]:font-semibold cursor-pointer"
64+
class="[&>em]:not-italic [&_b]:text-[#67a807] [&>em]:font-semibold cursor-pointer text-sm sm:text-base"
65+
,
6366
/>
6467
</div>
6568
<button
@@ -139,7 +142,11 @@ import * as formContent from "../../content/contact/get-your-plan-form.md";
139142
const errorSpan = form?.querySelector(`#error-text-value-${input.id}`);
140143
const placeholderSpan = form?.querySelector(`#label-value-${input.id}`);
141144

142-
placeholderSpan?.classList.add("hidden");
145+
placeholderSpan?.classList.add(
146+
"-translate-y-[37px]",
147+
"-translate-x-[17px]",
148+
"absolute",
149+
);
143150
errorSpan?.classList.add("!inline", "text-red-500");
144151
if (errorSpan) errorSpan.textContent = errorMessage;
145152
};
@@ -166,6 +173,8 @@ import * as formContent from "../../content/contact/get-your-plan-form.md";
166173
form?.querySelector<HTMLInputElement>("#form-full-name");
167174
const consentInput =
168175
form?.querySelector<HTMLInputElement>("#form-consent");
176+
const consentLabel =
177+
form?.querySelector<HTMLLabelElement>("#form-consent-text");
169178

170179
if (form && emailInput && nameInput && consentInput) {
171180
form.addEventListener("click", (e) => {
@@ -178,11 +187,19 @@ import * as formContent from "../../content/contact/get-your-plan-form.md";
178187
const placeholderSpan = e.currentTarget.querySelector(
179188
`#label-value-${e.target.id}`,
180189
);
181-
placeholderSpan?.classList.remove("hidden");
190+
placeholderSpan?.classList.remove(
191+
"-translate-y-[37px]",
192+
"-translate-x-[17px]",
193+
"absolute",
194+
);
182195
errorSpan?.classList.remove("!inline", "text-red-500");
183196
}
184197
if (isInputTarget && e.target.type === "checkbox") {
185198
consentInput.classList.replace("border-red-600", "border-gray-300");
199+
consentLabel?.classList.replace(
200+
"text-red-600",
201+
"[&_b]:text-[#67a807]",
202+
);
186203
consentInput.classList.remove("border-2");
187204
}
188205
});
@@ -229,6 +246,10 @@ import * as formContent from "../../content/contact/get-your-plan-form.md";
229246
"border-gray-300",
230247
"border-red-600",
231248
);
249+
consentLabel?.classList.replace(
250+
"[&_b]:text-[#67a807]",
251+
"text-red-600",
252+
);
232253
consentInput?.classList.add("border-2");
233254
}
234255
return;

0 commit comments

Comments
 (0)