Invision UI v.19.6.0-0

Getting Started

  • Running Invision UI
  • UI Component Anatomy
  • Authoring SCSS
  • Authoring Presentational Behavior

Component Foundations

  • SCSS Authoring
    • Mixins & Variables
    • Stateful Classes
  • State Guidance
    • Empty/Zero State
    • Loading State
  • Utilities
    • Align
    • Display
    • Flexbox
    • Font Size
    • Layout
    • Offset
    • Position
    • Overflow
    • Size
    • Spacing
    • Text
  • Layout
    • Arrange [Deprectated]
    • Divided Columns
    • Embed Video
    • Full and Center
    • Fill [Deprectated]
    • Grid
    • Media Blocks
    • Panels
    • Vertical Layouts
  • Media Queries
  • Angular Behaviors
    • App Theme Directive
    • Auto Focus Input
    • Filters
    • Popup (modal dialog) Manager
    • Tether (tooltip/dropdown) Manager
    • Resize Sensor
    • Watchers

UI Component Library

  • Content & Containment
    • Active Translation
    • Auto Fit Text
    • Address
    • Basic & Input Table
    • Brand Logo/Slogan
    • Call to Action - Empty State
    • Carousel
    • Cart
    • Choice
    • Collapsible Container
    • Copyright Footer
    • Coupon Redeemer
    • Content
    • Date Relative Display
    • Definition Lists
    • Delimited List
    • Details
    • Expiration Date Display
    • Feature Toggle
    • Form Section Heading
    • Header
    • Heading
    • Heading With Annotation
    • Icons
    • Interaction Details
    • Labeled Balance
    • Link
    • Main Container
    • Metadata Card
    • Metadata List Item
    • Offering QuickView
    • Payment Instrument
    • Preference Dialog
    • Pricing Plan Decoration
    • Product Availability
    • Product Details
    • Product Image
    • Quick Info Panel
    • Remark
    • Renewal Column
    • Richlist Filterbar
    • Richlist Wrapper
    • Scrollable Horizontal List
    • Search Card
    • Search Panel
    • Section
    • Selectable Option
    • Smart Truncate
    • Status Grid
    • Tooltip
  • Data Visualizations
    • Bill Runs
    • Comparison Table
    • Datatable
    • Progress Tracker
    • Schedules
    • Query Builder
  • Dialogs
    • Confirmation Dialog
    • Dialog
    • Rich List Dialog
    • Wait Dialog
  • Forms and Filters
    • Additional Properties
    • Autocomplete
    • 3 Field Date Input
    • Checkbox
    • Credit Card
    • Bulk Action Bar
    • Buttons
    • Confirmation Button
    • Date Picker
    • E-Check
    • Entity Specification
    • External Bill
    • External Gift Card
    • Focus Group
    • Forms
    • Filter Bar
    • Filter Dropdowns
    • Gift Card
    • Grouped Check Filters
    • Inputs
    • Input Select Combo
    • Monetary Input
    • Multi Dropdown Selector
    • Multiple Numeric Input
    • Monetary Range Input
    • Password Unmask Button
    • Select
    • Select Button Or Stepper
    • Select Or Text Input
    • Stepper
    • Tag Dropdown
  • Navigation & Flow
    • Back Banner
    • Back Component
    • Breadcrumbs
    • Details Pager
    • Expandable Section
    • Infinite Scroll
    • Open New Window
    • Pager
    • Fancy Richlist
    • Standard Navigator
    • Status Indicator
    • Step Progress Bar
    • Step Progress Indicator
    • Tab Card
    • Tab Panel
    • Tier Navigator
    • Wizard
  • Notifications
    • Loading Indicator
    • Toast Notifications
  • Deprecated
    • Content Area

Showcase

  • General
    • Simplelist
    • Richlist
    • Primary (side) Navigator
  • Customer Care
    • Case Activity List
    • Customer Care Navigator Component
    • Dashboard
    • Decisions
  • Reporting
    • Content Visualization

Unit Testing

  • Actions
  • Components
  • Selectors
  • Reducers

End-to-end Testing

Statistics

Forms

In this section

Variants
  • Form/Fieldset - "General Form Layout"
  • Fieldset - Fluid
  • Fieldset - Right Aligned
  • Fieldset - Two Labels
  • Fieldset - Grouped
  • Fieldset - Titled
  • Fieldset - Titled with action
  • Fieldset - Grouped and Titled
  • Fieldset - Required
  • Fieldset - Translatable
  • Fieldset - With buttons
  • Fieldset - With stacked radio buttons
  • Fieldset - With fancy single select
  • Fieldset - With radio buttons aligned at top of labels
  • Fieldset - Two columns
  • Fieldset - Removable
  • Search Form example
  • Brevity
  • Fit
  • Emphasized Labels
  • Error States
  • Disabled States
  • View Only
  • Wrapping
  • Dialog
  • Wide Label Dialog
  • Input/Select Combo
  • Translatable Indicator

Form/Fieldset - "General Form Layout"

This example shows a general form layout. labels to input ratio is 25%/75%. It also comes with a two item or multi-field variant.

These are form-level instructions.
Indicates a required field
Please correct the following error(s)
HTML
<div class="t-content">
    <ng-form class="c-generalForm" name="formApi" autocomplete="off">
        <div class="c-generalForm-instruction">
            These are form-level instructions.
        </div>
        <fieldset class="c-fieldset">
            <div class="c-fieldset-instruction c-fieldset-instruction--required">
                Indicates a required field
            </div>
            <div class="c-fieldset-errorContainer is-error"
                 ng-if="$ctrl.formApi.$submitted &&
                        $ctrl.formApi.$invalid">
                <div class="c-fieldset-errorSummary u-flex u-flexMiddle">
                    <inv-icon glyph="'exclamation-circle'" class="u-mr"></inv-icon> Please correct the following error(s)
                </div>
                <ul class="c-fieldset-errorList">
                    <li ng-repeat="error in $ctrl.formErrors" ng-bind="::error"></li>
                </ul>
            </div>
            <div class="c-fieldset-item is-required"
                 ng-class="{'is-error': (formApi.FirstName.$touched || formApi.$submitted) && formApi.FirstName.$invalid}">
                <label for="firstName">First Name</label>
                <input id="firstName" type="text" placeholder="First Name" required name="FirstName" ng-model="FirstName">
            </div>
            <div class="c-fieldset-item is-required">
                <label for="lastName">Last Name</label>
                <input id="lastName" type="text" placeholder="Last Name" required name="LastName" ng-model="LastName">
            </div>
            <div class="c-fieldset-item">
                <label for="address1">Address Line 1</label>
                <input id="address1" type="text" placeholder="Address Line 1">
            </div>
            <div class="c-fieldset-item">
                <label for="address2">Address Line 2</label>
                <input id="address2" type="text" placeholder="Address Line 2">
            </div>
            <div class="c-fieldset-item">
                <label for="city">City</label>
                <input id="city" type="text" placeholder="City">
            </div>
            <div class="c-fieldset-items c-fieldset-items--two">
                <div class="c-fieldset-item">
                    <label for="state">State/Region/Province</label>
                    <div class="c-select">
                        <select id="state" name="State">
                            <option value="1">Nebraska</option>
                            <option value="2">Iowa</option>
                        </select>
                    </div>
                </div>
                <div class="c-fieldset-item is-required">
                    <label for="Postal">Postal Code</label>
                    <input id="Postal" type="text" placeholder="Zip" name="Postal" ng-model="Postal">
                </div>
            </div>
            <div class="c-fieldset-item c-dateFields">
                <label for="Month1">Birth Date</label>
                <input id="Month1" type="text" placeholder="MM" name="Month1" ng-model="Month1"
                    class="c-dateFields-month">
                <div class="c-dateFields-divider"></div>
                <input id="Day1" type="text" placeholder="DD" name="Day1" ng-model="Day1"
                    class="c-dateFields-day">
                <div class="c-dateFields-divider"></div>
                <input id="Year1" type="text" placeholder="YYYY" name="Year1" ng-model="Year1"
                    class="c-dateFields-year">
            </div>
            <div class="c-fieldset-item c-fieldset-item--checkbox">
                <label>Visibility
                    <inv-tooltip content="'Show or hide the input field'"></inv-tooltip>
                </label>
                <div class="c-fieldset-itemInput c-fieldset-items c-fieldset-items--fill">
                    <div class="c-checkbox">
                        <input type="checkbox" value="Stuff" id="IsVisible" name="IsVisible" ng-model="IsVisible" ng-init="IsVisible = true">
                        <label for="IsVisible">Visible</label>
                    </div>
                    <input id="optional" type="text" placeholder="Optionally Visible Field" ng-if="IsVisible">
                </div>
            </div>
            <div class="c-fieldset-item c-fieldset-item--radioButtons is-required"
                 ng-class="{'is-error': (formApi.Visibility.$touched || formApi.$submitted) && formApi.Visibility.$invalid}">
                <label for="privacy">Privacy</label>
                <input type="hidden" id="privacy" name="Privacy" ng-model="Privacy">
                <div class="c-radioButtons">
                    <div class="c-radioButtons-button">
                        <input type="radio" required
                               id="privacy_private" value="1" name="_Privacy" ng-model="Privacy"
                               ng-blur="$ctrl.formApi.Privacy.$setTouched()">
                        <label for="privacy_private">Private</label>
                    </div>
                    <div class="c-radioButtons-button">
                        <input type="radio" required
                               id="privacy_public" value="2" name="_Privacy" ng-model="Privacy"
                               ng-blur="formApi.Privacy.$setTouched()">
                        <label for="privacy_public">Public</label>
                    </div>
                    <label class="c-fieldset-itemErrorMessage"
                           ng-if="formApi.Privacy.$invalid"
                           ng-bind="::error"
                           ng-repeat="error in formErrors.Privacy"></label>
                </div>
           </div>
           <div class="c-fieldset-item c-fieldset-item--expanded">
                <label for="decription1">Description</label>
                <textarea id="decription1" placeholder="Add a description here"></textarea>
           </div>
           <div class="c-fieldset-item c-fieldset-iconLink">
               <label for="food">Favorite Food</label>
               <inv-advanced-select
                   id="food"
                   dialog-title="'Select Favourite Food'"
                   options="[{name: 'Mexican', dish: 'Taco'}, {name: 'Italian', dish: 'Pasta'}]"
                   primary-label-key="'name'"
                   secondary-label-key="'dish'"
                   value="{name: 'Italian', dish: 'Taco'}"
                   placeholder="'Select Food'">
               </inv-advanced-select>
               <inv-tooltip content="'Extra information about the item'"></inv-tooltip>
           </div>
        </fieldset>
    </ng-form>
