39 lines
832 B
Text
39 lines
832 B
Text
---
|
|
import type { FormControl } from '../core';
|
|
|
|
export interface Props {
|
|
control: FormControl;
|
|
showValidationHints: boolean;
|
|
showErrors?: boolean; // feature flag for showing validation errors
|
|
}
|
|
|
|
const { control, showValidationHints } = Astro.props;
|
|
|
|
const { validators = [] } = control;
|
|
|
|
const isRequired: boolean = showValidationHints && validators.includes('validator-required');
|
|
---
|
|
|
|
{
|
|
control.label && control.type !== "checkbox" && (
|
|
<label for={control.name} data-validation-required={isRequired ? "true" : null}>
|
|
{control.label}
|
|
</label>
|
|
)
|
|
}
|
|
|
|
<slot />
|
|
|
|
{
|
|
control.label && control.type === "checkbox" && (
|
|
<label for={control.name} data-validation-required={isRequired ? "true" : null}>
|
|
{control.label}
|
|
</label>
|
|
)
|
|
}
|
|
|
|
<style>
|
|
label[data-validation-required="true"]::before {
|
|
content: "*";
|
|
}
|
|
</style>
|