Chi Design System
v6.30.0v6.29.0v6.28.0v6.27.0v6.26.0v6.25.0v6.24.0v6.23.0v6.22.0v6.21.0v6.20.0v6.19.0v6.18.0v6.17.0v6.16.0v6.15.0v6.14.0v6.13.0v6.12.0v6.11.0v6.10.0v6.9.0v6.8.0v6.7.0v6.6.0v6.5.0v6.4.0v6.3.0v6.2.0v6.1.0v6.0.0v5.78.0v5.77.0v5.76.0v5.75.0v5.74.0v5.73.0v5.72.0v5.71.0v5.70.0v5.69.0v5.68.0v5.67.0v5.66.0v5.65.0v5.64.0v5.63.0v5.62.0v5.61.0v5.60.0v5.59.0v5.58.0v5.57.0v5.56.0v5.55.0v5.54.0v5.53.0v5.52.0v5.51.1v5.51.0v5.50.0v5.49.0v5.48.0v5.47.0v5.46.0v5.45.0v5.44.0v5.43.0v5.42.0v5.41.0v5.40.0v5.39.0v5.38.0v5.37.0v5.36.0v5.35.0v5.34.0v5.33.0v5.32.0v5.31.0v5.30.0v5.29.0v5.28.0v5.27.0v5.26.0v5.25.0v5.24.0v5.23.0v5.22.0v5.21.0v5.20.1v5.20.0v5.19.0v5.18.0v5.17.0v5.16.0v5.15.0v5.14.1v5.14.0v5.13.1v5.13.0v5.12.0v5.11.0v5.9.1v5.9.0v5.8.0v5.7.0v5.6.0v5.5.0v5.4.0v5.3.1v5.3.0v5.2.0v5.1.0v5.0.0v4.4.0v4.3.0v4.2.0v4.1.2v4.1.1v4.1.0v4.0.0v3.17.0v3.16.0v3.15.0v3.14.0v3.13.0v3.12.0v3.11.0v3.10.0v3.9.0v3.8.0v3.7.0v3.6.0v3.5.0v3.4.0v3.3.0v3.2.0v3.1.1v3.1.0v3.0.0v2.6.0v2.5.1v2.5.0v2.4.1v2.4.0v2.3.0v2.2.0v2.1.0v2.0.0Email SupportTalk #Chi on Microsoft Teams
CenturyLink
Lumen
Lumen Enterprise Portal
    • Introduction
    • Installation
    • Development workflow
    • Browser support
    • What's new
      • Color and sensory
      • Images
      • Links and forms
      • Other
      • Overview
      • Page structure
      • Tables
      • Text
      • Using the keyboard
    • Color
    • Design tokens
    • Grid
    • Border
    • Color
    • Display
    • Flex
    • Image
    • Opacity
    • Overflow
    • Position
    • Shadow
    • Sizing
    • Spacing
    • Text
    • Vertical-align
    • Z-index
    • App Layout
    • Card
    • Error 404
    • Error 500
    • State
    • Accordion
    • Activity
    • Alert
    • Avatar
    • Badge
    • Brand
    • Breadcrumb
    • Button
    • Button group
    • Card
    • Carousel
    • Divider
    • Drawer
    • Dropdown
    • Expansion panel
    • Footer
      • Checkbox
      • Copy text
      • Date picker
      • File input
      • Number input
      • Phone input
      • Picker
      • Picker group
      • Radio button
      • Range slider
      • Search input
      • Select
      • Text input
      • Textarea
      • Time picker
      • Toggle switch
    • Header
      • Flag icon
      • Icon
      • Marketing icon
    • Label
    • Link
      • Cache Loader
      • Skeleton
      • Spinner
    • Mobile navigation
    • Modal
    • Pagination
    • Popover
    • Price
    • Progress
    • Sidenav
    • Stat
    • Steps
      • Data table
      • Table
    • Tabs
    • Tags
    • Toolbar
    • Tooltip
    • Transfer list
CenturyLink
Lumen
Lumen Enterprise Portal
    • Introduction
    • Installation
    • Development workflow
    • Browser support
    • What's new
      • Color and sensory
      • Images
      • Links and forms
      • Other
      • Overview
      • Page structure
      • Tables
      • Text
      • Using the keyboard
    • Color
    • Design tokens
    • Grid
    • Border
    • Color
    • Display
    • Flex
    • Image
    • Opacity
    • Overflow
    • Position
    • Shadow
    • Sizing
    • Spacing
    • Text
    • Vertical-align
    • Z-index
    • App Layout
    • Card
    • Error 404
    • Error 500
    • State
    • Accordion
    • Activity
    • Alert
    • Avatar
    • Badge
    • Brand
    • Breadcrumb
    • Button
    • Button group
    • Card
    • Carousel
    • Divider
    • Drawer
    • Dropdown
    • Expansion panel
    • Footer
      • Checkbox
      • Copy text
      • Date picker
      • File input
      • Number input
      • Phone input
      • Picker
      • Picker group
      • Radio button
      • Range slider
      • Search input
      • Select
      • Text input
      • Textarea
      • Time picker
      • Toggle switch
    • Header
      • Flag icon
      • Icon
      • Marketing icon
    • Label
    • Link
      • Cache Loader
      • Skeleton
      • Spinner
    • Mobile navigation
    • Modal
    • Pagination
    • Popover
    • Price
    • Progress
    • Sidenav
    • Stat
    • Steps
      • Data table
      • Table
    • Tabs
    • Tags
    • Toolbar
    • Tooltip
    • Transfer list

Toolbar

Toolbar provides the ability of performing actions such as searching for elements and filtering complex structures.
  • Examples
  • Properties
  • Accessibility

Examples

Base#

CancelApply
Refresh
Download All DataDownload All Current Results
Customize columns

Customize Columns