</div>

Fieldset - Fluid

In reduced width scenarios, we can use a state to create a fluid form. This can be done with the `.is-fluid` state class.

HTML
<div class="t-content">
    <ng-form class="c-generalForm" autocomplete="off">
        <fieldset class="c-fieldset is-fluid">
            <div class="c-fieldset-item" ng-required>
                <label for="firstName2">First Name</label>
                <input id="firstName2" type="text" placeholder="First Name">
            </div>
            <div class="c-fieldset-item is-required">
                <label for="lastName2">Last Name</label>
                <input id="lastName2" type="text" placeholder="Last Name">
            </div>
            <div class="c-fieldset-item">
                <label for="address12">Address Line 1</label>
                <input id="address12" type="text" placeholder="Address Line 1">
            </div>
            <div class="c-fieldset-item">
                <label for="address22">Address Line 2</label>
                <input id="address22" type="text" placeholder="Address Line 2">
            </div>
            <div class="c-fieldset-item">
                <label for="city2">City</label>
                <input id="city2" type="text" placeholder="City">
            </div>
            <div class="c-fieldset-items c-fieldset-items--two">
                <div class="c-fieldset-item">
                    <label for="state2">State/Region/Province</label>
                    <div class="c-select">
                        <select name="state" id="state2">
                            <option selected disabled>Select a state...</option>
                            <option value="1">Nebraska</option>
                            <option value="2">Iowa</option>
                        </select>
                    </div>
                </div>
                <div class="c-fieldset-item is-required">
                    <label for="postal2">Postal Code</label>
                    <input id="postal2" type="text" placeholder="Zip">
                </div>
            </div>
            <div class="c-fieldset-item">
                <label>Visibility
                    <inv-tooltip content="'Show or hide the input field'"></inv-tooltip>
                </label>
                <div class="c-checkbox">
                    <input type="checkbox" value="stuff" id="isVisible2" checked>
                    <label for="isVisible2">Visible</label>
                </div>
            </div>
            <div class="c-fieldset-item">
                <label>Privacy</label>
                <div class="c-radioButtons">
                    <div class="c-radioButtons-button">
                        <input type="radio"
                               id="private2" value="1" name="visibility2" checked/>
                        <label for="private2">Private</label>
                    </div>
                    <div class="c-radioButtons-button">
                        <input type="radio"
                               id="public2" value="2" name="visibility2"/>
                        <label for="public2">Public</label>
                    </div>
                </div>
            </div>
            <div class="c-fieldset-item c-fieldset-iconLink">
                <label for="food">Favorite Food</label>
                <inv-advanced-select
                    id="food"
                    dialog-title="'Select Favourite Food'"
                    options="[{name: 'Mexican', dish: 'Taco'}, {name: 'Italian', dish: 'Pasta'}]"
                    primary-label-key="'name'"
                    secondary-label-key="'dish'"
                    value="{name: 'Italian', dish: 'Taco'}"
                    placeholder="'Select Food'">
                </inv-advanced-select>
                <inv-tooltip content="'Extra information about the item'"></inv-tooltip>
            </div>
        </fieldset>
    </ng-form>
</div>

Fieldset - Right Aligned

This example demonstrates right alined content in a fieldset.

HTML
<div class="t-content">
    <ng-form class="c-generalForm" autocomplete="off">
        <fieldset class="c-fieldset c-fieldset--rightAligned">
            <div class="c-fieldset-item" ng-required>
                <label for="firstName2">First Name</label>
                <input id="firstName2" type="text" placeholder="First Name">
            </div>
            <div class="c-fieldset-item is-required">
                <label for="lastName2">Last Name</label>
                <input id="lastName2" type="text" placeholder="Last Name">
            </div>
        </fieldset>
    </ng-form>
</div>

Fieldset - Two Labels

Fieldset with two labels.

HTML
<div class="t-content">
    <ng-form class="c-generalForm" autocomplete="off">
        <fieldset class="c-fieldset">
            <div class="c-fieldset-item c-fieldset-item--twoLabels is-required">
                <label for="firstName">Name</label>
                <div class="c-fieldset-multipleItems">
                    <div class="c-fieldset-multipleItem">
                        <label for="firstName">First</label>
                        <input id="firstName" type="text" placeholder="First Name">
                    </div>

                    <div class="c-fieldset-multipleItem">
                        <label for="middleName">Middle</label>
                        <input id="middleName" type="text" placeholder="Middle Name">
                    </div>

                    <div class="c-fieldset-multipleItem">
                        <label for="Surname">Surname</label>
                        <input id="Surname" type="text" placeholder="Surname">
                    </div>
                </div>
            </div>
        </fieldset>
    </ng-form>
</div>

Fieldset - Grouped

This is used to add a border to the fieldset.

HTML
<div class="t-content">
    <ng-form class="c-generalForm" autocomplete="off">
        <fieldset class="c-fieldset c-fieldset--grouped">
            <div class="c-fieldset-item" ng-required>
                <label for="firstName2">First Name</label>
                <input id="firstName2" type="text" placeholder="First Name">
            </div>
            <div class="c-fieldset-item is-required">
                <label for="lastName2">Last Name</label>
                <input id="lastName2" type="text" placeholder="Last Name">
            </div>
        </fieldset>
    </ng-form>
</div>

Fieldset - Titled

This is used to add a title and separator to the fieldset.

NOTE: the titled variant assumes a white content background; applying this to non-white backgrounded fieldsets will look strange.
Payment Method
Additional
Title With Selector
HTML
<span><i>NOTE: the titled variant assumes a white content background; applying
        this to non-white backgrounded fieldsets will look strange.</i></span>
