Spark
v1
  • Spark v3
  • Spark v2
  • Spark v1
  • Design Foundations
    • Animations
    • Color Palette
    • Iconography
    • Layout Guidelines
    • Sabre Logo Guidelines
    • Guiding Principles
    • Spark Themes
    • Typography
    • Voice and Tone
    • View All Foundations
  • UI Components
    • Containers & Navigation
      • Carousel
      • Expand & Collapse
      • Footer
      • Header & Navigation
      • Modals
      • Pagination and View More
      • Panels
      • Panel Menu
      • Responsive Grid
      • Scroll to Top
      • Tables
      • Tabs
      • Toolbar
    • Data Visualization
      • Introduction to Data Visualization
      • Color Palettes for Data Visualization
      • Bar Charts
      • Gauges
      • Line Graphs
      • Pie and Donut Charts
    • Form Elements
      • Buttons
      • Checkboxes
      • Date Selection
      • Multi-Select
      • Number Selector
      • Radio Buttons
      • Select Input
      • Sliders
      • Text Input
      • Toggles and Switches
    • Messaging & Content
      • Links
      • Messages
      • Popovers
      • Progress Indicators
      • Step Indicator
      • Tooltips
    • Page Templates
      • Sign-In Screen
      • Single Container Layout
      • Single Container with Side Menu Layout
      • Splash Screen
      • Tabbed Container Layout
      • Tabbed Container with Side Menu Layout
    • View All Components
  • Resources
    • Designer
      • Application Icons
    • Developer
      • Browser Support
      • Changelog
      • CSS Helper Classes
      • Javascript API Documentation
        • Back to Main Menu
        • Javscript API Documentation
        • Main
        • components/ base.js
          • BaseComponent
          • requestAnimationFrame
          • cancelAnimationFrame
          • breakpoints
          • exportjQuery
          • loadOrCreateJQueryInstance
          • setParams
          • unsetParams
          • toggleClass
          • addClass
          • removeClass
          • hasClass
          • getChildIndex
          • elementHasParent
          • elementMatches
          • getElementMatchingParent
          • getElementMatchingParents
          • getElementOffset
          • getNodeListIndex
          • trim
          • round
          • appendChildren
          • insertBefore
          • getBreakpoint
          • remove
          • triggerEvent
          • scrollWindowTo
          • tween
          • copyAttributes
          • wrapElement
          • range
          • getSiblingBefore
          • getSiblingAfter
          • getMatchingChild
          • getElementMatchingChildren
        • components / calendar-popover.js
        • components/ carousel.js
          • Carousel
          • _setParams
          • defaults
          • _whitelistedParams
          • _carouselItem
          • _init
          • remove
          • _pause
          • _setPause
          • _autoAdvance
          • _setupListeners
          • _removeListeners
          • _handleVisibleChildrenH
          • _forward
          • _back
          • _movestart
          • _move
          • _moveend
          • _resize
          • change
          • _touchstart
          • _touchmove
          • _touchend
          • _mousedown
          • _mousemove
          • _mouseup
          • _click
          • _velocity
          • _scrollToClicked
          • _scrollTo
          • _rafHandlerH
          • _rafCancel
          • _interiaScroll
          • _settle
          • _transformItems
          • _setTransformItems
          • _addTransform
          • _leftbound
          • _rightbound
          • _updateSelected
          • _selectedItem
          • _setTransform
        • components/ date-input.js
          • DateInput
          • _setParams
          • setError
          • _whitelistedParams
          • defaults
          • show
          • hide
          • remove
          • setValue
          • validate
          • updateInput
          • focus
          • focusNext
          • focusPrevious
          • hasPartialValue
          • _cacheElements
          • _parseParams
          • _initializeInputs
          • _initializeInputPieces
          • _initializeTypeaheadPiece
          • _initializeSelectPiece
          • _convertLabel
          • _validateTypeaheads
          • _validateTypeaheadBounds
          • _padTypeaheads
          • _padTypeahead
          • _hasTypeaheadValue
          • _validateSelects
          • _getMaxDaysInMonth
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _onVisibleChildren
          • update
          • _runTypeaheads
          • _updateClass
          • _getTypeaheadByElement
          • _showDateText
          • _hideDateText
          • _createDateTextEl
          • _getDateText
          • _onPieceChange
          • _onTypeaheadFocus
          • _onTypeaheadBlur
          • _onTypeaheadBackspace
          • _onTypeaheadEnd
          • _onInputChange
          • _onClick
        • components/ expand.js
          • Expand
          • _setParams
          • defaults
          • _whitelistedParams
          • expand
          • collapse
          • toggle
          • _cacheElements
          • _updateClasses
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _onClick
          • _onKeydown
        • components/ header.js
          • Header
          • _setParams
          • _whitelistedParams
          • defaults
          • update
          • checkFixed
          • _cacheElements
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _getCurrentBreakpoint
          • _createPlaceholder
          • _removePlaceholder
          • _disablePlaceholderLinkTab
          • _createListMore
          • _determineInitialSize
          • _determineMenuSize
          • _listenForReadyStateChange
          • _isMenuBreakpoint
          • _getItemsToShowAndHide
          • _ensureActiveAtMoreSwapIndex
          • _addListMore
          • _removeListMore
          • _resetMenuChildren
          • _toggleCollapsed
          • _enableTopLevelToggling
          • _disableTopLevelToggling
          • _onResize
          • _onScroll
          • _onMoreClick
          • _onToggleClick
          • _onNavClick
        • components/ menu.js
          • Menu
          • _setParams
          • _whitelistedParams
          • defaults
          • _cacheElements
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _toggleItem
          • _checkAnimation
          • _createMenuAnimationWrapper
          • _animateListChange
          • _appendList
          • _removeLastList
          • _removeAllCachedLists
          • _getNextList
          • _openItem
          • _closeItem
          • _activateItem
          • _activateItemParents
          • _deactivateItems
          • _deactivateItemSiblings
          • _openActiveParents
          • _cachedListContainsID
          • _onClick
          • _onFocus
          • _onBlur
        • components/ modal.js
          • Modal
          • _setParams
          • defaults
          • _whitelistedParams
          • open
          • close
          • _cacheElements
          • _updateClasses
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _addWindowEventListeners
          • _removeWindowEventListeners
          • _onClick
          • _onModalClick
          • _onKeyup
        • components / number-picker.js
        • components/ number-selector.js
          • NumberSelector
          • _setParams
          • _whitelistedParams
          • defaults
          • value
          • increment
          • decrement
          • disable
          • enable
          • _cacheElements
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _getMin
          • _getMax
          • _getStep
          • _getInputPropAsNumber
          • _getConformedNumber
          • _onClick
          • _onChange
        • components/ popover.js
          • Popover
          • _setParams
          • _whitelistedParams
          • defaults
          • open
          • close
          • toggle
          • setContent
          • pause
          • resume
          • _cacheElements
          • _moveContent
          • _determineDirectionAndAnchor
          • _updateAttributes
          • _updatePosition
          • _clearPosition
          • _updateCaretAnchorPosition
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _addWindowEventListeners
          • _removeWindowEventListeners
          • _createContentEl
          • _createCaretEl
          • _onClick
          • _onContentClick
          • _onWindowClick
          • _onWindowResize
        • components/ progress-indicator.js
          • ProgressIndicator
          • _setParams
          • _whitelistedParams
          • defaults
          • set
          • _cacheElements
          • _cacheSize
          • _determineSize
          • _buildSVG
          • _parseNotes
          • _updateDOM
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _onResize
        • components/ range-slider.js
          • RangeSlider
          • _setParams
          • _whitelistedParams
          • defaults
          • start
          • move
          • stop
          • setValue
          • increment
          • decrement
          • remove
          • _cacheElements
          • _cacheSize
          • _updateHandlePosition
          • _updateActiveClasses
          • _updateDisabledClasses
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _addMoveEventListeners
          • _removeMoveEventListeners
          • _onTouchStart
          • _onTouchMove
          • _onTouchEnd
          • _onMouseDown
          • _onMouseMove
          • _onMouseUp
          • _onVisibleChildren
          • _onResize
          • _onFocus
          • _onKeydown
          • _onBlur
          • _onChange
          • _onClick
        • components / scroll-to-top.js
        • components/ select-input.js
          • SelectInput
          • _setParams
          • _whitelistedParams
          • defaults
          • getValue
          • setValue
          • setOptions
          • setLabel
          • _cacheElements
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _updateClass
          • _onFocus
          • _onBlur
          • _onInput
        • components/ slider.js
          • Slider
          • _setParams
          • _whitelistedParams
          • defaults
          • start
          • move
          • stop
          • setValue
          • increment
          • decrement
          • remove
          • _cacheElements
          • _cacheSize
          • _updateHandlePosition
          • _updateActiveClasses
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _addMoveEventListeners
          • _removeMoveEventListeners
          • _truncateValueText
          • _onTouchStart
          • _onTouchMove
          • _onTouchEnd
          • _onMouseDown
          • _onMouseMove
          • _onMouseUp
          • _onMouseOut
          • _onResize
          • _onFocus
          • _onKeydown
          • _onBlur
          • _onChange
          • _onClick
          • _onWindowClick
        • components / step-indicator.js
        • components/ table.js
          • Table
          • _setParams
          • _whitelistedParams
          • defaults
          • disableCell
          • enableCell
          • disableRow
          • enableRow
          • disableColumn
          • enableColumn
          • remove
          • activateRow
          • activateRows
          • deactivateRow
          • deactivateRows
          • getActiveRows
          • _cacheElements
          • _parseParams
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _addResizeListeners
          • _removeResizeListeners
          • _toggleRowActive
          • _makeRowActive
          • _makeRowInActive
          • _toggleRowsActive
          • _toggleSelectAll
          • _uncheckSelectAll
          • _deactivateAllInputs
          • _deactivateInputs
          • _deactivateInput
          • _activateInputs
          • _activateInput
          • _activateInputOrFocusDown
          • _disableRowsColumnsCells
          • _focusUp
          • _focusDown
          • _focusUpDown
          • _focusLeft
          • _focusRight
          • _focusLeftRight
          • _checkDoubleClick
          • _clearClicked
          • _editRow
          • _cancelRow
          • _saveRow
          • _deleteRow
          • _confirmDelete
          • _updateBindings
          • _initResize
          • _initRows
          • _sizeColumns
          • _initExpands
          • _onBeforeExpand
          • _onClick
          • _onChange
          • _onFocus
          • _onBlur
          • _onKeydown
          • _onTouchstart
          • _onTouchend
          • _onTouchHold
          • _onMouseDown
          • _onMouseMove
          • _onMouseUp
        • components/ tabs.js
          • Tabs
          • _setParams
          • _whitelistedParams
          • defaults
          • setActive
          • start
          • stop
          • move
          • focus
          • remove
          • update
          • _findPanelByName
          • _findPanelByTab
          • _findTabByPanel
          • _findTabByChildElement
          • _cacheElements
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _addMoveEventListeners
          • _removeMoveEventListeners
          • _determineSize
          • _determineMinMax
          • _enableAnimation
          • _disableAnimation
          • _updatePosition
          • _checkX
          • _onTabListClick
          • _onResize
          • _onTouchStart
          • _onTouchMove
          • _onTouchEnd
          • _onMouseDown
          • _onMouseMove
          • _onMouseUp
          • _onScroll
          • _onScrollEnd
          • _onLeftClick
          • _onRightClick
          • _onFocus
          • _onBlur
        • components/ text-input.js
          • TextInput
          • _setParams
          • _whitelistedParams
          • defaults
          • show
          • hide
          • validate
          • setError
          • clearError
          • setWarning
          • clearWarning
          • setSuccess
          • clearSuccess
          • clearMessages
          • setMessage
          • _showMessage
          • _hideMessage
          • _isMessageVisible
          • _cacheElements
          • _parseParams
          • _setCharactersCount
          • _setTextareaHeight
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _updateClass
          • _onFocus
          • _onBlur
          • _onInput
          • _onClearClick
          • _onTogglePasswordViewHide
        • components/ toggle-switch.js
          • ToggleSwitch
          • _getElementMatchingParent
          • defaults
          • toggle
          • activate
          • deactivate
          • _cacheElements
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _onKeydown
        • components/ toolbar.js
          • Toolbar
          • _setParams
          • defaults
          • _whitelistedParams
          • toolbarItem
          • toggleDropdown
          • handleClick
          • _closeAll
          • _getOpenItems
          • _closeItems
          • _init
          • _setupListeners
          • _removeListeners
          • remove
          • _handleBlurH
          • _handleFocusH
          • _focusLast
          • _handleKeyDownH
          • _handleVisibleChildrenH
          • _handleWindowClickH
          • _toggleShowMore
          • _positionShowMore
          • _handleResizeH
          • _calculateStyles
          • _prioritySort
          • _orderSort
          • change
        • helpers/ animate-height.js
          • getInverseToggleValue
          • animateHeight
        • helpers/ build-select.js
          • buildSelect
        • helpers/ date-select.js
          • DateSelect
          • _setParams
          • _whitelistedParams
          • defaults
          • getValue
          • setValue
          • setOptions
          • setLabel
          • _createDefaultElement
          • _createSelect
          • _getDefaultMonthNames
          • _getTypeText
          • _bindEventListenerCallbacks
          • _onSelectChange
        • helpers/ date-typeahead.js
          • DateTypeahead
          • _setParams
          • _whitelistedParams
          • defaults
          • getValue
          • setValue
          • run
          • pause
          • resume
          • _createDefaultElement
          • _createTypeahead
          • _bindEventListenerCallbacks
          • _lengthToFormat
          • _checkValidity
          • _onTypeaheadChange
          • _onTypeaheadFocus
          • _onTypeaheadBlur
          • _onTypeaheadBackspace
          • _onTypeaheadEnd
        • helpers/ date.js
          • create
          • year
          • year
          • month
          • month
          • day
          • day
          • set
          • getMonthName
          • monthName
          • getMonthNames
          • getMonthNameShort
          • monthNameShort
          • getMonthNamesShort
          • setMonthNames
          • setMonthNamesShort
          • getDayOfWeek
          • dayOfWeek
          • getDayName
          • dayName
          • getDayNames
          • getDayNameShort
          • dayNameShort
          • getDayNamesShort
          • setDayNames
          • setDayNamesShort
          • getWeekStartsOn
          • setWeekStartsOn
          • now
          • getNextYear
          • nextYear
          • getWeekStart
          • weekStart
          • getMonthStart
          • monthStart
          • getNextWeek
          • nextWeek
          • getNextDay
          • nextDay
          • getNextMonth
          • nextMonth
          • getPreviousYear
          • previousYear
          • getPreviousWeek
          • previousWeek
          • getPreviousDay
          • previousDay
          • getPreviousMonth
          • previousMonth
          • getMonthEnd
          • monthEnd
          • equal
          • equalDay
          • equalWeek
          • equalMonth
          • equalYear
          • before
          • beforeDay
          • beforeWeek
          • beforeMonth
          • beforeYear
          • after
          • afterDay
          • afterWeek
          • afterMonth
          • afterYear
          • earliest
          • latest
          • clone
          • _checkComparisonArgs
          • _instanceCheck
          • _clearCache
        • helpers/ debounce.js
          • debounce
        • helpers/ each.js
          • each
        • helpers/ outer-height.js
          • outerHeight
        • helpers / pad-number.js
        • helpers/ parse-date-format.js
          • map
          • getValues
          • getString
          • parseDateFormat
        • helpers / set-caret.js
        • helpers/ store-form-data.js
          • findAll
          • store
          • restore
          • clear
        • helpers/ transform.js
          • transform
        • helpers/ typeahead.js
          • Typeahead
          • _setParams
          • _whitelistedParams
          • defaults
          • run
          • addCharacterAtIndex
          • addCharacterAtCaret
          • removeCharacterAtIndex
          • removeCharacterAtCaret
          • removeCharactersInRange
          • setValue
          • getValue
          • moveCaret
          • moveCaretToEnd
          • moveCaretToStart
          • pause
          • resume
          • clear
          • _cacheElements
          • _parseParams
          • _parseFormat
          • _parseCharacters
          • _createDefaultInputElement
          • _createDefaultPlaceholderElement
          • _getCharactersAllowedCount
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _getCaretStart
          • _getCaretEnd
          • _caretIsAtEnd
          • _setCaretPosition
          • _getCaretPositionTranslated
          • _getCaretStartTranslated
          • _getCaretEndTranslated
          • _setCaretPositionTranslated
          • _moveCaret
          • _emptyWhenOnlyPlaceholders
          • _maintainFocus
          • _updateWidth
          • _onKeydown
          • _onInput
          • _onFocus
          • _onBlur
          • _onPlaceholderClick
          • _onBackspace
        • index.js
          • exports
    • Roadmap
    • View All Resources
  • About
  • Contact