Available Columns
Selected Columns
Use the slots start to add elements to the left side area of the Toolbar Header and the end - to the right side.
<!-- Vue component -->
<ChiDataTableToolbar>
  <template v-slot:start>
    <ChiSearchInput :dataTableSearch="true" />
    <div class="chi-divider -vertical"></div>
    <!-- To render views, use Views sub-module of Toolbar -->
    <ChiDataTableViews :views="toolbar.viewsData" />
    <div class="chi-divider -vertical"></div>
    <!-- To render filters, use Filters sub-module of Toolbar by providing it with respective data -->
    <ChiDataTableFilters :filtersData="toolbar.filtersData" :customItems="toolbar.customItemsData">
      <template v-slot:customAdvanced>
        <div class="chi-form__item">
          <chi-label for="toolbar_base_filter_input-1">City</chi-label>
          <chi-text-input id="toolbar_base_filter_input-1"></chi-text-input>
          <chi-label for="toolbar_base_filter_input-2">Zip Code</chi-label>
          <chi-text-input id="toolbar_base_filter_input-2"></chi-text-input>
        </div>
      </template>
      <template v-slot:customAdvanced2>
        <chi-date-picker />
      </template>
    </ChiDataTableFilters>
  </template>
  <template v-slot:end>
    <ChiTooltip message="Refresh">
      <button class="chi-button -icon -flat" aria-label="Refresh">
        <div class="chi-button__content">
          <i class="chi-icon icon-refresh" aria-hidden="true"></i>
        </div>
      </button>
    </ChiTooltip>
    <ChiTooltip message="Download">
      <button class="chi-button -icon -flat" aria-label="Download">
        <div class="chi-button__content">
          <i class="chi-icon icon-arrow-to-bottom" aria-hidden="true"></i>
        </div>
      </button>
    </ChiTooltip>
    <!-- To enable customization of columns, use Column Customization sub-module of Toolbar by providing it with respective data -->
    <ChiColumnCustomization :columnsData="toolbar.columnsData" />
  </template>
</ChiDataTableToolbar>

<!-- Example Data -->
const customItems = [
  {
    template: 'customAdvanced',
    label: 'Custom 1',
  },
  {
    template: 'customAdvanced2',
    label: 'Custom 2',
  },
];
const filters = [
  {
    name: 'status',
    type: 'select',
    id: 'myoption1',
    options: [
      {
        label: 'Select',
        value: '',
        selected: true,
      },
      {
        label: 'Active',
        value: 'active',
        selected: false,
      },
      {
        label: 'Inactive',
        value: 'inactive',
        selected: false,
      }
    ],
    advanced: false,
    value: ''
  },
  {
    name: 'statusAdvanced',
    label: 'Status',
    type: 'select',
    id: 'myoption1',
    options: [
      {
        label: 'Pending Active',
        value: 'pending',
        selected: false
      },
      {
        label: 'Active',
        value: 'active',
        selected: false
      },
      {
        label: 'Inactive',
        value: 'inactive',
        selected: false
      }
    ],
    advanced: true,
    value: 'pending',
  },
  {
    name: 'inputAdvanced',
    label: 'Label',
    id: 'myoption2',
    advanced: true,
  },
  {
    name: 'textareaAdvanced',
    label: 'textarea',
    id: 'myoption3',
    type: 'textarea',
    advanced: true,
  },
  {
    name: 'checkboxAdvanced',
    id: 'myoption4',
    label: 'Advanced Checkbox',
    type: 'checkbox',
    advanced: true
  }
];

const columns = [
  {
    name: 'columnA',
    label: 'Column A',
  },
  {
    name: 'columnB',
    label: 'Column B',
  },
  {
    name: 'columnC',
    label: 'Column C',
    locked: true,
    selected: true,
  },
  {
    name: 'columnD',
    label: 'Column D',
    locked: true,
    selected: true,
  },
  {
    name: 'columnE',
    label: 'Column E',
    selected: true,
  },
  {
    name: 'columnF',
    label: 'Column F',
    selected: true,
  },
  {
    name: 'columnG',
    label: 'Column G',
  },
  {
    name: 'columnH',
    label: 'Column H',
  },
  {
    name: 'columnI',
    label: 'Column I',
  },
  {
    name: 'columnJ',
    label: 'Column J',
  },
];

const toolbar = {
  customItemsData: customItems,
  filtersData: {
    filters: filters,
  },
  columnsData: {
    columns: columns,
  },
  viewsData: [
    {
      id: 'view-1',
      label: 'View 1',
      columns: columns,
      searchString: 'abc',
      filters: filters,
    },
    {
      id: 'view-2',
      label: 'View 2',
      columns: [],
      searchString: 'abcde',
      filters: [],
    },
  ],
};
To render toolbar, use the class chi-toolbar.
<div class="chi-toolbar">
  <div class="chi-toolbar__header">
    <div class="chi-toolbar__start">
      <div class="chi-toolbar__search">
        <div class="chi-form__item">
          <chi-search-input id="toolbar_base"></chi-search-input>
        </div>
      </div>
      <div class="chi-divider -vertical"></div>
      <div class="chi-toolbar__views">
        <div class="chi-toolbar__views-desktop">
          <div class="chi-form__item">
            <select class="chi-select" id="toolbar_base_views-1">
              <option>View 1</option>
              <option>View 2</option>
            </select>
          </div>
        </div>
      </div>
      <div class="chi-divider -vertical"></div>
      <div class="chi-form__item -ml--1">
        <select class="chi-select">
          <option>Select</option>
          <option>Active</option>
          <option>Inactive</option>
        </select>
      </div>
      <div class="chi-toolbar__filters">
        <div class="chi-toolbar__filters-desktop">
          <button class="chi-button -icon -flat" id="toolbar_base_filter_button" aria-label="Filters" data-tooltip="Filters" data-position="top">
            <div class="chi-button__content">
              <i class="chi-icon icon-filter" aria-hidden="true"></i>
            </div>
          </button>
        </div>
        <div class="chi-toolbar__filters-mobile">
          <button class="chi-button -icon -flat chi-drawer__trigger" id="toolbar_base_drawer_trigger-1" data-target="#toolbar_base" aria-label="Button action">
            <div class="chi-button__content">
              <i class="chi-icon icon-filter" aria-hidden="true"></i>
            </div>
          </button>
        </div>
      </div>
    </div>
    <div class="chi-toolbar__end">
      <div class="chi-toolbar__actions">
        <div class="chi-toolbar__actions-desktop">
          <button class="chi-button -icon -flat" id="toolbar_base_refresh_button" aria-label="Refresh" data-tooltip="Refresh" data-position="top">
            <div class="chi-button__content">
              <i class="chi-icon icon-refresh" aria-hidden="true"></i>
            </div>
          </button>
          <button class="chi-button -icon -flat" id="toolbar_base_download_button" aria-label="Download" data-tooltip="Download" data-position="top">
            <div class="chi-button__content">
              <i class="chi-icon icon-arrow-to-bottom" aria-hidden="true"></i>
            </div>
          </button>
          <button class="chi-button -icon -flat" id="toolbar_base_column_customization_button" aria-label="Customize columns" data-tooltip="Customize columns" data-position="top">
            <div class="chi-button__content">
              <i class="chi-icon icon-table-column-settings" aria-hidden="true"></i>
            </div>
          </button>
        </div>
        <div class="chi-toolbar__actions-mobile">
          <button class="chi-button -icon -flat chi-drawer__trigger" id="toolbar_base_drawer_trigger-2" data-target="#toolbar_base_drawer-2" aria-label="Button action">
            <div class="chi-button__content">
              <i class="chi-icon icon-more-vert" aria-hidden="true"></i>
            </div>
          </button>
        </div>
      </div>
    </div>
  </div>