<br>
<div class="t-content">
    <ng-form class="c-generalForm" autocomplete="off">
        <fieldset class="c-fieldset c-fieldset--titled">
            <div class="c-fieldset-title">Payment Method</div>
            <div class="c-fieldset-item" ng-required>
                <label for="firstName2">First Name</label>
                <input id="firstName2" type="text" placeholder="First Name">
            </div>
            <div class="c-fieldset-item is-required">
                <label for="lastName2">Last Name</label>
                <input id="lastName2" type="text" placeholder="Last Name">
            </div>
        </fieldset>

        <fieldset class="c-fieldset c-fieldset--titled">
            <div class="c-fieldset-title">Additional
                <inv-tooltip content="'Tooltip text'"></inv-tooltip>
            </div>
            <div class="c-fieldset-item">
                <label for="nickname">Nickname</label>
                <input id="nickname" type="text" placeholder="Nickname">
            </div>
        </fieldset>

        <fieldset class="c-fieldset c-fieldset--titled c-fieldset--editable">
            <div class="c-fieldset-title">
                <div class="is-required">Title With Selector</div>
                <inv-date-picker class="u-ml+"></inv-date-picker>
                <inv-tooltip class="u-ml+" content="'Tooltip text'"></inv-tooltip>
            </div>
            <div class="c-fieldset-item" ng-required>
                <label for="other">Other</label>
                <input id="other" type="text" placeholder="Other">
            </div>
        </fieldset>
    </ng-form>
</div>

Fieldset - Titled with action

This is used to group form elements providing a title and action

Form Group Title
HTML
<div class="t-content">
    <ng-form class="c-generalForm" name="formApi">
        <fieldset class="c-fieldset">
            <div class="c-formGroupHeading">
                <div class="c-formGroupHeading-title">Form Group Title</div>
                <div class="c-formGroupHeading-border"></div>
                <div class="c-formGroupHeading-action u-ml+">
                    <button class="c-selectButton">Clear</button>
                </div>
            </div>

            <div class="c-fieldset-item is-required"
                 ng-class="{'is-error': (formApi.FirstName.$touched || formApi.$submitted) && formApi.FirstName.$invalid}">
                <label for="firstName">First Name</label>
                <input id="firstName" type="text" placeholder="First Name" required name="FirstName" ng-model="FirstName">
            </div>
            <div class="c-fieldset-item is-required">
                <label for="lastName">Last Name</label>
                <input id="lastName" type="text" placeholder="Last Name" required name="LastName" ng-model="LastName">
            </div>
        </fieldset>
    </ng-form>
</div>

Fieldset - Grouped and Titled

This example simply combines the titled and grouped variants.

Payment Method
HTML
<div class="t-content">
    <ng-form class="c-generalForm" autocomplete="off">
        <fieldset class="c-fieldset c-fieldset--grouped c-fieldset--titled">
            <legend class="c-fieldset-title">Payment Method</legend>
            <div class="c-fieldset-item" ng-required>
                <label for="firstName2">First Name</label>
                <input id="firstName2" type="text" placeholder="First Name">
            </div>
            <div class="c-fieldset-item is-required">
                <label for="lastName2">Last Name</label>
                <input id="lastName2" type="text" placeholder="Last Name">
            </div>
        </fieldset>
    </ng-form>
</div>

Fieldset - Required

This is used to indicate that an entire fieldset is required.

NOTE: the titled variant assumes a white content background; applying this to non-white backgrounded fieldsets will look strange.
Payment Method
HTML
<span><i>NOTE: the titled variant assumes a white content background; applying
        this to non-white backgrounded fieldsets will look strange.</i></span>
<div class="t-content">
    <ng-form class="c-generalForm" autocomplete="off">
        <fieldset class="c-fieldset c-fieldset--titled">
            <div class="c-fieldset-title is-required">Payment Method</div>
            <div class="c-fieldset-item" ng-required>
                <label for="firstName2">First Name</label>
                <input id="firstName2" type="text" placeholder="First Name">
            </div>
            <div class="c-fieldset-item">
                <label for="lastName2">Last Name</label>
                <input id="lastName2" type="text" placeholder="Last Name">
            </div>
        </fieldset>
    </ng-form>
</div>

Fieldset - Translatable

This example shows a general form layout that uses the --translatable variation. This places the translation icon to the right of the input fields.

HTML
<div class="t-content">
    <ng-form class="c-generalForm" name="formApi" autocomplete="off">
        <fieldset class="c-fieldset c-fieldset--translatable">
            <div class="c-fieldset-item is-required" ng-class="{'is-error': (formApi.FirstName.$touched || formApi.$submitted) && formApi.FirstName.$invalid}">
                <label for="firstName">First Name</label>
                <input id="firstName" type="text" placeholder="First Name" required name="FirstName" ng-model="FirstName">
            </div>
            <div class="c-fieldset-item is-required">
                <label for="lastName">Last Name</label>
                <input id="lastName" type="text" placeholder="Last Name" required name="LastName" ng-model="LastName">
            </div>
            <div class="c-fieldset-item c-fieldset-item--translatable">
                <label for="address1">Address Line 1</label>
                <input id="address1" type="text" placeholder="Address Line 1">
            </div>

        </fieldset>
    </ng-form>
</div>

Fieldset - With buttons

This example shows buttons being used for a primary and secondary action in the application.

Cancel
Use Selected Payment Method
HTML
<div class="t-content">
    <ng-form class="c-generalForm" autocomplete="off">
        <fieldset class="c-fieldset is-fluid">
            <div class="c-fieldset-item">
                <label for="firstName2">First Name</label>
                <input id="firstName2" type="text" placeholder="First Name">
            </div>
            <div class="c-fieldset-item">
                <label for="lastName2">Last Name</label>
                <input id="lastName2" type="text" placeholder="Last Name">
            </div>
            <div class="c-fieldset-buttons u-flex u-flexEnd u-ph+">
                <div class="c-button c-button--secondary u-mr++">Cancel</div>
                <div class="c-button c-button--primary">Use Selected Payment Method</div>
            </div>
        </fieldset>
    </ng-form>
</div>

Fieldset - With stacked radio buttons

This is used for radio options that are to be stacked rather than inline.

HTML
<div class="t-content">
    <ng-form class="c-generalForm" name="formApi" autocomplete="off">
        <fieldset class="c-fieldset">

            <div class="c-fieldset-item c-fieldset-item--expanded">
                <label class="c-fieldset-itemLabel" for="Privacy">Privacy Options</label>
                <input type="hidden" id="Privacy" name="Privacy" ng-model="Privacy">

                <div class="c-radioButtons c-radioButtons--stacked">
                    <div class="c-radioButtons-button">
                        <input type="radio" required
                            id="privacy_private" value="1" name="_Privacy" ng-model="Privacy">
                        <label for="privacy_private">First label for the Privacy radio option</label>
                    </div>
                    <div class="c-radioButtons-button">
                        <input type="radio" required
                            id="privacy_public" value="2" name="_Privacy" ng-model="Privacy">
                        <label for="privacy_public">Second label for the Privacy radio option</label>
                    </div>
                </div>
            </div>
        </fieldset>
    </ng-form>
</div>

Fieldset - With fancy single select

This is used for fancy single select within a form

HTML
<div class="t-content">
    <ng-form class="c-generalForm" name="formApi" autocomplete="off">
        <fieldset class="c-fieldset">
            <div class="c-fieldset-item" form-field-error-state="discount">
                <label for="discount">Discount</label>
                <inv-fancy-single-select
                    id="discount"
                    form-name="discount"
                    options="[{ id: 1, value: 1, text: '50% off' }]"
                    is-required="true"
                    is-removable="false"
                    filter-placeholder-text="'Select'">
                </inv-fancy-single-select>
            </div>
        </fieldset>
    </ng-form>
</div>

Fieldset - With radio buttons aligned at top of labels

This is used for radio options that want the input aligned with the start of the label.

HTML
<div class="t-content">
    <ng-form class="c-generalForm" name="formApi" autocomplete="off">
        <fieldset class="c-fieldset">

            <div class="c-fieldset-item c-fieldset-item--expanded">
                <label class="c-fieldset-itemLabel" for="Pricing">Pricing Options</label>
                <input type="hidden" id="Pricing" name="Pricing" ng-model="Pricing">

                <div class="c-radioButtons c-radioButtons--stacked c-radioButtons--topAligned" style="width:100px;">
                    <div class="c-radioButtons-button">
                        <input type="radio" required
                               id="pricing_1" value="1" name="_Pricing" ng-model="Pricing">
                        <label for="pricing_1">First label for the Pricing radio option</label>
                    </div>
                    <div class="c-radioButtons-button">
                        <input type="radio" required
                               id="pricing_2" value="2" name="_Pricing" ng-model="Pricing">
                        <label for="pricing_2">Second label for the Pricing radio option</label>
                    </div>
                </div>
            </div>
        </fieldset>
    </ng-form>
</div>

Fieldset - Two columns

