@xplortech/apollo-core 2.6.0 → 2.7.0
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 +737 -63
- package/build/style.css +5415 -1805
- package/dist/apollo-core/apollo-core.css +62 -22
- package/dist/apollo-core/apollo-core.esm.js +1 -1
- package/dist/apollo-core/{p-8a1affce.entry.js → p-084d26ed.entry.js} +1 -1
- package/dist/apollo-core/p-146d5d55.entry.js +1 -0
- package/dist/apollo-core/p-16742606.entry.js +1 -0
- package/dist/apollo-core/{p-42016063.entry.js → p-28d12fd3.entry.js} +1 -1
- package/dist/apollo-core/p-3eb5eb7c.entry.js +1 -0
- package/dist/apollo-core/p-4882f0bd.entry.js +1 -0
- package/dist/apollo-core/p-64b34268.entry.js +1 -0
- package/dist/apollo-core/p-6c956d4e.entry.js +1 -0
- package/dist/apollo-core/p-71b75f36.entry.js +1 -0
- package/dist/apollo-core/{p-02167464.entry.js → p-7eb86c63.entry.js} +1 -1
- package/dist/apollo-core/{p-1fd3dc87.entry.js → p-84254a24.entry.js} +1 -1
- package/dist/apollo-core/p-9f2a0321.entry.js +1 -0
- package/dist/apollo-core/{p-C_Z2nG0p.js → p-C7bgJs6C.js} +2 -2
- package/dist/apollo-core/p-cde83ab0.entry.js +1 -0
- package/dist/apollo-core/p-e7363036.entry.js +1 -0
- package/dist/cjs/apollo-core.cjs.js +3 -3
- package/dist/cjs/{index-DH6pgWru.js → index-BQ97-AWw.js} +18 -15
- 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_61.cjs.entry.js} +6096 -1461
- 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-toggle.cjs.entry.js +4 -4
- package/dist/cjs/xpl-toolbar.cjs.entry.js +3 -3
- package/dist/collection/collection-manifest.json +18 -7
- 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 +47 -25
- 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 +2 -2
- 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 +46 -53
- 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/xpl-pagination.js +3 -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 +6 -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/table.stories.js +319 -67
- package/dist/collection/components/xpl-table/utils/move-row-dom.js +50 -0
- package/dist/collection/components/xpl-table/utils/table-internal.js +58 -0
- package/dist/collection/components/xpl-table/xpl-table-body/xpl-table-body.js +7 -0
- package/dist/collection/components/xpl-table/xpl-table-cell/xpl-table-cell.js +155 -0
- package/dist/collection/components/xpl-table/xpl-table-footer/xpl-table-footer.js +7 -0
- package/dist/collection/components/xpl-table/xpl-table-footer-cell/xpl-table-footer-cell.js +37 -0
- package/dist/collection/components/xpl-table/xpl-table-header/table-header.stories.js +131 -0
- package/dist/collection/components/xpl-table/xpl-table-header/xpl-table-header.js +7 -0
- package/dist/collection/components/xpl-table/xpl-table-header-cell/table-header-cell.stories.js +105 -0
- package/dist/collection/components/xpl-table/xpl-table-header-cell/xpl-table-header-cell.js +402 -0
- package/dist/collection/components/xpl-table/xpl-table-row/xpl-table-row.js +121 -0
- package/dist/collection/components/xpl-table/xpl-table.js +1448 -143
- 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/lifecycle.js +1 -0
- 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-body.d.ts +11 -0
- package/dist/components/xpl-table-body.js +1 -0
- package/dist/components/xpl-table-cell.d.ts +11 -0
- package/dist/components/xpl-table-cell.js +1 -0
- package/dist/components/xpl-table-cell2.js +1 -0
- package/dist/components/xpl-table-footer-cell.d.ts +11 -0
- package/dist/components/xpl-table-footer-cell.js +1 -0
- package/dist/components/xpl-table-footer-cell2.js +1 -0
- package/dist/components/xpl-table-footer.d.ts +11 -0
- package/dist/components/xpl-table-footer.js +1 -0
- package/dist/components/xpl-table-header-cell.js +1 -1
- package/dist/components/xpl-table-header-cell2.js +1 -0
- package/dist/components/xpl-table-header.js +1 -1
- package/dist/components/xpl-table-row.d.ts +11 -0
- package/dist/components/xpl-table-row.js +1 -0
- 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 +19 -16
- package/dist/docs/xpl-divider/readme.md +6 -4
- package/dist/docs/xpl-dropdown/readme.md +1 -1
- package/dist/docs/xpl-dynamic-table/readme.md +22 -19
- package/dist/docs/xpl-dynamic-table-cell/readme.md +20 -18
- package/dist/docs/xpl-dynamic-table-row/readme.md +21 -19
- package/dist/docs/xpl-icon/readme.md +15 -3
- 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 +2 -1
- 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-table/readme.md +110 -46
- package/dist/docs/xpl-table/xpl-table-body/readme.md +10 -0
- package/dist/docs/xpl-table/xpl-table-cell/readme.md +33 -0
- package/dist/docs/xpl-table/xpl-table-footer/readme.md +10 -0
- package/dist/docs/xpl-table/xpl-table-footer-cell/readme.md +30 -0
- package/dist/docs/{xpl-table-header → xpl-table/xpl-table-header}/readme.md +13 -13
- package/dist/docs/xpl-table/xpl-table-header-cell/readme.md +66 -0
- package/dist/docs/xpl-table/xpl-table-row/readme.md +19 -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 -16
- 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_61.entry.js} +6082 -1461
- 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-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 +4 -3
- package/dist/types/components/xpl-header-accordion/xpl-header-accordion.d.ts +9 -10
- 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-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-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-table/table.stories.d.ts +161 -19
- package/dist/types/components/xpl-table/utils/move-row-dom.d.ts +3 -0
- package/dist/types/components/xpl-table/utils/table-internal.d.ts +8 -0
- package/dist/types/components/xpl-table/xpl-table-body/xpl-table-body.d.ts +3 -0
- package/dist/types/components/xpl-table/xpl-table-cell/xpl-table-cell.d.ts +11 -0
- package/dist/types/components/xpl-table/xpl-table-footer/xpl-table-footer.d.ts +3 -0
- package/dist/types/components/xpl-table/xpl-table-footer-cell/xpl-table-footer-cell.d.ts +4 -0
- package/dist/types/components/{xpl-table-header → xpl-table/xpl-table-header}/table-header.stories.d.ts +13 -16
- package/dist/types/components/{xpl-table-header-cell → xpl-table/xpl-table-header-cell}/table-header-cell.stories.d.ts +24 -20
- package/dist/types/components/xpl-table/xpl-table-header-cell/xpl-table-header-cell.d.ts +32 -0
- package/dist/types/components/xpl-table/xpl-table-row/xpl-table-row.d.ts +13 -0
- package/dist/types/components/xpl-table/xpl-table.d.ts +123 -21
- 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 +1888 -148
- package/dist/types/utils/lifecycle.d.ts +16 -0
- package/dist/types/utils/tab-a11y-ids.d.ts +4 -0
- package/package.json +3 -3
- package/dist/apollo-core/p-0bce3874.entry.js +0 -1
- package/dist/apollo-core/p-5549756c.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/apollo-core/p-f5af9539.entry.js +0 -1
- package/dist/cjs/xpl-list.cjs.entry.js +0 -32
- package/dist/cjs/xpl-table-header-cell.cjs.entry.js +0 -57
- package/dist/cjs/xpl-table-header.cjs.entry.js +0 -14
- package/dist/collection/components/xpl-progress/progress.stories.js +0 -106
- package/dist/collection/components/xpl-progress/xpl-progress.js +0 -60
- package/dist/collection/components/xpl-table-header/table-header.stories.js +0 -126
- package/dist/collection/components/xpl-table-header/xpl-table-header.js +0 -7
- package/dist/collection/components/xpl-table-header-cell/table-header-cell.stories.js +0 -75
- package/dist/collection/components/xpl-table-header-cell/xpl-table-header-cell.js +0 -188
- package/dist/components/xpl-progress.js +0 -1
- package/dist/docs/xpl-progress/readme.md +0 -22
- package/dist/docs/xpl-table-header-cell/readme.md +0 -47
- package/dist/esm/xpl-list.entry.js +0 -30
- package/dist/esm/xpl-table-header-cell.entry.js +0 -55
- package/dist/esm/xpl-table-header.entry.js +0 -12
- package/dist/types/components/xpl-progress/progress.stories.d.ts +0 -38
- package/dist/types/components/xpl-progress/xpl-progress.d.ts +0 -6
- package/dist/types/components/xpl-table-header-cell/xpl-table-header-cell.d.ts +0 -13
- /package/dist/types/components/{xpl-table-header → xpl-table/xpl-table-header}/xpl-table-header.d.ts +0 -0
|
@@ -1,31 +1,341 @@
|
|
|
1
1
|
# xpl-list
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## Description
|
|
4
|
+
|
|
5
|
+
**`xpl-list`** is the list **container** (`role="list"`). It coordinates **single selection** (shared radio group), **reordering** (drag-and-drop and keyboard), and assigns default **`item-id`** values when missing.
|
|
6
|
+
|
|
7
|
+
**`xpl-list-item`** is one **row**. In **slot-based** mode, `role="listitem"` is on the row surface inside the host (not on `<xpl-list-item>`), so list semantics work with the host’s `display: contents` layout. Legacy **`item`** rows keep `role="listitem"` on the host. Place items **inside** **`xpl-list`** (default slot). Compose each row with **named slots** (recommended) or use the **legacy** `item` prop / list-level `items` array. Row-level props, events, and dependencies: [xpl-list-item readme](./xpl-list-item/readme.md).
|
|
8
|
+
|
|
9
|
+
When the list is **`selectable`**, pressing **Escape** while focus is on the **selected** row clears the radio selection (same as **`clearSelection()`**). Clicking elsewhere does not clear selection. Row radios use the **title** slot for their accessible name when present; with no title slot, the label is **`Select <item-id>`** when **`item-id`** or **`id`** is set, otherwise a generic default.
|
|
10
|
+
|
|
11
|
+
**Single-select vs multi-select:** **`selectable`** on **`xpl-list`** is for **exactly one chosen row** (implemented with **`xpl-radio`** and a shared group **`name`**). For **multi-select** or **independent** toggles per row, do **not** use this flag; compose **`xpl-checkbox`** (or your own controls) in row slots and manage state in the app.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Slot-based vs legacy integration
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
| | **Slot-based (recommended)** | **Legacy prop-based (deprecated)** |
|
|
19
|
+
| ----------------------- | ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
|
|
20
|
+
| **Where content lives** | Light DOM: named slots on each `<xpl-list-item>` | Data: `items` on `<xpl-list>` and/or `item` on `<xpl-list-item>` |
|
|
21
|
+
| **Row markup** | You author `<xpl-list-item>` children with `slot="…"` content | List renders rows from `items`, or item renders from `item` object |
|
|
22
|
+
| **Flexibility** | Full UI composition (avatar, actions, errors, extras) | Fixed layout from `ListItem` fields |
|
|
23
|
+
| **Identity** | Set `item-id` (or `id`) on each row | Legacy rows from `items` use `ListItem.id` when set, else `item-0`, `item-1`, … |
|
|
24
|
+
| **Reordering** | `reorderable` on `xpl-list`: drag handle + keyboard on each slot row | **No reorder UI:** legacy `items` / `item` rows do not render a handle; use slots if you need reorder. |
|
|
25
|
+
| **Notes** | Do not set `item` on rows in this mode | `items` logs a console warning when non-empty; mixing `items` **and** slotted children renders **both** (legacy rows first) |
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Slot-based integration
|
|
31
|
+
|
|
32
|
+
Put one or more `<xpl-list-item>` elements **inside** `<xpl-list>`. Do **not** set the **`item`** prop on a row when using slots—if `item` is set, that row uses **legacy** rendering and ignores slot composition.
|
|
33
|
+
|
|
34
|
+
On **`xpl-list`**, set `selectable` and/or `reorderable` as needed; the list mirrors `radio-name`, `reorderable`, and `keyboard-active` onto **slot-based** direct child rows only (nested lists in slots are unchanged). Rows using the deprecated **`item`** prop or list-level **`items`** array are **legacy** markup: the list does **not** set `selectable`, `radio-name`, or `reorderable` on them, because that UI exists only in slot-based mode—migrate to slotted `<xpl-list-item>` children if you need selection or reorder.
|
|
35
|
+
|
|
36
|
+
### Slots (on `xpl-list-item`)
|
|
37
|
+
|
|
38
|
+
All slots are **named**. Use `slot="<name>"` on light-DOM children.
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
| Slot | Role | HTML example |
|
|
42
|
+
| ----------------- | --------------------------------------------------------- | ----------------------------------------------------------------- |
|
|
43
|
+
| `title` | Primary title line | `<span slot="title">Account name</span>` |
|
|
44
|
+
| `metadata` | Secondary lines under the title | `<ul slot="metadata"><li>Line one</li></ul>` |
|
|
45
|
+
| `avatar` | Leading avatar or custom media | `<xpl-avatar slot="avatar" name="JD"></xpl-avatar>` |
|
|
46
|
+
| `details` | Right column: supporting text | `<span slot="details">Last updated</span>` |
|
|
47
|
+
| `badges` | Right column: badges / tags | `<span slot="badges"><xpl-badge>New</xpl-badge></span>` |
|
|
48
|
+
| `actions` | Trailing actions; clicks do **not** follow `href` | `<span slot="actions"><xpl-button type="button" variant="tertiary" size="sm">Edit</xpl-button></span>` |
|
|
49
|
+
| `error-text` | Message below the row; affects error styling when present | `<span slot="error-text">This field is required.</span>` |
|
|
50
|
+
| `stacked-extra-1` | Optional stacked block | `<div slot="stacked-extra-1">Extra block 1</div>` |
|
|
51
|
+
| `stacked-extra-2` | Second optional stacked block | `<div slot="stacked-extra-2">Extra block 2</div>` |
|
|
52
|
+
| `stacked-extra-3` | Third optional stacked block | `<div slot="stacked-extra-3">Extra block 3</div>` |
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
**Dot badge next to the title:** set **`title-badge-variant`** on **`xpl-list-item`** (same variants as `xpl-badge`), not inside the title slot.
|
|
56
|
+
|
|
57
|
+
**Divider under the title row:** set **`show-divider`** on **`xpl-list-item`**.
|
|
58
|
+
|
|
59
|
+
**Minimal example:**
|
|
60
|
+
|
|
61
|
+
```html
|
|
62
|
+
<xpl-list selectable reorderable>
|
|
63
|
+
<xpl-list-item item-id="row-1" href="/settings">
|
|
64
|
+
<xpl-avatar slot="avatar" name="AC"></xpl-avatar>
|
|
65
|
+
<span slot="title">Settings</span>
|
|
66
|
+
<span slot="metadata">Workspace</span>
|
|
67
|
+
<span slot="details">Updated today</span>
|
|
68
|
+
<span slot="actions"><xpl-button type="button" variant="tertiary" size="sm">Open</xpl-button></span>
|
|
69
|
+
</xpl-list-item>
|
|
70
|
+
</xpl-list>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
### Attributes: where to set them
|
|
76
|
+
|
|
77
|
+
#### `xpl-list` (container)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
| Attribute | Purpose |
|
|
81
|
+
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|
82
|
+
| `label` | Accessible name: sets `aria-label` on the list host when there is no visible heading. **Not used** if `labelled-by` is also set. |
|
|
83
|
+
| `labelled-by` | Space-separated element ids: sets `aria-labelledby` on the host. Takes precedence over `label` so both are never applied together. |
|
|
84
|
+
| `selectable` | Enables radio selection; list assigns shared `radio-name`. **Escape** on the **selected** row clears selection (no extra attribute). |
|
|
85
|
+
| `reorderable` | Enables drag handles and reorder behavior on **slot-based** rows only (see legacy section). |
|
|
86
|
+
|
|
87
|
+
Use **`label`** *or* **`labelled-by`**, not both. If both attributes are present, only **`labelled-by`** affects the accessible name.
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
#### `xpl-list-item` (row, slot mode — omit `item`)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
| Attribute | Purpose |
|
|
94
|
+
| ----------------------------- | -------------------------------------------------------------------------------------------------------------------- |
|
|
95
|
+
| `item-id` | Stable id for selection and reorder events (or use host `id`). If omitted, the list may assign `item-0`, `item-1`, … |
|
|
96
|
+
| `href` | Optional: row acts as a link; `actions` / `avatar` clicks do not navigate. |
|
|
97
|
+
| `disabled`, `error` | Row state: non-interactive row and/or error styling (border, `error-text` slot). |
|
|
98
|
+
| `hidden` | Hides the row from layout and from visible-only list behavior; see **Hidden rows** below. |
|
|
99
|
+
| `selected` | Controlled selected state when the list is `selectable`. |
|
|
100
|
+
| `show-divider` | Divider under the title area. |
|
|
101
|
+
| `title-badge-variant` | Dot badge beside the title. |
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
#### Usually set by `xpl-list` on items (avoid overriding unless needed)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
| Attribute | Meaning |
|
|
108
|
+
| --------------------------- | --------------------------------------------------- |
|
|
109
|
+
| `selectable`, `reorderable` | Mirrored from the list (**slot-based** rows only; not legacy `item` / `items` rows). |
|
|
110
|
+
| `radio-name` | Shared radio group when the list is `selectable` (slot-based rows only). |
|
|
111
|
+
| `keyboard-active` | Set on the row in keyboard reorder mode (slot-based rows only). |
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
### Hidden rows
|
|
115
|
+
|
|
116
|
+
Set the **`hidden`** attribute (or **`hidden`** prop) on **`xpl-list-item`** when a row should not appear in the list or take up space, but you still want it in the DOM. Typical use cases:
|
|
117
|
+
|
|
118
|
+
- **Filtering or search** — hide rows that do not match without tearing down markup or losing local state.
|
|
119
|
+
- **Progressive disclosure or permissions** — keep a stable **`item-id`** and show the row only when a condition becomes true.
|
|
120
|
+
- **Temporary removal** — same as filtering when the row may return without re-creating the element.
|
|
121
|
+
|
|
122
|
+
**List behavior:** Hidden rows are omitted from **`orderChange`**’s **`orderedItemIds`** and from drag-and-drop / keyboard reorder among **visible** rows only (see tests and list implementation). They do not receive focus while hidden.
|
|
123
|
+
|
|
124
|
+
**Accessibility:** Native **`hidden`** removes the row from the accessibility tree while it is hidden. If users need an equivalent announcement elsewhere (for example, “3 results hidden by filter”), provide that in your application UI.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
### Events and programmatic API
|
|
129
|
+
|
|
130
|
+
#### `xpl-list` — listen on the list host
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
| Event | When | `detail` |
|
|
134
|
+
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
|
|
135
|
+
| `itemSelect` | Radio selection changes; when clearing via **`clearSelection()`** or **Escape** on the selected row, emitted **once per** previously selected row (typically one) | `{ itemId?: string }` |
|
|
136
|
+
| `orderChange` | After a successful reorder (drag/drop or keyboard); DOM is already updated | `{ itemId?: string; direction: 'up' \| 'down'; orderedItemIds: string[] }` |
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
**`orderedItemIds`:** visible rows only (DOM order); hidden `xpl-list-item` rows are omitted.
|
|
140
|
+
|
|
141
|
+
**TypeScript:** `orderChange` detail is typed as **`XplListOrderChangeDetail`** (exported from `@xplortech/apollo-core` alongside **`ListItem`**).
|
|
142
|
+
|
|
143
|
+
**Legacy:** `xplListReorder` may also fire (bubbles, composed). Prefer **`orderChange`** for new code. Legacy `detail` includes `orderedItemIds` as well.
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
| Method | Notes |
|
|
147
|
+
| ------------------ | --------------------------------------------------------------------------------------------------- |
|
|
148
|
+
| `clearSelection()` | Promise. Clears radios when `selectable`. Same effect as **Escape** with focus on the selected row. |
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
```html
|
|
152
|
+
<xpl-list id="my-list" selectable reorderable>...</xpl-list>
|
|
153
|
+
<script type="module">
|
|
154
|
+
const list = document.getElementById('my-list');
|
|
155
|
+
list.addEventListener('itemSelect', (e) => {
|
|
156
|
+
/* handle selection: */ void e.detail.itemId;
|
|
157
|
+
});
|
|
158
|
+
list.addEventListener('orderChange', (e) => {
|
|
159
|
+
/* handle reorder: */ void e.detail.direction;
|
|
160
|
+
void e.detail.orderedItemIds;
|
|
161
|
+
});
|
|
162
|
+
</script>
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
#### `xpl-list-item` — optional row-level listeners
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
| Event | When | `detail` |
|
|
169
|
+
| --------------- | ---------------------------------------------- | ---------------------------------------- |
|
|
170
|
+
| `itemSelect` | Radio change on this row | `{ itemId?: string }` |
|
|
171
|
+
| `itemDragStart` | Drag started from reorder handle | `{ itemId?: string; item: HTMLElement }` |
|
|
172
|
+
| `itemDragEnd` | Drag ended on this row (after drop or cancel) | `{ itemId?: string; item: HTMLElement }` |
|
|
173
|
+
| `itemDrop` | Drop target during reorder | `{ itemId?: string; item: HTMLElement }` |
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Legacy prop-based integration
|
|
179
|
+
|
|
180
|
+
Use only for migration or data-driven rows. **Prefer slots for new work.**
|
|
181
|
+
|
|
182
|
+
### At-a-glance migration
|
|
183
|
+
|
|
184
|
+
| | **Before (deprecated)** | **After (recommended)** |
|
|
185
|
+
| --- | --- | --- |
|
|
186
|
+
| **Data** | `items` array on `xpl-list`, or `item` object on each row | Light DOM: `<xpl-list-item>` children with named slots |
|
|
187
|
+
| **Identity** | Optional `ListItem.id`; else `item-0`, `item-1`, … | Explicit `item-id` (or host `id`) per row |
|
|
188
|
+
|
|
189
|
+
```html
|
|
190
|
+
<!-- Before: data-driven rows -->
|
|
191
|
+
<xpl-list id="legacy-list"></xpl-list>
|
|
192
|
+
<script type="module">
|
|
193
|
+
document.getElementById('legacy-list').items = [{ title: 'Acme Co.', href: '/acme' }];
|
|
194
|
+
</script>
|
|
195
|
+
|
|
196
|
+
<!-- After: slot-based rows -->
|
|
197
|
+
<xpl-list>
|
|
198
|
+
<xpl-list-item item-id="acme" href="/acme">
|
|
199
|
+
<span slot="title">Acme Co.</span>
|
|
200
|
+
</xpl-list-item>
|
|
201
|
+
</xpl-list>
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### `xpl-list` — `items` (deprecated)
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
| Prop | Type | Description |
|
|
208
|
+
| ------- | ------------ | ------------------------------------------------------------------------------------------------------- |
|
|
209
|
+
| `items` | `ListItem[]` | **Deprecated.** Renders internal `<xpl-list-item>` rows with `item={...}` and ids `item-0`, `item-1`, … |
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
A **console warning** runs when `items` is non-empty. Using **`items`** and slotted children renders **both**.
|
|
213
|
+
|
|
214
|
+
### `xpl-list-item` — `item` (deprecated)
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
| Prop | Type | Description |
|
|
218
|
+
| ------ | ---------- | ---------------------------------------------------------------------------- |
|
|
219
|
+
| `item` | `ListItem` | **Deprecated.** Prop-driven row; **no named slots**. Prefer slot-based rows. |
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
### `ListItem` (`listitem.ts`, deprecated)
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
| Field | Type | Notes |
|
|
226
|
+
| ---------- | -------------------------------- | ---------------------- |
|
|
227
|
+
| `id` | `string` | Optional stable row id (`item-id` when rendered from `items`) |
|
|
228
|
+
| `title` | `string` | Required |
|
|
229
|
+
| `href` | `string` | Optional |
|
|
230
|
+
| `avatar` | `string` | Image URL or icon name |
|
|
231
|
+
| `metadata` | `string[]` or `{ icon, text }[]` | |
|
|
232
|
+
| `subtext` | `string` | |
|
|
233
|
+
| `avatars` | `string[]` | |
|
|
234
|
+
| `badges` | `string[]` or badge objects | |
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
**Legacy layout:** Rows rendered from the deprecated `item` / inner `.xpl-list-item` flex markup use the **same layout at all viewport widths** (there is no dedicated narrow-viewport stacking breakpoint in `list-item.css`). If you need stacked mobile behavior for legacy lists, handle it in the app (e.g. layout wrapper or scoped CSS).
|
|
238
|
+
|
|
239
|
+
**Legacy reordering:** The list does **not** set `reorderable` (or `selectable` / `radio-name`) on legacy **`items`** / **`item`** rows—there is **no** drag handle or keyboard reorder entry point in prop-driven mode. Only **slot-composed** rows participate in reorder and list-level selection UI; migrate from `items` / `item` to slotted `<xpl-list-item>` children if you need those features.
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Dependencies
|
|
244
|
+
|
|
245
|
+
- **Rows:** `xpl-list-item` uses [xpl-avatar](../xpl-avatar), [xpl-icon](../xpl-icon), [xpl-badge](../xpl-badge), [xpl-divider](../xpl-divider).
|
|
246
|
+
|
|
247
|
+
```mermaid
|
|
248
|
+
graph TD;
|
|
249
|
+
xpl-list-item --> xpl-avatar
|
|
250
|
+
xpl-list-item --> xpl-icon
|
|
251
|
+
xpl-list-item --> xpl-badge
|
|
252
|
+
xpl-list-item --> xpl-divider
|
|
253
|
+
xpl-list --> xpl-list-item
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
## Design tokens
|
|
259
|
+
|
|
260
|
+
List styling is split across [`list.css`](https://github.com/xplor/apollo/blob/main/packages/apollo-core/src/css/list.css) (the `xpl-list` host), [`list-item.css`](https://github.com/xplor/apollo/blob/main/packages/apollo-core/src/css/list-item.css) (legacy vs slot-based row layout, error/disabled/hidden, title/metadata columns), and [`list-action.css`](https://github.com/xplor/apollo/blob/main/packages/apollo-core/src/css/list-action.css) (reorder handle, selectable radio chrome, legacy action-button modifiers). All are imported from the package `style` entry. Visual values use **Apollo Foundation** CSS variables (`--xpl-*`); no raw hex colors in those stylesheets.
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
| Category | Tokens (representative) |
|
|
264
|
+
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
265
|
+
| **Layout / spacing** | `--xpl-space-4`, `--xpl-space-8`, `--xpl-space-12`, `--xpl-space-16`, `--xpl-space-40` |
|
|
266
|
+
| **Sizing** | `--xpl-size-050`, `--xpl-size-075`, `--xpl-size-350` |
|
|
267
|
+
| **Borders** | `--xpl-border-small`, `--xpl-border-large`, `--xpl-border-default`, `--xpl-border-hover`, `--xpl-border-focus`, `--xpl-border-negative`, `--xpl-border-subtle`, `--xpl-border-strong` |
|
|
268
|
+
| **Radius** | `--xpl-border-radius-default`, `--xpl-border-radius-small`, `--xpl-border-radius-full` |
|
|
269
|
+
| **Text** | `--xpl-text-default`, `--xpl-text-subdued`, `--xpl-text-disabled`, `--xpl-text-negative` |
|
|
270
|
+
| **Icons / surfaces** | `--xpl-icon-default`, `--xpl-icon-subtle`, `--xpl-background-surface-default`, `--xpl-background-action-disabled`, `--xpl-background-surface-subtle` |
|
|
271
|
+
| **Typography** | `--xpl-font-family-default`, `--xpl-font-size-body`, `--xpl-font-size-title-5`, `--xpl-font-size-callout`, `--xpl-font-size-caption`, `--xpl-font-weight-normal`, `--xpl-font-weight-medium` |
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
## Accessibility
|
|
275
|
+
|
|
276
|
+
- **`xpl-list`** sets `role="list"` on the host. Use **`label`** / **`labelled-by`** when the list has no visible caption.
|
|
277
|
+
- **`xpl-list-item`**: **`role="listitem"`** is on the **inner row surface** in **slot-based** mode (see intro above); **legacy** `item` rows keep it on the **host**. When the list is **`selectable`**, the row renders **`xpl-radio`** with a shared group **`name`** and visually hidden label text (from the title slot when present, else a default).
|
|
278
|
+
- With **`selectable`**, **Escape** while focus is on the **selected** row **clears selection** (same behavior as **`clearSelection()`**).
|
|
279
|
+
- **Reorder**: the drag handle is a native **`<button>`** inside **`xpl-button`** (focusable, with **`aria-pressed`** in keyboard reorder mode and **`aria-label`** instructions for keyboard vs drag). Row links use `:focus-visible` for focus indication.
|
|
280
|
+
- **`hidden`** on a row removes it from layout and visible reorder semantics; see **[Hidden rows](#hidden-rows)** for use cases and accessibility notes.
|
|
281
|
+
|
|
282
|
+
---
|
|
4
283
|
|
|
5
284
|
<!-- Auto Generated Below -->
|
|
6
285
|
|
|
7
286
|
|
|
8
287
|
## Properties
|
|
9
288
|
|
|
10
|
-
| Property
|
|
11
|
-
|
|
|
12
|
-
| `items`
|
|
289
|
+
| Property | Attribute | Description | Type | Default |
|
|
290
|
+
| ------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ----------- |
|
|
291
|
+
| `items` | -- | Array of list items to render. Each item should follow the ListItem interface. **Deprecated.** Use slot-based xpl-list-item children instead. | `ListItem[]` | `[]` |
|
|
292
|
+
| `label` | `label` | Accessible name for the list, exposed as `aria-label` on the host when set. Use when the list has no visible heading. Ignored when `labelledBy` is set (see `labelledBy` for precedence). | `string` | `undefined` |
|
|
293
|
+
| `labelledBy` | `labelled-by` | Element id(s) that label this list (space-separated), exposed as `aria-labelledby` when set. When set, `label` is not applied as `aria-label` so the list has a single naming source. | `string` | `undefined` |
|
|
294
|
+
| `reorderable` | `reorderable` | When true, enables reorder UI and behavior for **slot-based** child rows (drag handle + keyboard). Legacy rows rendered from the deprecated `items` prop do **not** show a drag handle; migrate to slots if reorder is required. | `boolean` | `false` |
|
|
295
|
+
| `selectable` | `selectable` | Determines if this list is selectable (shows `xpl-radio` per row in a shared group). Press Escape while focus is on the **selected** row to clear selection (same as `clearSelection()`). | `boolean` | `false` |
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
## Events
|
|
299
|
+
|
|
300
|
+
| Event | Description | Type |
|
|
301
|
+
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- |
|
|
302
|
+
| `itemSelect` | Emitted when an item is selected. | `CustomEvent<{ itemId?: string; }>` |
|
|
303
|
+
| `orderChange` | Emitted when the order of items changes (after the DOM has been updated). `orderedItemIds` lists **visible** row ids only (hidden rows excluded). | `CustomEvent<XplListOrderChangeDetail>` |
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
## Methods
|
|
307
|
+
|
|
308
|
+
### `clearSelection() => Promise<void>`
|
|
309
|
+
|
|
310
|
+
Clears all radio selections in the list.
|
|
311
|
+
Also runs when `selectable` is true, the user presses Escape, and focus is on the selected row.
|
|
312
|
+
Emits `itemSelect` once per row that was selected (checked radio or `selected` prop), typically one.
|
|
313
|
+
|
|
314
|
+
#### Returns
|
|
315
|
+
|
|
316
|
+
Type: `Promise<void>`
|
|
317
|
+
|
|
318
|
+
|
|
13
319
|
|
|
14
320
|
|
|
15
321
|
## Dependencies
|
|
16
322
|
|
|
17
323
|
### Depends on
|
|
18
324
|
|
|
19
|
-
- [xpl-
|
|
20
|
-
- [xpl-icon](../xpl-icon)
|
|
21
|
-
- [xpl-badge](../xpl-badge)
|
|
325
|
+
- [xpl-list-item](xpl-list-item)
|
|
22
326
|
|
|
23
327
|
### Graph
|
|
24
328
|
```mermaid
|
|
25
329
|
graph TD;
|
|
26
|
-
xpl-list --> xpl-
|
|
27
|
-
xpl-list --> xpl-
|
|
28
|
-
xpl-list --> xpl-
|
|
330
|
+
xpl-list --> xpl-list-item
|
|
331
|
+
xpl-list-item --> xpl-avatar
|
|
332
|
+
xpl-list-item --> xpl-icon
|
|
333
|
+
xpl-list-item --> xpl-badge
|
|
334
|
+
xpl-list-item --> xpl-button
|
|
335
|
+
xpl-list-item --> xpl-radio
|
|
336
|
+
xpl-list-item --> xpl-divider
|
|
337
|
+
xpl-avatar --> xpl-badge
|
|
338
|
+
xpl-button --> xpl-icon
|
|
29
339
|
style xpl-list fill:#f9f,stroke:#333,stroke-width:4px
|
|
30
340
|
```
|
|
31
341
|
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# xpl-list-item
|
|
2
|
+
|
|
3
|
+
Single row for [`xpl-list`](../xpl-list/readme.md). **Slot-based** rows expose `role="listitem"` on the inner row surface (`.xpl-list-item__wrapper` or `.xpl-list-item__listitem-shell` when `href` is set); **legacy** `item` rows use `role="listitem"` on the host. Hand-written integration notes for slots, attributes, and events live in the [list readme](../xpl-list/readme.md); the section below is Stencil-generated API for this component.
|
|
4
|
+
|
|
5
|
+
**Reorder handle (slot mode):** When `reorderable` is enabled and the row uses **slot-based** content, the handle is an **`xpl-button`** wrapping a native **`<button>`**. Reorder logic is wired on the **`xpl-button` host** (`mousedown` / `keydown`); those events originate on the inner `<button>` and **bubble** to the host, which is how the list item receives them today. If `xpl-button` ever stopped bubbling for those events, reorder handlers would need to attach directly to the inner button (similar to `componentDidRender` syncing `aria-*` on that element).
|
|
6
|
+
|
|
7
|
+
**Legacy `item` prop:** Prop-driven rows **do not** render the reorder handle, radios, or keyboard reorder affordances. Parent `xpl-list` **does not** set `selectable`, `radio-name`, or `reorderable` on those rows (those attributes are removed so they are not mistaken for supported behavior). Use slots if you need selection, drag, or keyboard reorder.
|
|
8
|
+
|
|
9
|
+
### Accessibility
|
|
10
|
+
|
|
11
|
+
- **`role="listitem"`** is on the inner row surface (`.xpl-list-item__wrapper` for non-link rows, `.xpl-list-item__listitem-shell` for link rows), not on the `<xpl-list-item>` host. This avoids older browser issues with `display: contents` and ARIA.
|
|
12
|
+
- **Hidden rows** render an empty host with the native `hidden` attribute only — no `role="listitem"` — so hidden rows are removed from the accessibility tree entirely.
|
|
13
|
+
- **Selectable rows** render `xpl-radio` with an accessible label derived from the **title** slot text, falling back to `Select <item-id>`, then `Select list item`.
|
|
14
|
+
- **Reorder handle** (`xpl-button`) syncs `aria-label` and `aria-pressed` on the inner native `<button>` via `componentDidRender`. Labels change between drag and keyboard modes.
|
|
15
|
+
- **Focus indicators** use `:focus-visible` with `outline-color: var(--xpl-border-focus)` and `outline-2 outline-offset-2`.
|
|
16
|
+
- **Disabled rows** use `--xpl-background-action-disabled` and `--xpl-text-disabled`; link anchors get `pointer-events: none`.
|
|
17
|
+
- **Keyboard reorder**: Enter/Space activates mode, ArrowUp/ArrowDown moves the row, Escape exits.
|
|
18
|
+
|
|
19
|
+
### Design tokens
|
|
20
|
+
|
|
21
|
+
| Role | Token |
|
|
22
|
+
|------|-------|
|
|
23
|
+
| Row background | `--xpl-background-surface-default` |
|
|
24
|
+
| Row border | `--xpl-border-default` (default), `--xpl-border-hover` (hover), `--xpl-border-negative` (error), `--xpl-border-focus` (focus/drag-over) |
|
|
25
|
+
| Row border-radius | `--xpl-border-radius-default` |
|
|
26
|
+
| Text | `--xpl-text-default` (primary), `--xpl-text-subdued` (metadata/details), `--xpl-text-negative` (error), `--xpl-text-disabled` |
|
|
27
|
+
| Icon | `--xpl-icon-subtle` (chevron) |
|
|
28
|
+
| Spacing | `--xpl-space-4` through `--xpl-space-40` (padding, gap, margins) |
|
|
29
|
+
| Sizing | `--xpl-size-050` (dot badge), `--xpl-size-350` (min-height) |
|
|
30
|
+
| Typography | `--xpl-font-size-body`, `--xpl-font-size-title-5`, `--xpl-font-size-callout`, `--xpl-font-size-caption` |
|
|
31
|
+
| Disabled background | `--xpl-background-action-disabled` |
|
|
32
|
+
| Selected background | `--xpl-background-surface-subtle` |
|
|
33
|
+
| Drag opacity | `--xpl-opacity-75` (custom token in `:root`) |
|
|
34
|
+
|
|
35
|
+
<!-- Auto Generated Below -->
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## Properties
|
|
39
|
+
|
|
40
|
+
| Property | Attribute | Description | Type | Default |
|
|
41
|
+
| ------------------- | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------- |
|
|
42
|
+
| `disabled` | `disabled` | Whether the item is disabled. | `boolean` | `false` |
|
|
43
|
+
| `error` | `error` | Whether to show the item in an error state. | `boolean` | `false` |
|
|
44
|
+
| `hidden` | `hidden` | When true, the row is not shown and does not participate in visible-only list behavior (e.g. `orderChange` / `orderedItemIds`, reorder targets). Use for filtering, conditional display, or keeping stable `item-id` while the row is off-screen. See `xpl-list` readme “Hidden rows”. **Accessibility:** Renders an empty host with the native `hidden` attribute only (no `role="listitem"`), consistent with the row not participating as a list item while hidden. | `boolean` | `false` |
|
|
45
|
+
| `href` | `href` | URL for link behavior. When provided, the entire row becomes clickable. Clicks on `actions` or `avatar` slots are prevented from triggering navigation. | `string` | `undefined` |
|
|
46
|
+
| `item` | -- | Optional item data for prop-based rendering. When provided, this takes precedence over slotted content and renders using the legacy ListItem interface. **Deprecated.** Prefer slot-based composition (named slots on `xpl-list-item`). | `ListItem` | `undefined` |
|
|
47
|
+
| `itemId` | `item-id` | Unique identifier for this item. Used for selection and drag/drop. Mutable so the host can sync from `item-id` / `id` in `componentWillLoad` without breaking one-way data flow. | `string` | `undefined` |
|
|
48
|
+
| `keyboardActive` | `keyboard-active` | When set by the parent, indicates this item is the active keyboard reorder item. | `boolean` | `false` |
|
|
49
|
+
| `radioName` | `radio-name` | Name attribute for radio inputs (shared across selectable items in a list). | `string` | `undefined` |
|
|
50
|
+
| `reorderable` | `reorderable` | Whether this item is reorderable (shows a drag handle in **slot-based** layout). When the deprecated `item` prop is used, legacy markup has **no** reorder handle even if this is true. | `boolean` | `false` |
|
|
51
|
+
| `selectable` | `selectable` | Whether this item is selectable (shows `xpl-radio` in a shared group). | `boolean` | `false` |
|
|
52
|
+
| `selected` | `selected` | Whether this item is selected (radio checked state). | `boolean` | `false` |
|
|
53
|
+
| `showDivider` | `show-divider` | Whether to show a divider below the item. | `boolean` | `false` |
|
|
54
|
+
| `titleBadgeVariant` | `title-badge-variant` | Optional badge to display next to the title (dot badge). Only used when `item` prop is not provided (slot mode). Matches `xpl-badge` variant values (e.g. purple, green, red). | `"blue" \| "error" \| "gray" \| "green" \| "inactive" \| "orange" \| "purple" \| "red" \| "success" \| "warning" \| "yellow"` | `undefined` |
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
## Events
|
|
58
|
+
|
|
59
|
+
| Event | Description | Type |
|
|
60
|
+
| --------------- | ----------------------------------------------------------------------- | ------------------------------------------------------ |
|
|
61
|
+
| `itemDragEnd` | Emitted when a drag operation ends on this item (after drop or cancel). | `CustomEvent<{ itemId?: string; item: HTMLElement; }>` |
|
|
62
|
+
| `itemDragStart` | Emitted when drag starts on this item. | `CustomEvent<{ itemId?: string; item: HTMLElement; }>` |
|
|
63
|
+
| `itemDrop` | Emitted when an item is dropped on this item. | `CustomEvent<{ itemId?: string; item: HTMLElement; }>` |
|
|
64
|
+
| `itemSelect` | Emitted when the item is selected (radio change). | `CustomEvent<{ itemId?: string; }>` |
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
## Dependencies
|
|
68
|
+
|
|
69
|
+
### Used by
|
|
70
|
+
|
|
71
|
+
- [xpl-list](..)
|
|
72
|
+
|
|
73
|
+
### Depends on
|
|
74
|
+
|
|
75
|
+
- [xpl-avatar](../../xpl-avatar)
|
|
76
|
+
- [xpl-icon](../../xpl-icon)
|
|
77
|
+
- [xpl-badge](../../xpl-badge)
|
|
78
|
+
- [xpl-button](../../xpl-button)
|
|
79
|
+
- [xpl-radio](../../xpl-radio)
|
|
80
|
+
- [xpl-divider](../../xpl-divider)
|
|
81
|
+
|
|
82
|
+
### Graph
|
|
83
|
+
```mermaid
|
|
84
|
+
graph TD;
|
|
85
|
+
xpl-list-item --> xpl-avatar
|
|
86
|
+
xpl-list-item --> xpl-icon
|
|
87
|
+
xpl-list-item --> xpl-badge
|
|
88
|
+
xpl-list-item --> xpl-button
|
|
89
|
+
xpl-list-item --> xpl-radio
|
|
90
|
+
xpl-list-item --> xpl-divider
|
|
91
|
+
xpl-avatar --> xpl-badge
|
|
92
|
+
xpl-button --> xpl-icon
|
|
93
|
+
xpl-list --> xpl-list-item
|
|
94
|
+
style xpl-list-item fill:#f9f,stroke:#333,stroke-width:4px
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
----------------------------------------------
|
|
98
|
+
|
|
99
|
+
*Built with [StencilJS](https://stenciljs.com/)*
|