extends ../_layout/_docs-layout.pug
block variables
- var slug = 'forms'
- var parent = 'elements'
- var title = 'Forms - Elements - Spectre.css CSS Framework'
- var description = 'Spectre.css is a lightweight, responsive and modern CSS framework for faster and extensible development. Spectre provides basic styles for typography and elements, flexbox based responsive layout system, pure CSS components and utilities with best practice coding and consistent design language.'
block docs-content
+docs-heading('forms', 'Forms')
include ../_layout/_ad-g.pug
p
| Forms provide the most common control styles used in forms, including input, textarea, select, checkbox, radio and switch.
+docs-subheading('forms-input', 'Form input')
.docs-demo.columns
.column.col-6.col-xs-12
.form-group
label.form-label(for="input-example-1") Name
input#input-example-1.form-input(type="text" placeholder="Name")
.form-group
label.form-label(for="input-example-2") Email
input#input-example-2.form-input(type="email" placeholder="Email")
pre.code(data-lang='HTML')
code
:highlight(lang="html")
.docs-demo.columns
.column
.form-group
label.form-checkbox
input#docs-demo-checkbox(type="checkbox")
i.form-icon
| Select all
script.
document.getElementById("docs-demo-checkbox").indeterminate = true;
p
| You can change checkbox to indeterminate state by setting the #[code indeterminate] property of input checkboxes to #[code true].
+docs-subheading('forms-inline', 'Inline forms')
.docs-demo.columns
.column.col-6.col-xs-12
form
.form-group
label.form-radio.form-inline
input(type="radio" name="gender" checked="")
i.form-icon
| Male
label.form-radio.form-inline
input(type="radio" name="gender")
i.form-icon
| Female
.form-group
label.form-checkbox.form-inline
input(type="checkbox")
i.form-icon
| Checkbox 1
label.form-checkbox.form-inline
input(type="checkbox" checked="")
i.form-icon
| Checkbox 2
p
| You can add the #[code form-inline] class to the form components to make them inline in one row.
pre.code(data-lang='HTML')
code
:highlight(lang="html")
+docs-subheading('forms-horizontal', 'Horizontal forms')
p
| If you want to have a horizontal form, add the #[code form-horizontal] class to the #{'
+docs-subheading('forms-sizes', 'Form sizes')
p
| For smaller or larger input and select controls, you could add the #[code input-sm]/#[code input-lg], #[code select-sm]/#[code select-lg] and #[code label-sm]/#[code label-lg] classes to the elements.
.docs-demo.columns
.column.col-4.col-xs-12
label.form-label.label-sm Label
.column.col-4.col-xs-12
input.form-input.input-sm(type="text" placeholder="Name")
.column.col-4.col-xs-12
select.form-select.select-sm
option Choose an option
option Slack
option Skype
option Hipchat
.column.col-4.col-xs-12
label.form-label.label-lg Label
.column.col-4.col-xs-12
input.form-input.input-lg(type="text" placeholder="Name")
.column.col-4.col-xs-12
select.form-select.select-lg
option Choose an option
option Slack
option Skype
option Hipchat
p
| You can add the #[code input-sm]/#[code input-lg] classes to the input-checkbox, input-radio and input-switch to have different sizes.
+docs-subheading('forms-icons', 'Form icons')
p
| Spectre Form components has
a(href="#icons") Spectre Icons
| support.
p
| Add a wrapper with the #[code has-icon-left]/#[code has-icon-right] class to #{''} element.
| And add the icon with #[code form-icon] class next to the #{''}.
.docs-demo.columns
.column.col-4.col-xs-12
.has-icon-left
input.form-input.input-sm(type="text" placeholder="Name")
i.form-icon.icon.icon-arrow-right
.column.col-4.col-xs-12
.has-icon-left.tooltip(data-tooltip="Lorem ipsum dolor sit amet")
input.form-input(type="text" placeholder="Name")
i.form-icon.icon.icon-arrow-right
.column.col-4.col-xs-12
.has-icon-left
input.form-input.input-lg(type="text" placeholder="Name")
i.form-icon.icon.icon-arrow-right
.column.col-4.col-xs-12
.has-icon-right
input.form-input.input-sm(type="text" placeholder="Name")
i.form-icon.icon.icon-check
.column.col-4.col-xs-12
.has-icon-right
input.form-input(type="text" placeholder="Name")
i.form-icon.icon.icon-check
.column.col-4.col-xs-12
.has-icon-right
input.form-input.input-lg(type="text" placeholder="Name")
i.form-icon.icon.icon-check
pre.code(data-lang='HTML')
code
:highlight(lang="html")
p
| You can use the #[code loading] class for loading or posting state.
.docs-demo.columns
.column.col-4.col-xs-12
.has-icon-right
input.form-input.input-sm(type="text" placeholder="Name")
i.form-icon.loading
.column.col-4.col-xs-12
.has-icon-right
input.form-input(type="text" placeholder="Name")
i.form-icon.loading
.column.col-4.col-xs-12
.has-icon-right
input.form-input.input-lg(type="text" placeholder="Name")
i.form-icon.loading
pre.code(data-lang='HTML')
code
:highlight(lang="html")
+docs-subheading('forms-input', 'Input types')
.docs-demo.columns
.column.col-9.col-sm-12
form.form-horizontal(action="#forms")
.form-group
.col-3
label.form-label(for="input-example-8") Email
.col-9
input#input-example-8.form-input(type="email" placeholder="Email" value="spectre@example.com" pattern="[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$")
.form-group
.col-3
label.form-label(for="input-example-9") URL
.col-9
input#input-example-9.form-input(type="url" placeholder="URL" value="https://github.com/picturepan2/spectre")
.form-group
.col-3
label.form-label(for="input-example-10") Search
.col-9
input#input-example-10.form-input(type="search" placeholder="Search")
.form-group
.col-3
label.form-label(for="input-example-11") Tel
.col-9
input#input-example-11.form-input(type="tel" placeholder="Tel" value="1-(888)-888-8888")
.form-group
.col-3
label.form-label(for="input-example-12") Password
.col-9
input#input-example-12.form-input(type="password" placeholder="Password" value="123456789")
.form-group
.col-3
label.form-label(for="input-example-13") Number
.col-9
input#input-example-13.form-input(type="number" placeholder="00" value="66")
.form-group
.col-3
label.form-label(for="input-example-14") Date
.col-9
input#input-example-14.form-input(type="date" value="2016-12-31")
.form-group
.col-3
label.form-label(for="input-example-15") Color
.col-9
input#input-example-15.form-input(type="color" value="#5755d9")
.form-group
.col-3
label.form-label(for="input-example-16") File
.col-9
input#input-example-16.form-input(type="file")
+docs-subheading('forms-input-groups', 'Input groups')
.docs-demo.columns
.column.col-6.col-xs-12
.input-group
input.form-input.input-sm(type="text" placeholder="username")
select.form-select.select-sm
option Slack
option Skype
option Hipchat
.column.col-6.col-xs-12
.input-group
span.input-group-addon.addon-sm slack.com/
input.form-input.input-sm(type="text" placeholder="site name")
button.btn.btn-primary.input-group-btn.btn-sm Submit
.column.col-6.col-xs-12
.input-group
input.form-input(type="text" placeholder="username")
select.form-select
option Slack
option Skype
option Hipchat
.column.col-6.col-xs-12
.input-group
span.input-group-addon slack.com/
input.form-input(type="text" placeholder="site name")
button.btn.btn-primary.input-group-btn Submit
.column.col-6.col-xs-12
.input-group
label.form-switch
input(type="checkbox")
i.form-icon
input.form-input(type="text" placeholder="name")
.column.col-6.col-xs-12
.input-group
label.form-checkbox
input(type="checkbox")
i.form-icon
input.form-input(type="text" placeholder="name")
.column.col-6.col-xs-12
.input-group
input.form-input.input-lg(type="text" placeholder="username")
select.form-select.select-lg
option Slack
option Skype
option Hipchat
.column.col-6.col-xs-12
.input-group
span.input-group-addon.addon-lg slack.com/
input.form-input.input-lg(type="text" placeholder="site name")
button.btn.btn-primary.input-group-btn.btn-lg Submit
p
| If you want to attach text and button along with an input, add the #[code input-group] class to the input container.
| And add the #[code input-group-addon] class to the text element and #[code input-group-btn] to the button element.
pre.code(data-lang='HTML')
code
:highlight(lang="html")
...
...
...
+docs-subheading('forms-validation', 'Form validation styles')
.docs-demo.columns
.column.col-9.col-sm-12
fieldset
legend Input
.form-group
label.form-label(for="input-example-17") Name
input#input-example-17.form-input.is-success(type="text" placeholder="Name")
p.form-input-hint The name is valid.
.form-group.has-error
label.form-label(for="input-example-18") Password
input#input-example-18.form-input(type="password" placeholder="Password")
p.form-input-hint Passwords must have at least 8 characters.
fieldset
legend Select
.form-group
select.form-select.is-error
option Choose an option
option Slack
option Skype
option Hipchat
p.form-input-hint The option is invalid.
.form-group.has-success
select.form-select
option Choose an option
option Slack
option Skype
option Hipchat
p.form-input-hint The option is available.
fieldset
legend Checkbox, Radio and Switch (Error state only)
.form-group
label.form-checkbox.is-error
input(type="checkbox" checked="")
i.form-icon
| I'm not a robot.
.form-group.has-error
label.form-radio
input(type="radio" name="gender" checked="")
i.form-icon
| Male
label.form-radio
input(type="radio" name="gender")
i.form-icon
| Female
.form-group
label.form-switch.is-error
input(type="checkbox" checked="")
i.form-icon
| Send me emails with news and tips
p
| To use form validation styles, you can either add #[code is-success] or #[code is-error] class to the controls or add #[code has-success] or #[code has-error] class to parent elements.
| Use the #[code form-input-hint] class to provide form validation success and error messages.
pre.code(data-lang='HTML')
code
:highlight(lang="html")
.docs-demo.columns
.column.col-9.col-sm-12
.form-group
label.form-label(for="input-example-21") Email
input#input-example-21.form-input(type="text" placeholder="Email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,14}$")
.form-group
label.form-label(for="input-example-22") Password
input#input-example-22.form-input(type="password" placeholder="Password" pattern="^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).{8,}$")
p
| You can use input #[code pattern] attribute to validate the value as well.
pre.code(data-lang='HTML')
code
:highlight(lang="html")
+docs-subheading('forms-disabled', 'Form disabled styles')
p
| Add the #[code disabled] attribute to the element or #{'