HTML
<div class="t-content">
    <ng-form class="c-generalForm" name="formApi" autocomplete="off">
        <fieldset>
            <!-- Flex is currently unable to be applied to fieldset elements -->
            <div class="c-fieldset c-fieldset--twoColumn">
                <div class="c-fieldset-item">
                    <label>Number</label>
                    <div class="c-select">
                        <select ng-model="a" ng-options="number for number in [1,2,3,4]"></select>
                    </div>
                </div>
                <div class="c-fieldset-item">
                    <label>Number</label>
                    <div class="c-select">
                        <select ng-model="b" ng-options="number for number in [1,2,3,4]"></select>
                    </div>
                </div>
                <div class="c-fieldset-item">
                    <label>Number</label>
                    <div class="c-select">
                        <select ng-model="c" ng-options="number for number in [1,2,3,4]"></select>
                    </div>
                </div>
                <div class="c-fieldset-item">
                    <label>Number</label>
                    <div class="c-select">
                        <select ng-model="d" ng-options="number for number in [1,2,3,4]"></select>
                    </div>
                </div>
            </div>
        </fieldset>
    </ng-form>
</div>
    

Fieldset - Removable

These are form-level instructions.
Indicates a required field
Error
Address
Error
HTML
<div class="t-content" ng-controller="FormDialogExampleController as ctrl">
    <button class="c-button" type="button" ng-click="ctrl.openDialog()">Open the Modal</button>

    <inv-popup-vault>
        <div inv-popup="ctrl.popupConfig">
            <form class="c-generalForm c-fieldsets c-fieldsets--dialog" name="dialogForm" autocomplete="off">
                <inv-dialog dialog-size="large"
                            dialog-title="'Example Form in a Dialog'"
                            dialog-type="form"
                            on-close="ctrl.closeDialog()">

                    <dialog-content>
                        <div class="c-generalForm-instruction">
                            These are form-level instructions.
                        </div>

                        <fieldset class="c-fieldset">
                            <div class="c-fieldset-instruction c-fieldset-instruction--required">
                                Indicates a required field
                            </div>

                            <div ng-if="ctrl.fields.firstName"
                                 class="c-fieldset-item is-removable is-required"
                                 form-field-error-state="CustomerName">
                                <label for="firstName">First Name</label>
                                <input id="firstName" type="text" placeholder="First Name" required name="FirstName" ng-model="FirstName">
                                <inv-icon glyph="'close_large'"
                                          class="c-fieldset-removeItemButton"
                                          ng-click="ctrl.onRemoveField('firstNname')">
                                </inv-icon>
                                <div class="c-fieldset-itemErrorMessage">Error</div>
                            </div>

                            <div ng-if="ctrl.fields.lastName"
                                 class="c-fieldset-item is-removable is-required">
                                <label for="lastName">Last Name</label>
                                <input id="lastName" type="text" placeholder="Last Name" required name="LastName" ng-model="LastName">
                                <inv-icon glyph="'close_large'"
                                          class="c-fieldset-removeItemButton"
                                          ng-click="ctrl.onRemoveField('lastName')">
                                </inv-icon>
                            </div>
                        </fieldset>
                        <fieldset class="c-fieldset c-fieldset--titled">
                            <div class="c-fieldset-title">Address</div>

                            <div ng-if="ctrl.fields.address"
                                 class="c-fieldset-item is-removable">
                                <label>Address</label>
                                <ng-form name="address" class="c-groupFieldSpace c-fieldDefaultWidth">
                                    <input id="address1" type="text" placeholder="Address Line 1" class="u-sizeFullWidth">
                                    <input id="address2" type="text" placeholder="Address Line 2" class="u-sizeFullWidth">
                                </ng-form>
                                <inv-icon glyph="'close_large'"
                                          class="c-fieldset-removeItemButton"
                                          ng-click="ctrl.onRemoveField('address')">
                                </inv-icon>
                            </div>

                            <div ng-if="ctrl.fields.location"
                                 class="c-fieldset-item is-removable"
                                 form-field-error-state="location">
                                <label for="state">Location</label>
                                <ng-form name="location" class="c-groupFieldSpace c-fieldDefaultWidth">
                                    <input id="city" type="text" placeholder="City" class="u-sizeFullWidth">
                                    <div class="c-select">
                                        <select id="state" name="State">
                                            <option value="1">Nebraska</option>
                                            <option value="2">Iowa</option>
                                        </select>
                                    </div>
                                </ng-form>
                                <inv-icon glyph="'close_large'"
                                          class="c-fieldset-removeItemButton"
                                          ng-click="ctrl.onRemoveField('location')">
                                </inv-icon>
                                <div class="c-fieldset-itemErrorMessage">Error</div>
                            </div>

                            <div ng-if="ctrl.fields.postalCode"
                                 class="c-fieldset-item is-removable">
                                <label for="Postal">Postal Code</label>
                                <input id="Postal" type="text" placeholder="Zip" name="Postal" ng-model="Postal">
                                <inv-icon glyph="'close_large'"
                                          class="c-fieldset-removeItemButton"
                                          ng-click="ctrl.onRemoveField('postalCode')">
                                </inv-icon>
                            </div>

                            <div ng-if="ctrl.fields.birthDate"
                                 class="c-fieldset-item c-dateFields is-removable">
                                <label for="Month1">Birth Date</label>
                                <ng-form name="birthDate" class="c-groupFieldSpace c-fieldDefaultWidth">
                                    <input id="Month1" type="text" placeholder="MM" name="Month1" ng-model="Month1"
                                           class="c-dateFields-month">
                                    <div class="c-dateFields-divider"></div>
                                    <input id="Day1" type="text" placeholder="DD" name="Day1" ng-model="Day1"
                                           class="c-dateFields-day">
                                    <div class="c-dateFields-divider"></div>
                                    <input id="Year1" type="text" placeholder="YYYY" name="Year1" ng-model="Year1"
                                           class="c-dateFields-year">
                                </ng-form>
                                <inv-icon glyph="'close_large'"
                                          class="c-fieldset-removeItemButton"
                                          ng-click="ctrl.onRemoveField('birthDate')">
                                </inv-icon>
                            </div>
                        </fieldset>
                        <fieldset class="c-fieldset c-fieldset--titled">
                            <div ng-if="ctrl.fields.deliveryDate"
                                 class="c-fieldset-item c-dateFields is-removable">
                                <label>Delivery Date</label>
                                <div class="c-fieldDefaultWidth">
                                    <inv-date-range
                                        start-date="ctrl.deliveryDate.start"
                                        end-date="ctrl.deliveryDate.end"
                                        on-date-range-changed=""
                                        entry-mode="date-time">
                                    </inv-date-range>
                                </div>
                                <inv-icon glyph="'close_large'"
                                          class="c-fieldset-removeItemButton"
                                          ng-click="ctrl.onRemoveField('deliveryDate')">
                                </inv-icon>
                            </div>

                            <div ng-if="ctrl.fields.checkbox"
                                 class="c-fieldset-item c-fieldset-item--checkbox is-removable">
                                <label>Visibility
                                    <inv-tooltip content="'Show or hide the input field'"></inv-tooltip>
                                </label>
                                <ng-form name="checkbox" class="c-groupFieldSpace c-fieldDefaultWidth">
                                    <div class="c-checkbox">
                                        <input type="checkbox" value="Stuff" id="IsVisible" name="IsVisible" ng-model="IsVisible">
                                        <label for="IsVisible">Here is a fairly long checkbox description</label>
                                    </div>
                                    <div class="c-checkbox">
                                        <input type="checkbox" value="Something" id="Checkbox2" name="Checkbox2" ng-model="Checkbox2">
                                        <label for="Checkbox2">Something</label>
                                    </div>
                                </ng-form>
                                <inv-icon glyph="'close_large'"
                                          class="c-fieldset-removeItemButton"
                                          ng-click="ctrl.onRemoveField('checkbox')">
                                </inv-icon>
                            </div>

                            <div ng-if="ctrl.fields.radio"
                                 class="c-fieldset-item c-fieldset-item--radioButtons is-removable is-required"
                                 form-field-error-state="Privacy">
                                <label for="privacy">Privacy</label>
                                <input type="hidden" id="privacy" name="Privacy" ng-model="Privacy">
                                <div class="c-radioButtons">
                                    <div class="c-radioButtons-button">
                                        <input type="radio" required
                                               id="privacy_private1" value="1" name="_Privacy" ng-model="Privacy"
                                               ng-blur="ctrl.dialogForm.Privacy.$setTouched()">
                                        <label for="privacy_private1">Private</label>
                                    </div>
                                    <div class="c-radioButtons-button">
                                        <input type="radio" required
                                               id="privacy_public2" value="2" name="_Privacy" ng-model="Privacy"
                                               ng-blur="dialogForm.Privacy.$setTouched()">
                                        <label for="privacy_public2">Public</label>
                                    </div>

                                </div>
                                <inv-icon glyph="'close_large'"
                                          class="c-fieldset-removeItemButton"
                                          ng-click="ctrl.onRemoveField('radio')">
                                </inv-icon>
                                <label class="c-fieldset-itemErrorMessage"
                                      ng-if="dialogForm.Privacy.$invalid"
                                      ng-bind="::error"
                                      ng-repeat="error in formErrors.Privacy">
                                </label>
                            </div>

                            <div ng-if="ctrl.fields.description"
                                 class="c-fieldset-item c-fieldset-item--expanded is-removable">
                                <label for="decription1">Description</label>
                                <textarea id="decription1" placeholder="Add a description here"></textarea>
                                <inv-icon glyph="'close_large'"
                                          class="c-fieldset-removeItemButton"
                                          ng-click="ctrl.onRemoveField('description')">
                                </inv-icon>
                            </div>
                        </fieldset>
                    </dialog-content>
                    <dialog-footer>
                        <button class="c-button"
                                ng-click="ctrl.showAllFields()">Restore Removed</button>
                    </dialog-footer>
                </inv-dialog>
            </form>
        </div>
    </inv-popup-vault>