</div>

<!-- Drawer -->
<div class="chi-backdrop -closed">
  <div class="chi-backdrop__wrapper">
    <div
      class="chi-drawer -left -menu -position--absolute"
      id="toolbar_base"
    >
      <div class="chi-drawer__header">
        <span class="chi-drawer__title">Filters</span>
        <button class="chi-button -icon -close" aria-label="Close">
          <div class="chi-button__content">
            <i class="chi-icon icon-x" aria-hidden="true"></i>
          </div>
        </button>
      </div>
      <div class="chi-drawer__content -px--2 -py--3">
        <div class="chi-form__item -mb--2">
          <label class="chi-label" for="toolbar_base_select-1">Label</label>
          <select class="chi-select" id="toolbar_base_select-1">
            <option value="">Select</option>
            <option>Option 1</option>
            <option>Option 2</option>
            <option>Option 3</option>
          </select>
        </div>
        <div class="chi-form__item -mb--2">
          <label class="chi-label" for="toolbar_base_select-2">Label</label>
          <select class="chi-select" id="toolbar_base_select-2">
            <option value="">Select</option>
            <option>Option 1</option>
            <option>Option 2</option>
            <option>Option 3</option>
          </select>
        </div>
        <div class="chi-form__item -mb--2">
          <label class="chi-label" for="toolbar_base_select-3">Label</label>
          <select class="chi-select" id="toolbar_base_select-3">
            <option value="">Select</option>
            <option>Option 1</option>
            <option>Option 2</option>
            <option>Option 3</option>
          </select>
        </div>
        <div class="chi-form__item -mb--2">
          <label class="chi-label" for="toolbar_base_select-4">Label</label>
          <select class="chi-select" id="toolbar_base_select-4">
            <option value="">Select</option>
            <option>Option 1</option>
            <option>Option 2</option>
            <option>Option 3</option>
          </select>
        </div>
      </div>
      <div class="-d--flex -justify-content--center -pb--2">
        <button class="chi-button -primary">Apply</button>
        <button class="chi-button -ml--2">Cancel</button>
      </div>
    </div>
  </div>
</div>
<div class="chi-backdrop -closed">
  <div class="chi-backdrop__wrapper">
    <div class="chi-drawer -right -menu -position--absolute" id="toolbar_base_drawer-2">
      <div class="chi-drawer__header">
        <span class="chi-drawer__title">Actions</span>
        <button class="chi-button -icon -close" aria-label="Close">
          <div class="chi-button__content">
            <i class="chi-icon icon-x" aria-hidden="true"></i>
          </div>
        </button>
      </div>
      <div class="chi-drawer__content -px--2">
        <ul class="-no-style">
          <li class="-text--md">Download data</li>
          <div class="chi-divider"></div>
          <li class="-text--md">Refresh results</li>
          <div class="chi-divider"></div>
        </ul>
      </div>
    </div>
  </div>
</div>

<!-- Javascript -->
<script>
  chi.drawer(document.getElementById('toolbar_base_drawer_trigger-1'));
  chi.drawer(document.getElementById('toolbar_base_drawer_trigger-2'));
  chi.tooltip(document.querySelectorAll('[data-tooltip]'));
</script>

Base with save view#

CancelApply
Refresh
Download
Customize columns

Customize Columns

Available Columns
Selected Columns
Search Results (1-40 of 78)
Use the slots start to add elements to the left side area of the Toolbar Header and the end - to the right side.
<!-- Vue component -->
<ChiDataTableToolbar>
  <template v-slot:start>
    <ChiSearchInput :dataTableSearch="true" />
    <div class="chi-divider -vertical"></div>
    <!-- To render views, use Views sub-module of Toolbar -->
    <ChiDataTableViews :views="toolbar.viewsData" />
    <div class="chi-divider -vertical"></div>
    <!-- To render filters, use Filters sub-module of Toolbar by providing it with respective data -->
    <ChiDataTableFilters :filtersData="toolbar.filtersData" :customItems="toolbar.customItemsData">
      <template v-slot:customAdvanced>
        <div class="chi-form__item">
          <chi-label for="base_with_save_view_filter_input-1">City</chi-label>
          <chi-text-input id="base_with_save_view_filter_input-1"></chi-text-input>
          <chi-label for="base_with_save_view_filter_input-2">Zip Code</chi-label>
          <chi-text-input id="base_with_save_view_filter_input-2"></chi-text-input>
        </div>
      </template>
      <template v-slot:customAdvanced2>
        <chi-date-picker />
      </template>
    </ChiDataTableFilters>
  </template>
  <template v-slot:end>
    <ChiTooltip message="Refresh">
      <button class="chi-button -icon -flat" aria-label="Refresh">
        <div class="chi-button__content">
          <i class="chi-icon icon-refresh" aria-hidden="true"></i>
        </div>
      </button>
    </ChiTooltip>
    <ChiTooltip message="Download">
      <button class="chi-button -icon -flat" aria-label="Download">
        <div class="chi-button__content">
          <i class="chi-icon icon-arrow-to-bottom" aria-hidden="true"></i>
        </div>
      </button>
    </ChiTooltip>
    <!-- To enable customization of columns, use Column Customization sub-module of Toolbar by providing it with respective data -->
    <ChiColumnCustomization :columnsData="toolbar.columnsData" />
  </template>