Spark
v1
  • Spark v3
  • Spark v2
  • Spark v1
  • Design Foundations
    • Animations
    • Color Palette
    • Iconography
    • Layout Guidelines
    • Sabre Logo Guidelines
    • Guiding Principles
    • Spark Themes
    • Typography
    • Voice and Tone
    • View All Foundations
  • UI Components
    • Containers & Navigation
      • Carousel
      • Expand & Collapse
      • Footer
      • Header & Navigation
      • Modals
      • Pagination and View More
      • Panels
      • Panel Menu
      • Responsive Grid
      • Scroll to Top
      • Tables
      • Tabs
      • Toolbar
    • Data Visualization
      • Introduction to Data Visualization
      • Color Palettes for Data Visualization
      • Bar Charts
      • Gauges
      • Line Graphs
      • Pie and Donut Charts
    • Form Elements
      • Buttons
      • Checkboxes
      • Date Selection
      • Multi-Select
      • Number Selector
      • Radio Buttons
      • Select Input
      • Sliders
      • Text Input
      • Toggles and Switches
    • Messaging & Content
      • Links
      • Messages
      • Popovers
      • Progress Indicators
      • Step Indicator
      • Tooltips
    • Page Templates
      • Sign-In Screen
      • Single Container Layout
      • Single Container with Side Menu Layout
      • Splash Screen
      • Tabbed Container Layout
      • Tabbed Container with Side Menu Layout
    • View All Components
  • Resources
    • Designer
      • Application Icons
    • Developer
      • Browser Support
      • Changelog
      • CSS Helper Classes
      • Javascript API Documentation
        • Back to Main Menu
        • Javscript API Documentation
        • Main
        • components/ base.js
          • BaseComponent
          • requestAnimationFrame
          • cancelAnimationFrame
          • breakpoints
          • exportjQuery
          • loadOrCreateJQueryInstance
          • setParams
          • unsetParams
          • toggleClass
          • addClass
          • removeClass
          • hasClass
          • getChildIndex
          • elementHasParent
          • elementMatches
          • getElementMatchingParent
          • getElementMatchingParents
          • getElementOffset
          • getNodeListIndex
          • trim
          • round
          • appendChildren
          • insertBefore
          • getBreakpoint
          • remove
          • triggerEvent
          • scrollWindowTo
          • tween
          • copyAttributes
          • wrapElement
          • range
          • getSiblingBefore
          • getSiblingAfter
          • getMatchingChild
          • getElementMatchingChildren
        • components / calendar-popover.js
        • components/ carousel.js
          • Carousel
          • _setParams
          • defaults
          • _whitelistedParams
          • _carouselItem
          • _init
          • remove
          • _pause
          • _setPause
          • _autoAdvance
          • _setupListeners
          • _removeListeners
          • _handleVisibleChildrenH
          • _forward
          • _back
          • _movestart
          • _move
          • _moveend
          • _resize
          • change
          • _touchstart
          • _touchmove
          • _touchend
          • _mousedown
          • _mousemove
          • _mouseup
          • _click
          • _velocity
          • _scrollToClicked
          • _scrollTo
          • _rafHandlerH
          • _rafCancel
          • _interiaScroll
          • _settle
          • _transformItems
          • _setTransformItems
          • _addTransform
          • _leftbound
          • _rightbound
          • _updateSelected
          • _selectedItem
          • _setTransform
        • components/ date-input.js
          • DateInput
          • _setParams
          • setError
          • _whitelistedParams
          • defaults
          • show
          • hide
          • remove
          • setValue
          • validate
          • updateInput
          • focus
          • focusNext
          • focusPrevious
          • hasPartialValue
          • _cacheElements
          • _parseParams
          • _initializeInputs
          • _initializeInputPieces
          • _initializeTypeaheadPiece
          • _initializeSelectPiece
          • _convertLabel
          • _validateTypeaheads
          • _validateTypeaheadBounds
          • _padTypeaheads
          • _padTypeahead
          • _hasTypeaheadValue
          • _validateSelects
          • _getMaxDaysInMonth
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _onVisibleChildren
          • update
          • _runTypeaheads
          • _updateClass
          • _getTypeaheadByElement
          • _showDateText
          • _hideDateText
          • _createDateTextEl
          • _getDateText
          • _onPieceChange
          • _onTypeaheadFocus
          • _onTypeaheadBlur
          • _onTypeaheadBackspace
          • _onTypeaheadEnd
          • _onInputChange
          • _onClick
        • components/ expand.js
          • Expand
          • _setParams
          • defaults
          • _whitelistedParams
          • expand
          • collapse
          • toggle
          • _cacheElements
          • _updateClasses
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _onClick
          • _onKeydown
        • components/ header.js
          • Header
          • _setParams
          • _whitelistedParams
          • defaults
          • update
          • checkFixed
          • _cacheElements
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _getCurrentBreakpoint
          • _createPlaceholder
          • _removePlaceholder
          • _disablePlaceholderLinkTab
          • _createListMore
          • _determineInitialSize
          • _determineMenuSize
          • _listenForReadyStateChange
          • _isMenuBreakpoint
          • _getItemsToShowAndHide
          • _ensureActiveAtMoreSwapIndex
          • _addListMore
          • _removeListMore
          • _resetMenuChildren
          • _toggleCollapsed
          • _enableTopLevelToggling
          • _disableTopLevelToggling
          • _onResize
          • _onScroll
          • _onMoreClick
          • _onToggleClick
          • _onNavClick
        • components/ menu.js
          • Menu
          • _setParams
          • _whitelistedParams
          • defaults
          • _cacheElements
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _toggleItem
          • _checkAnimation
          • _createMenuAnimationWrapper
          • _animateListChange
          • _appendList
          • _removeLastList
          • _removeAllCachedLists
          • _getNextList
          • _openItem
          • _closeItem
          • _activateItem
          • _activateItemParents
          • _deactivateItems
          • _deactivateItemSiblings
          • _openActiveParents
          • _cachedListContainsID
          • _onClick
          • _onFocus
          • _onBlur
        • components/ modal.js
          • Modal
          • _setParams
          • defaults
          • _whitelistedParams
          • open
          • close
          • _cacheElements
          • _updateClasses
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _addWindowEventListeners
          • _removeWindowEventListeners
          • _onClick
          • _onModalClick
          • _onKeyup
        • components / number-picker.js
        • components/ number-selector.js
          • NumberSelector
          • _setParams
          • _whitelistedParams
          • defaults
          • value
          • increment
          • decrement
          • disable
          • enable
          • _cacheElements
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _getMin
          • _getMax
          • _getStep
          • _getInputPropAsNumber
          • _getConformedNumber
          • _onClick
          • _onChange
        • components/ popover.js
          • Popover
          • _setParams
          • _whitelistedParams
          • defaults
          • open
          • close
          • toggle
          • setContent
          • pause
          • resume
          • _cacheElements
          • _moveContent
          • _determineDirectionAndAnchor
          • _updateAttributes
          • _updatePosition
          • _clearPosition
          • _updateCaretAnchorPosition
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _addWindowEventListeners
          • _removeWindowEventListeners
          • _createContentEl
          • _createCaretEl
          • _onClick
          • _onContentClick
          • _onWindowClick
          • _onWindowResize
        • components/ progress-indicator.js
          • ProgressIndicator
          • _setParams
          • _whitelistedParams
          • defaults
          • set
          • _cacheElements
          • _cacheSize
          • _determineSize
          • _buildSVG
          • _parseNotes
          • _updateDOM
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _onResize
        • components/ range-slider.js
          • RangeSlider
          • _setParams
          • _whitelistedParams
          • defaults
          • start
          • move
          • stop
          • setValue
          • increment
          • decrement
          • remove
          • _cacheElements
          • _cacheSize
          • _updateHandlePosition
          • _updateActiveClasses
          • _updateDisabledClasses
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _addMoveEventListeners
          • _removeMoveEventListeners
          • _onTouchStart
          • _onTouchMove
          • _onTouchEnd
          • _onMouseDown
          • _onMouseMove
          • _onMouseUp
          • _onVisibleChildren
          • _onResize
          • _onFocus
          • _onKeydown
          • _onBlur
          • _onChange
          • _onClick
        • components / scroll-to-top.js
        • components/ select-input.js
          • SelectInput
          • _setParams
          • _whitelistedParams
          • defaults
          • getValue
          • setValue
          • setOptions
          • setLabel
          • _cacheElements
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _updateClass
          • _onFocus
          • _onBlur
          • _onInput
        • components/ slider.js
          • Slider
          • _setParams
          • _whitelistedParams
          • defaults
          • start
          • move
          • stop
          • setValue
          • increment
          • decrement
          • remove
          • _cacheElements
          • _cacheSize
          • _updateHandlePosition
          • _updateActiveClasses
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _addMoveEventListeners
          • _removeMoveEventListeners
          • _truncateValueText
          • _onTouchStart
          • _onTouchMove
          • _onTouchEnd
          • _onMouseDown
          • _onMouseMove
          • _onMouseUp
          • _onMouseOut
          • _onResize
          • _onFocus
          • _onKeydown
          • _onBlur
          • _onChange
          • _onClick
          • _onWindowClick
        • components / step-indicator.js
        • components/ table.js
          • Table
          • _setParams
          • _whitelistedParams
          • defaults
          • disableCell
          • enableCell
          • disableRow
          • enableRow
          • disableColumn
          • enableColumn
          • remove
          • activateRow
          • activateRows
          • deactivateRow
          • deactivateRows
          • getActiveRows
          • _cacheElements
          • _parseParams
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _addResizeListeners
          • _removeResizeListeners
          • _toggleRowActive
          • _makeRowActive
          • _makeRowInActive
          • _toggleRowsActive
          • _toggleSelectAll
          • _uncheckSelectAll
          • _deactivateAllInputs
          • _deactivateInputs
          • _deactivateInput
          • _activateInputs
          • _activateInput
          • _activateInputOrFocusDown
          • _disableRowsColumnsCells
          • _focusUp
          • _focusDown
          • _focusUpDown
          • _focusLeft
          • _focusRight
          • _focusLeftRight
          • _checkDoubleClick
          • _clearClicked
          • _editRow
          • _cancelRow
          • _saveRow
          • _deleteRow
          • _confirmDelete
          • _updateBindings
          • _initResize
          • _initRows
          • _sizeColumns
          • _initExpands
          • _onBeforeExpand
          • _onClick
          • _onChange
          • _onFocus
          • _onBlur
          • _onKeydown
          • _onTouchstart
          • _onTouchend
          • _onTouchHold
          • _onMouseDown
          • _onMouseMove
          • _onMouseUp
        • components/ tabs.js
          • Tabs
          • _setParams
          • _whitelistedParams
          • defaults
          • setActive
          • start
          • stop
          • move
          • focus
          • remove
          • update
          • _findPanelByName
          • _findPanelByTab
          • _findTabByPanel
          • _findTabByChildElement
          • _cacheElements
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _addMoveEventListeners
          • _removeMoveEventListeners
          • _determineSize
          • _determineMinMax
          • _enableAnimation
          • _disableAnimation
          • _updatePosition
          • _checkX
          • _onTabListClick
          • _onResize
          • _onTouchStart
          • _onTouchMove
          • _onTouchEnd
          • _onMouseDown
          • _onMouseMove
          • _onMouseUp
          • _onScroll
          • _onScrollEnd
          • _onLeftClick
          • _onRightClick
          • _onFocus
          • _onBlur
        • components/ text-input.js
          • TextInput
          • _setParams
          • _whitelistedParams
          • defaults
          • show
          • hide
          • validate
          • setError
          • clearError
          • setWarning
          • clearWarning
          • setSuccess
          • clearSuccess
          • clearMessages
          • setMessage
          • _showMessage
          • _hideMessage
          • _isMessageVisible
          • _cacheElements
          • _parseParams
          • _setCharactersCount
          • _setTextareaHeight
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _updateClass
          • _onFocus
          • _onBlur
          • _onInput
          • _onClearClick
          • _onTogglePasswordViewHide
        • components/ toggle-switch.js
          • ToggleSwitch
          • _getElementMatchingParent
          • defaults
          • toggle
          • activate
          • deactivate
          • _cacheElements
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _onKeydown
        • components/ toolbar.js
          • Toolbar
          • _setParams
          • defaults
          • _whitelistedParams
          • toolbarItem
          • toggleDropdown
          • handleClick
          • _closeAll
          • _getOpenItems
          • _closeItems
          • _init
          • _setupListeners
          • _removeListeners
          • remove
          • _handleBlurH
          • _handleFocusH
          • _focusLast
          • _handleKeyDownH
          • _handleVisibleChildrenH
          • _handleWindowClickH
          • _toggleShowMore
          • _positionShowMore
          • _handleResizeH
          • _calculateStyles
          • _prioritySort
          • _orderSort
          • change
        • helpers/ animate-height.js
          • getInverseToggleValue
          • animateHeight
        • helpers/ build-select.js
          • buildSelect
        • helpers/ date-select.js
          • DateSelect
          • _setParams
          • _whitelistedParams
          • defaults
          • getValue
          • setValue
          • setOptions
          • setLabel
          • _createDefaultElement
          • _createSelect
          • _getDefaultMonthNames
          • _getTypeText
          • _bindEventListenerCallbacks
          • _onSelectChange
        • helpers/ date-typeahead.js
          • DateTypeahead
          • _setParams
          • _whitelistedParams
          • defaults
          • getValue
          • setValue
          • run
          • pause
          • resume
          • _createDefaultElement
          • _createTypeahead
          • _bindEventListenerCallbacks
          • _lengthToFormat
          • _checkValidity
          • _onTypeaheadChange
          • _onTypeaheadFocus
          • _onTypeaheadBlur
          • _onTypeaheadBackspace
          • _onTypeaheadEnd
        • helpers/ date.js
          • create
          • year
          • year
          • month
          • month
          • day
          • day
          • set
          • getMonthName
          • monthName
          • getMonthNames
          • getMonthNameShort
          • monthNameShort
          • getMonthNamesShort
          • setMonthNames
          • setMonthNamesShort
          • getDayOfWeek
          • dayOfWeek
          • getDayName
          • dayName
          • getDayNames
          • getDayNameShort
          • dayNameShort
          • getDayNamesShort
          • setDayNames
          • setDayNamesShort
          • getWeekStartsOn
          • setWeekStartsOn
          • now
          • getNextYear
          • nextYear
          • getWeekStart
          • weekStart
          • getMonthStart
          • monthStart
          • getNextWeek
          • nextWeek
          • getNextDay
          • nextDay
          • getNextMonth
          • nextMonth
          • getPreviousYear
          • previousYear
          • getPreviousWeek
          • previousWeek
          • getPreviousDay
          • previousDay
          • getPreviousMonth
          • previousMonth
          • getMonthEnd
          • monthEnd
          • equal
          • equalDay
          • equalWeek
          • equalMonth
          • equalYear
          • before
          • beforeDay
          • beforeWeek
          • beforeMonth
          • beforeYear
          • after
          • afterDay
          • afterWeek
          • afterMonth
          • afterYear
          • earliest
          • latest
          • clone
          • _checkComparisonArgs
          • _instanceCheck
          • _clearCache
        • helpers/ debounce.js
          • debounce
        • helpers/ each.js
          • each
        • helpers/ outer-height.js
          • outerHeight
        • helpers / pad-number.js
        • helpers/ parse-date-format.js
          • map
          • getValues
          • getString
          • parseDateFormat
        • helpers / set-caret.js
        • helpers/ store-form-data.js
          • findAll
          • store
          • restore
          • clear
        • helpers/ transform.js
          • transform
        • helpers/ typeahead.js
          • Typeahead
          • _setParams
          • _whitelistedParams
          • defaults
          • run
          • addCharacterAtIndex
          • addCharacterAtCaret
          • removeCharacterAtIndex
          • removeCharacterAtCaret
          • removeCharactersInRange
          • setValue
          • getValue
          • moveCaret
          • moveCaretToEnd
          • moveCaretToStart
          • pause
          • resume
          • clear
          • _cacheElements
          • _parseParams
          • _parseFormat
          • _parseCharacters
          • _createDefaultInputElement
          • _createDefaultPlaceholderElement
          • _getCharactersAllowedCount
          • _bindEventListenerCallbacks
          • _addEventListeners
          • _removeEventListeners
          • _getCaretStart
          • _getCaretEnd
          • _caretIsAtEnd
          • _setCaretPosition
          • _getCaretPositionTranslated
          • _getCaretStartTranslated
          • _getCaretEndTranslated
          • _setCaretPositionTranslated
          • _moveCaret
          • _emptyWhenOnlyPlaceholders
          • _maintainFocus
          • _updateWidth
          • _onKeydown
          • _onInput
          • _onFocus
          • _onBlur
          • _onPlaceholderClick
          • _onBackspace
        • index.js
          • exports
    • Roadmap
    • View All Resources
  • About
  • Contact
    • Containers & Navigation
      • Carousel
      • Expand & Collapse
      • Footer
      • Header & Navigation
      • Modals
      • Pagination and View More
      • Panels
      • Panel Menu
      • Responsive Grid
      • Scroll to Top
      • Tables
      • Tabs
      • Toolbar
    • Data Visualization
      • Introduction to Data Visualization
      • Color Palettes for Data Visualization
      • Bar Charts
      • Gauges
      • Line Graphs
      • Pie and Donut Charts
    • Form Elements
      • Buttons
      • Checkboxes
      • Date Selection
      • Multi-Select
      • Number Selector
      • Radio Buttons
      • Select Input
      • Sliders
      • Text Input
      • Toggles and Switches
    • Messaging & Content
      • Links
      • Messages
      • Popovers
      • Progress Indicators
      • Step Indicator
      • Tooltips
    • Page Templates
      • Sign-In Screen
      • Single Container Layout
      • Single Container with Side Menu Layout
      • Splash Screen
      • Tabbed Container Layout
      • Tabbed Container with Side Menu Layout

    Multi-Select

    A Multi-Select input is a form control for selecting multiple items from a list of options. There are two variations in Spark: a custom component and a native control.

    • Overview
    • Guidelines
    • Developer

    Native Multi-Select Example


    When to Use

    • To allow the user to select two or more options from a list.
    • The native version may be preferred for applications primarily accessed on a mobile device.

    When Not to Use

    • If only one option may be selected (see Radio Buttons or Select)
    • The native version is not recommended when consistency across browsers/devices is desired, custom formatting is needed, and/or awareness of browser events is needed for validation or other purposes.

    Variations

    • Native Example (shown above)
    • Custom Example

    Variations

    Custom Multi-Select

    Select Options (Choose 5 Options)
    Some Group


    When to Use:

    • The custom version is recommended when display options not available in the native control are desired. Examples include: displaying icons next to options and formatting airport names and city codes to be easily scanned.
    • When consistency across browsers/devices is required.
    • When awareness of browser events is required for validation or other purposes.

    Developer Notes

    Custom Multi-Select

    States

    There are 5 distinct states supported:

    • Default State
    • Disabled State
    • Data Success State
    • Data Warning State
    • Data Error State

    You may also use these states without a title.

    Your element starts in the default state, you can achieve the additional states by giving the fieldset.spark-multiselect element the respective properties: disabled, data-success, data-warning, and data-error. You may remove the title by removing the span.spark-multiselect__label element.

    You can set the number of options to show by default, by giving the fieldset.spark-multiselect element the size property with an integer value: 1 < n < 11. This will show n options, with the last element being half hidden to help show the user there are more options below. Setting no size property will cause the element to grow to display all options without scrolling.

    Default State

    Select Options (Choose 5 Options)
    Some Group
    <fieldset class="spark-multiselect" aria-label="Choose 5 Options" size="4">
      <span class="spark-multiselect__label">Select Options <span class="spark-multiselect__label--small">(Choose 5 Options)</span></span>
      <fieldset class="spark-multiselect__container">
        <div class="spark-multiselect__group" aria-label="Some Group">
          <span class="spark-multiselect__group__label">Some Group</span>
          <label class="spark-checkbox">
            <input class="spark-checkbox__input" type="checkbox">
            <!-- This has to be before .spark-checkbox__box! -->
            <span class="spark-checkbox__box"></span>
            <span class="spark-label">Check one...</span>
          </label>
          <label class="spark-checkbox">
            <input class="spark-checkbox__input" type="checkbox">
            <!-- This has to be before .spark-checkbox__box! -->
            <span class="spark-checkbox__box"></span>
            <span class="spark-label">Check one...</span>
          </label>
          <label class="spark-checkbox">
            <input class="spark-checkbox__input" type="checkbox">
            <!-- This has to be before .spark-checkbox__box! -->
            <span class="spark-checkbox__box"></span>
            <span class="spark-label">Check one...</span>
          </label>
        </div>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check two...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check three...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check four...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox" disabled>
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check five...</span>
        </label>
      </fieldset>
    </fieldset>

    Default State (No Title)

    <fieldset class="spark-multiselect" aria-label="Select Options" size="4">
      <fieldset class="spark-multiselect__container">
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check two...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check three...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check four...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox" disabled>
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check five...</span>
        </label>
      </fieldset>
    </fieldset>

    Disabled State

    Select Options (Choose 5 Options)
    UH OH! You must choose one.
    <fieldset class="spark-multiselect" aria-label="Choose 5 Options" disabled size="4">
      <span class="spark-multiselect__label">Select Options <span class="spark-multiselect__label--small">(Choose 5 Options)</span></span>
      <fieldset class="spark-multiselect__container">
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check two...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check three...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check four...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox" disabled>
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check five...</span>
        </label>
      </fieldset>
      <span class="spark-select__message"><b>UH OH!</b> You must choose one.</span>
    </fieldset>

    Data Success State

    Select Options (Choose 5 Options)
    Good Job You successfully selected 5 options.
    <fieldset class="spark-multiselect" aria-label="Choose 5 Options" data-success size="4">
      <span class="spark-multiselect__label">Select Options <span class="spark-multiselect__label--small">(Choose 5 Options)</span></span>
      <fieldset class="spark-multiselect__container">
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check two...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check three...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check four...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox" disabled>
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check five...</span>
        </label>
      </fieldset>
      <span class="spark-select__message"><b>Good Job</b> You successfully selected 5 options.</span>
    </fieldset>

    Data Warning State

    Select Options (Choose 5 Options)
    Almost there You need to select 2 more options
    <fieldset class="spark-multiselect" aria-label="Choose 5 Options" data-warning size="4">
      <span class="spark-multiselect__label">Select Options <span class="spark-multiselect__label--small">(Choose 5 Options)</span></span>
      <fieldset class="spark-multiselect__container">
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check two...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check three...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check four...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox" disabled>
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check five...</span>
        </label>
      </fieldset>
      <span class="spark-select__message"><b>Almost there</b> You need to select 2 more options</span>
    </fieldset>

    Data Error State

    Select Options (Choose 5 Options)
    UH OH! You must choose one.
    <fieldset class="spark-multiselect" aria-label="Choose 5 Options" data-error size="4">
      <span class="spark-multiselect__label">Select Options <span class="spark-multiselect__label--small">(Choose 5 Options)</span></span>
      <fieldset class="spark-multiselect__container">
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check one...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check two...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check three...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox">
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check four...</span>
        </label>
        <label class="spark-checkbox">
          <input class="spark-checkbox__input" type="checkbox" disabled>
          <!-- This has to be before .spark-checkbox__box! -->
          <span class="spark-checkbox__box"></span>
          <span class="spark-label">Check five...</span>
        </label>
      </fieldset>
      <span class="spark-select__message"><b>UH OH!</b> You must choose one.</span>
    </fieldset>

    Native Multi-Select

    This component is built on top of the native select[multiple] component, allowing browsers to present a system-specific implementation. This is most important on mobile devices where a native selector could be preferred. However, there are limitations; most styles will be overridden by the system implementation, and some browser events are not triggered while the user is interacting with the system implementation. The restrictions and behavior of this element varies with device and browser, in order to see the exact behavior for a given combination, please try these components on the devices and browser combinations you would like to support.

    States

    There are 5 distinct states supported:

    • Native Default State
    • Native Disabled State
    • Native Data Success State
    • Native Data Warning State
    • Native Data Error State

    You may also use these states without a title.

    You can set the number of options to show by default by giving the select.spark-select--multiple__input element the size property with an integer value: 1 < n < 11. This will show n options. Setting no size property will cause the element to display all options without scrolling.

    Native Default State

    <label class="spark-select--multiple">
      <select class="spark-select--multiple__input" multiple size="5">
        <option>Don't pick this one.</option>
        <optgroup label="Group 1">
          <option>Don't pick this one.</option>
          <option>A decent choice.</option>
          <option>The best option.</option>
        </optgroup>
        <optgroup label="Group 2">
          <option>Still more options.</option>
          <option>You have a choice.</option>
          <option>The power is yours.</option>
        </optgroup>
        <option>Pick this one.</option>
      </select>
      <span class="spark-select--multiple__label">Select Options <span class="spark-select--multiple__label--small">(Choose 5 Options)</span></span>
    </label>

    Native Default State (No Title)

    <label class="spark-select--multiple spark-select--multiple--no-title">
      <select class="spark-select--multiple__input" multiple size="5">
        <option>Don't pick this one.</option>
        <optgroup label="Group 1">
          <option>Don't pick this one.</option>
          <option>A decent choice.</option>
          <option>The best option.</option>
        </optgroup>
        <optgroup label="Group 2">
          <option>Still more options.</option>
          <option>You have a choice.</option>
          <option>The power is yours.</option>
        </optgroup>
        <option>Pick this one.</option>
      </select>
    </label>

    Native Disabled State

    <label class="spark-select--multiple">
      <select class="spark-select--multiple__input" multiple size="6" disabled>
        <optgroup label="Group 1">
          <option>Don't pick this one.</option>
          <option>A decent choice.</option>
          <option>The best option.</option>
        </optgroup>
        <optgroup label="Group 2">
          <option>Still more options.</option>
          <option>You have a choice.</option>
          <option>The power is yours.</option>
        </optgroup>
        <option>Pick this one.</option>
      </select>
      <span class="spark-select--multiple__label">Select Options <span class="spark-select--multiple__label--small">(Choose 5 Options)</span></span>
    </label>

    Native Data Success State

    <label class="spark-select--multiple">
      <select class="spark-select--multiple__input" multiple data-success size="4">
        <option>Don't pick this one.</option>
        <option>A decent choice.</option>
        <option>The best option.The best option.The best option.The best option.The best option.The best option.The best option.The best option.The best option.The best option.The best option.The best option.</option>
        <option>Still more options.</option>
        <option>You have a choice.</option>
        <option>The power is yours.</option>
        <option>Pick this one.</option>
      </select>
      <span class="spark-select--multiple__label">Select Options <span class="spark-select--multiple__label--small">(Choose 5 Options)</span></span>
      <span class="spark-select__message"><b>Good Job</b> You successfully selected 5 options.</span>
    </label>

    Native Data Warning State

    <label class="spark-select--multiple">
      <select class="spark-select--multiple__input" multiple data-warning size="4">
      <option>Don't pick this one.</option>
      <option>A decent choice.</option>
      <option>The best option.The best option.The best option.The best option.The best option.The best option.The best option.The best option.The best option.The best option.The best option.The best option.</option>
      <option>Still more options.</option>
      <option>You have a choice.</option>
      <option>The power is yours.</option>
      <option>Pick this one.</option>
    </select>
    <span class="spark-select--multiple__label">Select Options <span class="spark-select--multiple__label--small">(Choose 5 Options)</span></span>
    <span class="spark-select__message"><b>Almost there</b> You need to select 2 more options</span>
    </label>

    Native Data Error State

    <label class="spark-select--multiple">
      <select class="spark-select--multiple__input" multiple data-error size="4">
        <option>Don't pick this one.</option>
        <option>A decent choice.</option>
        <option>The best option.The best option.The best option.The best option.The best option.The best option.The best option.The best option.The best option.The best option.The best option.The best option.</option>
        <option>Still more options.</option>
        <option>You have a choice.</option>
        <option>The power is yours.</option>
        <option>Pick this one.</option>
      </select>
      <span class="spark-select--multiple__label">Select Options <span class="spark-select--multiple__label--small">(Choose 5 Options)</span></span>
      <span class="spark-select__message"><b>UH OH!</b> You must choose one.</span>
    </label>

    Additional Notes

    When using a Custom Multi-Select element, you may selectively disable individual options by giving the option’s respective input.spark-checkbox__input element the disabled property. (Learn more about Checkboxes)

    When you place your Multiple Select element in the disabled state, the span.spark-select__message will be hidden.

    • Native Multi-Select Example
      • When to Use
      • When Not to Use
      • Variations
    • Variations
      • Custom Multi-Select
        • When to Use:
    • Developer Notes
      • Custom Multi-Select
        • States
        • Default State
        • Default State (No Title)
        • Disabled State
        • Data Success State
        • Data Warning State
        • Data Error State
      • Native Multi-Select
        • States
        • Native Default State
        • Native Default State (No Title)
        • Native Disabled State
        • Native Data Success State
        • Native Data Warning State
        • Native Data Error State
      • Additional Notes
    © 2015-16 Sabre
    • Contact Us
    • Report a Bug