</div>

Search Form example

A simple form, typically consisting of a single text input and submit button.

HTML
<div class="t-content">
    <ng-form class="c-searchForm" autocomplete="off">
        <input type="text"
            class="c-searchForm-searchInput"
            placeholder="Find by term..." />
        <button class="c-selectButton u-ml+">Go</button>
    </ng-form>
</div>

Brevity

Fieldset items have variations that can be added to help express the implicit input sizes for briefer content.

HTML
<div class="t-content">
    <ng-form class="c-generalForm" autocomplete="off">
        <fieldset class="c-fieldset">
            <div class="c-fieldset-item c-fieldset-item--brief" ng-required>
                <label for="firstName">First Name</label>
                <input id="firstName" type="text" placeholder="First Name">
            </div>
            <div class="c-fieldset-item  c-fieldset-item--brief is-required">
                <label for="lastName">Last Name</label>
                <input id="lastName" type="text" placeholder="Last Name">
            </div>
            <div class="c-fieldset-item">
                <label for="address1">Address Line 1</label>
                <input id="address1" type="text" placeholder="Address Line 1">
            </div>
            <div class="c-fieldset-item">
                <label for="address2">Address Line 2</label>
                <input id="address2" type="text" placeholder="Address Line 2">
            </div>
            <div class="c-fieldset-item c-fieldset-item--mid">
                <label for="city">City</label>
                <input id="city" type="text" placeholder="City">
            </div>
            <div class="c-fieldset-items c-fieldset-items--two">
                <div class="c-fieldset-item">
                    <label for="state">State/Region/Province</label>
                    <div class="c-select">
                        <select name="state" id="state">
                            <option value="1">Nebraska</option>
                            <option value="2">Iowa</option>
                        </select>
                    </div>
                </div>
                <div class="c-fieldset-item is-required">
                    <label for="postal">Postal Code</label>
                    <input id="postal" type="text" placeholder="Zip">
                </div>
            </div>
            <div class="c-fieldset-item c-fieldset-item--small">
                <label for="count">Count</label>
                <input id="count" type="text" placeholder="Count">
            </div>
        </fieldset>
    </ng-form>
</div>

Fit

This is a variation that fits a select box to the size of the data, down to a minimum width.

HTML
<div class="t-content">
    <ng-form class="c-generalForm" autocomplete="off">
        <fieldset class="c-fieldset">
            <div class="c-fieldset-items">
                <div class="c-fieldset-item c-fieldset-item--fit">
                    <label for="state">State/Region/Province</label>
                    <div class="c-select">
                        <select name="state" id="state">
                            <option value="1">Nebraska</option>
                            <option value="2">Iowa</option>
                        </select>
                    </div>
                </div>
            </div>
            <div class="c-fieldset-items">
                <div class="c-fieldset-item c-fieldset-item--fit">
                    <label for="state">Count</label>
                    <div class="c-select">
                        <select name="state" id="state">
                            <option value="1">1</option>
                            <option value="2">2</option>
                        </select>
                    </div>
                </div>
            </div>
        </fieldset>
    </ng-form>
</div>

Emphasized Labels

This emphasizes the labels by showing them in bold text.

HTML
<div class="t-content">
    <ng-form class="c-generalForm" autocomplete="off">
        <fieldset class="c-fieldset is-fluid">
            <div class="c-fieldset-item c-fieldset-item--emphasized" ng-required>
                <label for="firstName2">First Name</label>
                <input id="firstName2" type="text" placeholder="First Name">
            </div>
            <div class="c-fieldset-item c-fieldset-item--emphasized is-required">
                <label for="lastName2">Last Name</label>
                <input id="lastName2" type="text" placeholder="Last Name">
            </div>
            <div class="c-fieldset-item c-fieldset-item--emphasized">
                <label for="address12">Address Line 1</label>
                <input id="address12" type="text" placeholder="Address Line 1">
            </div>
            <div class="c-fieldset-item c-fieldset-item--emphasized">
                <label for="address22">Address Line 2</label>
                <input id="address22" type="text" placeholder="Address Line 2">
            </div>
            <div class="c-fieldset-item c-fieldset-item--emphasized">
                <label for="city2">City</label>
                <input id="city2" type="text" placeholder="City">
            </div>
        </fieldset>
    </ng-form>
</div>

Error States

This shows all the available error related UI states and content areas in a form fieldset.

Note that is-error should be set on the -errorContainer as well as any -item that contains an error.

