@xplortech/apollo-core 2.6.0 → 2.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.typings/apollo-components.html-data.json +626 -35
- package/build/style.css +5949 -3070
- package/dist/apollo-core/apollo-core.css +29 -19
- package/dist/apollo-core/apollo-core.esm.js +1 -1
- package/dist/apollo-core/p-0bf50890.entry.js +1 -0
- package/dist/apollo-core/p-1947e7a8.entry.js +1 -0
- package/dist/apollo-core/p-27928cb0.entry.js +1 -0
- package/dist/apollo-core/{p-5549756c.entry.js → p-34438721.entry.js} +1 -1
- package/dist/apollo-core/p-35c2f72d.entry.js +1 -0
- package/dist/apollo-core/p-368c81f1.entry.js +1 -0
- package/dist/apollo-core/{p-f5af9539.entry.js → p-36ba29da.entry.js} +1 -1
- package/dist/apollo-core/p-406b27a8.entry.js +1 -0
- package/dist/apollo-core/p-5d63b4ce.entry.js +1 -0
- package/dist/apollo-core/{p-02167464.entry.js → p-6a15f1e0.entry.js} +1 -1
- package/dist/apollo-core/p-8d692d05.entry.js +1 -0
- package/dist/apollo-core/{p-C_Z2nG0p.js → p-C7bgJs6C.js} +2 -2
- package/dist/apollo-core/{p-42016063.entry.js → p-b61d7952.entry.js} +1 -1
- package/dist/apollo-core/{p-8a1affce.entry.js → p-ca127ee8.entry.js} +1 -1
- package/dist/apollo-core/p-d1c9c233.entry.js +1 -0
- package/dist/apollo-core/p-dc205893.entry.js +1 -0
- package/dist/apollo-core/p-e2a5d41c.entry.js +1 -0
- package/dist/cjs/apollo-core.cjs.js +3 -3
- package/dist/cjs/{index-DH6pgWru.js → index-BQ97-AWw.js} +18 -7
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/xpl-accordion.cjs.entry.js +3 -3
- package/dist/cjs/xpl-application-shell.cjs.entry.js +2 -2
- package/dist/cjs/{xpl-avatar_47.cjs.entry.js → xpl-avatar_54.cjs.entry.js} +3726 -536
- package/dist/cjs/xpl-button-row.cjs.entry.js +2 -2
- package/dist/cjs/xpl-calendar.cjs.entry.js +2 -2
- package/dist/cjs/xpl-dynamic-table-cell.cjs.entry.js +3 -3
- package/dist/cjs/xpl-dynamic-table-row.cjs.entry.js +3 -3
- package/dist/cjs/xpl-dynamic-table.cjs.entry.js +2 -2
- package/dist/cjs/xpl-grid-item.cjs.entry.js +2 -2
- package/dist/cjs/xpl-grid.cjs.entry.js +2 -2
- package/dist/cjs/xpl-large-card.cjs.entry.js +2 -2
- package/dist/cjs/xpl-main-nav.cjs.entry.js +2 -2
- package/dist/cjs/xpl-table-header-cell.cjs.entry.js +1 -1
- package/dist/cjs/xpl-table-header.cjs.entry.js +2 -2
- package/dist/cjs/xpl-toggle.cjs.entry.js +4 -4
- package/dist/cjs/xpl-toolbar.cjs.entry.js +3 -3
- package/dist/collection/collection-manifest.json +11 -5
- package/dist/collection/components/xpl-accordion/xpl-accordion.js +2 -2
- package/dist/collection/components/xpl-application-shell/xpl-application-shell.js +1 -1
- package/dist/collection/components/xpl-avatar/avatar.stories.js +122 -107
- package/dist/collection/components/xpl-avatar/xpl-avatar.js +249 -15
- package/dist/collection/components/xpl-backdrop/xpl-backdrop.js +1 -1
- package/dist/collection/components/xpl-badge/badge.stories.js +1 -33
- package/dist/collection/components/xpl-badge/xpl-badge.js +1 -1
- package/dist/collection/components/xpl-banner/xpl-banner.js +4 -3
- package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumb-item/xpl-breadcrumb-item.js +1 -1
- package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumbs/xpl-breadcrumbs.js +1 -1
- package/dist/collection/components/xpl-button/xpl-button.js +21 -3
- package/dist/collection/components/xpl-button-row/xpl-button-row.js +1 -1
- package/dist/collection/components/xpl-calendar/xpl-calendar.js +1 -1
- package/dist/collection/components/xpl-checkbox/xpl-checkbox.js +25 -3
- package/dist/collection/components/xpl-choicelist/xpl-choicelist.js +1 -1
- package/dist/collection/components/xpl-content-area/xpl-content-area.js +1 -1
- package/dist/collection/components/xpl-dashboard/xpl-dashboard.js +1 -1
- package/dist/collection/components/xpl-data-card/xpl-data-card.js +2 -2
- package/dist/collection/components/xpl-divider/xpl-divider.js +1 -1
- package/dist/collection/components/xpl-dropdown/xpl-dropdown-group/xpl-dropdown-group.js +1 -1
- package/dist/collection/components/xpl-dropdown/xpl-dropdown-heading/xpl-dropdown-heading.js +1 -1
- package/dist/collection/components/xpl-dropdown/xpl-dropdown-option/xpl-dropdown-option.js +2 -2
- package/dist/collection/components/xpl-dropdown/xpl-dropdown.js +77 -7
- package/dist/collection/components/xpl-dynamic-table/xpl-dynamic-table.js +1 -1
- package/dist/collection/components/xpl-dynamic-table-cell/xpl-dynamic-table-cell.js +2 -2
- package/dist/collection/components/xpl-dynamic-table-row/xpl-dynamic-table-row.js +2 -2
- package/dist/collection/components/xpl-grid/xpl-grid.js +1 -1
- package/dist/collection/components/xpl-grid-item/xpl-grid-item.js +1 -1
- package/dist/collection/components/xpl-header-accordion/xpl-header-accordion.js +1 -1
- package/dist/collection/components/xpl-icon/xpl-icon.js +2 -2
- package/dist/collection/components/xpl-input/input.stories.js +96 -1
- package/dist/collection/components/xpl-input/xpl-input-color/xpl-input-color.js +8 -8
- package/dist/collection/components/xpl-input/xpl-input-date/xpl-input-date.js +3 -3
- package/dist/collection/components/xpl-input/xpl-input-file/xpl-input-file.js +4 -4
- package/dist/collection/components/xpl-input/xpl-input-phone/xpl-input-phone.js +5 -5
- package/dist/collection/components/xpl-input/xpl-input-search/xpl-input-search.js +485 -0
- package/dist/collection/components/xpl-input/xpl-input-time/xpl-input-time.js +2 -2
- package/dist/collection/components/xpl-input/xpl-input.js +130 -18
- package/dist/collection/components/xpl-large-card/xpl-large-card.js +1 -1
- package/dist/collection/components/xpl-list/list.stories.js +300 -63
- package/dist/collection/components/xpl-list/xpl-list-item/xpl-list-item.js +818 -0
- package/dist/collection/components/xpl-list/xpl-list.js +579 -21
- package/dist/collection/components/xpl-main-nav/xpl-main-nav.js +1 -1
- package/dist/collection/components/xpl-modal/xpl-modal.js +1 -1
- package/dist/collection/components/xpl-nav-item/xpl-nav-item.js +2 -2
- package/dist/collection/components/xpl-pagination/pagination.stories.js +18 -0
- package/dist/collection/components/xpl-pagination/xpl-pagination.js +7 -3
- package/dist/collection/components/xpl-panel/panel.stories.js +5 -3
- package/dist/collection/components/xpl-panel/xpl-panel.js +3 -3
- package/dist/collection/components/xpl-popover/xpl-popover.js +4 -4
- package/dist/collection/components/xpl-progress-bar/xpl-progress-bar.js +2 -2
- package/dist/collection/components/xpl-progress-indicator/progress-indicator.stories.js +118 -0
- package/dist/collection/components/xpl-progress-indicator/xpl-progress-indicator.js +171 -0
- package/dist/collection/components/xpl-radio/xpl-radio.js +3 -3
- package/dist/collection/components/xpl-secondary-nav/xpl-secondary-nav.js +1 -1
- package/dist/collection/components/xpl-select/xpl-select.js +58 -6
- package/dist/collection/components/xpl-side-nav/xpl-side-nav-item/xpl-side-nav-item.js +2 -2
- package/dist/collection/components/xpl-side-nav/xpl-side-nav.js +2 -2
- package/dist/collection/components/xpl-skeleton/xpl-skeleton.js +1 -1
- package/dist/collection/components/xpl-slideout/xpl-slideout.js +1 -1
- package/dist/collection/components/xpl-spotlight/spotlight.stories.js +385 -0
- package/dist/collection/components/xpl-spotlight/xpl-spotlight.js +1085 -0
- package/dist/collection/components/xpl-tab/xpl-tab.js +261 -8
- package/dist/collection/components/xpl-tab-panel/xpl-tab-panel.js +22 -15
- package/dist/collection/components/xpl-table/xpl-table.js +5 -5
- package/dist/collection/components/xpl-table-header/xpl-table-header.js +1 -1
- package/dist/collection/components/xpl-tabs/segment-control.stories.js +31 -0
- package/dist/collection/components/xpl-tabs/tabs.shared.js +156 -0
- package/dist/collection/components/xpl-tabs/tabs.stories.js +10 -60
- package/dist/collection/components/xpl-tabs/xpl-tabs.js +338 -62
- package/dist/collection/components/xpl-tag/tag.stories.js +153 -0
- package/dist/collection/components/xpl-tag/xpl-tag.js +312 -9
- package/dist/collection/components/xpl-toast/xpl-toast.js +2 -2
- package/dist/collection/components/xpl-toggle/xpl-toggle.js +3 -3
- package/dist/collection/components/xpl-toolbar/xpl-toolbar.js +2 -2
- package/dist/collection/components/xpl-tooltip/xpl-tooltip.js +1 -1
- package/dist/collection/components/xpl-top-nav/top-nav.stories.js +625 -0
- package/dist/collection/components/xpl-top-nav/xpl-nav-header-menu/xpl-nav-header-menu.js +122 -0
- package/dist/collection/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.js +481 -0
- package/dist/collection/components/xpl-top-nav/xpl-top-nav.js +433 -0
- package/dist/collection/components/xpl-utility-bar/xpl-utility-bar.js +1 -1
- package/dist/collection/utils/lifecycle.js +79 -0
- package/dist/collection/utils/tab-a11y-ids.js +22 -0
- package/dist/components/floating-ui.dom.js +1 -0
- package/dist/components/index.js +1 -1
- package/dist/components/tab-a11y-ids.js +1 -0
- package/dist/components/xpl-accordion.js +1 -1
- package/dist/components/xpl-application-shell.js +1 -1
- package/dist/components/xpl-avatar2.js +1 -1
- package/dist/components/xpl-backdrop2.js +1 -1
- package/dist/components/xpl-badge2.js +1 -1
- package/dist/components/xpl-banner.js +1 -1
- package/dist/components/xpl-breadcrumb-item.js +1 -1
- package/dist/components/xpl-breadcrumbs.js +1 -1
- package/dist/components/xpl-button-row.js +1 -1
- package/dist/components/xpl-button2.js +1 -1
- package/dist/components/xpl-calendar.js +1 -1
- package/dist/components/xpl-checkbox2.js +1 -1
- package/dist/components/xpl-choicelist.js +1 -1
- package/dist/components/xpl-content-area.js +1 -1
- package/dist/components/xpl-dashboard.js +1 -1
- package/dist/components/xpl-data-card.js +1 -1
- package/dist/components/xpl-divider2.js +1 -1
- package/dist/components/xpl-dropdown-group2.js +1 -1
- package/dist/components/xpl-dropdown-heading2.js +1 -1
- package/dist/components/xpl-dropdown-option2.js +1 -1
- package/dist/components/xpl-dropdown2.js +1 -1
- package/dist/components/xpl-dynamic-table-cell.js +1 -1
- package/dist/components/xpl-dynamic-table-row.js +1 -1
- package/dist/components/xpl-dynamic-table.js +1 -1
- package/dist/components/xpl-grid-item.js +1 -1
- package/dist/components/xpl-grid.js +1 -1
- package/dist/components/xpl-header-accordion.js +1 -1
- package/dist/components/xpl-icon2.js +1 -1
- package/dist/components/xpl-input-date2.js +1 -1
- package/dist/components/xpl-input-file2.js +1 -1
- package/dist/components/xpl-input-search.d.ts +11 -0
- package/dist/components/xpl-input-search.js +1 -0
- package/dist/components/xpl-input-search2.js +1 -0
- package/dist/components/xpl-input2.js +1 -1
- package/dist/components/xpl-large-card.js +1 -1
- package/dist/components/{xpl-progress.d.ts → xpl-list-item.d.ts} +4 -4
- package/dist/components/xpl-list-item.js +1 -0
- package/dist/components/xpl-list-item2.js +1 -0
- package/dist/components/xpl-list.js +1 -1
- package/dist/components/xpl-main-nav.js +1 -1
- package/dist/components/xpl-modal.js +1 -1
- package/dist/components/xpl-nav-header-menu.d.ts +11 -0
- package/dist/components/xpl-nav-header-menu.js +1 -0
- package/dist/components/xpl-nav-item.js +1 -1
- package/dist/components/xpl-pagination.js +1 -1
- package/dist/components/xpl-panel.js +1 -1
- package/dist/components/xpl-popover2.js +1 -1
- package/dist/components/xpl-progress-bar.js +1 -1
- package/dist/components/xpl-progress-indicator.d.ts +11 -0
- package/dist/components/xpl-progress-indicator.js +1 -0
- package/dist/components/xpl-radio2.js +1 -1
- package/dist/components/xpl-secondary-nav.js +1 -1
- package/dist/components/xpl-select2.js +1 -1
- package/dist/components/xpl-side-nav-item.js +1 -1
- package/dist/components/xpl-side-nav.js +1 -1
- package/dist/components/xpl-skeleton.js +1 -1
- package/dist/components/xpl-slideout.js +1 -1
- package/dist/components/xpl-spotlight.d.ts +11 -0
- package/dist/components/xpl-spotlight.js +1 -0
- package/dist/components/xpl-tab-panel.js +1 -1
- package/dist/components/xpl-tab.js +1 -1
- package/dist/components/xpl-table-header.js +1 -1
- package/dist/components/xpl-table.js +1 -1
- package/dist/components/xpl-tabs.js +1 -1
- package/dist/components/xpl-tag2.js +1 -1
- package/dist/components/xpl-toast.js +1 -1
- package/dist/components/xpl-toggle.js +1 -1
- package/dist/components/xpl-toolbar.js +1 -1
- package/dist/components/xpl-tooltip2.js +1 -1
- package/dist/components/xpl-top-nav-item.d.ts +11 -0
- package/dist/components/xpl-top-nav-item.js +1 -0
- package/dist/components/xpl-top-nav-item2.js +1 -0
- package/dist/components/xpl-top-nav.d.ts +11 -0
- package/dist/components/xpl-top-nav.js +1 -0
- package/dist/components/xpl-utility-bar.js +1 -1
- package/dist/docs/xpl-avatar/readme.md +289 -15
- package/dist/docs/xpl-badge/readme.md +14 -9
- package/dist/docs/xpl-banner/readme.md +48 -11
- package/dist/docs/xpl-button/readme.md +28 -18
- package/dist/docs/xpl-calendar/readme.md +1 -1
- package/dist/docs/xpl-checkbox/readme.md +12 -11
- package/dist/docs/xpl-divider/readme.md +6 -4
- package/dist/docs/xpl-dropdown/readme.md +14 -12
- package/dist/docs/xpl-icon/readme.md +14 -2
- package/dist/docs/xpl-input/readme.md +66 -41
- package/dist/docs/xpl-input/xpl-input-color/readme.md +1 -0
- package/dist/docs/xpl-input/xpl-input-phone/readme.md +1 -0
- package/dist/docs/xpl-input/xpl-input-search/readme.md +175 -0
- package/dist/docs/xpl-input/xpl-input-time/readme.md +1 -0
- package/dist/docs/xpl-list/readme.md +320 -10
- package/dist/docs/xpl-list/xpl-list-item/readme.md +99 -0
- package/dist/docs/xpl-pagination/readme.md +1 -0
- package/dist/docs/xpl-panel/readme.md +108 -17
- package/dist/docs/xpl-popover/readme.md +2 -0
- package/dist/docs/xpl-progress-indicator/readme.md +234 -0
- package/dist/docs/xpl-radio/readme.md +6 -4
- package/dist/docs/xpl-select/readme.md +19 -16
- package/dist/docs/xpl-side-nav/readme.md +2 -2
- package/dist/docs/xpl-slideout/readme.md +1 -1
- package/dist/docs/xpl-spotlight/readme.md +235 -0
- package/dist/docs/xpl-tab/readme.md +43 -7
- package/dist/docs/xpl-tab-panel/readme.md +42 -0
- package/dist/docs/xpl-tabs/readme.md +62 -8
- package/dist/docs/xpl-tag/readme.md +379 -4
- package/dist/docs/xpl-toast/readme.md +1 -1
- package/dist/docs/xpl-top-nav/readme.md +179 -0
- package/dist/docs/xpl-top-nav/xpl-nav-header-menu/readme.md +81 -0
- package/dist/docs/xpl-top-nav/xpl-top-nav-item/readme.md +87 -0
- package/dist/esm/apollo-core.js +4 -4
- package/dist/esm/{index-C_Z2nG0p.js → index-C7bgJs6C.js} +18 -8
- package/dist/esm/loader.js +3 -3
- package/dist/esm/xpl-accordion.entry.js +3 -3
- package/dist/esm/xpl-application-shell.entry.js +2 -2
- package/dist/esm/{xpl-avatar_47.entry.js → xpl-avatar_54.entry.js} +3719 -536
- package/dist/esm/xpl-button-row.entry.js +2 -2
- package/dist/esm/xpl-calendar.entry.js +2 -2
- package/dist/esm/xpl-dynamic-table-cell.entry.js +3 -3
- package/dist/esm/xpl-dynamic-table-row.entry.js +3 -3
- package/dist/esm/xpl-dynamic-table.entry.js +2 -2
- package/dist/esm/xpl-grid-item.entry.js +2 -2
- package/dist/esm/xpl-grid.entry.js +2 -2
- package/dist/esm/xpl-large-card.entry.js +2 -2
- package/dist/esm/xpl-main-nav.entry.js +2 -2
- package/dist/esm/xpl-table-header-cell.entry.js +1 -1
- package/dist/esm/xpl-table-header.entry.js +2 -2
- package/dist/esm/xpl-toggle.entry.js +4 -4
- package/dist/esm/xpl-toolbar.entry.js +3 -3
- package/dist/types/components/xpl-avatar/avatar.stories.d.ts +88 -29
- package/dist/types/components/xpl-avatar/xpl-avatar.d.ts +29 -2
- package/dist/types/components/xpl-badge/badge.stories.d.ts +0 -19
- package/dist/types/components/xpl-button/xpl-button.d.ts +7 -0
- package/dist/types/components/xpl-checkbox/xpl-checkbox.d.ts +2 -1
- package/dist/types/components/xpl-dropdown/xpl-dropdown.d.ts +5 -0
- package/dist/types/components/xpl-input/input.stories.d.ts +1 -0
- package/dist/types/components/xpl-input/xpl-input-search/xpl-input-search.d.ts +39 -0
- package/dist/types/components/xpl-input/xpl-input.d.ts +13 -5
- package/dist/types/components/xpl-list/list.stories.d.ts +299 -13
- package/dist/types/components/xpl-list/listitem.d.ts +13 -0
- package/dist/types/components/xpl-list/xpl-list-item/xpl-list-item.d.ts +71 -0
- package/dist/types/components/xpl-list/xpl-list.d.ts +55 -2
- package/dist/types/components/xpl-pagination/pagination.stories.d.ts +13 -0
- package/dist/types/components/xpl-panel/panel.stories.d.ts +2 -0
- package/dist/types/components/xpl-progress-indicator/progress-indicator.stories.d.ts +62 -0
- package/dist/types/components/xpl-progress-indicator/xpl-progress-indicator.d.ts +11 -0
- package/dist/types/components/xpl-select/xpl-select.d.ts +3 -0
- package/dist/types/components/xpl-spotlight/spotlight.stories.d.ts +197 -0
- package/dist/types/components/xpl-spotlight/xpl-spotlight.d.ts +101 -0
- package/dist/types/components/xpl-tab/xpl-tab.d.ts +14 -1
- package/dist/types/components/xpl-tab-panel/xpl-tab-panel.d.ts +2 -1
- package/dist/types/components/xpl-tabs/segment-control.stories.d.ts +112 -0
- package/dist/types/components/xpl-tabs/tabs.shared.d.ts +156 -0
- package/dist/types/components/xpl-tabs/tabs.stories.d.ts +65 -12
- package/dist/types/components/xpl-tabs/xpl-tabs.d.ts +37 -18
- package/dist/types/components/xpl-tag/tag.stories.d.ts +65 -0
- package/dist/types/components/xpl-tag/xpl-tag.d.ts +36 -1
- package/dist/types/components/xpl-top-nav/top-nav.stories.d.ts +471 -0
- package/dist/types/components/xpl-top-nav/xpl-nav-header-menu/xpl-nav-header-menu.d.ts +18 -0
- package/dist/types/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.d.ts +48 -0
- package/dist/types/components/xpl-top-nav/xpl-top-nav.d.ts +51 -0
- package/dist/types/components.d.ts +1521 -83
- package/dist/types/utils/lifecycle.d.ts +16 -0
- package/dist/types/utils/tab-a11y-ids.d.ts +4 -0
- package/package.json +12 -3
- package/dist/apollo-core/p-0bce3874.entry.js +0 -1
- package/dist/apollo-core/p-1fd3dc87.entry.js +0 -1
- package/dist/apollo-core/p-56fa4941.entry.js +0 -1
- package/dist/apollo-core/p-76c324da.entry.js +0 -1
- package/dist/apollo-core/p-7a3224b4.entry.js +0 -1
- package/dist/apollo-core/p-7e924697.entry.js +0 -1
- package/dist/apollo-core/p-9efca9e1.entry.js +0 -1
- package/dist/apollo-core/p-b252b380.entry.js +0 -1
- package/dist/apollo-core/p-c91daac1.entry.js +0 -1
- package/dist/apollo-core/p-d9b62508.entry.js +0 -1
- package/dist/apollo-core/p-eaea16d1.entry.js +0 -1
- package/dist/apollo-core/p-eed13bca.entry.js +0 -1
- package/dist/cjs/xpl-list.cjs.entry.js +0 -32
- package/dist/collection/components/xpl-progress/progress.stories.js +0 -106
- package/dist/collection/components/xpl-progress/xpl-progress.js +0 -60
- package/dist/components/xpl-progress.js +0 -1
- package/dist/docs/xpl-progress/readme.md +0 -22
- package/dist/esm/xpl-list.entry.js +0 -30
- package/dist/types/components/xpl-progress/progress.stories.d.ts +0 -38
- package/dist/types/components/xpl-progress/xpl-progress.d.ts +0 -6
|
@@ -7,17 +7,18 @@ Checkboxes allow users to make selections or choices. Checkboxes can be multi-se
|
|
|
7
7
|
|
|
8
8
|
## Properties
|
|
9
9
|
|
|
10
|
-
| Property | Attribute | Description
|
|
11
|
-
| --------------- | --------------- |
|
|
12
|
-
| `
|
|
13
|
-
| `
|
|
14
|
-
| `
|
|
15
|
-
| `
|
|
16
|
-
| `
|
|
17
|
-
| `
|
|
18
|
-
| `
|
|
19
|
-
| `
|
|
20
|
-
| `
|
|
10
|
+
| Property | Attribute | Description | Type | Default |
|
|
11
|
+
| --------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------- | ----------- |
|
|
12
|
+
| `ariaLabel` | `aria-label` | Accessible name for the native checkbox input (sets `aria-label` on the `input`). Use when there is no visible label text in the default slot. Defaults to `''`; empty or whitespace-only values omit `aria-label` on the input so a visible `<label>` remains the sole name source. | `string` | `''` |
|
|
13
|
+
| `checked` | `checked` | Whether the input is checked | `boolean` | `undefined` |
|
|
14
|
+
| `dataId` | `data-id` | A custom data attribute for the checkbox | `string` | `undefined` |
|
|
15
|
+
| `description` | `description` | Description text for the field | `string` | `undefined` |
|
|
16
|
+
| `disabled` | `disabled` | Whether the input is disabled | `boolean` | `undefined` |
|
|
17
|
+
| `indeterminate` | `indeterminate` | A visual state for when the input has not been interacted with | `boolean` | `undefined` |
|
|
18
|
+
| `name` | `name` | The name attribute for the html input. (submitted in form as name/value pair) | `string` | `undefined` |
|
|
19
|
+
| `required` | `required` | Whether the input is required | `boolean` | `undefined` |
|
|
20
|
+
| `styled` | `styled` | Whether the input is contained in a box with a border and a background | `boolean` | `undefined` |
|
|
21
|
+
| `value` | `value` | The value attribute for the checkbox input. (submittted in form as name/value pair) | `string` | `undefined` |
|
|
21
22
|
|
|
22
23
|
|
|
23
24
|
## Events
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# xpl-divider
|
|
2
|
-
|
|
3
|
-
Allows for easy separation and titling of sections within forms or other content.
|
|
4
|
-
|
|
1
|
+
# xpl-divider
|
|
2
|
+
|
|
3
|
+
Allows for easy separation and titling of sections within forms or other content.
|
|
4
|
+
|
|
5
5
|
<!-- Auto Generated Below -->
|
|
6
6
|
|
|
7
7
|
|
|
@@ -16,11 +16,13 @@ Allows for easy separation and titling of sections within forms or other content
|
|
|
16
16
|
|
|
17
17
|
### Used by
|
|
18
18
|
|
|
19
|
+
- [xpl-list-item](../xpl-list/xpl-list-item)
|
|
19
20
|
- [xpl-slideout](../xpl-slideout)
|
|
20
21
|
|
|
21
22
|
### Graph
|
|
22
23
|
```mermaid
|
|
23
24
|
graph TD;
|
|
25
|
+
xpl-list-item --> xpl-divider
|
|
24
26
|
xpl-slideout --> xpl-divider
|
|
25
27
|
style xpl-divider fill:#f9f,stroke:#333,stroke-width:4px
|
|
26
28
|
```
|
|
@@ -3,24 +3,26 @@
|
|
|
3
3
|
A Dropdown is a menu with a list of actions a user can take. Use a dropdown when you want to present a list of actions in a limited space. Dropdowns are single-select ***actions***, can be presented in groups, and can be triggered by other elements such as a button, icon, text etc.
|
|
4
4
|
A selection within a dropdown does not change the parent trigger.
|
|
5
5
|
|
|
6
|
-
***If you want to present a list of **options** a user can select, or multi-select options, please use [XPL-Select](https://
|
|
6
|
+
***If you want to present a list of **options** a user can select, or multi-select options, please use [XPL-Select](https://apollo.xplordocs.com/?path=/story/components-select--select).***
|
|
7
7
|
|
|
8
8
|
<!-- Auto Generated Below -->
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
## Properties
|
|
12
12
|
|
|
13
|
-
| Property
|
|
14
|
-
|
|
|
15
|
-
| `anchorToTrigger`
|
|
16
|
-
| `closeOnSelect`
|
|
17
|
-
| `
|
|
18
|
-
| `
|
|
19
|
-
| `
|
|
20
|
-
| `
|
|
21
|
-
| `
|
|
22
|
-
| `
|
|
23
|
-
| `
|
|
13
|
+
| Property | Attribute | Description | Type | Default |
|
|
14
|
+
| ------------------------ | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
|
|
15
|
+
| `anchorToTrigger` | `anchor-to-trigger` | whether to anchor the dropdown to the trigger element, requires triggerId to be set | `boolean` | `false` |
|
|
16
|
+
| `closeOnSelect` | `close-on-select` | options that are listed | `boolean` | `true` |
|
|
17
|
+
| `flipFallbackPlacements` | -- | When `anchorToTrigger` is true, additional placements to try when the default `placement` does not fit (passed to Floating UI `flip`). | `Placement[]` | `undefined` |
|
|
18
|
+
| `isOpen` | `open` | text to display as heading | `boolean` | `false` |
|
|
19
|
+
| `mode` | `mode` | constant representing number of options that can be selected | `"multi" \| "single"` | `'single'` |
|
|
20
|
+
| `options` | -- | options that are listed | `Partial<DropdownOption & DropdownOptionGroup>[]` | `undefined` |
|
|
21
|
+
| `placement` | `placement` | Floating UI placement when `anchorToTrigger` is true (e.g. `bottom-start`, `top-start`). | `"bottom" \| "bottom-end" \| "bottom-start" \| "left" \| "left-end" \| "left-start" \| "right" \| "right-end" \| "right-start" \| "top" \| "top-end" \| "top-start"` | `'bottom-start'` |
|
|
22
|
+
| `selectOnFocus` | `select-on-focus` | whether selection should be made when focusing on interactive element | `boolean` | `false` |
|
|
23
|
+
| `selectedValues` | `selected-values` | The currently selected value(s) in the dropdown. | `string \| string[]` | `undefined` |
|
|
24
|
+
| `triggerId` | `trigger-id` | the id for the element that triggers the open state | `string` | `undefined` |
|
|
25
|
+
| `update` | -- | call back function invoked when a selection is made | `(e: any, { component }: { component: Dropdown; }) => void` | `undefined` |
|
|
24
26
|
|
|
25
27
|
|
|
26
28
|
## Events
|
|
@@ -43,18 +43,24 @@ The `icon` property accepts any icon name as a string. See the links above for t
|
|
|
43
43
|
- [xpl-input-date](../xpl-input/xpl-input-date)
|
|
44
44
|
- [xpl-input-file](../xpl-input/xpl-input-file)
|
|
45
45
|
- [xpl-input-phone](../xpl-input/xpl-input-phone)
|
|
46
|
+
- [xpl-input-search](../xpl-input/xpl-input-search)
|
|
46
47
|
- [xpl-input-time](../xpl-input/xpl-input-time)
|
|
47
48
|
- [xpl-large-card](../xpl-large-card)
|
|
48
|
-
- [xpl-list](../xpl-list)
|
|
49
|
+
- [xpl-list-item](../xpl-list/xpl-list-item)
|
|
49
50
|
- [xpl-modal](../xpl-modal)
|
|
50
51
|
- [xpl-pagination](../xpl-pagination)
|
|
51
52
|
- [xpl-progress-bar](../xpl-progress-bar)
|
|
53
|
+
- [xpl-progress-indicator](../xpl-progress-indicator)
|
|
52
54
|
- [xpl-select](../xpl-select)
|
|
53
55
|
- [xpl-side-nav-item](../xpl-side-nav/xpl-side-nav-item)
|
|
54
56
|
- [xpl-slideout](../xpl-slideout)
|
|
57
|
+
- [xpl-spotlight](../xpl-spotlight)
|
|
55
58
|
- [xpl-table](../xpl-table)
|
|
56
59
|
- [xpl-table-header-cell](../xpl-table-header-cell)
|
|
60
|
+
- [xpl-tag](../xpl-tag)
|
|
57
61
|
- [xpl-toast](../xpl-toast)
|
|
62
|
+
- [xpl-top-nav](../xpl-top-nav)
|
|
63
|
+
- [xpl-top-nav-item](../xpl-top-nav/xpl-top-nav-item)
|
|
58
64
|
- [xpl-utility-bar](../xpl-utility-bar)
|
|
59
65
|
|
|
60
66
|
### Graph
|
|
@@ -71,18 +77,24 @@ graph TD;
|
|
|
71
77
|
xpl-input-date --> xpl-icon
|
|
72
78
|
xpl-input-file --> xpl-icon
|
|
73
79
|
xpl-input-phone --> xpl-icon
|
|
80
|
+
xpl-input-search --> xpl-icon
|
|
74
81
|
xpl-input-time --> xpl-icon
|
|
75
82
|
xpl-large-card --> xpl-icon
|
|
76
|
-
xpl-list --> xpl-icon
|
|
83
|
+
xpl-list-item --> xpl-icon
|
|
77
84
|
xpl-modal --> xpl-icon
|
|
78
85
|
xpl-pagination --> xpl-icon
|
|
79
86
|
xpl-progress-bar --> xpl-icon
|
|
87
|
+
xpl-progress-indicator --> xpl-icon
|
|
80
88
|
xpl-select --> xpl-icon
|
|
81
89
|
xpl-side-nav-item --> xpl-icon
|
|
82
90
|
xpl-slideout --> xpl-icon
|
|
91
|
+
xpl-spotlight --> xpl-icon
|
|
83
92
|
xpl-table --> xpl-icon
|
|
84
93
|
xpl-table-header-cell --> xpl-icon
|
|
94
|
+
xpl-tag --> xpl-icon
|
|
85
95
|
xpl-toast --> xpl-icon
|
|
96
|
+
xpl-top-nav --> xpl-icon
|
|
97
|
+
xpl-top-nav-item --> xpl-icon
|
|
86
98
|
xpl-utility-bar --> xpl-icon
|
|
87
99
|
style xpl-icon fill:#f9f,stroke:#333,stroke-width:4px
|
|
88
100
|
```
|
|
@@ -1,58 +1,80 @@
|
|
|
1
1
|
# xpl-input
|
|
2
2
|
|
|
3
|
-
A flexible form input that supports multiple `type` values: `text`, `number`, `password`, `date`, `time`, `file`, `color`, and `
|
|
3
|
+
A flexible form input that supports multiple `type` values: `text`, `number`, `password`, `date`, `time`, `file`, `color`, `phone`, and `search`. Each type delegates to a dedicated sub-component (`xpl-input-date`, `xpl-input-time`, `xpl-input-phone`, `xpl-input-search`, etc.) while sharing a common label, description, and error-message wrapper.
|
|
4
4
|
|
|
5
5
|
For `type="phone"`, the value is always emitted in **E.164** format (e.g. `+14155551234`). See [`xpl-input-phone`](xpl-input-phone) for full phone-input documentation.
|
|
6
6
|
|
|
7
|
+
### Delegated types (`search`, `phone`, `date`, `time`, …)
|
|
8
|
+
|
|
9
|
+
`valueChange`, `inputEvent`, `focusEvent`, and `blurEvent` are emitted by the inner component and **bubble** to `<xpl-input>`. For **`type="search"`**, **`focusEvent`** and **`blurEvent`** are **re-emitted from `<xpl-input>`** (parent uses **`onFocusEvent`** / **`onBlurEvent`** on **`<xpl-input-search>`** with **`stopPropagation`**) so **`event.target`** matches **`type="text"`**. For **`valueChange`** and **`inputEvent`** on search, events still **bubble** from **`xpl-input-search`** without parent re-emission; **`event.target`** may be the inner host—prefer **`event.detail`** (the string) or **`event.currentTarget`** when you attach the listener on **`<xpl-input>`**. Other delegated types follow the same **`event.detail`** / **`event.currentTarget`** guidance.
|
|
10
|
+
|
|
11
|
+
For **`type="search"`** commit: **`<xpl-input-search>`** defines a Stencil **`@Event() search`** (trimmed query in **`detail`**). **`<xpl-input>`** listens with **`onSearch`** on the inner tag, **`stopPropagation`s**, then **`this.search.emit(detail)`** so the canonical **`search`** **`@Event`** stays on **`<xpl-input>`** and listeners are not doubled. **`setFocus()`** on **`<xpl-input>`** uses a **`ref`** to the inner component to delegate focus.
|
|
12
|
+
|
|
7
13
|
<!-- Auto Generated Below -->
|
|
8
14
|
|
|
9
15
|
|
|
10
16
|
## Properties
|
|
11
17
|
|
|
12
|
-
| Property | Attribute | Description
|
|
13
|
-
| --------------------- | ------------------------ |
|
|
14
|
-
| `_id` | `_id` | Because `id` is a reserved HTMLElement attribute, we prefix it with an underscore here so that it doesn't get automatically applied to the outer container. Applies to all input types.
|
|
15
|
-
| `accept` | `accept` | The accepted file types for the file input. Corresponds to the `accept` attribute on the input element. Example: 'image/*' for all image types, '.pdf' for PDF files, etc. Applies to file inputs.
|
|
16
|
-
| `allowCustomOption` | `allow-custom-option` | For time inputs, whether to allow custom option in the input even if not available in the dropdown. Example: A step of 30 minutes will allow 15:03, 15:37, etc. Applies to time inputs.
|
|
17
|
-
| `
|
|
18
|
-
| `
|
|
19
|
-
| `
|
|
20
|
-
| `
|
|
21
|
-
| `
|
|
22
|
-
| `
|
|
23
|
-
| `
|
|
24
|
-
| `
|
|
25
|
-
| `
|
|
26
|
-
| `
|
|
27
|
-
| `
|
|
28
|
-
| `
|
|
29
|
-
| `
|
|
30
|
-
| `
|
|
31
|
-
| `
|
|
32
|
-
| `
|
|
33
|
-
| `
|
|
34
|
-
| `
|
|
35
|
-
| `
|
|
36
|
-
| `
|
|
37
|
-
| `
|
|
38
|
-
| `
|
|
39
|
-
| `
|
|
40
|
-
| `
|
|
41
|
-
| `
|
|
42
|
-
| `
|
|
43
|
-
| `
|
|
44
|
-
| `
|
|
45
|
-
| `
|
|
18
|
+
| Property | Attribute | Description | Type | Default |
|
|
19
|
+
| --------------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ----------- |
|
|
20
|
+
| `_id` | `_id` | Because `id` is a reserved HTMLElement attribute, we prefix it with an underscore here so that it doesn't get automatically applied to the outer container. Applies to all input types. | `string` | `undefined` |
|
|
21
|
+
| `accept` | `accept` | The accepted file types for the file input. Corresponds to the `accept` attribute on the input element. Example: 'image/*' for all image types, '.pdf' for PDF files, etc. Applies to file inputs. | `string` | `''` |
|
|
22
|
+
| `allowCustomOption` | `allow-custom-option` | For time inputs, whether to allow custom option in the input even if not available in the dropdown. Example: A step of 30 minutes will allow 15:03, 15:37, etc. Applies to time inputs. | `boolean` | `false` |
|
|
23
|
+
| `ariaLabel` | `aria-label` | Accessible name for search inputs when there is no visible `label` (after trim). Ignored for naming when a visible label is shown. Defaults to `''`; whitespace-only values are treated as missing and fall back to `'Search'` so the field is never unnamed when there is no visible label. Applies to search inputs (`type="search"`). | `string` | `''` |
|
|
24
|
+
| `autocomplete` | `autocomplete` | Hint for form autofill feature Applies to text, password, number, and search inputs. | `string` | `undefined` |
|
|
25
|
+
| `dateFormat` | `date-format` | The date format to use for the datepicker input. This is used by flatpickr to format the date. Default is 'Y-m-d' (e.g., 2023-10-01). See https://flatpickr.js.org/formatting/ for more details. Applies to date inputs. | `string` | `'Y-m-d'` |
|
|
26
|
+
| `defaultCountry` | `default-country` | Default country code (ISO 3166-1 alpha-2) when value is empty, e.g. "US". Applies to phone inputs. | `string` | `'US'` |
|
|
27
|
+
| `description` | `description` | Optional text that appears below the input label. Applies to all input types. | `string` | `undefined` |
|
|
28
|
+
| `disabled` | `disabled` | Whether the field is disabled Applies to all input types. | `boolean` | `undefined` |
|
|
29
|
+
| `error` | `error` | If an empty string (attribute present with no value), will display visually as an error. If a string is included, will display visually as an error and include the value as an error message. Applies to all input types. | `string` | `undefined` |
|
|
30
|
+
| `hideAcceptText` | `hide-accept-text` | Hides the "Accept" text that indicates the accepted file types This is useful for cases where you want to hide the "Accept" text. Applies to file inputs. | `boolean` | `false` |
|
|
31
|
+
| `hideEyeDropper` | `hide-eye-dropper` | Hide eye dropper Applies to color inputs. | `boolean` | `undefined` |
|
|
32
|
+
| `hideFileNames` | `hide-file-names` | Hides the file names in the file upload component This is useful for cases where you want to hide the file names after selection. Applies to file inputs. | `boolean` | `false` |
|
|
33
|
+
| `hideTriggerOnSelect` | `hide-trigger-on-select` | Hides the trigger element when a file is selected. This is useful for cases where you want to hide the trigger after a file is selected. Applies to file inputs. | `boolean` | `false` |
|
|
34
|
+
| `isInternational` | `is-international` | Enables international mode with country selector for phone inputs. When false, the phone input is locked to defaultCountry with no country picker. | `boolean` | `true` |
|
|
35
|
+
| `label` | `label` | Label text for the field Applies to all input types. | `string` | `undefined` |
|
|
36
|
+
| `max` | `max` | Maximum value for the input. Applies to number, time, and date inputs. If the input is a time input, the value must be in 24 hour format, ex: 18:25 for 6:25 PM | `number \| string` | `undefined` |
|
|
37
|
+
| `maxCharacterCount` | `max-character-count` | For multiline inputs, a max. character count will display along with the current character count, and will automatically render as an error if the character count exceeds the max. This is only applicable if `multiline` is `true`. | `number` | `undefined` |
|
|
38
|
+
| `min` | `min` | The minimum value for the input. Applies to number, time, and date inputs. If the input is a time input, the value must be in 24 hour format, ex: 05:25 for 5:25 AM | `number \| string` | `undefined` |
|
|
39
|
+
| `mode` | `mode` | For datepicker inputs, whether to allow only a single date or a range of dates. (Multiple non-consecutive dates planned to be supported in the future.) Applies to date inputs. | `"range" \| "single"` | `'single'` |
|
|
40
|
+
| `multiline` | `multiline` | Whether to render as a singleline text input or as a multiline textarea. (If `true`, `pre` and `post` values will be ignored, if present.) Applies to text inputs. | `boolean` | `false` |
|
|
41
|
+
| `multiple` | `multiple` | Whether the user can select multiple files at once. Corresponds to the `multiple` attribute on the input element. Applies to file inputs. | `boolean` | `false` |
|
|
42
|
+
| `name` | `name` | Most inputs are used in forms, and should have a `name` associated with the input for handling form data. Applies to all input types. | `string` | `undefined` |
|
|
43
|
+
| `placeholder` | `placeholder` | Placeholder text that appears when the field has no value Applies to text, password, number, date, and search inputs. | `string` | `undefined` |
|
|
44
|
+
| `post` | `post` | A string (recommended max 3 characters) that gets shown visually to the left of (before) the input. Applies to text, password, number, and date inputs. Note: This will be ignored if `multiline` is `true`. | `string` | `undefined` |
|
|
45
|
+
| `pre` | `pre` | A string (recommended max 8 characters) that gets shown visually to the right of (after) the input. Applies to text, password, number, and date inputs. Note: This will be ignored if `multiline` is `true`. | `string` | `undefined` |
|
|
46
|
+
| `preferredCountries` | -- | Country codes to show at the top of the country list, e.g. ["US", "CA", "GB"]. Applies to phone inputs. | `string[]` | `undefined` |
|
|
47
|
+
| `readonly` | `readonly` | Whether the input is editable Applies to text, password, number, date, and search inputs. | `boolean` | `undefined` |
|
|
48
|
+
| `required` | `required` | Whether the input is required Applies to all input types. | `boolean` | `undefined` |
|
|
49
|
+
| `shape` | `shape` | Shell corner radius for search inputs: `rounded` (pill) or `box` (rounded rectangle). Applies to search inputs (`type="search"`). | `"box" \| "rounded"` | `undefined` |
|
|
50
|
+
| `step` | `step` | The granularity that the value in a `number` input must adhere to when incrementing or decrementing. The default stepping value for number inputs is 1 Applies to number and time inputs. | `number` | `undefined` |
|
|
51
|
+
| `timeFormat` | `time-format` | The time format to display for the input. Applies to time inputs. If 12h is selected, the value will be displayed in 12 hour format, ex: 05:25 PM for 17:25 If 24h is selected, the value will be displayed in 24 hour format, ex: 17:25 for 17:25 | `"12h" \| "24h"` | `'24h'` |
|
|
52
|
+
| `type` | `type` | The type of form control | `"color" \| "date" \| "file" \| "number" \| "password" \| "phone" \| "search" \| "text" \| "time"` | `'text'` |
|
|
53
|
+
| `value` | `value` | Including a `value` will pre-populate the input with the given string. Applies to text, password, number, date, and search inputs. | `string` | `undefined` |
|
|
46
54
|
|
|
47
55
|
|
|
48
56
|
## Events
|
|
49
57
|
|
|
50
|
-
| Event | Description
|
|
51
|
-
| ------------- |
|
|
52
|
-
| `blurEvent` | The event handler for the blur event
|
|
53
|
-
| `focusEvent` | The event handler for the focus event
|
|
54
|
-
| `inputEvent` | Event that emits the current value of the input Applies to text
|
|
55
|
-
| `
|
|
58
|
+
| Event | Description | Type |
|
|
59
|
+
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------- |
|
|
60
|
+
| `blurEvent` | The event handler for the blur event | `CustomEvent<FocusEvent>` |
|
|
61
|
+
| `focusEvent` | The event handler for the focus event | `CustomEvent<FocusEvent>` |
|
|
62
|
+
| `inputEvent` | Event that emits the current value of the input Applies to text-like inputs and search inputs. | `CustomEvent<string>` |
|
|
63
|
+
| `search` | Emitted when the user commits a search (Enter with no enclosing form owner, or submit of the internal search form). `event.detail` is the trimmed query string. Applies to search inputs (`type="search"`). | `CustomEvent<string>` |
|
|
64
|
+
| `valueChange` | Event that emits the current value of the input (including search fields). | `CustomEvent<string>` |
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
## Methods
|
|
68
|
+
|
|
69
|
+
### `setFocus() => Promise<void>`
|
|
70
|
+
|
|
71
|
+
Moves keyboard focus to the native control (text field, textarea, or search inner input).
|
|
72
|
+
|
|
73
|
+
#### Returns
|
|
74
|
+
|
|
75
|
+
Type: `Promise<void>`
|
|
76
|
+
|
|
77
|
+
|
|
56
78
|
|
|
57
79
|
|
|
58
80
|
## Dependencies
|
|
@@ -70,6 +92,7 @@ For `type="phone"`, the value is always emitted in **E.164** format (e.g. `+1415
|
|
|
70
92
|
- [xpl-input-date](xpl-input-date)
|
|
71
93
|
- [xpl-input-time](xpl-input-time)
|
|
72
94
|
- [xpl-input-phone](xpl-input-phone)
|
|
95
|
+
- [xpl-input-search](xpl-input-search)
|
|
73
96
|
- [xpl-icon](../xpl-icon)
|
|
74
97
|
|
|
75
98
|
### Graph
|
|
@@ -80,6 +103,7 @@ graph TD;
|
|
|
80
103
|
xpl-input --> xpl-input-date
|
|
81
104
|
xpl-input --> xpl-input-time
|
|
82
105
|
xpl-input --> xpl-input-phone
|
|
106
|
+
xpl-input --> xpl-input-search
|
|
83
107
|
xpl-input --> xpl-icon
|
|
84
108
|
xpl-input-file --> xpl-icon
|
|
85
109
|
xpl-input-color --> xpl-input
|
|
@@ -92,6 +116,7 @@ graph TD;
|
|
|
92
116
|
xpl-dropdown-group --> xpl-dropdown-heading
|
|
93
117
|
xpl-dropdown-option --> xpl-icon
|
|
94
118
|
xpl-input-phone --> xpl-input
|
|
119
|
+
xpl-input-search --> xpl-icon
|
|
95
120
|
style xpl-input fill:#f9f,stroke:#333,stroke-width:4px
|
|
96
121
|
```
|
|
97
122
|
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# xpl-input-search
|
|
2
|
+
|
|
3
|
+
Inner search field used by [`xpl-input`](../readme.md) when `type="search"`. It provides a leading magnifier, a native text field with `role="searchbox"`, an optional clear control, and a `shape` shell (`rounded` pill vs `box`). You normally consume search through **`xpl-input`**; use `xpl-input-search` only when composing a custom shell that still matches Apollo search visuals.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
### Recommended: `xpl-input` with `type="search"`
|
|
8
|
+
|
|
9
|
+
Default pill shell (`shape` defaults to `rounded`), placeholder, and optional `name` for forms:
|
|
10
|
+
|
|
11
|
+
```html
|
|
12
|
+
<xpl-input type="search" name="q" placeholder="Search products"></xpl-input>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Visible label, description, `box` shape, and `autocomplete`:
|
|
16
|
+
|
|
17
|
+
```html
|
|
18
|
+
<xpl-input
|
|
19
|
+
type="search"
|
|
20
|
+
label="Search catalog"
|
|
21
|
+
description="SKU or product name"
|
|
22
|
+
name="q"
|
|
23
|
+
placeholder="SKU or name"
|
|
24
|
+
shape="box"
|
|
25
|
+
autocomplete="search"
|
|
26
|
+
></xpl-input>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
When there is no visible label, set `aria-label` on `xpl-input` (forwarded to the inner field for assistive naming):
|
|
30
|
+
|
|
31
|
+
```html
|
|
32
|
+
<xpl-input type="search" aria-label="Search help topics" placeholder="Search…"></xpl-input>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Error state (border, `aria-invalid`, and error text on the parent) and an initial value (clear control appears when there is text):
|
|
36
|
+
|
|
37
|
+
```html
|
|
38
|
+
<xpl-input type="search" shape="box" error="Invalid query" value="abc"></xpl-input>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Listening for submit and live updates (vanilla JS):
|
|
42
|
+
|
|
43
|
+
```html
|
|
44
|
+
<xpl-input id="search" type="search" placeholder="Search"></xpl-input>
|
|
45
|
+
<script type="module">
|
|
46
|
+
const el = document.getElementById('search');
|
|
47
|
+
el.addEventListener('search', (e) => {
|
|
48
|
+
console.log('submit', e.detail); // trimmed string
|
|
49
|
+
});
|
|
50
|
+
el.addEventListener('valueChange', (e) => {
|
|
51
|
+
console.log('value', e.detail); // raw string
|
|
52
|
+
});
|
|
53
|
+
</script>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Events on `<xpl-input type="search">`
|
|
57
|
+
|
|
58
|
+
`valueChange`, `inputEvent`, `focusEvent`, and `blurEvent` are Stencil **`@Event`s** on **`xpl-input-search`** and **bubble** to the **`<xpl-input>`** host. **`focusEvent`** / **`blurEvent`** are also **re-emitted from `<xpl-input>`** so **`event.target`** matches **`type="text"`** (see **`xpl-input`** readme). **`valueChange`** / **`inputEvent`** are **not** re-emitted by the parent; use **`event.detail`** for the string if you do not want to depend on **`event.target`**.
|
|
59
|
+
|
|
60
|
+
The **commit** signal is a Stencil **`search`** **`@Event`** on **`xpl-input-search`** (trimmed query in **`detail`**). **`xpl-input`** wires **`onSearch`** on the inner tag, **`stopPropagation`s**, and **`this.search.emit(detail)`** so the public **`search`** **`@Event`** remains on **`<xpl-input>`**. **`setFocus()`** on **`<xpl-input>`** uses a **`ref`** to call the inner **`setFocus()`** only.
|
|
61
|
+
|
|
62
|
+
For advanced composition you can render `<xpl-input-search>` directly. You must pass **`input-id`** (matches a `<label for="…">` when used with a visible label). Set **`disabled`** and **`has-error`** (plus **`error-message-id`** when invalid) for both accessibility and visuals: the host adds `xpl-input-search--disabled` / `xpl-input-search--error` so disabled and error chrome match the wrapped `xpl-input` case. When nested under `xpl-input type="search"`, those props are set for you from the parent.
|
|
63
|
+
|
|
64
|
+
```html
|
|
65
|
+
<label class="xpl-input-label" for="sid">Search</label>
|
|
66
|
+
<xpl-input-search input-id="sid" name="q" placeholder="Search…"></xpl-input-search>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Design tokens
|
|
70
|
+
|
|
71
|
+
| Part | Token |
|
|
72
|
+
| ---- | ----- |
|
|
73
|
+
| Host text (input inherits) | `--xpl-text-default` |
|
|
74
|
+
| Shell layout | `gap`: `--xpl-space-12`; horizontal padding: `--xpl-space-12`; `min-height` / `max-height`: `--xpl-size-250` |
|
|
75
|
+
| Shell fill (resting) | `--xpl-background-surface-default` |
|
|
76
|
+
| Shell `border-radius` (pill, default `shape="rounded"`) | `--xpl-border-radius-button` |
|
|
77
|
+
| Shell `border-radius` (`shape="box"`) | `--xpl-border-radius-small` |
|
|
78
|
+
| Shell border (resting) | `--xpl-border-default` |
|
|
79
|
+
| Shell border (input focus, empty) | `--xpl-border-active` |
|
|
80
|
+
| Shell border (input focus, with value) | `--xpl-border-focus` |
|
|
81
|
+
| Shell border (error, from parent `xpl-input`) | `--xpl-border-negative` |
|
|
82
|
+
| Disabled shell (parent) | `--xpl-background-action-disabled` |
|
|
83
|
+
| Input typography | `--xpl-font-family-default`, `--xpl-font-size-body`, `--xpl-font-weight-normal` |
|
|
84
|
+
| Placeholder | `--xpl-text-subdued` |
|
|
85
|
+
| Disabled text / placeholder (parent) | `--xpl-text-disabled` |
|
|
86
|
+
| Leading icon | `--xpl-icon-default` / `--xpl-icon-disabled` |
|
|
87
|
+
| Clear icon | `--xpl-icon-subtle` |
|
|
88
|
+
| Caret (focus, with value) | `--xpl-border-focus` |
|
|
89
|
+
| Caret (focus, error, parent) | `--xpl-border-negative` |
|
|
90
|
+
|
|
91
|
+
Light and dark mode use Foundation purpose-specific tokens only (no component `.dark` overrides).
|
|
92
|
+
|
|
93
|
+
## Icon mapping
|
|
94
|
+
|
|
95
|
+
| Role | When | `xpl-icon` name | `size` |
|
|
96
|
+
| ---- | ---- | ----------------- | ------ |
|
|
97
|
+
| Leading search | Always (when the control renders) | `magnifier` | 20 |
|
|
98
|
+
| Clear | Value non-empty and not `disabled` | `circle-xmark` | 16 |
|
|
99
|
+
|
|
100
|
+
## Accessibility
|
|
101
|
+
|
|
102
|
+
- **Role and naming:** The field uses a native `<input type="text">` with `role="searchbox"`. `type="text"` avoids browser search-field chrome that would clash with the design-system clear control. When the parent does not render a visible label, `aria-label` on the inner input defaults to `"Search"` unless `ariaLabel` / parent `aria-label` overrides it. With a visible label, the input is named via `<label for="…">` and redundant `aria-label` on the input is omitted.
|
|
103
|
+
- **`autocomplete`:** Default `off` is typical for inline search; set `autocomplete` on `xpl-input` for search fields when you need a specific token.
|
|
104
|
+
- **Errors:** With `xpl-input`, non-empty `error` sets `aria-invalid`, links the message with `aria-describedby`, and styles the shell from the parent host.
|
|
105
|
+
- **Keyboard — standalone `xpl-input-search`:** An inner `<form>` wraps the shell when the host is not already inside a `<form>`. **Enter** submits that inner form (default prevented); the host emits a Stencil **`search`** event (trimmed value in **`detail`**). Listen with **`addEventListener('search', …)`** on **`xpl-input-search`**. **Tab** visits the input and the clear control when visible.
|
|
106
|
+
- **Keyboard — inside a parent `<form>`:** The inner `<form>` is omitted. **Enter** uses native form submission; listen on the parent form’s **`submit`**. Use **`valueChange`** / **`inputEvent`** for live typing.
|
|
107
|
+
- **Clear control:** The clear button exposes **`aria-label="Clear search"`**. Activating it clears the value, emits **`valueChange`** / **`inputEvent`** with `''`, and refocuses the input. When **`disabled`** or **`readonly`** is true, the clear control is hidden and inert (no value mutation).
|
|
108
|
+
|
|
109
|
+
<!-- Auto Generated Below -->
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
## Properties
|
|
113
|
+
|
|
114
|
+
| Property | Attribute | Description | Type | Default |
|
|
115
|
+
| ---------------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | ----------- |
|
|
116
|
+
| `ariaLabel` | `aria-label` | Accessible name when there is no visible label from the parent; maps to `aria-label` on the input. When the parent provides a visible label, the input is named by `<label for="…">` — this prop is ignored for naming. Empty or whitespace-only values are treated as missing and fall back to `'Search'` so the field is never unnamed. | `string` | `'Search'` |
|
|
117
|
+
| `autocomplete` | `autocomplete` | Passed to the native input (`autocomplete` attribute). Default `off` matches common inline-search UX; browsers may still apply heuristics. | `string` | `'off'` |
|
|
118
|
+
| `disabled` | `disabled` | Disables the field and clear control. | `boolean` | `false` |
|
|
119
|
+
| `errorMessageId` | `error-message-id` | Element id for `aria-describedby` when `hasError` (error message lives on `xpl-input`). | `string` | `undefined` |
|
|
120
|
+
| `hasError` | `has-error` | Set by `xpl-input` when `error` is shown — drives `aria-invalid` / `aria-describedby`. | `boolean` | `false` |
|
|
121
|
+
| `hasVisibleLabel` | `has-visible-label` | When true, parent `xpl-input` renders a visible label — omit `aria-label` on the input. | `boolean` | `false` |
|
|
122
|
+
| `inputId` _(required)_ | `input-id` | Associates the control with the parent `xpl-input` label (`for` / `id`). | `string` | `undefined` |
|
|
123
|
+
| `name` | `name` | Form field `name` on the native input. | `string` | `undefined` |
|
|
124
|
+
| `placeholder` | `placeholder` | Placeholder shown when the value is empty. | `string` | `'Search'` |
|
|
125
|
+
| `readonly` | `readonly` | Whether the input is editable. | `boolean` | `false` |
|
|
126
|
+
| `required` | `required` | Whether the input is required. | `boolean` | `false` |
|
|
127
|
+
| `shape` | `shape` | Shell corner radius: `rounded` (pill) or `box` (rounded rectangle). | `"box" \| "rounded"` | `'rounded'` |
|
|
128
|
+
| `value` | `value` | Current value (controlled-friendly). | `string` | `''` |
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
## Events
|
|
132
|
+
|
|
133
|
+
| Event | Description | Type |
|
|
134
|
+
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------- |
|
|
135
|
+
| `blurEvent` | Emitted when the inner control loses focus. When nested under `xpl-input type="search"`, this event bubbles to the `xpl-input` host (same event name as other input types). | `CustomEvent<FocusEvent>` |
|
|
136
|
+
| `focusEvent` | Emitted when the inner control receives focus. When nested under `xpl-input type="search"`, this event bubbles to the `xpl-input` host (same event name as other input types). | `CustomEvent<FocusEvent>` |
|
|
137
|
+
| `inputEvent` | Fired on every input change (typing, paste) and when the value is cleared — mirrors `xpl-input` text fields. When nested under `xpl-input type="search"`, bubbles to the `xpl-input` host. | `CustomEvent<string>` |
|
|
138
|
+
| `search` | Emitted when the user commits a search (Enter with no enclosing form owner, or submit of the inner search form). `event.detail` is the trimmed query string. When nested under `xpl-input type="search"`, the parent listens with `onSearch` and re-emits so the canonical `search` `@Event` stays on `xpl-input`. | `CustomEvent<string>` |
|
|
139
|
+
| `valueChange` | Fired on every input change (typing, paste) and when the value is cleared. `event.detail` is the raw `value` string (not trimmed). When nested under `xpl-input type="search"`, bubbles to the `xpl-input` host. | `CustomEvent<string>` |
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
## Methods
|
|
143
|
+
|
|
144
|
+
### `setFocus() => Promise<void>`
|
|
145
|
+
|
|
146
|
+
Moves keyboard focus to the search field.
|
|
147
|
+
|
|
148
|
+
#### Returns
|
|
149
|
+
|
|
150
|
+
Type: `Promise<void>`
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
## Dependencies
|
|
156
|
+
|
|
157
|
+
### Used by
|
|
158
|
+
|
|
159
|
+
- [xpl-input](..)
|
|
160
|
+
|
|
161
|
+
### Depends on
|
|
162
|
+
|
|
163
|
+
- [xpl-icon](../../xpl-icon)
|
|
164
|
+
|
|
165
|
+
### Graph
|
|
166
|
+
```mermaid
|
|
167
|
+
graph TD;
|
|
168
|
+
xpl-input-search --> xpl-icon
|
|
169
|
+
xpl-input --> xpl-input-search
|
|
170
|
+
style xpl-input-search fill:#f9f,stroke:#333,stroke-width:4px
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
----------------------------------------------
|
|
174
|
+
|
|
175
|
+
*Built with [StencilJS](https://stenciljs.com/)*
|