</ChiDataTableToolbar>
<ChiSaveView
  :active="saveView.active"
  :default="saveView.default"
  :mode="saveView.mode"
  :results="saveView.results"
  :title="saveView.title"
></ChiSaveView>

<!-- Example Data -->
const customItems = [
  {
    template: 'customAdvanced',
    label: 'Custom 1',
  },
  {
    template: 'customAdvanced2',
    label: 'Custom 2',
  },
];
const filters = [
  {
    name: 'status',
    type: 'select',
    id: 'myoption1',
    options: [
      {
        label: 'Select',
        value: '',
        selected: true,
      },
      {
        label: 'Active',
        value: 'active',
        selected: false,
      },
      {
        label: 'Inactive',
        value: 'inactive',
        selected: false,
      }
    ],
    advanced: false,
    value: ''
  },
  {
    name: 'statusAdvanced',
    label: 'Status',
    type: 'select',
    id: 'myoption1',
    options: [
      {
        label: 'Pending Active',
        value: 'pending',
        selected: false
      },
      {
        label: 'Active',
        value: 'active',
        selected: false
      },
      {
        label: 'Inactive',
        value: 'inactive',
        selected: false
      }
    ],
    advanced: true,
    value: 'pending',
  },
  {
    name: 'inputAdvanced',
    label: 'Label',
    id: 'myoption2',
    advanced: true,
  },
  {
    name: 'textareaAdvanced',
    label: 'textarea',
    id: 'myoption3',
    type: 'textarea',
    advanced: true,
  },
  {
    name: 'checkboxAdvanced',
    id: 'myoption4',
    label: 'Advanced Checkbox',
    type: 'checkbox',
    advanced: true
  }
];

const columns = [
  {
    name: 'columnA',
    label: 'Column A',
  },
  {
    name: 'columnB',
    label: 'Column B',
  },
  {
    name: 'columnC',
    label: 'Column C',
    locked: true,
    selected: true,
  },
  {
    name: 'columnD',
    label: 'Column D',
    locked: true,
    selected: true,
  },
  {
    name: 'columnE',
    label: 'Column E',
    selected: true,
  },
  {
    name: 'columnF',
    label: 'Column F',
    selected: true,
  },
  {
    name: 'columnG',
    label: 'Column G',
  },
  {
    name: 'columnH',
    label: 'Column H',
  },
  {
    name: 'columnI',
    label: 'Column I',
  },
  {
    name: 'columnJ',
    label: 'Column J',
  },
];

const toolbar = {
  customItemsData: customItems,
  filtersData: {
    filters: filters,
  },
  columnsData: {
    columns: columns,
  },
  viewsData: [
    {
      id: 'view-1',
      label: 'View 1',
      columns: columns,
      searchString: 'abc',
      filters: filters,
    },
    {
      id: 'view-2',
      label: 'View 2',
      columns: [],
      searchString: 'abcde',
      filters: [],
    },
  ],
};
const saveView = {
  title: 'Search Results',
  results: '(1-40 of 78)',
  mode: 'base',
  active: true,
  default: true
};
To render toolbar, use the class chi-toolbar.
<div class="chi-toolbar">
  <div class="chi-toolbar__header">
    <div class="chi-toolbar__start">
      <div class="chi-toolbar__search">
        <div class="chi-form__item">
          <chi-search-input id="base_with_save_view"></chi-search-input>
        </div>
      </div>
      <div class="chi-divider -vertical"></div>
      <div class="chi-toolbar__views">
        <div class="chi-toolbar__views-desktop">
          <div class="chi-form__item">
            <select class="chi-select" id="base_with_save_view_views-1">
              <option>View 1</option>
              <option>View 2</option>
            </select>
          </div>
        </div>
      </div>
      <div class="chi-divider -vertical"></div>
      <div class="chi-form__item -ml--1">
        <select class="chi-select">
          <option>Select</option>
          <option>Active</option>
          <option>Inactive</option>
        </select>
      </div>
      <div class="chi-toolbar__filters">
        <div class="chi-toolbar__filters-desktop">
          <button class="chi-button -icon -flat" id="base_with_save_view_filter_button" aria-label="Filters" data-tooltip="Filters" data-position="top">
            <div class="chi-button__content">
              <i class="chi-icon icon-filter" aria-hidden="true"></i>
            </div>
          </button>
        </div>
        <div class="chi-toolbar__filters-mobile">
          <button class="chi-button -icon -flat chi-drawer__trigger" id="base_with_save_view_drawer_trigger-1" data-target="#base_with_save_view" aria-label="Button action">
            <div class="chi-button__content">
              <i class="chi-icon icon-filter" aria-hidden="true"></i>
            </div>
          </button>
        </div>
      </div>
    </div>
    <div class="chi-toolbar__end">
      <div class="chi-toolbar__actions">
        <div class="chi-toolbar__actions-desktop">
          <button class="chi-button -icon -flat" id="base_with_save_view_refresh_button" aria-label="Refresh" data-tooltip="Refresh" data-position="top">
            <div class="chi-button__content">
              <i class="chi-icon icon-refresh" aria-hidden="true"></i>
            </div>
          </button>
          <button class="chi-button -icon -flat" id="base_with_save_view_download_button" aria-label="Download" data-tooltip="Download" data-position="top">
            <div class="chi-button__content">
              <i class="chi-icon icon-arrow-to-bottom" aria-hidden="true"></i>
            </div>
          </button>
          <button class="chi-button -icon -flat" id="base_with_save_view_column_customization_button" aria-label="Customize columns" data-tooltip="Customize columns" data-position="top">
            <div class="chi-button__content">
              <i class="chi-icon icon-table-column-settings" aria-hidden="true"></i>
            </div>
          </button>
        </div>
        <div class="chi-toolbar__actions-mobile">
          <button class="chi-button -icon -flat chi-drawer__trigger" id="base_with_save_view_drawer_trigger-2" data-target="#base_with_save_view_drawer-2" aria-label="Button action">
            <div class="chi-button__content">
              <i class="chi-icon icon-more-vert" aria-hidden="true"></i>
            </div>
          </button>
        </div>
      </div>
    </div>
  </div>