These are form-level instructions, which should appear beneath any errors.
HTML
<p>Note that <code>is-error</code> should be set on the <code>-errorContainer</code> as well as any <code>-item</code> that contains an error.</p>
<div class="t-content">
    <form class="c-generalForm" autocomplete="off" ng-controller="formErrorsExampleController as errorController" ng-submit="" novalidate>
        <fieldset class="c-fieldset">
            <form-error-messages
                extra-error-messages="['This is an extra error message.','This is a good place to convey errors from the API.']">
            </form-error-messages>
            <div class="c-generalForm-instruction">
                These are form-level instructions, which should appear beneath any errors.
            </div>
            <div class="c-fieldset-item is-required"
                form-field-error-state="nameOnCard"
                form-field-locale-key="::errorController.UILocaleKeys.CREDIT_CARD.NAME_ON_CARD">
                <label for="nameOnCard" ng-bind="::errorController.UILocaleKeys.CREDIT_CARD.NAME_ON_CARD | i18n"></label>
                <input id="nameOnCard" name="nameOnCard" type="text" ng-model="errorController.nameOnCard" placeholder="Name on Card" required>
                <form-field-error-messages name="nameOnCard"></form-field-error-messages>
            </div>
            <div class="c-fieldset-item is-required"
                form-field-error-state="cardNumber"
                form-field-locale-key="::errorController.UILocaleKeys.CREDIT_CARD.CARD_NUMBER">
                <label for="cardNumber" ng-bind="::errorController.UILocaleKeys.CREDIT_CARD.CARD_NUMBER | i18n"></label>
                <input id="cardNumber" name="cardNumber" type="text" ng-model="errorController.cardNumber" placeholder="Credit Card Number" required
                    ng-minlength="12"
                    ng-maxlength="19">
                <form-field-error-messages name="cardNumber"></form-field-error-messages>
            </div>
            <div class="c-fieldset-items c-fieldset-items--two">
                <div class="c-fieldset-item is-required"
                    form-field-error-state="cardType"
                    form-field-locale-key="::errorController.UILocaleKeys.CREDIT_CARD.CARD_TYPE">
                    <label for="cardType" ng-bind="::errorController.UILocaleKeys.CREDIT_CARD.CARD_TYPE | i18n"></label>
                    <div class="c-select">
                        <select name="cardType" id="cardType" ng-model="errorController.cardType" required>
                            <option value="1">Visa</option>
                            <option value="2">Master</option>
                        </select>
                    </div>
                    <form-field-error-messages name="cardType"></form-field-error-messages>
                </div>
                <div class="c-fieldset-item is-required is-required"
                    form-field-error-state="cvv"
                    form-field-locale-key="::errorController.UILocaleKeys.CREDIT_CARD.CVV">
                    <label for="cvv" ng-bind="::errorController.UILocaleKeys.CREDIT_CARD.CVV | i18n"></label>
                    <input id="cvv" name="cvv" type="text" placeholder="xxx" ng-model="errorController.cvv" required>
                    <form-field-error-messages name="cvv"></form-field-error-messages>
                 </div>

            </div>
            <div class="c-fieldset-item c-fieldset-item--inlineError is-required"
                form-field-error-state="isVisibleError"
                error-message-locale-keys="{required:errorController.UILocaleKeys.CREDIT_CARD.ERRORS.REQUIRED_EXPIRATION}">
                <label>Visibility</label>
                <div class="c-checkbox">
                    <input type="checkbox" value="stuff" id="isVisibleError" ng-model="errorController.isVisibleError" name="isVisibleError" required />
                    <label for="isVisibleError">Visible</label>
                </div>
                <form-field-error-messages name="isVisibleError"></form-field-error-messages>
            </div>
            <div class="c-fieldset-item is-required"
                form-field-error-state="visibilityRadio"
                error-message-locale-keys="{required:'Select a radio option!'}">
                <label>Visibility</label>
                <div class="c-radioButtons">
                    <div class="c-radioButtons-button">
                        <input type="radio"
                            required
                            ng-model="errorController.visibilityRadio"
                            id="private" value="1" name="visibilityRadio" />
                        <label for="private">Private</label>
                    </div>
                    <div class="c-radioButtons-button">
                        <input type="radio"
                            required
                            ng-model="errorController.visibilityRadio"
                            id="public" value="2" name="visibilityRadio" />
                        <label for="public">Public</label>
                    </div>
                </div>
                <form-field-error-messages name="visibilityRadio"></form-field-error-messages>
            </div>
            <div class="c-fieldset-item is-required"
                form-field-error-state="date"
                form-field-locale-key="::errorController.UILocaleKeys.CREDIT_CARD.EXPIRATION_DATE">
                <label for="date">Date</label>
                <three-field-date-input
                    required
                    min-date="errorController.minDate"
                    max-date="errorController.maxDate"
                    ng-model="errorController.date"
                    id="date"
                    name="date">
                </three-field-date-input>
                <form-field-error-messages name="date"></form-field-error-messages>
            </div>
            <div class="c-fieldset-buttons u-flex u-flexEnd u-ph+">
                <button type="button" class="c-button c-button--secondary u-mr++">Cancel</button>
                <button class="c-button c-button--primary">Use Selected Payment Method</button>
            </div>
        </fieldset>
    </form>
</div>

Disabled States

This shows disabled UI states in a form fieldset.

Note that is-disabled should be set on the -item element to properly style the label.

HTML
<p>Note that <code>is-disabled</code> should be set on the <code>-item</code> element to properly style the label.</p>
<div class="t-content">
    <ng-form class="c-generalForm" autocomplete="off">
        <fieldset class="c-fieldset">
            <div class="c-fieldset-item is-required is-disabled">
                <label for="firstName">First Name</label>
                <input id="firstName" type="text" placeholder="First Name" ng-disabled="true">
            </div>
            <div class="c-fieldset-item is-required is-disabled">
                <label for="lastName">Last Name</label>
                <input id="lastName" type="text" placeholder="Last Name" ng-disabled="true">
            </div>
            <div class="c-fieldset-item is-disabled">
                <label for="address1">Address Line 1</label>
                <input id="address1" type="text" placeholder="Address Line 1" ng-disabled="true">
            </div>
            <div class="c-fieldset-item is-disabled">
                <label for="address2">Address Line 2</label>
                <input id="address2" type="text" placeholder="Address Line 2" ng-disabled="true">
            </div>
            <div class="c-fieldset-item is-disabled">
                <label for="city">City</label>
                <input id="city" type="text" placeholder="City" ng-disabled="true">
            </div>
            <div class="c-fieldset-items c-fieldset-items--two">
                <div class="c-fieldset-item is-disabled">
                    <label for="state">State/Region/Province</label>
                    <div class="c-select is-disabled">
                        <select name="state" id="state" ng-disabled="true">
                            <option value="1">Nebraska</option>
                            <option value="2">Iowa</option>
                        </select>
                    </div>
                </div>
                <div class="c-fieldset-item is-required is-disabled">
                    <label for="Postal">Postal Code</label>
                    <input id="Postal" type="text" placeholder="Zip" name="Postal" ng-model="Postal" ng-disabled="true">
                </div>
            </div>
            <div class="c-fieldset-item c-dateFields is-disabled">
                <label for="Month1">Birth Date</label>
                <input id="Month1" type="text" placeholder="MM" name="Month1" ng-model="Month1" ng-disabled="true"
                       class="c-dateFields-month">
                <div class="c-dateFields-divider"></div>
                <input id="Day1" type="text" placeholder="DD" name="Day1" ng-model="Day1" ng-disabled="true"
                       class="c-dateFields-day">
                <div class="c-dateFields-divider"></div>
                <input id="Year1" type="text" placeholder="YYYY" name="Year1" ng-model="Year1" ng-disabled="true"
                       class="c-dateFields-year">
            </div>
            <div class="c-fieldset-item c-fieldset-item--checkbox is-disabled">
                <label>Visibility
                    <inv-tooltip content="'Show or hide the input field'"></inv-tooltip>
                </label>
                <div class="c-fieldset-itemInput c-fieldset-items c-fieldset-items--fill">
                    <div class="c-checkbox">
                        <input type="checkbox" value="stuff" id="isVisibleDisabled" checked ng-disabled="true">
                        <label for="isVisibleDisabled">Visible</label>
                    </div>
                    <input id="optional" type="text" placeholder="Optionally Visible Field" ng-if="false" ng-disabled="true">
                </div>
            </div>
            <div class="c-fieldset-item c-fieldset-item--radioButtons is-disabled">
                <label for="privacy">Privacy</label>
                <input type="hidden" id="privacy" name="Privacy">
                <div class="c-radioButtons">
                    <div class="c-radioButtons-button">
                        <input type="radio"
                               id="privateDisabled" value="1" name="Privacy" checked ng-disabled="true">
                        <label for="privateDisabled">Private</label>
                    </div>
                    <div class="c-radioButtons-button">
                        <input type="radio"
                               id="publicDisabled" value="2" name="Privacy" ng-disabled="true">
                        <label for="publicDisabled">Public</label>
                    </div>
                </div>
            </div>
            <div class="c-fieldset-item c-fieldset-item--expanded is-disabled">
                <label for="decription">Description</label>
                <textarea id="decription" placeholder="Add a description here" ng-disabled="true"></textarea>
            </div>
            <div class="c-fieldset-item c-fieldset-iconLink is-disabled">
                <label for="food">Favorite Food</label>
                <inv-advanced-select
                    id="food"
                    dialog-title="'Select Favourite Food'"
                    options="[{name: 'Mexican', dish: 'Taco'}, {name: 'Italian', dish: 'Pasta'}]"
                    primary-label-key="'name'"
                    secondary-label-key="'dish'"
                    value="{name: 'Italian', dish: 'Taco'}"
                    placeholder="'Select Food'">
                </inv-advanced-select>
                <inv-tooltip content="'Extra information about the item'"></inv-tooltip>
            </div>
        </fieldset>
    </ng-form>
</div>

View Only

This shows view-only UI state of a form.

First Name
Last Name
Address Line 1
Address Line 2
City
9/20/17 12:07 PM
HTML
<div class="t-content c-form c-form--viewOnly">
    <ng-form class="c-generalForm" autocomplete="off">
        <fieldset class="c-fieldset">
            <div class="c-fieldset-item" ng-required>
                <label for="firstName">First Name</label>
                <div class="c-fieldset-readOnlyValue" id="firstName">First Name</div>
            </div>
            <div class="c-fieldset-item is-required">
                <label for="lastName">Last Name</label>
                <div class="c-fieldset-readOnlyValue" id="lastName">Last Name</div>
            </div>
            <div class="c-fieldset-item">
                <label for="address1">Address Line 1</label>
                <div class="c-fieldset-readOnlyValue" id="address1">Address Line 1</div>
            </div>
            <div class="c-fieldset-item">
                <label for="address2">Address Line 2</label>
                <div class="c-fieldset-readOnlyValue" id="address2">Address Line 2</div>
            </div>
            <div class="c-fieldset-item">
                <label for="city">City</label>
                <div class="c-fieldset-readOnlyValue" id="city">City</div>
            </div>
            <div class="c-fieldset-item">
                <label for="expirationDate">Expiration Date</label>
                <div class="c-fieldset-readOnlyValue is-expired" id="expirationDate">9/20/17 12:07 PM</div>
            </div>
        </fieldset>
    </ng-form>
