Validator
Form validation states with visual feedback
Class Reference Choose your validation hint behavior:
Default validator-hint (stable layout)RecommendedHints remain in document flow - will be invisible but maintain their space until validation fails. Prevents layout shifts when hints appear. validator-hint hidden (compact layout)OptionalHints are removed from document flow - will take no space when hidden but may cause layout shifts when validation fails.
Use hidden only if you can accommodate layout shifts: Div(cls='validator-hint hidden') will be completely removed from document flow until needed.
Basic
Input(type='email', required=True, placeholder='[email protected]', cls='input validator')
Auto-import documentation coming soon...
Enter valid email address
Input(type='email', required=True, placeholder='[email protected]', cls='input validator'),
Div('Enter valid email address', cls='validator-hint')
Auto-import documentation coming soon...
Input(type='password', required=True, placeholder='Password', minlength='8', pattern='(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}', title='Must be more than 8 characters, including number, lowercase letter, uppercase letter', cls='input validator'),
P(
'Must be more than 8 characters, including',
Br(),
'At least one number',
Br(),
'At least one lowercase letter',
Br(),
'At least one uppercase letter',
cls='validator-hint hidden'
)
Auto-import documentation coming soon...
Must be valid URL
Input(type='url', required=True, placeholder='https://', value='https://', pattern='^(https?://)?([a-zA-Z0-9]([a-zA-Z0-9-].*[a-zA-Z0-9])?.)+[a-zA-Z].*$', title='Must be valid URL', cls='input validator'),
P('Must be valid URL', cls='validator-hint')
Auto-import documentation coming soon...
Must be 3 to 30 characters
containing only letters, numbers or dash
Input(type='input', required=True, placeholder='Username', pattern='[A-Za-z][A-Za-z0-9\-]*', minlength='3', maxlength='30', title='Only letters, numbers or dash', cls='input validator'),
P(
'Must be 3 to 30 characters',
Br(),
'containing only letters, numbers or dash',
cls='validator-hint'
)
Auto-import documentation coming soon...
Must be 2025
Input(type='date', required=True, placeholder='Pick a date in 2025', min='2025-01-01', max='2025-12-31', title='Must be valid URL', cls='input validator'),
P('Must be 2025', cls='validator-hint')
Auto-import documentation coming soon...
Must be 10 digits
Input(type='tel', required=True, placeholder='Phone', pattern='[0-9]*', minlength='10', maxlength='10', title='Must be 10 digits', cls='input validator tabular-nums'),
P('Must be 10 digits', cls='validator-hint')
Auto-import documentation coming soon...
Must be between be 1 to 10
Input(type='number', required=True, placeholder='Type a number between 1 to 10', min='1', max='10', title='Must be between be 1 to 10', cls='input validator'),
P('Must be between be 1 to 10', cls='validator-hint')
Auto-import documentation coming soon...
Input(type='checkbox', required=True, title='Required', cls='checkbox validator'),
P('Required', cls='validator-hint hidden')
Auto-import documentation coming soon...
Input(type='checkbox', required=True, title='Required', cls='toggle validator'),
P('Required', cls='validator-hint hidden')
Auto-import documentation coming soon...
Class Reference
Class | Type | Description |
---|---|---|
validator | Component | Applies validation state styling |
validator-hint | Part | Validation message container |
Do you have a question? ask the community
Do you see a bug? open an issue on GitHub
LLMs Context: Full Markdown | This Component