</div>

<!-- Save view -->
<div class="chi-toolbar__ribbon">
  <div class="chi-toolbar__start">
    <i class="chi-icon icon-arrow-down -xs" aria-hidden="true"></i>
    <div class="chi-toolbar__results">
      <span class="chi-toolbar__label">Search Results </span>
      <span>(1-40 of 78)</span>
    </div>
    <div class="chi-divider -vertical"></div>
    <chi-link href="#" size="md">Save View</chi-link>
  </div>
  <div class="chi-toolbar__end">
    <button class="chi-button -icon -flat" aria-label="Button action">
      <div class="chi-button__content">
        <i class="chi-icon icon-x" aria-hidden="true"></i>
      </div>
    </button>
  </div>
</div>

<!-- Drawer -->
<div class="chi-backdrop -closed">
  <div class="chi-backdrop__wrapper">
    <div
      class="chi-drawer -left -menu -position--absolute"
      id="base_with_save_view"
    >
      <div class="chi-drawer__header">
        <span class="chi-drawer__title">Filters</span>
        <button class="chi-button -icon -close" aria-label="Close">
          <div class="chi-button__content">
            <i class="chi-icon icon-x" aria-hidden="true"></i>
          </div>
        </button>
      </div>
      <div class="chi-drawer__content -px--2 -py--3">
        <div class="chi-form__item -mb--2">
          <label class="chi-label" for="base_with_save_view_select-1">Label</label>
          <select class="chi-select" id="base_with_save_view_select-1">
            <option value="">Select</option>
            <option>Option 1</option>
            <option>Option 2</option>
            <option>Option 3</option>
          </select>
        </div>
        <div class="chi-form__item -mb--2">
          <label class="chi-label" for="base_with_save_view_select-2">Label</label>
          <select class="chi-select" id="base_with_save_view_select-2">
            <option value="">Select</option>
            <option>Option 1</option>
            <option>Option 2</option>
            <option>Option 3</option>
          </select>
        </div>
        <div class="chi-form__item -mb--2">
          <label class="chi-label" for="base_with_save_view_select-3">Label</label>
          <select class="chi-select" id="base_with_save_view_select-3">
            <option value="">Select</option>
            <option>Option 1</option>
            <option>Option 2</option>
            <option>Option 3</option>
          </select>
        </div>
        <div class="chi-form__item -mb--2">
          <label class="chi-label" for="base_with_save_view_select-4">Label</label>
          <select class="chi-select" id="base_with_save_view_select-4">
            <option value="">Select</option>
            <option>Option 1</option>
            <option>Option 2</option>
            <option>Option 3</option>
          </select>
        </div>
      </div>
      <div class="-d--flex -justify-content--center -pb--2">
        <button class="chi-button -primary">Apply</button>
        <button class="chi-button -ml--2">Cancel</button>
      </div>
    </div>
  </div>
</div>
<div class="chi-backdrop -closed">
  <div class="chi-backdrop__wrapper">
    <div class="chi-drawer -right -menu -position--absolute" id="base_with_save_view_drawer-2">
      <div class="chi-drawer__header">
        <span class="chi-drawer__title">Actions</span>
        <button class="chi-button -icon -close" aria-label="Close">
          <div class="chi-button__content">
            <i class="chi-icon icon-x" aria-hidden="true"></i>
          </div>
        </button>
      </div>
      <div class="chi-drawer__content -px--2">
        <ul class="-no-style">
          <li class="-text--md">Download data</li>
          <div class="chi-divider"></div>
          <li class="-text--md">Refresh results</li>
          <div class="chi-divider"></div>
        </ul>
      </div>
    </div>
  </div>
</div>

<!-- Javascript -->
<script>
  chi.drawer(document.getElementById('base_with_save_view_drawer_trigger-1'));
  chi.drawer(document.getElementById('base_with_save_view_drawer_trigger-2'));
  chi.tooltip(document.querySelectorAll('[data-tooltip]'));
</script>

Save view interaction#

Toggle Save View
<div class="-w--100" id="save-view">
  <button class="chi-button" @click="toggleSaveView">Toggle Save View</button>
  <ChiSaveView class="-mt--2" :config="config" @chiViewSave="saveView" @chiViewDelete="deleteView">
    <template v-slot:info-icon>
      <button class="chi-button -light -icon -flat -xs" id="chi-save-view__info-trigger" aria-label="Edit" @click="() => toggleInfoPopover()" slot="info-icon">
        <div class="chi-button__content">
          <i class="chi-icon icon-circle-info-outline" aria-hidden="true"></i>
        </div>
      </button>
    </template>
    <template v-slot:info-popover>
      <chi-popover :active="isInfoPopoverActive" position="right-start" title="Popover title" variant="text" arrow="" reference="#chi-save-view__info-trigger" @chiPopoverHidden="() => (isInfoPopoverActive = false)">Popover content</chi-popover>
    </template>
  </ChiSaveView>
</div>

<!-- Example Data -->
const config = ref({
  active: false,
  results: '(1-40 of 78)',
});

const isInfoPopoverActive = ref(false);

const toggleInfoPopover = () => {
  isInfoPopoverActive.value = !isInfoPopoverActive.value;
};
const toggleSaveView = () => {
  config.value = {
    ...config.value,
    active: !config.value.active,
  };
};

Base with save view and bulk actions#

CancelApply
Refresh
Download
Customize columns

Customize Columns