</div>

Wrapping

This shows both labels and error messages wrapping to the next line when space runs out. This is a global change. No additional CSS changes needed.

Well something is amiss here.
This is no good because of stuff and this takes up two lines
Zipcode issue. Adding content to make a second line
HTML
<div class="t-content">
    <ng-form class="c-generalForm" autocomplete="off">
        <div class="u-size1of2">
            <fieldset class="c-fieldset">
                <div class="c-fieldset-item" ng-required>
                    <label for="firstName">First Name for this specific form.This is a third line.This is a fourth line hopefullt</label>
                    <input id="firstName" type="text" placeholder="First Name">
                    <div class="c-fieldset-itemErrorMessage">Well something is amiss here.</div>
                </div>
                <div class="c-fieldset-items c-fieldset-items--two">
                    <div class="c-fieldset-item is-error">
                        <label for="state">State/ Region/ Province</label>
                        <div class="c-select">
                            <select name="state" id="state">
                                <option value="1">Nebraska</option>
                                <option value="2">Iowa</option>
                            </select>
                        </div>
                        <div class="c-fieldset-itemErrorMessage">This is no good because of stuff and this takes up two lines</div>
                    </div>
                    <div class="c-fieldset-item is-required is-error">
                        <label for="postal">Postal Code / Zip Code</label>
                        <input id="postal" type="text" placeholder="Zip">
                        <div class="c-fieldset-itemErrorMessage">Zipcode issue. Adding content to make a second line</div>
                    </div>
                </div>
            </fieldset>
        </div>
    </ng-form>
</div>

Dialog

Forms should be embeddable in dialogs and maintain their fieldset layout patterns.

These are form-level instructions.
Indicates a required field
Error
Address
HTML
<div class="t-content" ng-controller="FormDialogExampleController as ctrl">
    <button class="c-button" type="button" ng-click="ctrl.openDialog()">Open the Modal</button>

    <inv-popup-vault>
        <div inv-popup="ctrl.popupConfig">
            <form class="c-generalForm c-fieldsets c-fieldsets--dialog" name="dialogForm" autocomplete="off">
                <inv-dialog dialog-size="large"
                            dialog-title="'Example Form in a Dialog'"
                            dialog-type="form"
                            on-close="ctrl.closeDialog()">
                    <dialog-content>

                        <div class="c-generalForm-instruction">
                            These are form-level instructions.
                        </div>
                        <fieldset class="c-fieldset">
                            <div class="c-fieldset-instruction c-fieldset-instruction--required">
                                Indicates a required field
                            </div>
                            <div class="c-fieldset-item is-required"
                                form-field-error-state="scheduleName">
                                <label for="firstName">First Name</label>
                                <input id="firstName" type="text" placeholder="First Name" required name="FirstName" ng-model="FirstName">
                                <div class="c-fieldset-itemErrorMessage">Error</div>
                            </div>
                            <div class="c-fieldset-item is-required">
                                <label for="lastName">Last Name</label>
                                <input id="lastName" type="text" placeholder="Last Name" required name="LastName" ng-model="LastName">
                            </div>
                        </fieldset>
                        <fieldset class="c-fieldset c-fieldset--titled">
                            <div class="c-fieldset-title">Address</div>
                            <div class="c-fieldset-item">
                                <label for="address1">Address Line 1</label>
                                <input id="address1" type="text" placeholder="Address Line 1">
                            </div>
                            <div class="c-fieldset-item">
                                <label for="address2">Address Line 2</label>
                                <input id="address2" type="text" placeholder="Address Line 2">
                            </div>
                            <div class="c-fieldset-item">
                                <label for="city">City</label>
                                <input id="city" type="text" placeholder="City">
                            </div>
                            <div class="c-fieldset-items c-fieldset-items--two">
                                <div class="c-fieldset-item">
                                    <label for="state">State/Region/Province</label>
                                    <div class="c-select">
                                        <select id="state" name="State">
                                            <option value="1">Nebraska</option>
                                            <option value="2">Iowa</option>
                                        </select>
                                    </div>
                                </div>
                                <div class="c-fieldset-item is-required">
                                    <label for="Postal">Postal Code</label>
                                    <input id="Postal" type="text" placeholder="Zip" name="Postal" ng-model="Postal">
                                </div>
                            </div>
                            <div class="c-fieldset-item c-dateFields">
                                <label for="Month1">Birth Date</label>
                                <input id="Month1" type="text" placeholder="MM" name="Month1" ng-model="Month1"
                                    class="c-dateFields-month">
                                <div class="c-dateFields-divider"></div>
                                <input id="Day1" type="text" placeholder="DD" name="Day1" ng-model="Day1"
                                    class="c-dateFields-day">
                                <div class="c-dateFields-divider"></div>
                                <input id="Year1" type="text" placeholder="YYYY" name="Year1" ng-model="Year1"
                                    class="c-dateFields-year">
                            </div>
                        </fieldset>
                        <fieldset class="c-fieldset c-fieldset--titled">
                            <div class="c-fieldset-item c-fieldset-item--checkbox">
                                <label>Visibility
                                    <inv-tooltip content="'Show or hide the input field'"></inv-tooltip>
                                </label>
                                <div class="c-checkbox">
                                    <input type="checkbox" value="Stuff" id="IsVisible" name="IsVisible" ng-model="IsVisible">
                                    <label for="IsVisible">Here is a fairly long checkbox description</label>
                                </div>
                            </div>
                            <div class="c-fieldset-item c-fieldset-item--radioButtons is-required"
                                form-field-error-state="Privacy">
                                <label for="privacy">Privacy</label>
                                <input type="hidden" id="privacy" name="Privacy" ng-model="Privacy">
                                <div class="c-radioButtons">
                                    <div class="c-radioButtons-button">
                                        <input type="radio" required
                                               id="privacy_private" value="1" name="_Privacy" ng-model="Privacy"
                                               ng-blur="$ctrl.dialogForm.Privacy.$setTouched()">
                                        <label for="privacy_private">Private</label>
                                    </div>
                                    <div class="c-radioButtons-button">
                                        <input type="radio" required
                                               id="privacy_public" value="2" name="_Privacy" ng-model="Privacy"
                                               ng-blur="dialogForm.Privacy.$setTouched()">
                                        <label for="privacy_public">Public</label>
                                    </div>
                                    <label class="c-fieldset-itemErrorMessage"
                                           ng-if="dialogForm.Privacy.$invalid"
                                           ng-bind="::error"
                                           ng-repeat="error in formErrors.Privacy"></label>
                                </div>
                           </div>
                           <div class="c-fieldset-item c-fieldset-item--expanded">
                                <label for="decription1">Description</label>
                                <textarea id="decription1" placeholder="Add a description here"></textarea>
                           </div>
                           <div class="c-fieldset-item c-fieldset-iconLink">
                               <label for="food">Favorite Food</label>
                               <inv-advanced-select
                                   id="food"
                                   dialog-title="'Select Favourite Food'"
                                   options="ctrl.foodOptions"
                                   primary-label-key="'name'"
                                   secondary-label-key="'dish'"
                                   value="ctrl.selectedFood"
                                   placeholder="'Select Food'"
                                   on-value-changed="ctrl.foodChanged(value)">
                               </inv-advanced-select>
                               <inv-tooltip content="ctrl.selectedFood.dish"></inv-tooltip>
                           </div>
                        </fieldset>
                    </dialog-content>
                    <dialog-footer></dialog-footer>
                </inv-dialog>
            </form>
        </div>
    </inv-popup-vault>
</div>

Wide Label Dialog

Forms should be embeddable in dialogs and maintain their fieldset layout patterns; with slightly wider label column (40% vs 33%).

