astro-reactive-form/packages/form/components/Label.astro
2022-10-28 22:14:50 +02:00

39 lines
843 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.labelPosition === 'left' && (
<label for={control.name} data-validation-required={isRequired ? "true" : null}>
{control.label}
</label>
)
}
<slot />
{
control.label && control.labelPosition === 'right' && (
<label for={control.name} data-validation-required={isRequired ? "true" : null}>
{control.label}
</label>
)
}
<style>
label[data-validation-required="true"]::before {
content: "*";
}
</style>