Available Columns
Selected Columns
Search Results (1-40 of 78)
Actions (10 Items Selected)
Download Compose Delete Print
Use the slots start to add elements to the left side area of the Toolbar Header and the end - to the right side.
<!-- Vue component -->
<ChiDataTableToolbar>
  <template v-slot:start>
    <ChiSearchInput :dataTableSearch="true" />
    <div class="chi-divider -vertical"></div>
    <!-- To render views, use Views sub-module of Toolbar -->
    <ChiDataTableViews :views="toolbar.viewsData" />
    <div class="chi-divider -vertical"></div>
    <!-- To render filters, use Filters sub-module of Toolbar by providing it with respective data -->
    <ChiDataTableFilters :filtersData="toolbar.filtersData" :customItems="toolbar.customItemsData">
      <template v-slot:customAdvanced>
        <div class="chi-form__item">
          <chi-label for="toolbar-example-bulk-actions_filter_input-1">City</chi-label>
          <chi-text-input id="toolbar-example-bulk-actions_filter_input-1"></chi-text-input>
          <chi-label for="toolbar-example-bulk-actions_filter_input-2">Zip Code</chi-label>
          <chi-text-input id="toolbar-example-bulk-actions_filter_input-2"></chi-text-input>
        </div>
      </template>
      <template v-slot:customAdvanced2>
        <chi-date-picker />
      </template>
    </ChiDataTableFilters>
  </template>
  <template v-slot:end>
    <ChiTooltip message="Refresh">
      <button class="chi-button -icon -flat" aria-label="Refresh">
        <div class="chi-button__content">
          <i class="chi-icon icon-refresh" aria-hidden="true"></i>
        </div>
      </button>
    </ChiTooltip>
    <ChiTooltip message="Download">
      <button class="chi-button -icon -flat" aria-label="Download">
        <div class="chi-button__content">
          <i class="chi-icon icon-arrow-to-bottom" aria-hidden="true"></i>
        </div>
      </button>
    </ChiTooltip>
    <!-- To enable customization of columns, use Column Customization sub-module of Toolbar by providing it with respective data -->
    <ChiColumnCustomization :columnsData="toolbar.columnsData" />
  </template>
</ChiDataTableToolbar>
<ChiSaveView
  :active="saveView.active"
  :default="saveView.default"
  :mode="saveView.mode"
  :results="saveView.results"
  :title="saveView.title"
></ChiSaveView>
<ChiDataTableBulkActions uuid="toolbar-example-bulk-actions" selected-rows="10">
  <div class="chi-bulk-actions__buttons">
    <div class="chi-bulk-actions__buttons-mobile -z--40">
      <chi-button variant="flat" type="icon" aria-label="Edit">
        <chi-icon icon="edit"></chi-icon>
      </chi-button>
      <chi-button variant="flat" type="icon" aria-label="Compose">
        <chi-icon icon="compose"></chi-icon>
      </chi-button>
      <chi-button variant="flat" type="icon" aria-label="Delete">
        <chi-icon icon="delete"></chi-icon>
      </chi-button>
      <chi-button variant="flat" type="icon" aria-label="Print">
        <chi-icon icon="print"></chi-icon>
      </chi-button>
    </div>
    <div class="chi-bulk-actions__buttons-desktop">
      <chi-button size="xs" aria-label="Download">
        <chi-icon icon="arrow-to-bottom"></chi-icon>
        <span> Download </span>
      </chi-button>
      <chi-button size="xs" aria-label="Compose">
        <chi-icon icon="arrow-to-bottom"></chi-icon>
        <span> Compose </span>
      </chi-button>
      <chi-button size="xs" aria-label="Delete">
        <chi-icon icon="arrow-to-bottom"></chi-icon>
        <span> Delete </span>
      </chi-button>
      <chi-button size="xs" aria-label="Print">
        <chi-icon icon="arrow-to-bottom"></chi-icon>
        <span> Print </span>
      </chi-button>
    </div>
  </div>
</ChiDataTableBulkActions>

<!-- Example Data -->
const customItems = [
  {
    template: 'customAdvanced',
    label: 'Custom 1',
  },
  {
    template: 'customAdvanced2',
    label: 'Custom 2',
  },
];
const filters = [
  {
    name: 'status',
    type: 'select',
    id: 'myoption1',
    options: [
      {
        label: 'Select',
        value: '',
        selected: true,
      },
      {
        label: 'Active',
        value: 'active',
        selected: false,
      },
      {
        label: 'Inactive',
        value: 'inactive',
        selected: false,
      }
    ],
    advanced: false,
    value: ''
  },
  {
    name: 'statusAdvanced',
    label: 'Status',
    type: 'select',
    id: 'myoption1',
    options: [
      {
        label: 'Pending Active',
        value: 'pending',
        selected: false
      },
      {
        label: 'Active',
        value: 'active',
        selected: false
      },
      {
        label: 'Inactive',
        value: 'inactive',
        selected: false
      }
    ],
    advanced: true,
    value: 'pending',
  },
  {
    name: 'inputAdvanced',
    label: 'Label',
    id: 'myoption2',
    advanced: true,
  },
  {
    name: 'textareaAdvanced',
    label: 'textarea',
    id: 'myoption3',
    type: 'textarea',
    advanced: true,
  },
  {
    name: 'checkboxAdvanced',
    id: 'myoption4',
    label: 'Advanced Checkbox',
    type: 'checkbox',
    advanced: true
  }
];

const columns = [
  {
    name: 'columnA',
    label: 'Column A',
  },
  {
    name: 'columnB',
    label: 'Column B',
  },
  {
    name: 'columnC',
    label: 'Column C',
    locked: true,
    selected: true,
  },
  {
    name: 'columnD',
    label: 'Column D',
    locked: true,
    selected: true,
  },
  {
    name: 'columnE',
    label: 'Column E',
    selected: true,
  },
  {
    name: 'columnF',
    label: 'Column F',
    selected: true,
  },
  {
    name: 'columnG',
    label: 'Column G',
  },
  {
    name: 'columnH',
    label: 'Column H',
  },
  {
    name: 'columnI',
    label: 'Column I',
  },
  {
    name: 'columnJ',
    label: 'Column J',
  },
];