These are form-level instructions.
Indicates a required field
Error
Address
HTML
<div class="t-content" ng-controller="FormDialogExampleController as ctrl">
    <button class="c-button" type="button" ng-click="ctrl.openDialog()">Open the Modal</button>

    <inv-popup-vault>
        <div inv-popup="ctrl.popupConfig">
            <form class="c-generalForm c-fieldsets c-fieldsets--wideLabelDialog" name="dialogForm" autocomplete="off">
                <inv-dialog dialog-size="large"
                            dialog-title="'Example Form in a Dialog'"
                            dialog-type="form"
                            on-close="ctrl.closeDialog()">
                    <dialog-content>

                        <div class="c-generalForm-instruction">
                            These are form-level instructions.
                        </div>
                        <fieldset class="c-fieldset">
                            <div class="c-fieldset-instruction c-fieldset-instruction--required">
                                Indicates a required field
                            </div>
                            <div class="c-fieldset-item is-required"
                                form-field-error-state="scheduleName">
                                <label for="firstName">First Name</label>
                                <input id="firstName" type="text" placeholder="First Name" required name="FirstName" ng-model="FirstName">
                                <div class="c-fieldset-itemErrorMessage">Error</div>
                            </div>
                            <div class="c-fieldset-item is-required">
                                <label for="lastName">Last Name</label>
                                <input id="lastName" type="text" placeholder="Last Name" required name="LastName" ng-model="LastName">
                            </div>
                        </fieldset>
                        <fieldset class="c-fieldset c-fieldset--titled">
                            <div class="c-fieldset-title">Address</div>
                            <div class="c-fieldset-item">
                                <label for="address1">Address Line 1</label>
                                <input id="address1" type="text" placeholder="Address Line 1">
                            </div>
                            <div class="c-fieldset-item">
                                <label for="address2">Address Line 2</label>
                                <input id="address2" type="text" placeholder="Address Line 2">
                            </div>
                            <div class="c-fieldset-item">
                                <label for="city">City</label>
                                <input id="city" type="text" placeholder="City">
                            </div>
                            <div class="c-fieldset-items c-fieldset-items--two">
                                <div class="c-fieldset-item">
                                    <label for="state">State/Region/Province</label>
                                    <div class="c-select">
                                        <select id="state" name="State">
                                            <option value="1">Nebraska</option>
                                            <option value="2">Iowa</option>
                                        </select>
                                    </div>
                                </div>
                                <div class="c-fieldset-item is-required">
                                    <label for="Postal">Postal Code</label>
                                    <input id="Postal" type="text" placeholder="Zip" name="Postal" ng-model="Postal">
                                </div>
                            </div>
                            <div class="c-fieldset-item c-dateFields">
                                <label for="Month1">Birth Date</label>
                                <input id="Month1" type="text" placeholder="MM" name="Month1" ng-model="Month1"
                                    class="c-dateFields-month">
                                <div class="c-dateFields-divider"></div>
                                <input id="Day1" type="text" placeholder="DD" name="Day1" ng-model="Day1"
                                    class="c-dateFields-day">
                                <div class="c-dateFields-divider"></div>
                                <input id="Year1" type="text" placeholder="YYYY" name="Year1" ng-model="Year1"
                                    class="c-dateFields-year">
                            </div>
                        </fieldset>
                        <fieldset class="c-fieldset c-fieldset--titled">
                            <div class="c-fieldset-item c-fieldset-item--checkbox">
                                <label>Visibility
                                    <inv-tooltip content="'Show or hide the input field'"></inv-tooltip>
                                </label>
                                <div class="c-checkbox">
                                    <input type="checkbox" value="Stuff" id="IsVisible" name="IsVisible" ng-model="IsVisible">
                                    <label for="IsVisible">Here is a fairly long checkbox description</label>
                                </div>
                            </div>
                            <div class="c-fieldset-item c-fieldset-item--radioButtons is-required"
                                form-field-error-state="Privacy">
                                <label for="privacy">Privacy</label>
                                <input type="hidden" id="privacy" name="Privacy" ng-model="Privacy">
                                <div class="c-radioButtons">
                                    <div class="c-radioButtons-button">
                                        <input type="radio" required
                                               id="privacy_private" value="1" name="_Privacy" ng-model="Privacy"
                                               ng-blur="$ctrl.dialogForm.Privacy.$setTouched()">
                                        <label for="privacy_private">Private</label>
                                    </div>
                                    <div class="c-radioButtons-button">
                                        <input type="radio" required
                                               id="privacy_public" value="2" name="_Privacy" ng-model="Privacy"
                                               ng-blur="dialogForm.Privacy.$setTouched()">
                                        <label for="privacy_public">Public</label>
                                    </div>
                                    <label class="c-fieldset-itemErrorMessage"
                                           ng-if="dialogForm.Privacy.$invalid"
                                           ng-bind="::error"
                                           ng-repeat="error in formErrors.Privacy"></label>
                                </div>
                           </div>
                           <div class="c-fieldset-item c-fieldset-item--expanded">
                                <label for="decription1">Description</label>
                                <textarea id="decription1" placeholder="Add a description here"></textarea>
                           </div>
                           <div class="c-fieldset-item c-fieldset-iconLink">
                               <label for="food">Favorite Food</label>
                               <inv-advanced-select
                                   id="food"
                                   dialog-title="'Select Favourite Food'"
                                   options="ctrl.foodOptions"
                                   primary-label-key="'name'"
                                   secondary-label-key="'dish'"
                                   value="ctrl.selectedFood"
                                   placeholder="'Select Food'"
                                   on-value-changed="ctrl.foodChanged(value)">
                               </inv-advanced-select>
                               <inv-tooltip content="ctrl.selectedFood.dish"></inv-tooltip>
                           </div>
                        </fieldset>
                    </dialog-content>
                    <dialog-footer></dialog-footer>
                </inv-dialog>
            </form>
        </div>
    </inv-popup-vault>
</div>

Input/Select Combo

Please see the Input Select Combo component for more usages. This is a custom implementation of some of the component's classes.

HTML
<div class="t-content">
    <ng-form class="c-generalForm" name="formApi" autocomplete="off" ng-controller="formInputSelectComboExampleController as controller">
        <fieldset class="c-fieldset">
            <div class="c-fieldset-item">
                <label>External Reference</label>
                <div class="c-inputSelectComboField">
                    <div class="c-inputSelectComboField-inputs">
                        <div class="c-inputSelectComboField-inputWrapper">
                            <input
                                class="c-inputSelectComboField-input"
                                ng-model="controller.value"
                                ng-model-options="{ updateOn: 'blur' }">
                        </div>
                        <div class="c-select">
                            <select ng-model="controller.type"
                                    ng-options="option.value as option.label for option in controller.dropdownOptions">
                            </select>
                        </div>
                    </div>
                </div>
            </div>
        </fieldset>
    </ng-form>
</div>

Translatable Indicator

Forms will display an indicator that the text or text area field is translatable. This will be done by displaying the currently selected language code for translation.

HTML
<div class="t-content">
    <ng-form class="c-generalForm" autocomplete="off" translatable-language-code="'de-DE'">
        <fieldset class="c-fieldset">
            <div class="c-fieldset-item c-fieldset-item--brief is-required" translatable>
                <label for="firstName">First Name</label>
                <input id="firstName" type="text" placeholder="First Name">
            </div>
            <div class="c-fieldset-item  c-fieldset-item--brief is-required">
                <label for="lastName">Last Name</label>
                <input id="lastName" type="text" placeholder="No Translation">
            </div>
            <div class="c-fieldset-item" translatable>
                <label for="address1">Address Line 1</label>
                <input id="address1" type="text" placeholder="Address Line 1">
            </div>
            <div class="c-fieldset-item">
                <label for="address2">Address Line 2</label>
                <input id="address2" type="text" placeholder="No Translation">
            </div>
            <div class="c-fieldset-item c-fieldset-item--mid" translatable>
                <label for="city">City</label>
                <input id="city" type="text" placeholder="City">
            </div>
            <div class="c-fieldset-items c-fieldset-items--two" translatable>
                <div class="c-fieldset-item">
                    <label for="state">State/Region/Province</label>
                    <input id="state" type="text" placeholder="State">
                </div>
                <div class="c-fieldset-item is-required">
                    <label for="postal">Postal Code</label>
                    <input id="postal" type="text" placeholder="Zip">
                </div>
            </div>
            <div class="c-fieldset-item" translatable>
                <label for="count">Count</label>
                <textarea id="count" type="text" placeholder="Count"></textarea>
            </div>
            <div class="c-fieldset-item">
                <label for="count">Count Explainination</label>
                <textarea id="count" type="text" placeholder="No Translation"></textarea>
            </div>
        </fieldset>
    </ng-form>
</div>