| import React from 'react' |
| import { |
| CButton, |
| CCard, |
| CCardBody, |
| CCardHeader, |
| CCol, |
| CForm, |
| CFormCheck, |
| CFormInput, |
| CFormLabel, |
| CFormSelect, |
| CInputGroup, |
| CInputGroupText, |
| CRow, |
| } from '@coreui/react' |
| import { DocsComponents, DocsExample } from 'src/components' |
|
|
| const Layout = () => { |
| return ( |
| <CRow> |
| <CCol xs={12}> |
| <DocsComponents href="forms/layout/" /> |
| <CCard className="mb-4"> |
| <CCardHeader> |
| <strong>Layout</strong> <small>Form grid</small> |
| </CCardHeader> |
| <CCardBody> |
| <p className="text-body-secondary small"> |
| More complex forms can be built using our grid classes. Use these for form layouts |
| that require multiple columns, varied widths, and additional alignment options. |
| </p> |
| <DocsExample href="forms/layout#form-grid"> |
| <CRow> |
| <CCol xs> |
| <CFormInput placeholder="First name" aria-label="First name" /> |
| </CCol> |
| <CCol xs> |
| <CFormInput placeholder="Last name" aria-label="Last name" /> |
| </CCol> |
| </CRow> |
| </DocsExample> |
| </CCardBody> |
| </CCard> |
| </CCol> |
| <CCol xs={12}> |
| <CCard className="mb-4"> |
| <CCardHeader> |
| <strong>Layout</strong> <small>Gutters</small> |
| </CCardHeader> |
| <CCardBody> |
| <p className="text-body-secondary small"> |
| By adding <a href="https://coreui.io/docs/layout/gutters/">gutter modifier classes</a> |
| , you can have control over the gutter width in as well the inline as block direction. |
| </p> |
| <DocsExample href="forms/layout#gutters"> |
| <CRow className="g-3"> |
| <CCol xs> |
| <CFormInput placeholder="First name" aria-label="First name" /> |
| </CCol> |
| <CCol xs> |
| <CFormInput placeholder="Last name" aria-label="Last name" /> |
| </CCol> |
| </CRow> |
| </DocsExample> |
| <p className="text-body-secondary small"> |
| More complex layouts can also be created with the grid system. |
| </p> |
| <DocsExample href="forms/layout#gutters"> |
| <CForm className="row g-3"> |
| <CCol md={6}> |
| <CFormLabel htmlFor="inputEmail4">Email</CFormLabel> |
| <CFormInput type="email" id="inputEmail4" /> |
| </CCol> |
| <CCol md={6}> |
| <CFormLabel htmlFor="inputPassword4">Password</CFormLabel> |
| <CFormInput type="password" id="inputPassword4" /> |
| </CCol> |
| <CCol xs={12}> |
| <CFormLabel htmlFor="inputAddress">Address</CFormLabel> |
| <CFormInput id="inputAddress" placeholder="1234 Main St" /> |
| </CCol> |
| <CCol xs={12}> |
| <CFormLabel htmlFor="inputAddress2">Address 2</CFormLabel> |
| <CFormInput id="inputAddress2" placeholder="Apartment, studio, or floor" /> |
| </CCol> |
| <CCol md={6}> |
| <CFormLabel htmlFor="inputCity">City</CFormLabel> |
| <CFormInput id="inputCity" /> |
| </CCol> |
| <CCol md={4}> |
| <CFormLabel htmlFor="inputState">State</CFormLabel> |
| <CFormSelect id="inputState"> |
| <option>Choose...</option> |
| <option>...</option> |
| </CFormSelect> |
| </CCol> |
| <CCol md={2}> |
| <CFormLabel htmlFor="inputZip">Zip</CFormLabel> |
| <CFormInput id="inputZip" /> |
| </CCol> |
| <CCol xs={12}> |
| <CFormCheck type="checkbox" id="gridCheck" label="Check me out" /> |
| </CCol> |
| <CCol xs={12}> |
| <CButton color="primary" type="submit"> |
| Sign in |
| </CButton> |
| </CCol> |
| </CForm> |
| </DocsExample> |
| </CCardBody> |
| </CCard> |
| </CCol> |
| <CCol xs={12}> |
| <CCard className="mb-4"> |
| <CCardHeader> |
| <strong>Layout</strong> <small>Horizontal form</small> |
| </CCardHeader> |
| <CCardBody> |
| <p className="text-body-secondary small"> |
| Create horizontal forms with the grid by adding the <code>.row</code> class to form |
| groups and using the <code>.col-*-*</code> classes to specify the width of your labels |
| and controls. Be sure to add <code>.col-form-label</code> to your{' '} |
| <code><CFormLabel></code>s as well so they're vertically centered with their |
| associated form controls. |
| </p> |
| <p className="text-body-secondary small"> |
| At times, you maybe need to use margin or padding utilities to create that perfect |
| alignment you need. For example, we've removed the <code>padding-top</code> on our |
| stacked radio inputs label to better align the text baseline. |
| </p> |
| <DocsExample href="forms/layout#horizontal-form"> |
| <CForm> |
| <CRow className="mb-3"> |
| <CFormLabel htmlFor="inputEmail3" className="col-sm-2 col-form-label"> |
| Email |
| </CFormLabel> |
| <CCol sm={10}> |
| <CFormInput type="email" id="inputEmail3" /> |
| </CCol> |
| </CRow> |
| <CRow className="mb-3"> |
| <CFormLabel htmlFor="inputPassword3" className="col-sm-2 col-form-label"> |
| Password |
| </CFormLabel> |
| <CCol sm={10}> |
| <CFormInput type="password" id="inputPassword3" /> |
| </CCol> |
| </CRow> |
| <fieldset className="row mb-3"> |
| <legend className="col-form-label col-sm-2 pt-0">Radios</legend> |
| <CCol sm={10}> |
| <CFormCheck |
| type="radio" |
| name="gridRadios" |
| id="gridRadios1" |
| value="option1" |
| label="First radio" |
| defaultChecked |
| /> |
| <CFormCheck |
| type="radio" |
| name="gridRadios" |
| id="gridRadios2" |
| value="option2" |
| label="Second radio" |
| /> |
| <CFormCheck |
| type="radio" |
| name="gridRadios" |
| id="gridRadios3" |
| value="option3" |
| label="Third disabled radio" |
| disabled |
| /> |
| </CCol> |
| </fieldset> |
| <CRow className="mb-3"> |
| <div className="col-sm-10 offset-sm-2"> |
| <CFormCheck type="checkbox" id="gridCheck1" label="Example checkbox" /> |
| </div> |
| </CRow> |
| <CButton color="primary" type="submit"> |
| Sign in |
| </CButton> |
| </CForm> |
| </DocsExample> |
| </CCardBody> |
| </CCard> |
| </CCol> |
| <CCol xs={12}> |
| <CCard className="mb-4"> |
| <CCardHeader> |
| <strong>Layout</strong> <small>Horizontal form label sizing</small> |
| </CCardHeader> |
| <CCardBody> |
| <p className="text-body-secondary small"> |
| Be sure to use <code>.col-form-label-sm</code> or <code>.col-form-label-lg</code> to |
| your <code><CFormLabel></code>s or <code><legend></code>s to correctly |
| follow the size of <code>.form-control-lg</code> and <code>.form-control-sm</code>. |
| </p> |
| <DocsExample href="forms/layout#horizontal-form-label-sizing"> |
| <CRow className="mb-3"> |
| <CFormLabel |
| htmlFor="colFormLabelSm" |
| className="col-sm-2 col-form-label col-form-label-sm" |
| > |
| Email |
| </CFormLabel> |
| <CCol sm={10}> |
| <CFormInput |
| type="email" |
| className="form-control form-control-sm" |
| id="colFormLabelSm" |
| placeholder="col-form-label-sm" |
| /> |
| </CCol> |
| </CRow> |
| <CRow className="mb-3"> |
| <CFormLabel htmlFor="colFormLabel" className="col-sm-2 col-form-label"> |
| Email |
| </CFormLabel> |
| <CCol sm={10}> |
| <CFormInput type="email" id="colFormLabel" placeholder="col-form-label" /> |
| </CCol> |
| </CRow> |
| <CRow> |
| <CFormLabel |
| htmlFor="colFormLabelLg" |
| className="col-sm-2 col-form-label col-form-label-lg" |
| > |
| Email |
| </CFormLabel> |
| <CCol sm={10}> |
| <CFormInput |
| type="email" |
| className="form-control form-control-lg" |
| id="colFormLabelLg" |
| placeholder="col-form-label-lg" |
| /> |
| </CCol> |
| </CRow> |
| </DocsExample> |
| </CCardBody> |
| </CCard> |
| </CCol> |
| <CCol xs={12}> |
| <CCard className="mb-4"> |
| <CCardHeader> |
| <strong>Layout</strong> <small>Column sizing</small> |
| </CCardHeader> |
| <CCardBody> |
| <p className="text-body-secondary small"> |
| As shown in the previous examples, our grid system allows you to place any number of{' '} |
| <code><CCol></code>s within a <code><CRow></code>. They'll split the |
| available width equally between them. You may also pick a subset of your columns to |
| take up more or less space, while the remaining <code><CCol></code>s equally |
| split the rest, with specific column classes like{' '} |
| <code><CCol sm="7"></code>. |
| </p> |
| <DocsExample href="forms/layout#column-sizing"> |
| <CRow className="g-3"> |
| <CCol sm={7}> |
| <CFormInput placeholder="City" aria-label="City" /> |
| </CCol> |
| <CCol sm> |
| <CFormInput placeholder="State" aria-label="State" /> |
| </CCol> |
| <CCol sm> |
| <CFormInput placeholder="Zip" aria-label="Zip" /> |
| </CCol> |
| </CRow> |
| </DocsExample> |
| </CCardBody> |
| </CCard> |
| </CCol> |
| <CCol xs={12}> |
| <CCard className="mb-4"> |
| <CCardHeader> |
| <strong>Layout</strong> <small>Auto-sizing</small> |
| </CCardHeader> |
| <CCardBody> |
| <p className="text-body-secondary small"> |
| The example below uses a flexbox utility to vertically center the contents and changes{' '} |
| <code><CCol></code> to <code><CCol xs="auto"></code> so that your |
| columns only take up as much space as needed. Put another way, the column sizes itself |
| based on the contents. |
| </p> |
| <DocsExample href="forms/layout#auto-sizing"> |
| <CForm className="row gy-2 gx-3 align-items-center"> |
| <CCol xs="auto"> |
| <CFormLabel className="visually-hidden" htmlFor="autoSizingInput"> |
| Name |
| </CFormLabel> |
| <CFormInput id="autoSizingInput" placeholder="Jane Doe" /> |
| </CCol> |
| <CCol xs="auto"> |
| <CFormLabel className="visually-hidden" htmlFor="autoSizingInputGroup"> |
| Username |
| </CFormLabel> |
| <CInputGroup> |
| <CInputGroupText>@</CInputGroupText> |
| <CFormInput id="autoSizingInputGroup" placeholder="Username" /> |
| </CInputGroup> |
| </CCol> |
| <CCol xs="auto"> |
| <CFormLabel className="visually-hidden" htmlFor="autoSizingSelect"> |
| Preference |
| </CFormLabel> |
| <CFormSelect id="autoSizingSelect"> |
| <option>Choose...</option> |
| <option value="1">One</option> |
| <option value="2">Two</option> |
| <option value="3">Three</option> |
| </CFormSelect> |
| </CCol> |
| <CCol xs="auto"> |
| <CFormCheck type="checkbox" id="autoSizingCheck" label="Remember me" /> |
| </CCol> |
| <CCol xs="auto"> |
| <CButton color="primary" type="submit"> |
| Submit |
| </CButton> |
| </CCol> |
| </CForm> |
| </DocsExample> |
| <p className="text-body-secondary small"> |
| You can then remix that once again with size-specific column classes. |
| </p> |
| <DocsExample href="forms/layout#auto-sizing"> |
| <CForm className="row gx-3 gy-2 align-items-center"> |
| <CCol sm={3}> |
| <CFormLabel className="visually-hidden" htmlFor="specificSizeInputName"> |
| Name |
| </CFormLabel> |
| <CFormInput id="specificSizeInputName" placeholder="Jane Doe" /> |
| </CCol> |
| <CCol sm={3}> |
| <CFormLabel className="visually-hidden" htmlFor="specificSizeInputGroupUsername"> |
| Username |
| </CFormLabel> |
| <CInputGroup> |
| <CInputGroupText>@</CInputGroupText> |
| <CFormInput id="specificSizeInputGroupUsername" placeholder="Username" /> |
| </CInputGroup> |
| </CCol> |
| <CCol sm={3}> |
| <CFormLabel className="visually-hidden" htmlFor="specificSizeSelect"> |
| Preference |
| </CFormLabel> |
| <CFormSelect id="specificSizeSelect"> |
| <option>Choose...</option> |
| <option value="1">One</option> |
| <option value="2">Two</option> |
| <option value="3">Three</option> |
| </CFormSelect> |
| </CCol> |
| <CCol xs="auto"> |
| <CFormCheck type="checkbox" id="autoSizingCheck2" label="Remember me" /> |
| </CCol> |
| <CCol xs="auto"> |
| <CButton color="primary" type="submit"> |
| Submit |
| </CButton> |
| </CCol> |
| </CForm> |
| </DocsExample> |
| </CCardBody> |
| </CCard> |
| </CCol> |
| <CCol xs={12}> |
| <CCard className="mb-4"> |
| <CCardHeader> |
| <strong>Layout</strong> <small>Inline forms</small> |
| </CCardHeader> |
| <CCardBody> |
| <p className="text-body-secondary small"> |
| Use the <code><CCol xs="auto"></code> class to create horizontal |
| layouts. By adding{' '} |
| <a href="https://coreui.io/docs/layout/gutters/">gutter modifier classes</a>, we will |
| have gutters in horizontal and vertical directions. The{' '} |
| <code>.align-items-center</code> aligns the form elements to the middle, making the{' '} |
| <code><CFormCheck></code> align properly. |
| </p> |
| <DocsExample href="forms/layout#inline-forms"> |
| <CForm className="row row-cols-lg-auto g-3 align-items-center"> |
| <CCol xs={12}> |
| <CFormLabel className="visually-hidden" htmlFor="inlineFormInputGroupUsername"> |
| Username |
| </CFormLabel> |
| <CInputGroup> |
| <CInputGroupText>@</CInputGroupText> |
| <CFormInput id="inlineFormInputGroupUsername" placeholder="Username" /> |
| </CInputGroup> |
| </CCol> |
| <CCol xs={12}> |
| <CFormLabel className="visually-hidden" htmlFor="inlineFormSelectPref"> |
| Preference |
| </CFormLabel> |
| <CFormSelect id="inlineFormSelectPref"> |
| <option>Choose...</option> |
| <option value="1">One</option> |
| <option value="2">Two</option> |
| <option value="3">Three</option> |
| </CFormSelect> |
| </CCol> |
| <CCol xs={12}> |
| <CFormCheck type="checkbox" id="inlineFormCheck" label="Remember me" /> |
| </CCol> |
| <CCol xs={12}> |
| <CButton color="primary" type="submit"> |
| Submit |
| </CButton> |
| </CCol> |
| </CForm> |
| </DocsExample> |
| </CCardBody> |
| </CCard> |
| </CCol> |
| </CRow> |
| ) |
| } |
|
|
| export default Layout |
|
|