const toolbar = {
  customItemsData: customItems,
  filtersData: {
    filters: filters,
  },
  columnsData: {
    columns: columns,
  },
  viewsData: [
    {
      id: 'view-1',
      label: 'View 1',
      columns: columns,
      searchString: 'abc',
      filters: filters,
    },
    {
      id: 'view-2',
      label: 'View 2',
      columns: [],
      searchString: 'abcde',
      filters: [],
    },
  ],
};
const saveView = {
  title: 'Search Results',
  results: '(1-40 of 78)',
  mode: 'base',
  active: true,
  default: true
};
To render toolbar, use the class chi-toolbar.
<div class="chi-toolbar">
  <div class="chi-toolbar__header">
    <div class="chi-toolbar__start">
      <div class="chi-toolbar__search">
        <div class="chi-form__item">
          <chi-search-input id="toolbar-example-bulk-actions"></chi-search-input>
        </div>
      </div>
      <div class="chi-divider -vertical"></div>
      <div class="chi-toolbar__views">
        <div class="chi-toolbar__views-desktop">
          <div class="chi-form__item">
            <select class="chi-select" id="toolbar-example-bulk-actions_views-1">
              <option>View 1</option>
              <option>View 2</option>
            </select>
          </div>
        </div>
      </div>
      <div class="chi-divider -vertical"></div>
      <div class="chi-form__item -ml--1">
        <select class="chi-select">
          <option>Select</option>
          <option>Active</option>
          <option>Inactive</option>
        </select>
      </div>
      <div class="chi-toolbar__filters">
        <div class="chi-toolbar__filters-desktop">
          <button class="chi-button -icon -flat" id="toolbar-example-bulk-actions_filter_button" aria-label="Filters" data-tooltip="Filters" data-position="top">
            <div class="chi-button__content">
              <i class="chi-icon icon-filter" aria-hidden="true"></i>
            </div>
          </button>
        </div>
        <div class="chi-toolbar__filters-mobile">
          <button class="chi-button -icon -flat chi-drawer__trigger" id="toolbar-example-bulk-actions_drawer_trigger-1" data-target="#toolbar-example-bulk-actions" aria-label="Button action">
            <div class="chi-button__content">
              <i class="chi-icon icon-filter" aria-hidden="true"></i>
            </div>
          </button>
        </div>
      </div>
    </div>
    <div class="chi-toolbar__end">
      <div class="chi-toolbar__actions">
        <div class="chi-toolbar__actions-desktop">
          <button class="chi-button -icon -flat" id="toolbar-example-bulk-actions_refresh_button" aria-label="Refresh" data-tooltip="Refresh" data-position="top">
            <div class="chi-button__content">
              <i class="chi-icon icon-refresh" aria-hidden="true"></i>
            </div>
          </button>
          <button class="chi-button -icon -flat" id="toolbar-example-bulk-actions_download_button" aria-label="Download" data-tooltip="Download" data-position="top">
            <div class="chi-button__content">
              <i class="chi-icon icon-arrow-to-bottom" aria-hidden="true"></i>
            </div>
          </button>
          <button class="chi-button -icon -flat" id="toolbar-example-bulk-actions_column_customization_button" aria-label="Customize columns" data-tooltip="Customize columns" data-position="top">
            <div class="chi-button__content">
              <i class="chi-icon icon-table-column-settings" aria-hidden="true"></i>
            </div>
          </button>
        </div>
        <div class="chi-toolbar__actions-mobile">
          <button class="chi-button -icon -flat chi-drawer__trigger" id="toolbar-example-bulk-actions_drawer_trigger-2" data-target="#toolbar-example-bulk-actions_drawer-2" aria-label="Button action">
            <div class="chi-button__content">
              <i class="chi-icon icon-more-vert" aria-hidden="true"></i>
            </div>
          </button>
        </div>
      </div>
    </div>
  </div>
</div>

<!-- Save view -->
<div class="chi-toolbar__ribbon">
  <div class="chi-toolbar__start">
    <i class="chi-icon icon-arrow-down -xs" aria-hidden="true"></i>
    <div class="chi-toolbar__results">
      <span class="chi-toolbar__label">Search Results </span>
      <span>(1-40 of 78)</span>
    </div>
    <div class="chi-divider -vertical"></div>
    <chi-link href="#" size="md">Save View</chi-link>
  </div>
  <div class="chi-toolbar__end">
    <button class="chi-button -icon -flat" aria-label="Button action">
      <div class="chi-button__content">
        <i class="chi-icon icon-x" aria-hidden="true"></i>
      </div>
    </button>
  </div>
</div>

<!-- Drawer -->
<div class="chi-backdrop -closed">
  <div class="chi-backdrop__wrapper">
    <div
      class="chi-drawer -left -menu -position--absolute"
      id="toolbar-example-bulk-actions"
    >
      <div class="chi-drawer__header">
        <span class="chi-drawer__title">Filters</span>
        <button class="chi-button -icon -close" aria-label="Close">
          <div class="chi-button__content">
            <i class="chi-icon icon-x" aria-hidden="true"></i>
          </div>
        </button>
      </div>
      <div class="chi-drawer__content -px--2 -py--3">
        <div class="chi-form__item -mb--2">
          <label class="chi-label" for="toolbar-example-bulk-actions_select-1">Label</label>
          <select class="chi-select" id="toolbar-example-bulk-actions_select-1">
            <option value="">Select</option>
            <option>Option 1</option>
            <option>Option 2</option>
            <option>Option 3</option>
          </select>
        </div>
        <div class="chi-form__item -mb--2">
          <label class="chi-label" for="toolbar-example-bulk-actions_select-2">Label</label>
          <select class="chi-select" id="toolbar-example-bulk-actions_select-2">
            <option value="">Select</option>
            <option>Option 1</option>
            <option>Option 2</option>
            <option>Option 3</option>
          </select>
        </div>
        <div class="chi-form__item -mb--2">
          <label class="chi-label" for="toolbar-example-bulk-actions_select-3">Label</label>
          <select class="chi-select" id="toolbar-example-bulk-actions_select-3">
            <option value="">Select</option>
            <option>Option 1</option>
            <option>Option 2</option>
            <option>Option 3</option>
          </select>
        </div>
        <div class="chi-form__item -mb--2">
          <label class="chi-label" for="toolbar-example-bulk-actions_select-4">Label</label>
          <select class="chi-select" id="toolbar-example-bulk-actions_select-4">
            <option value="">Select</option>
            <option>Option 1</option>
            <option>Option 2</option>
            <option>Option 3</option>
          </select>
        </div>
      </div>
      <div class="-d--flex -justify-content--center -pb--2">
        <button class="chi-button -primary">Apply</button>
        <button class="chi-button -ml--2">Cancel</button>
      </div>
    </div>
  </div>
</div>
<div class="chi-backdrop -closed">
  <div class="chi-backdrop__wrapper">
    <div class="chi-drawer -right -menu -position--absolute" id="toolbar-example-bulk-actions_drawer-2">
      <div class="chi-drawer__header">
        <span class="chi-drawer__title">Actions</span>
        <button class="chi-button -icon -close" aria-label="Close">
          <div class="chi-button__content">
            <i class="chi-icon icon-x" aria-hidden="true"></i>
          </div>
        </button>
      </div>
      <div class="chi-drawer__content -px--2">
        <ul class="-no-style">
          <li class="-text--md">Download data</li>
          <div class="chi-divider"></div>
          <li class="-text--md">Refresh results</li>
          <div class="chi-divider"></div>
        </ul>
      </div>
    </div>
  </div>
</div>

<!-- bulk actions -->
<div class="chi-bulk-actions">
  <div class="chi-bulk-actions__top -position--absolute">
    <button class="chi-button -flat -px--1">Select all</button
    ><button class="chi-button -flat -px--1">Cancel</button>
  </div>
  <div class="chi-bulk-actions__start">
    <div class="chi-bulk-actions__results">
      <div class="chi-bulk-actions__label">Actions (10 Selected)</div>
      <div class="chi-form__item">
        <div class="chi-checkbox">
          <input
            class="chi-checkbox__input"
            id="checkbox-ba1"
            type="checkbox"
          /><label class="chi-checkbox__label" for="checkbox-ba1"
            >Show Selected Only</label
          >
        </div>
      </div>
    </div>
    <div class="chi-divider -vertical"></div>
    <div class="chi-bulk-actions__buttons">
      <div class="chi-bulk-actions__buttons-mobile -position--absolute">
        <chi-button
          variant="flat"
          type="icon"
          alternative-text="Button action"
          data-tooltip="Edit"
        >
          <chi-icon icon="edit"></chi-icon>
        </chi-button>
        <chi-button
          variant="flat"
          type="icon"
          alternative-text="Button action"
          data-tooltip="Compose"
        >
          <chi-icon icon="compose"></chi-icon>
        </chi-button>
        <chi-button
          variant="flat"
          type="icon"
          alternative-text="Button action"
          data-tooltip="Delete"
        >
          <chi-icon icon="delete"></chi-icon>
        </chi-button>
        <chi-button
          variant="flat"
          type="icon"
          alternative-text="Button action"
          data-tooltip="Print"
        >
          <chi-icon icon="print"></chi-icon>
        </chi-button>
      </div>
      <div class="chi-bulk-actions__buttons-desktop">
        <chi-button size="xs">
          <chi-icon icon="arrow-to-bottom"></chi-icon
          ><span>Download</span>
        </chi-button>
        <chi-button size="xs">
          <chi-icon icon="compose"></chi-icon><span>Compose</span>
        </chi-button>
        <chi-button size="xs">
          <chi-icon icon="delete"></chi-icon><span>Delete</span>
        </chi-button>
        <chi-button size="xs">
          <chi-icon icon="print"></chi-icon><span>Print</span>
        </chi-button>
      </div>
    </div>
  </div>
  <div class="chi-bulk-actions__end">
    <chi-button type="close"></chi-button>
  </div>
</div>

<!-- Javascript -->
<script>
  chi.drawer(document.getElementById('toolbar-example-bulk-actions_drawer_trigger-1'));
  chi.drawer(document.getElementById('toolbar-example-bulk-actions_drawer_trigger-2'));
  chi.tooltip(document.querySelectorAll('[data-tooltip]'));
</script>

Chi Vue

Props

Search Input

Please visit Search input dedicated documentation page here

Views

Property
Description
Type
Default
views
To define views in the toolbar.
DataTableView[]
[]
defaultView
To define the default view in the toolbar.
string
undefined

Filters

Property
Description
Type
Default
filtersData
To define filters in the toolbar.
DataTableFilters[]
undefined
customItemsTo define custom items in the toolbar.DataTableCustomItem[]undefined

Column customization

Property
Description
Type
Default
columnsData
To define columns for customization.
DataTableColumns[]
undefined

Save views

Property
Description
Type
Default
active
To show the save view.
boolean
false
default
To set the default.
boolean
false
id
To set the id.
string
null
mode
To set the mode.
'base' | 'create' | 'edit' | 'saved' | 'delete'
'base'
results
To show the results.
string
undefined
title
To set the title.
string
''

Interfaces and types

Name
Interface
DataTableFilter
{
  name: string;
  label: string;
  type: 'select' | 'input' | 'checkbox' | 'textarea';
  id: string;
  options?: [
    {
      value: string;
      label: string;
      selected: true;
      checked?: boolean;
      id?: string;
    }
  ];
  value?: string;
  checked?: boolean;
  defaultValue?: string;
  placeholder: string;
  advanced?:true;
}
DataTableColumn
{
  name: string;
  label: string;
  selected: boolean;
  locked: true;
  wildcard?: boolean;
}
DataTableView
{
  id: string;
  label: string;
  searchString?: string;
  columns?: DataTableColumn[];
  filters?: DataTableFilter[];
}

Events

Event
Description
Type
chiToolbarFiltersChange
To user has changed the filter options of the data table
DataTableFilters[]
chiToolbarSearch
The user has made a search in the data table
string
chiToolbarColumnsChange
The user has changed the configuration of the columns
DataTableColumns[]
chiToolbarViewsChange
The user has selected a view
DataTableView

Accessibility

Accessibility guidelines coming soon
Filters
Filters
Filters