@xplortech/apollo-core 3.1.0 → 3.2.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 +120 -14
- package/build/components/avatar.css +1 -1
- package/build/components/data-card.css +1 -1
- package/build/components/dropdown.css +1 -1
- package/build/components/input-time.css +1 -1
- package/build/components/large-card.css +1 -1
- package/build/components/list-item.css +1 -1
- package/build/components/modal.css +1 -1
- package/build/components/popover.css +1 -1
- package/build/components/side-nav.css +1 -1
- package/build/components/spotlight.css +1 -1
- package/build/components/table-cell-base.css +1 -0
- package/build/components/table-cell.css +1 -0
- package/build/components/table-footer-cell.css +1 -1
- package/build/components/table-header-cell.css +1 -1
- package/build/components/table.css +1 -1
- package/build/components/tag.css +1 -1
- package/build/components/toast.css +1 -1
- package/build/components/toggle.css +1 -1
- package/build/components/toolbar.css +1 -1
- package/build/components/tooltip.css +1 -1
- package/build/components/top-nav.css +1 -1
- package/build/components-manifest.json +19 -3
- package/build/core.css +1 -1
- package/build/style.css +1 -1
- package/build/variables/apollo.css +4 -0
- package/build/variables/field-edge.css +4 -0
- package/build/vendor/flatpickr.css +1 -1
- package/dist/apollo-core/apollo-core.css +1 -1
- package/dist/apollo-core/apollo-core.esm.js +1 -1
- package/dist/apollo-core/p-045a4538.entry.js +1 -0
- package/dist/apollo-core/{p-d443291f.entry.js → p-050a8bf2.entry.js} +1 -1
- package/dist/apollo-core/p-08767607.entry.js +1 -0
- package/dist/apollo-core/{p-149ddd12.entry.js → p-11914cd4.entry.js} +1 -1
- package/dist/apollo-core/{p-581b702c.entry.js → p-14e86de8.entry.js} +1 -1
- package/dist/apollo-core/p-194c0ccd.entry.js +1 -0
- package/dist/apollo-core/p-1c031055.entry.js +1 -0
- package/dist/apollo-core/p-24f7280a.entry.js +1 -0
- package/dist/apollo-core/{p-47bda204.entry.js → p-24fa8a03.entry.js} +1 -1
- package/dist/apollo-core/{p-91895c40.entry.js → p-2971e2ec.entry.js} +1 -1
- package/dist/apollo-core/{p-0958c719.entry.js → p-3417c1ce.entry.js} +1 -1
- package/dist/apollo-core/p-3713cd77.entry.js +1 -0
- package/dist/apollo-core/p-386851a2.entry.js +1 -0
- package/dist/apollo-core/p-3cd1238b.entry.js +1 -0
- package/dist/apollo-core/p-45c872d2.entry.js +1 -0
- package/dist/apollo-core/{p-b45179fb.entry.js → p-49531864.entry.js} +1 -1
- package/dist/apollo-core/p-4e3c6616.entry.js +1 -0
- package/dist/apollo-core/p-5b9fd96e.entry.js +1 -0
- package/dist/apollo-core/p-5c3be343.entry.js +1 -0
- package/dist/apollo-core/p-5cbf5d42.entry.js +1 -0
- package/dist/apollo-core/p-5ec2b180.entry.js +1 -0
- package/dist/apollo-core/{p-790709c0.entry.js → p-64f5c129.entry.js} +1 -1
- package/dist/apollo-core/{p-28bce81a.entry.js → p-65f6b66c.entry.js} +1 -1
- package/dist/apollo-core/{p-d9070ae5.entry.js → p-715baae0.entry.js} +1 -1
- package/dist/apollo-core/p-72e0455f.entry.js +1 -0
- package/dist/apollo-core/p-7ac7fbc0.entry.js +1 -0
- package/dist/apollo-core/p-7d70e089.entry.js +1 -0
- package/dist/apollo-core/{p-d41b8f46.entry.js → p-7eb02cf3.entry.js} +1 -1
- package/dist/apollo-core/p-7f4463ff.entry.js +1 -0
- package/dist/apollo-core/p-808f3d9c.entry.js +1 -0
- package/dist/apollo-core/p-87582346.entry.js +1 -0
- package/dist/apollo-core/{p-2c995d80.entry.js → p-8f8f4759.entry.js} +1 -1
- package/dist/apollo-core/{p-5d9a593e.entry.js → p-907bc21e.entry.js} +1 -1
- package/dist/apollo-core/p-9905c77c.entry.js +1 -0
- package/dist/apollo-core/{p-54903322.entry.js → p-9d731673.entry.js} +1 -1
- package/dist/apollo-core/{p-2938ab4f.entry.js → p-9feaa8be.entry.js} +1 -1
- package/dist/apollo-core/p-O7gQjVdS.js +1 -0
- package/dist/apollo-core/p-a6ecca68.entry.js +1 -0
- package/dist/apollo-core/p-a789c272.entry.js +1 -0
- package/dist/apollo-core/{p-06a9a27b.entry.js → p-aeb2bcb8.entry.js} +1 -1
- package/dist/apollo-core/p-b3b4678b.entry.js +1 -0
- package/dist/apollo-core/{p-82812126.entry.js → p-b64ed46d.entry.js} +1 -1
- package/dist/apollo-core/{p-0368a1df.entry.js → p-bc821e69.entry.js} +1 -1
- package/dist/apollo-core/p-bd493c4a.entry.js +1 -0
- package/dist/apollo-core/p-bdcece21.entry.js +1 -0
- package/dist/apollo-core/{p-cdb5b5c4.entry.js → p-bfb7a83a.entry.js} +1 -1
- package/dist/apollo-core/{p-cdacfcd4.entry.js → p-c22f70f4.entry.js} +1 -1
- package/dist/apollo-core/{p-5730d96c.entry.js → p-c5bc3b2c.entry.js} +1 -1
- package/dist/apollo-core/{p-4ad79534.entry.js → p-ca83003e.entry.js} +1 -1
- package/dist/apollo-core/p-d3230277.entry.js +1 -0
- package/dist/apollo-core/p-d3ada7d0.entry.js +1 -0
- package/dist/apollo-core/{p-d0bc7c45.entry.js → p-d469bf5d.entry.js} +1 -1
- package/dist/apollo-core/p-d7f8ee34.entry.js +1 -0
- package/dist/apollo-core/p-d879c349.entry.js +1 -0
- package/dist/apollo-core/{p-2139f9f6.entry.js → p-df257cbf.entry.js} +1 -1
- package/dist/apollo-core/p-e09d8beb.entry.js +1 -0
- package/dist/apollo-core/p-e4d50301.entry.js +1 -0
- package/dist/apollo-core/{p-f3a2c79b.entry.js → p-ea9cdd65.entry.js} +1 -1
- package/dist/apollo-core/{p-ca4652b3.entry.js → p-eba654a3.entry.js} +1 -1
- package/dist/apollo-core/{p-4a2323b3.entry.js → p-ee68bed6.entry.js} +1 -1
- package/dist/apollo-core/{p-abdf199b.entry.js → p-f384a990.entry.js} +1 -1
- package/dist/apollo-core/{p-4d4acd1f.entry.js → p-f579e4b0.entry.js} +1 -1
- package/dist/apollo-core/{p-d724c419.entry.js → p-fcb17ff9.entry.js} +1 -1
- package/dist/apollo-core/{p-e2890eb1.entry.js → p-ff16f574.entry.js} +1 -1
- package/dist/cjs/apollo-core.cjs.js +1 -1
- package/dist/cjs/index-3cBvw409.js +8 -12
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/table-internal-DssCrBs_.js +67 -0
- package/dist/cjs/xpl-accordion.cjs.entry.js +2 -2
- package/dist/cjs/xpl-application-shell.cjs.entry.js +1 -1
- package/dist/cjs/xpl-avatar_3.cjs.entry.js +4 -4
- package/dist/cjs/xpl-backdrop.cjs.entry.js +1 -1
- package/dist/cjs/xpl-badge.cjs.entry.js +1 -1
- package/dist/cjs/xpl-banner.cjs.entry.js +2 -2
- package/dist/cjs/xpl-breadcrumb-item.cjs.entry.js +1 -1
- package/dist/cjs/xpl-breadcrumbs.cjs.entry.js +1 -1
- package/dist/cjs/xpl-button-row.cjs.entry.js +1 -1
- package/dist/cjs/xpl-button.cjs.entry.js +1 -1
- package/dist/cjs/xpl-calendar.cjs.entry.js +1 -1
- package/dist/cjs/xpl-checkbox.cjs.entry.js +3 -3
- package/dist/cjs/xpl-choicelist.cjs.entry.js +1 -1
- package/dist/cjs/xpl-content-area.cjs.entry.js +1 -1
- package/dist/cjs/xpl-dashboard.cjs.entry.js +1 -1
- package/dist/cjs/xpl-data-card.cjs.entry.js +2 -2
- package/dist/cjs/xpl-dropdown_4.cjs.entry.js +8 -8
- package/dist/cjs/xpl-dynamic-table-cell.cjs.entry.js +2 -2
- package/dist/cjs/xpl-dynamic-table-row.cjs.entry.js +2 -2
- package/dist/cjs/xpl-dynamic-table.cjs.entry.js +2 -2
- package/dist/cjs/xpl-grid-item.cjs.entry.js +1 -1
- package/dist/cjs/xpl-grid.cjs.entry.js +1 -1
- package/dist/cjs/xpl-header-accordion.cjs.entry.js +1 -1
- package/dist/cjs/xpl-icon.cjs.entry.js +2 -2
- package/dist/cjs/xpl-input-color.cjs.entry.js +8 -8
- package/dist/cjs/xpl-input-phone.cjs.entry.js +5 -5
- package/dist/cjs/xpl-input-time.cjs.entry.js +2 -2
- package/dist/cjs/xpl-input_4.cjs.entry.js +10 -10
- package/dist/cjs/xpl-large-card.cjs.entry.js +1 -1
- package/dist/cjs/xpl-list.cjs.entry.js +2 -2
- package/dist/cjs/xpl-main-nav.cjs.entry.js +1 -1
- package/dist/cjs/xpl-modal.cjs.entry.js +1 -1
- package/dist/cjs/xpl-nav-header-menu.cjs.entry.js +2 -2
- package/dist/cjs/xpl-nav-item.cjs.entry.js +2 -2
- package/dist/cjs/xpl-pagination.cjs.entry.js +4 -4
- package/dist/cjs/xpl-panel.cjs.entry.js +2 -2
- package/dist/cjs/xpl-popover.cjs.entry.js +4 -4
- package/dist/cjs/xpl-progress-bar.cjs.entry.js +2 -2
- package/dist/cjs/xpl-progress-indicator.cjs.entry.js +1 -1
- package/dist/cjs/xpl-secondary-nav.cjs.entry.js +1 -1
- package/dist/cjs/xpl-select_2.cjs.entry.js +9 -9
- package/dist/cjs/xpl-side-nav-header-item.cjs.entry.js +2 -2
- package/dist/cjs/xpl-side-nav-item.cjs.entry.js +2 -2
- package/dist/cjs/xpl-side-nav-section.cjs.entry.js +5 -5
- package/dist/cjs/xpl-side-nav.cjs.entry.js +2 -2
- package/dist/cjs/xpl-skeleton.cjs.entry.js +1 -1
- package/dist/cjs/xpl-slideout.cjs.entry.js +1 -1
- package/dist/cjs/xpl-tab-panel.cjs.entry.js +2 -2
- package/dist/cjs/xpl-table-body.cjs.entry.js +1 -1
- package/dist/cjs/xpl-table-cell_3.cjs.entry.js +228 -0
- package/dist/cjs/xpl-table-footer.cjs.entry.js +1 -1
- package/dist/cjs/xpl-table-header.cjs.entry.js +1 -1
- package/dist/cjs/xpl-table-row.cjs.entry.js +43 -2
- package/dist/cjs/xpl-table.cjs.entry.js +1204 -80
- package/dist/cjs/xpl-tabs.cjs.entry.js +5 -5
- package/dist/cjs/xpl-toast.cjs.entry.js +2 -2
- package/dist/cjs/xpl-toggle.cjs.entry.js +3 -3
- package/dist/cjs/xpl-toolbar.cjs.entry.js +2 -2
- package/dist/cjs/xpl-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/xpl-top-nav-item.cjs.entry.js +2 -2
- package/dist/cjs/xpl-top-nav-menu.cjs.entry.js +2 -2
- package/dist/cjs/xpl-top-nav.cjs.entry.js +5 -5
- package/dist/cjs/xpl-utility-bar.cjs.entry.js +1 -1
- package/dist/collection/collection-manifest.json +2 -1
- 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-backdrop/xpl-backdrop.js +1 -1
- package/dist/collection/components/xpl-badge/xpl-badge.js +1 -1
- package/dist/collection/components/xpl-banner/xpl-banner.js +2 -2
- 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 +1 -1
- 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 +3 -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 +4 -4
- package/dist/collection/components/xpl-dynamic-table/xpl-dynamic-table.js +2 -2
- 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/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 +1 -1
- package/dist/collection/components/xpl-input/xpl-input-time/xpl-input-time.js +2 -2
- package/dist/collection/components/xpl-input/xpl-input.js +2 -2
- package/dist/collection/components/xpl-large-card/xpl-large-card.js +1 -1
- package/dist/collection/components/xpl-list/xpl-list.js +2 -2
- 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 +4 -4
- package/dist/collection/components/xpl-panel/xpl-panel.js +2 -2
- 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/xpl-progress-indicator.js +1 -1
- 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 +7 -7
- package/dist/collection/components/xpl-side-nav/xpl-side-nav-header-item/xpl-side-nav-header-item.js +2 -2
- 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-section/xpl-side-nav-section.js +5 -5
- 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-tab-panel/xpl-tab-panel.js +2 -2
- package/dist/collection/components/xpl-table/utils/move-row-dom.js +50 -0
- package/dist/collection/components/xpl-table/utils/table-internal.js +57 -0
- package/dist/collection/components/xpl-table/xpl-table-body/xpl-table-body.js +1 -1
- package/dist/collection/components/xpl-table/xpl-table-cell/xpl-table-cell.js +167 -0
- package/dist/collection/components/xpl-table/xpl-table-footer/xpl-table-footer.js +1 -1
- package/dist/collection/components/xpl-table/xpl-table-footer-cell/xpl-table-footer-cell.js +2 -2
- 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 +44 -2
- package/dist/collection/components/xpl-table/xpl-table.js +1427 -116
- package/dist/collection/components/xpl-table-header/xpl-table-header.js +1 -1
- package/dist/collection/components/xpl-tabs/xpl-tabs.js +5 -5
- package/dist/collection/components/xpl-tag/xpl-tag.js +2 -2
- 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/xpl-nav-header-menu/xpl-nav-header-menu.js +2 -2
- package/dist/collection/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.js +2 -2
- package/dist/collection/components/xpl-top-nav/xpl-top-nav-menu/xpl-top-nav-menu.js +2 -2
- package/dist/collection/components/xpl-top-nav/xpl-top-nav.js +5 -5
- package/dist/collection/components/xpl-utility-bar/xpl-utility-bar.js +1 -1
- package/dist/components/index.d.ts +3 -1
- package/dist/components/index.js +1 -1
- package/dist/components/{p-oIn1krdu.js → p-1D7CWIJ-.js} +1 -1
- package/dist/components/{p-xtOHikY0.js → p-2cJsJK3-.js} +1 -1
- package/dist/components/{p-DYmvElhR.js → p-8zrW9vEC.js} +1 -1
- package/dist/components/p-B56GeUtW.js +1 -0
- package/dist/components/p-B6YLKDUX.js +1 -0
- package/dist/components/{p-D--kzomA.js → p-B7aaJikj.js} +1 -1
- package/dist/components/{p-U0JYwf4c.js → p-BOm_p_mz.js} +1 -1
- package/dist/components/p-BZIZSovL.js +1 -0
- package/dist/components/{p-xFsB212F.js → p-Btb2UkLz.js} +1 -1
- package/dist/components/{p-DAb-txW3.js → p-C0AbGd4t.js} +1 -1
- package/dist/components/p-CFXvQqUO.js +1 -0
- package/dist/components/{p-l3EZ-agL.js → p-CQjJIHK6.js} +1 -1
- package/dist/components/{p-Chpgh5SL.js → p-CV5nn1zR.js} +1 -1
- package/dist/components/p-CdRmVtIN.js +1 -0
- package/dist/components/p-CgemLtmL.js +1 -0
- package/dist/components/p-CmbpWpb0.js +1 -0
- package/dist/components/p-CuVYRPvz.js +1 -0
- package/dist/components/{p-JyNpXfDe.js → p-D09sGbzs.js} +1 -1
- package/dist/components/{p-BdpZR4KO.js → p-DTh_zemx.js} +1 -1
- package/dist/components/{p-CiHTfk3E.js → p-DoVubWyd.js} +1 -1
- package/dist/components/p-Dp62sBqX.js +1 -0
- package/dist/components/p-DqgnC_vS.js +1 -0
- package/dist/components/p-DtV4i45B.js +1 -0
- package/dist/components/{p-wIU7KUhA.js → p-ohy3NrgH.js} +1 -1
- package/dist/components/p-rLxtqgsy.js +1 -0
- package/dist/components/xpl-accordion.js +1 -1
- package/dist/components/xpl-application-shell.js +1 -1
- package/dist/components/xpl-avatar.js +1 -1
- package/dist/components/xpl-backdrop.js +1 -1
- package/dist/components/xpl-badge.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-button.js +1 -1
- package/dist/components/xpl-calendar.js +1 -1
- package/dist/components/xpl-checkbox.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-divider.js +1 -1
- package/dist/components/xpl-dropdown-group.js +1 -1
- package/dist/components/xpl-dropdown-heading.js +1 -1
- package/dist/components/xpl-dropdown-option.js +1 -1
- package/dist/components/xpl-dropdown.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-icon.js +1 -1
- package/dist/components/xpl-input-color.js +1 -1
- package/dist/components/xpl-input-date.js +1 -1
- package/dist/components/xpl-input-file.js +1 -1
- package/dist/components/xpl-input-phone.js +1 -1
- package/dist/components/xpl-input-search.js +1 -1
- package/dist/components/xpl-input-time.js +1 -1
- package/dist/components/xpl-input.js +1 -1
- package/dist/components/xpl-large-card.js +1 -1
- package/dist/components/xpl-list-item.js +1 -1
- 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.js +1 -1
- 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-popover.js +1 -1
- package/dist/components/xpl-progress-bar.js +1 -1
- package/dist/components/xpl-progress-indicator.js +1 -1
- package/dist/components/xpl-radio.js +1 -1
- package/dist/components/xpl-secondary-nav.js +1 -1
- package/dist/components/xpl-select.js +1 -1
- package/dist/components/xpl-side-nav-header-item.js +1 -1
- package/dist/components/xpl-side-nav-item.js +1 -1
- package/dist/components/xpl-side-nav-section.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.js +1 -1
- package/dist/components/xpl-tab-panel.js +1 -1
- package/dist/components/xpl-tab.js +1 -1
- package/dist/components/xpl-table-body.js +1 -1
- package/dist/components/xpl-table-cell.d.ts +11 -0
- package/dist/components/xpl-table-cell.js +1 -0
- package/dist/components/xpl-table-footer-cell.js +1 -1
- package/dist/components/xpl-table-footer.js +1 -1
- package/dist/components/xpl-table-header-cell.js +1 -1
- package/dist/components/xpl-table-header.js +1 -1
- package/dist/components/xpl-table-row.js +1 -1
- package/dist/components/xpl-table.js +1 -1
- package/dist/components/xpl-tabs.js +1 -1
- package/dist/components/xpl-tag.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-tooltip.js +1 -1
- package/dist/components/xpl-top-nav-item.js +1 -1
- package/dist/components/xpl-top-nav-menu.js +1 -1
- package/dist/components/xpl-top-nav.js +1 -1
- package/dist/components/xpl-utility-bar.js +1 -1
- package/dist/docs/xpl-avatar/readme.md +1 -1
- package/dist/docs/xpl-checkbox/readme.md +1 -3
- package/dist/docs/xpl-data-card/readme.md +1 -1
- package/dist/docs/xpl-dynamic-table/readme.md +4 -1
- package/dist/docs/xpl-dynamic-table-cell/readme.md +2 -0
- package/dist/docs/xpl-dynamic-table-row/readme.md +2 -0
- package/dist/docs/xpl-icon/readme.md +1 -1
- package/dist/docs/xpl-input/xpl-input-time/readme.md +1 -1
- package/dist/docs/xpl-large-card/readme.md +1 -1
- package/dist/docs/xpl-modal/readme.md +2 -2
- package/dist/docs/xpl-popover/readme.md +1 -2
- package/dist/docs/xpl-slideout/readme.md +1 -1
- package/dist/docs/xpl-spotlight/readme.md +1 -0
- package/dist/docs/xpl-table/readme.md +178 -20
- package/dist/docs/xpl-table/xpl-table-body/readme.md +4 -4
- package/dist/docs/xpl-table/xpl-table-cell/readme.md +53 -0
- package/dist/docs/xpl-table/xpl-table-footer/readme.md +4 -4
- package/dist/docs/xpl-table/xpl-table-footer-cell/readme.md +24 -15
- package/dist/docs/xpl-table/xpl-table-header-cell/readme.md +84 -0
- package/dist/docs/xpl-table/xpl-table-row/readme.md +18 -14
- package/dist/docs/xpl-toast/readme.md +2 -2
- package/dist/docs/xpl-toggle/readme.md +1 -1
- package/dist/docs/xpl-toolbar/readme.md +5 -3
- package/dist/docs/xpl-tooltip/readme.md +1 -2
- package/dist/docs.json +776 -113
- package/dist/esm/apollo-core.js +1 -1
- package/dist/esm/index-ukZKsqqq.js +8 -12
- package/dist/esm/loader.js +1 -1
- package/dist/esm/table-internal-O7gQjVdS.js +59 -0
- package/dist/esm/xpl-accordion.entry.js +2 -2
- package/dist/esm/xpl-application-shell.entry.js +1 -1
- package/dist/esm/xpl-avatar_3.entry.js +4 -4
- package/dist/esm/xpl-backdrop.entry.js +1 -1
- package/dist/esm/xpl-badge.entry.js +1 -1
- package/dist/esm/xpl-banner.entry.js +2 -2
- package/dist/esm/xpl-breadcrumb-item.entry.js +1 -1
- package/dist/esm/xpl-breadcrumbs.entry.js +1 -1
- package/dist/esm/xpl-button-row.entry.js +1 -1
- package/dist/esm/xpl-button.entry.js +1 -1
- package/dist/esm/xpl-calendar.entry.js +1 -1
- package/dist/esm/xpl-checkbox.entry.js +3 -3
- package/dist/esm/xpl-choicelist.entry.js +1 -1
- package/dist/esm/xpl-content-area.entry.js +1 -1
- package/dist/esm/xpl-dashboard.entry.js +1 -1
- package/dist/esm/xpl-data-card.entry.js +2 -2
- package/dist/esm/xpl-dropdown_4.entry.js +8 -8
- package/dist/esm/xpl-dynamic-table-cell.entry.js +2 -2
- package/dist/esm/xpl-dynamic-table-row.entry.js +2 -2
- package/dist/esm/xpl-dynamic-table.entry.js +2 -2
- package/dist/esm/xpl-grid-item.entry.js +1 -1
- package/dist/esm/xpl-grid.entry.js +1 -1
- package/dist/esm/xpl-header-accordion.entry.js +1 -1
- package/dist/esm/xpl-icon.entry.js +2 -2
- package/dist/esm/xpl-input-color.entry.js +8 -8
- package/dist/esm/xpl-input-phone.entry.js +5 -5
- package/dist/esm/xpl-input-time.entry.js +2 -2
- package/dist/esm/xpl-input_4.entry.js +10 -10
- package/dist/esm/xpl-large-card.entry.js +1 -1
- package/dist/esm/xpl-list.entry.js +2 -2
- package/dist/esm/xpl-main-nav.entry.js +1 -1
- package/dist/esm/xpl-modal.entry.js +1 -1
- package/dist/esm/xpl-nav-header-menu.entry.js +2 -2
- package/dist/esm/xpl-nav-item.entry.js +2 -2
- package/dist/esm/xpl-pagination.entry.js +4 -4
- package/dist/esm/xpl-panel.entry.js +2 -2
- package/dist/esm/xpl-popover.entry.js +4 -4
- package/dist/esm/xpl-progress-bar.entry.js +2 -2
- package/dist/esm/xpl-progress-indicator.entry.js +1 -1
- package/dist/esm/xpl-secondary-nav.entry.js +1 -1
- package/dist/esm/xpl-select_2.entry.js +9 -9
- package/dist/esm/xpl-side-nav-header-item.entry.js +2 -2
- package/dist/esm/xpl-side-nav-item.entry.js +2 -2
- package/dist/esm/xpl-side-nav-section.entry.js +5 -5
- package/dist/esm/xpl-side-nav.entry.js +2 -2
- package/dist/esm/xpl-skeleton.entry.js +1 -1
- package/dist/esm/xpl-slideout.entry.js +1 -1
- package/dist/esm/xpl-tab-panel.entry.js +2 -2
- package/dist/esm/xpl-table-body.entry.js +1 -1
- package/dist/esm/xpl-table-cell_3.entry.js +224 -0
- package/dist/esm/xpl-table-footer.entry.js +1 -1
- package/dist/esm/xpl-table-header.entry.js +1 -1
- package/dist/esm/xpl-table-row.entry.js +44 -3
- package/dist/esm/xpl-table.entry.js +1204 -80
- package/dist/esm/xpl-tabs.entry.js +5 -5
- package/dist/esm/xpl-toast.entry.js +2 -2
- package/dist/esm/xpl-toggle.entry.js +3 -3
- package/dist/esm/xpl-toolbar.entry.js +2 -2
- package/dist/esm/xpl-tooltip.entry.js +1 -1
- package/dist/esm/xpl-top-nav-item.entry.js +2 -2
- package/dist/esm/xpl-top-nav-menu.entry.js +2 -2
- package/dist/esm/xpl-top-nav.entry.js +5 -5
- package/dist/esm/xpl-utility-bar.entry.js +1 -1
- 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-cell/xpl-table-cell.d.ts +11 -0
- package/dist/types/components/xpl-table/xpl-table-header-cell/xpl-table-header-cell.d.ts +33 -0
- package/dist/types/components/xpl-table/xpl-table-row/xpl-table-row.d.ts +7 -0
- package/dist/types/components/xpl-table/xpl-table.d.ts +126 -22
- package/dist/types/components.d.ts +238 -60
- package/hydrate/index.js +1670 -266
- package/hydrate/index.mjs +1670 -266
- package/package.json +7 -7
- package/dist/apollo-core/p-056a99e4.entry.js +0 -1
- package/dist/apollo-core/p-068e3532.entry.js +0 -1
- package/dist/apollo-core/p-0a0a6e43.entry.js +0 -1
- package/dist/apollo-core/p-1a94c2d9.entry.js +0 -1
- package/dist/apollo-core/p-2faa7b9c.entry.js +0 -1
- package/dist/apollo-core/p-30b1b700.entry.js +0 -1
- package/dist/apollo-core/p-32084caf.entry.js +0 -1
- package/dist/apollo-core/p-38586952.entry.js +0 -1
- package/dist/apollo-core/p-50fae269.entry.js +0 -1
- package/dist/apollo-core/p-60cb3cfb.entry.js +0 -1
- package/dist/apollo-core/p-722b145a.entry.js +0 -1
- package/dist/apollo-core/p-75e5bfe0.entry.js +0 -1
- package/dist/apollo-core/p-77fe3cc1.entry.js +0 -1
- package/dist/apollo-core/p-83bb7607.entry.js +0 -1
- package/dist/apollo-core/p-8664d88b.entry.js +0 -1
- package/dist/apollo-core/p-8a925e9d.entry.js +0 -1
- package/dist/apollo-core/p-9064badb.entry.js +0 -1
- package/dist/apollo-core/p-969d5cca.entry.js +0 -1
- package/dist/apollo-core/p-99a79cf4.entry.js +0 -1
- package/dist/apollo-core/p-ae8a5f66.entry.js +0 -1
- package/dist/apollo-core/p-af8ebf49.entry.js +0 -1
- package/dist/apollo-core/p-b29025b2.entry.js +0 -1
- package/dist/apollo-core/p-b5a61076.entry.js +0 -1
- package/dist/apollo-core/p-bf7d8e18.entry.js +0 -1
- package/dist/apollo-core/p-c48e4884.entry.js +0 -1
- package/dist/apollo-core/p-cb5b15c2.entry.js +0 -1
- package/dist/apollo-core/p-cc57f20d.entry.js +0 -1
- package/dist/apollo-core/p-dca48977.entry.js +0 -1
- package/dist/apollo-core/p-e1833287.entry.js +0 -1
- package/dist/apollo-core/p-e2b73b60.entry.js +0 -1
- package/dist/apollo-core/p-e7e445b0.entry.js +0 -1
- package/dist/apollo-core/p-f1c103ff.entry.js +0 -1
- package/dist/apollo-core/p-ffc2f0cf.entry.js +0 -1
- package/dist/cjs/xpl-table-footer-cell.cjs.entry.js +0 -18
- package/dist/cjs/xpl-table-header-cell.cjs.entry.js +0 -59
- package/dist/collection/components/xpl-table-header-cell/xpl-table-header-cell.js +0 -190
- package/dist/components/p-9VnxPQLs.js +0 -1
- package/dist/components/p-B2oLZUDD.js +0 -1
- package/dist/components/p-BYYFsuD3.js +0 -1
- package/dist/components/p-BZtxVB1R.js +0 -1
- package/dist/components/p-CnVGKN63.js +0 -1
- package/dist/components/p-Cz7zDaI4.js +0 -1
- package/dist/components/p-D4rv6CNJ.js +0 -1
- package/dist/components/p-EfW0v54z.js +0 -1
- package/dist/components/p-YG9Jza0y.js +0 -1
- package/dist/docs/xpl-table-header-cell/readme.md +0 -47
- package/dist/esm/xpl-table-footer-cell.entry.js +0 -16
- package/dist/esm/xpl-table-header-cell.entry.js +0 -57
- package/dist/types/components/xpl-table-header-cell/xpl-table-header-cell.d.ts +0 -13
|
@@ -1,45 +1,203 @@
|
|
|
1
|
-
# xpl-table
|
|
1
|
+
# xpl-table
|
|
2
|
+
|
|
3
|
+
Tables are used to organize and display information from a data set.
|
|
4
|
+
|
|
5
|
+
## Rendering modes
|
|
6
|
+
|
|
7
|
+
1. **Compositional (recommended)** — Provide `xpl-table-header`, `xpl-table-body`, and optional `xpl-table-footer` with `xpl-table-row` / `xpl-table-header-cell` / `xpl-table-cell` / `xpl-table-footer-cell`. The host uses CSS grid (`role="grid"`). Column widths come from each **`xpl-table-header-cell`** (`width` in px, or `column-width` for any grid track; default `auto` / content-sized). Use `label` for an accessible name. **Sorting:** set `sortable` (and optional `sort-key`) on label header cells; `xpl-table` emits **`sortChanged`** with sort-key slugs → `asc` / `desc` / `null`. The host does **not** reorder row DOM — listen and update your data (or reorder nodes yourself), same as the main Table Storybook demo.
|
|
8
|
+
2. **Legacy data-driven** — Set `columns`, `data`, and optionally `footer` for a built-in `<table>` implementation. That path supports `isSortable` / `sortableColumns`, `multiselect`, and emits `sortChanged` / `tableSelect` (legacy can reorder rows unless you `preventDefault`). Prefer compositional markup for new work.
|
|
9
|
+
|
|
10
|
+
Composable **selection** (`selectable`), **toolbar**, and copy-paste examples live under **[Usage](#usage)** below (read the breaking-change note first if you are migrating from auto-injected selection cells).
|
|
11
|
+
|
|
12
|
+
### Row reorder (`row-reorderable`, managed grip column)
|
|
13
|
+
|
|
14
|
+
When `row-reorderable` is set, Apollo can **inject** a leading reorder column with a native **button** + optional `xpl-icon` on each body row (unless you author that column yourself). Keyboard and pointer reorder share the same grip; **keyboard mode** is indicated by `aria-pressed`, updated labels, the class `xpl-table__row-drag-handle--keyboard-mode`, and optionally a **different icon**.
|
|
15
|
+
|
|
16
|
+
**Pointer drag (full row):** Body rows use CSS **`subgrid`** so `xpl-table-row` is a real grid box (like `xpl-list-item`’s row surface). When `CSS.supports('grid-template-columns','subgrid')` is true, **`draggable`** is set on **`xpl-table-row`** so the browser’s drag image matches the whole row; drag still **starts only from the grip** (pointer-down there sets the drag token—dragging from other cells is ignored). Engines without subgrid keep **`draggable`** on the grip button only.
|
|
17
|
+
|
|
18
|
+
| Attribute | When it applies | Purpose |
|
|
19
|
+
| --------- | ---------------- | ------- |
|
|
20
|
+
| `reorder-handle-icon` | Default / drag affordance | Icon name for `xpl-icon` (default `grip-dots-vertical`). Use `reorder-handle-icon=""` to omit the injected icon and use CSS or your own markup in a **custom** reorder cell instead. |
|
|
21
|
+
| `reorder-handle-icon-keyboard` | While that row is in **keyboard reorder mode** (Enter or Space on the grip) | Icon name for the same grip when the user is using **Arrow Up/Down** to move the row (default `caret-expand-y`, matching `xpl-list`). Use `reorder-handle-icon-keyboard=""` to show **no** icon in keyboard mode only. |
|
|
22
|
+
|
|
23
|
+
**Recommended for product UIs:** Set **both** attributes to your design-system icon names so drag vs keyboard modes are visually distinct. You can still add styles targeting `.xpl-table__row-drag-handle--keyboard-mode` (e.g. outline) for extra clarity.
|
|
24
|
+
|
|
25
|
+
**Interaction:** Focus the grip → **Enter** or **Space** → **Arrow Up/Down** to reorder → **Escape** to exit. Pointer down on the row exits keyboard mode; starting a drag also exits keyboard mode.
|
|
26
|
+
|
|
27
|
+
**Custom reorder column:** If you add reorder cells in your own template (not injected), **you** own icons, keyboard behavior, and `rowOrderChange` — these attributes apply only to **managed** injected grips.
|
|
28
|
+
|
|
29
|
+
## Usage
|
|
30
|
+
|
|
31
|
+
### Breaking change — compositional `selectable`
|
|
32
|
+
|
|
33
|
+
**Before:** Setting `selectable` alone caused the table to **inject** selection header/body/footer cells into the light DOM (including nodes marked `data-xpl-selection-managed`).
|
|
34
|
+
|
|
35
|
+
**After:** You **must** add the selection column in your own markup (see **Selection** below). `xpl-table` no longer creates or removes those cells; it only syncs selection state and emits events. If you previously relied on automatic injection, add the header checkbox column, per-row checkbox cells, and (when using a footer) leading footer cells so column counts match.
|
|
36
|
+
|
|
37
|
+
### Selection (`selectable`) and `rowSelectionChange`
|
|
38
|
+
|
|
39
|
+
Set `selectable` on `xpl-table` and **author the selection column in your template** so the framework that renders the table owns every cell node.
|
|
40
|
+
|
|
41
|
+
**Required pieces:**
|
|
42
|
+
|
|
43
|
+
- **Header:** one [`xpl-table-header-cell`](xpl-table-header-cell) with `type="checkbox"` (tri-state “select all”).
|
|
44
|
+
- **Body:** in each `xpl-table-row`, a cell aligned with that column containing **`xpl-checkbox`** (value is driven from `row-id` on the row).
|
|
45
|
+
- **Footer:** if you use `xpl-table-footer`, add a leading `xpl-table-footer-cell` per row for the selection column (often empty) so column counts stay aligned.
|
|
46
|
+
|
|
47
|
+
**Behavior:** After `customElements.whenDefined('xpl-table')`, listen for **`rowSelectionChange`** on the **same** `<xpl-table>` element (`bubbles: false`, `composed: true`). The event payload is `{ selectedRowIds: string[] }`. The host maintains `selectedRowIds`, syncs `checked` / `indeterminate` on the header and row checkboxes, sets `selected` on rows, and shows the bulk toolbar while at least one row is selected. Row checkbox **`aria-label`** is derived from the first **non-selection** data cell in that row (e.g. `Select row, Jordan Lee`); the header uses “Select all rows” unless you set **`checkbox-aria-label`** on the checkbox header cell.
|
|
48
|
+
|
|
49
|
+
**Example (web component):**
|
|
50
|
+
|
|
51
|
+
```html
|
|
52
|
+
<xpl-table id="roster" selectable label="Team roster">
|
|
53
|
+
<xpl-table-header>
|
|
54
|
+
<xpl-table-row>
|
|
55
|
+
<xpl-table-header-cell type="checkbox"></xpl-table-header-cell>
|
|
56
|
+
<xpl-table-header-cell label="Name" sortable sort-key="name"></xpl-table-header-cell>
|
|
57
|
+
</xpl-table-row>
|
|
58
|
+
</xpl-table-header>
|
|
59
|
+
<xpl-table-body>
|
|
60
|
+
<xpl-table-row row-id="1">
|
|
61
|
+
<xpl-table-cell><xpl-checkbox></xpl-checkbox></xpl-table-cell>
|
|
62
|
+
<xpl-table-cell>Ada</xpl-table-cell>
|
|
63
|
+
</xpl-table-row>
|
|
64
|
+
</xpl-table-body>
|
|
65
|
+
</xpl-table>
|
|
66
|
+
<script type="module">
|
|
67
|
+
await customElements.whenDefined('xpl-table');
|
|
68
|
+
document.getElementById('roster')?.addEventListener('rowSelectionChange', (e) => {
|
|
69
|
+
console.log(e.detail.selectedRowIds);
|
|
70
|
+
});
|
|
71
|
+
</script>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
#### Framework notes (Vue / React / etc.)
|
|
75
|
+
|
|
76
|
+
Use **`xpl-checkbox`** in the selection column so `xpl-table` can sync `checked`, `indeterminate`, and `value` from `row-id`. On **`xpl-table-header-cell`**, the selection header uses **`type="checkbox"`**; the prop is **reflected** to the host attribute so Vue bindings like `:type="'checkbox'"` still expose `type="checkbox"` in the DOM for the table’s column detection and CSS.
|
|
77
|
+
|
|
78
|
+
### Legacy (`columns` / `data`)
|
|
79
|
+
|
|
80
|
+
Set `columns`, `data`, and optional `footer` as **properties** after `customElements.whenDefined('xpl-table')`, or use attributes where your bundler passes JSON strings.
|
|
81
|
+
|
|
82
|
+
```html
|
|
83
|
+
<xpl-table id="legacy"></xpl-table>
|
|
84
|
+
<script type="module">
|
|
85
|
+
await customElements.whenDefined('xpl-table');
|
|
86
|
+
const t = document.getElementById('legacy');
|
|
87
|
+
t.columns = ['Name', 'Score'];
|
|
88
|
+
t.data = [
|
|
89
|
+
['Ada', '100'],
|
|
90
|
+
['Bob', '95'],
|
|
91
|
+
];
|
|
92
|
+
t.multiselect = true;
|
|
93
|
+
t.addEventListener('tableSelect', (e) => console.log(e.detail));
|
|
94
|
+
</script>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Accessibility
|
|
98
|
+
|
|
99
|
+
| Concern | Behavior |
|
|
100
|
+
| ------- | -------- |
|
|
101
|
+
| Table landmark | Compositional host uses **`role="grid"`**; set **`label`** (maps to `aria-label`). |
|
|
102
|
+
| Columns | Header cells use **`role="columnheader"`** with `aria-colindex`; sortable label headers expose sort state via **`aria-sort`**. |
|
|
103
|
+
| Selection | Checkbox column: header reflects **checked / mixed** via `aria-checked`; row checkboxes get **`aria-label`** from the first non-selection cell’s text (or override with `checkbox-aria-label` on the checkbox header cell). |
|
|
104
|
+
| Sort | Sorting is a **`<button type="button">`** inside the header cell; focus uses **`:focus-visible`** with focus tokens in `table-header-cell.css`. |
|
|
105
|
+
| Row reorder | Managed grip is a **`<button>`** with `aria-label` / `aria-pressed` for keyboard reorder mode; live region announces reorder when enabled. |
|
|
106
|
+
|
|
107
|
+
Keyboard: **Tab** through sort buttons, checkboxes, reorder grips, and cell actions. **Enter** / **Space** activate sort and the reorder grip per native button semantics.
|
|
108
|
+
|
|
109
|
+
## Design Tokens
|
|
110
|
+
|
|
111
|
+
Compositional grid layout tokens live in `table.css`; cell, row, header, and toolbar tokens are split across sibling CSS files.
|
|
112
|
+
|
|
113
|
+
| Element | Property | Token | Light | Dark |
|
|
114
|
+
| ------- | -------- | ----- | ----- | ---- |
|
|
115
|
+
| Host (compositional) | border | `--xpl-border-small`, `--xpl-border-default` | neutral-200 | neutral-800 |
|
|
116
|
+
| Host (compositional) | border-radius | `--xpl-border-radius-default` | 8px | 8px |
|
|
117
|
+
| Host (compositional) | grid columns | `--column-widths` (runtime from header cells) | — | — |
|
|
118
|
+
| Selection toolbar | sticky z-index | `--xpl-z-index-200` | 200 | 200 |
|
|
119
|
+
| Selection toolbar | min-height | `--xpl-size-350` | 56px | 56px |
|
|
120
|
+
| Freeze shadow | gradient | `--xpl-background-surface-transparent-10` → `-0` | near-black 10% | near-white 10% |
|
|
121
|
+
| Freeze column | sticky z-index | `--xpl-z-index-100` | 100 | 100 |
|
|
122
|
+
| Freeze scroll hint | width | `--xpl-space-24` | 24px | 24px |
|
|
123
|
+
| Striped even rows | cell background | `--xpl-background-surface-subtlest` | neutral-50 | neutral-950 |
|
|
124
|
+
| Striped + selected | cell background | `--xpl-background-surface-information-bold` | blue-100 | blue-900 |
|
|
125
|
+
|
|
126
|
+
## Icon mapping
|
|
127
|
+
|
|
128
|
+
When Apollo **injects** the reorder column, icons come from table props (override with `""` to omit):
|
|
129
|
+
|
|
130
|
+
| Context | Default `xpl-icon` `icon` value |
|
|
131
|
+
| ------- | -------------------------------- |
|
|
132
|
+
| Pointer / idle grip | `grip-dots-vertical` |
|
|
133
|
+
| Keyboard reorder mode | `caret-expand-y` |
|
|
134
|
+
|
|
135
|
+
Sort direction uses **`xpl-icon`** names from header-cell internals (`graph`, carets, etc.) — see Storybook **Components → Table**.
|
|
136
|
+
|
|
137
|
+
<!-- Auto Generated Below -->
|
|
2
138
|
|
|
3
|
-
Tables are used to organize and display information from a data set.
|
|
4
139
|
|
|
5
|
-
|
|
140
|
+
## Overview
|
|
6
141
|
|
|
142
|
+
Compositional tables use CSS grid on the host (`role="grid"`). Legacy mode uses a `<table>`.
|
|
7
143
|
|
|
8
144
|
## Properties
|
|
9
145
|
|
|
10
|
-
| Property
|
|
11
|
-
|
|
|
12
|
-
| `columns`
|
|
13
|
-
| `data`
|
|
14
|
-
| `footer`
|
|
15
|
-
| `freeze`
|
|
16
|
-
| `isSortable`
|
|
17
|
-
| `
|
|
18
|
-
| `
|
|
19
|
-
| `
|
|
20
|
-
| `
|
|
146
|
+
| Property | Attribute | Description | Type | Default |
|
|
147
|
+
| --------------------------- | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ----------- |
|
|
148
|
+
| `columns` | -- | <span style="color:red">**[DEPRECATED]**</span> Legacy data-driven table API only (`columns` / `data` / `footer`). May be removed in a future major release. The header values for each column.<br/><br/> | `string[]` | `undefined` |
|
|
149
|
+
| `data` | -- | <span style="color:red">**[DEPRECATED]**</span> Legacy data-driven table API only (`columns` / `data` / `footer`). May be removed in a future major release. The data for the body of the table.<br/><br/> | `string[][]` | `undefined` |
|
|
150
|
+
| `footer` | -- | <span style="color:red">**[DEPRECATED]**</span> Legacy data-driven table API only (`columns` / `data` / `footer`). May be removed in a future major release. The data for the footer of the table.<br/><br/> | `string[][]` | `undefined` |
|
|
151
|
+
| `freeze` | `freeze` | When true, the first **data** column (per row) is sticky during horizontal scroll. Leading compositional columns are skipped: `selectable` (checkbox) and/or `row-reorderable` (grip) are not frozen so they scroll with the grid; the next column stays pinned at `left: 0`. | `boolean` | `undefined` |
|
|
152
|
+
| `isSortable` | `is-sortable` | <span style="color:red">**[DEPRECATED]**</span> Legacy data-driven table API only. May be removed in a future major release. Toggles to show the sort button on each table head.<br/><br/> | `boolean` | `false` |
|
|
153
|
+
| `label` | `label` | Accessible label for the table. Maps to `aria-label` in compositional mode. | `string` | `undefined` |
|
|
154
|
+
| `multiselect` | `multiselect` | <span style="color:red">**[DEPRECATED]**</span> Legacy data-driven table API only. May be removed in a future major release. Toggles a selectable checkbox for each row in the table.<br/><br/> | `boolean` | `undefined` |
|
|
155
|
+
| `reorderHandleIcon` | `reorder-handle-icon` | Icon name for the optional `xpl-icon` inside each **managed** reorder grip when the row is **not** in keyboard reorder mode (pointer / idle). Set to `""` to omit the icon so you can style the button or author a fully custom reorder column in markup. When omitted, defaults to `grip-dots-vertical`. | `string` | `undefined` |
|
|
156
|
+
| `reorderHandleIconKeyboard` | `reorder-handle-icon-keyboard` | Icon name for the managed reorder grip **while that row is in keyboard reorder mode** (after the user activates the grip with Enter or Space). Use a different icon than `reorder-handle-icon` so users can see they should use arrow keys. When omitted, defaults to `caret-expand-y` (same as `xpl-list` keyboard reorder). Set to `""` to show no icon in keyboard mode only (combine with CSS on `.xpl-table__row-drag-handle--keyboard-mode` if needed). | `string` | `undefined` |
|
|
157
|
+
| `rowReorderable` | `row-reorderable` | When true (compositional mode only), **prepends** a managed reorder column as the **first** grid column (empty header + grip button per body row) and enables HTML5 drag-and-drop row reordering (same interaction model as `xpl-list`). With `selectable`, DOM order is **reorder \| selection \| data** unless you author a custom reorder column. The table updates the DOM and emits `rowOrderChange`; consumers should persist order if needed. Ignored in legacy `columns`/`data` mode. | `boolean` | `false` |
|
|
158
|
+
| `selectable` | `selectable` | When true (compositional mode only), enables row selection state, the selection toolbar (“N Selected”), and `rowSelectionChange`. **You must add the selection column in your markup:** a header cell with `type="checkbox"`, a body cell containing `xpl-checkbox` per row (aligned with that column), and matching `xpl-table-footer-cell` cells when you use a footer. Each body row should use `row-id` on `xpl-table-row` (or accept auto-generated ids) so `rowSelectionChange` can report `selectedRowIds`. The toolbar uses the same layout as `xpl-toolbar` and is visible only while at least one row is selected. Use `toolbar-actions-left` / `toolbar-actions-right` slots on this host for bulk actions. | `boolean` | `undefined` |
|
|
159
|
+
| `selectedValues` | -- | <span style="color:red">**[DEPRECATED]**</span> Legacy data-driven table API only. May be removed in a future major release. The values for the input for each row when multiselect is activated.<br/><br/> | `string[]` | `[]` |
|
|
160
|
+
| `sortableColumns` | -- | <span style="color:red">**[DEPRECATED]**</span> Use the compositional slot-based API instead. Will be removed in a future major release. Manually determined if the column is sortable.<br/><br/> | `boolean[]` | `[]` |
|
|
161
|
+
| `striped` | `striped` | Toggles an optional styling of the background of each even row of the table body. | `boolean` | `undefined` |
|
|
21
162
|
|
|
22
163
|
|
|
23
164
|
## Events
|
|
24
165
|
|
|
25
|
-
| Event
|
|
26
|
-
|
|
|
27
|
-
| `
|
|
28
|
-
| `
|
|
166
|
+
| Event | Description | Type |
|
|
167
|
+
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |
|
|
168
|
+
| `rowOrderChange` | Emitted after body rows are reordered via drag-and-drop (compositional `row-reorderable` mode). | `CustomEvent<XplTableRowOrderChangeDetail>` |
|
|
169
|
+
| `rowSelectionChange` | Emitted when row selection changes in compositional `selectable` mode (`bubbles: false`, `composed: true`). Listen on this `xpl-table` instance only; the event does not bubble to parents—use `table.addEventListener('rowSelectionChange', …)` on the same element. When wiring from a script in static HTML, wait for `customElements.whenDefined('xpl-table')` so the host is ready. (Named `rowSelectionChange` to avoid clashing with the native `selectionchange` event.) | `CustomEvent<{ selectedRowIds: string[]; }>` |
|
|
170
|
+
| `sortChanged` | Emitted when sort changes in **legacy** or **compositional** mode. `event.detail` is a plain object: **sort-key slug → `'asc' \| 'desc' \| null`** (null = that column not sorted). Keys match legacy column titles (slugified) or compositional `sort-key` / label slugs. Call `event.preventDefault()` in legacy mode to skip built-in row sorting; compositional tables do not reorder rows automatically. | `CustomEvent<XplTableSortChangedDetail>` |
|
|
171
|
+
| `tableSelect` | Callback function that is called when the checkbox for a row of a `multiselect` table is checked. | `CustomEvent<any>` |
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
## Slots
|
|
175
|
+
|
|
176
|
+
| Slot | Description |
|
|
177
|
+
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
178
|
+
| | `xpl-table-header`, `xpl-table-body`, and optional `xpl-table-footer`. |
|
|
179
|
+
| `"toolbar-actions-left"` | Bulk actions in the selection toolbar (left group). Only when `selectable` is set; the toolbar is shown only while at least one row is selected. |
|
|
180
|
+
| `"toolbar-actions-right"` | Bulk actions in the selection toolbar (right group). Same visibility as `toolbar-actions-left`. |
|
|
29
181
|
|
|
30
182
|
|
|
31
183
|
## Dependencies
|
|
32
184
|
|
|
33
185
|
### Depends on
|
|
34
186
|
|
|
35
|
-
- [xpl-
|
|
187
|
+
- [xpl-table-header-cell](xpl-table-header-cell)
|
|
188
|
+
- [xpl-table-cell](xpl-table-cell)
|
|
36
189
|
- [xpl-icon](../xpl-icon)
|
|
190
|
+
- [xpl-table-footer-cell](xpl-table-footer-cell)
|
|
37
191
|
|
|
38
192
|
### Graph
|
|
39
193
|
```mermaid
|
|
40
194
|
graph TD;
|
|
41
|
-
xpl-table --> xpl-
|
|
195
|
+
xpl-table --> xpl-table-header-cell
|
|
196
|
+
xpl-table --> xpl-table-cell
|
|
42
197
|
xpl-table --> xpl-icon
|
|
198
|
+
xpl-table --> xpl-table-footer-cell
|
|
199
|
+
xpl-table-header-cell --> xpl-icon
|
|
200
|
+
xpl-table-header-cell --> xpl-checkbox
|
|
43
201
|
style xpl-table fill:#f9f,stroke:#333,stroke-width:4px
|
|
44
202
|
```
|
|
45
203
|
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Row group for compositional table body content. Uses `display: contents` so slotted rows participate in the parent grid layout.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Design Tokens
|
|
6
6
|
|
|
7
|
-
| Element | Property | Token |
|
|
8
|
-
|
|
|
9
|
-
| Host | display | — | `contents` |
|
|
7
|
+
| Element | Property | Token | Light | Dark |
|
|
8
|
+
| ------- | -------- | ----- | ----- | ---- |
|
|
9
|
+
| Host | display | — | `contents` | `contents` |
|
|
10
10
|
|
|
11
11
|
<!-- Auto Generated Below -->
|
|
12
12
|
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# xpl-table-cell
|
|
2
|
+
|
|
3
|
+
Body cell for compositional [`xpl-table`](../readme.md). Place content in the default slot; use `align`, `bold`, and `underline` for typography. Interactive controls inside the cell inherit `disabled` when the parent [`xpl-table-row`](../xpl-table-row) is disabled.
|
|
4
|
+
|
|
5
|
+
## Design Tokens
|
|
6
|
+
|
|
7
|
+
Extends `.xpl-table-cell-base` (`table-cell-base.css`); row states (selected, disabled, striped) are applied from `table-row.css`.
|
|
8
|
+
|
|
9
|
+
| Element | Property | Token | Light | Dark |
|
|
10
|
+
| ------- | -------- | ----- | ----- | ---- |
|
|
11
|
+
| Cell | background | `--xpl-background-surface-default` | neutral-0 | neutral-1000 |
|
|
12
|
+
| Cell | text | `--xpl-text-default` | neutral-900 | neutral-50 |
|
|
13
|
+
| Cell | border (right/bottom) | `--xpl-border-small`, `--xpl-border-default` | 1px, neutral-200 | 1px, neutral-800 |
|
|
14
|
+
| Cell | padding | `--xpl-space-10`, `--xpl-space-16` | 10px / 16px | 10px / 16px |
|
|
15
|
+
| Cell | min-height | `--xpl-size-350` | 56px | 56px |
|
|
16
|
+
| Cell | typography | `@extend .xpl-text-title-5` | title-5 / medium | title-5 / medium |
|
|
17
|
+
| Bold text | font-weight | `--xpl-font-weight-semibold` | 600 | 600 |
|
|
18
|
+
| Disabled | text | `--xpl-text-disabled` | neutral-400 | neutral-600 |
|
|
19
|
+
| Caption slot | text | `--xpl-text-subdued` | neutral-600 | neutral-400 |
|
|
20
|
+
| Icon | color | `--xpl-icon-default` | neutral-900 | neutral-50 |
|
|
21
|
+
| Reorder grip | color | `--xpl-icon-subtle` | neutral-600 | neutral-400 |
|
|
22
|
+
| Reorder grip focus | outline | `--xpl-border-focus` | purple-500 | purple-400 |
|
|
23
|
+
| Checkbox-only column | padding | `--xpl-space-16` + `--xpl-space-4` | 20px / 16px | 20px / 16px |
|
|
24
|
+
|
|
25
|
+
<!-- Auto Generated Below -->
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## Properties
|
|
29
|
+
|
|
30
|
+
| Property | Attribute | Description | Type | Default |
|
|
31
|
+
| ----------- | ----------- | ----------------------------------------------------------------------------------------------- | ------------------------------- | -------- |
|
|
32
|
+
| `align` | `align` | Horizontal text alignment within the cell. | `"center" \| "left" \| "right"` | `'left'` |
|
|
33
|
+
| `bold` | `bold` | Renders cell text in bold (--xpl-font-weight-semibold). | `boolean` | `false` |
|
|
34
|
+
| `disabled` | `disabled` | Whether the cell and its interactive children are disabled. Set automatically by xpl-table-row. | `boolean` | `false` |
|
|
35
|
+
| `underline` | `underline` | Adds an underline to cell text. | `boolean` | `false` |
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## Dependencies
|
|
39
|
+
|
|
40
|
+
### Used by
|
|
41
|
+
|
|
42
|
+
- [xpl-table](..)
|
|
43
|
+
|
|
44
|
+
### Graph
|
|
45
|
+
```mermaid
|
|
46
|
+
graph TD;
|
|
47
|
+
xpl-table --> xpl-table-cell
|
|
48
|
+
style xpl-table-cell fill:#f9f,stroke:#333,stroke-width:4px
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
----------------------------------------------
|
|
52
|
+
|
|
53
|
+
*Built with [StencilJS](https://stenciljs.com/)*
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Row group for compositional table footer content. Uses `display: contents` so slotted footer rows participate in the parent grid layout.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Design Tokens
|
|
6
6
|
|
|
7
|
-
| Element | Property | Token |
|
|
8
|
-
|
|
|
9
|
-
| Host | display | — | `contents` |
|
|
7
|
+
| Element | Property | Token | Light | Dark |
|
|
8
|
+
| ------- | -------- | ----- | ----- | ---- |
|
|
9
|
+
| Host | display | — | `contents` | `contents` |
|
|
10
10
|
|
|
11
11
|
<!-- Auto Generated Below -->
|
|
12
12
|
|
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
# xpl-table-footer-cell
|
|
2
2
|
|
|
3
|
-
Footer cell for compositional tables. Extends the shared `.xpl-table-cell-base` styles with
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
| Element | Property | Token |
|
|
8
|
-
|
|
|
9
|
-
| Cell | extends | `.xpl-table-cell-base` | (shared compositional cell base) |
|
|
10
|
-
| Cell | background | `--xpl-background-surface-default` | neutral-0
|
|
11
|
-
| Cell | text | `--xpl-text-default` | neutral-900
|
|
12
|
-
| Cell | border (right/bottom) | `--xpl-border-small`, `--xpl-border-default` | 1px, neutral-200 |
|
|
13
|
-
|
|
|
14
|
-
| Cell | height | `--xpl-size-350` | 56px |
|
|
15
|
-
| Cell | min-width | `--xpl-size-300` | 48px |
|
|
16
|
-
| Cell | padding | `--xpl-space-16` | 16px |
|
|
17
|
-
| Cell | typography | `@extend .xpl-text-title-5` | title-5 / medium |
|
|
3
|
+
Footer cell for compositional tables. Extends the shared `.xpl-table-cell-base` styles with footer-row border rules from `table.css`.
|
|
4
|
+
|
|
5
|
+
## Design Tokens
|
|
6
|
+
|
|
7
|
+
| Element | Property | Token | Light | Dark |
|
|
8
|
+
| ------- | -------- | ----- | ----- | ---- |
|
|
9
|
+
| Cell | extends | `.xpl-table-cell-base` | (shared compositional cell base) | (shared compositional cell base) |
|
|
10
|
+
| Cell | background | `--xpl-background-surface-default` | neutral-0 | neutral-1000 |
|
|
11
|
+
| Cell | text | `--xpl-text-default` | neutral-900 | neutral-50 |
|
|
12
|
+
| Cell | border (right/bottom) | `--xpl-border-small`, `--xpl-border-default` | 1px, neutral-200 | 1px, neutral-800 |
|
|
13
|
+
| Last footer row | border-bottom | none (host draws frame) | — | — |
|
|
18
14
|
|
|
19
15
|
<!-- Auto Generated Below -->
|
|
20
16
|
|
|
@@ -26,6 +22,19 @@ Footer cell for compositional tables. Extends the shared `.xpl-table-cell-base`
|
|
|
26
22
|
| `align` | `align` | Horizontal alignment of footer cell content. | `"center" \| "left" \| "right"` | `'left'` |
|
|
27
23
|
|
|
28
24
|
|
|
25
|
+
## Dependencies
|
|
26
|
+
|
|
27
|
+
### Used by
|
|
28
|
+
|
|
29
|
+
- [xpl-table](..)
|
|
30
|
+
|
|
31
|
+
### Graph
|
|
32
|
+
```mermaid
|
|
33
|
+
graph TD;
|
|
34
|
+
xpl-table --> xpl-table-footer-cell
|
|
35
|
+
style xpl-table-footer-cell fill:#f9f,stroke:#333,stroke-width:4px
|
|
36
|
+
```
|
|
37
|
+
|
|
29
38
|
----------------------------------------------
|
|
30
39
|
|
|
31
40
|
*Built with [StencilJS](https://stenciljs.com/)*
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# xpl-table-header-cell
|
|
2
|
+
|
|
3
|
+
> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.
|
|
4
|
+
|
|
5
|
+
The `icon` property accepts icon names as strings. See [xpl-icon available icons](../xpl-icon/ICONS.md) for the complete list.
|
|
6
|
+
|
|
7
|
+
When this cell is used inside a compositional [`xpl-table`](../xpl-table) with `selectable`, **you** add a `type="checkbox"` header cell for select-all; `xpl-table` keeps `checked` and `indeterminate` in sync with row selection.
|
|
8
|
+
|
|
9
|
+
**Frameworks (Vue / etc.):** `type` is **reflected** to the DOM. You may bind with `:type="'checkbox'"` or `type="checkbox"`; the host will still expose `type="checkbox"` as an attribute so the table’s selection column logic and styles stay correct.
|
|
10
|
+
|
|
11
|
+
For **sortable** columns (`type="label"`), set **`sortable`** and optionally **`sort-key`**; the parent table emits **`sortChanged`** (see [`xpl-table` events](../xpl-table#events)).
|
|
12
|
+
|
|
13
|
+
**Column width (compositional grid):** Each header cell defines one grid column on the parent `xpl-table`. By default the track is **`auto`** (sizes from content). Set **`width`** for a fixed pixel width (minimum 48px), or **`column-width`** for any CSS grid track string (`1fr`, `minmax(120px, 1fr)`, etc.). When both are set, **`column-width` wins**.
|
|
14
|
+
|
|
15
|
+
## Design Tokens
|
|
16
|
+
|
|
17
|
+
| Element | Property | Token | Light | Dark |
|
|
18
|
+
| ------- | -------- | ----- | ----- | ---- |
|
|
19
|
+
| Cell | background | `--xpl-background-surface-subtlest` | neutral-50 | neutral-950 |
|
|
20
|
+
| Cell | text | `--xpl-text-subdued` | neutral-600 | neutral-400 |
|
|
21
|
+
| Cell | border (right/bottom) | `--xpl-border-small`, `--xpl-border-default` | 1px, neutral-200 | 1px, neutral-800 |
|
|
22
|
+
| Cell | min-width | `--xpl-size-300` | 48px | 48px |
|
|
23
|
+
| Cell | min-height | `--xpl-size-350` | 56px | 56px |
|
|
24
|
+
| Cell | typography | `@extend .xpl-text-title-5` | title-5 / medium | title-5 / medium |
|
|
25
|
+
| Sort button | padding | `--xpl-space-12`, `--xpl-space-16` | 12px / 16px | 12px / 16px |
|
|
26
|
+
| Sort button focus | outline | `--xpl-border-focus` | purple-500 | purple-400 |
|
|
27
|
+
| Sort icon (default) | color | `--xpl-text-subdued` | neutral-600 | neutral-400 |
|
|
28
|
+
| Sort icon (active) | color | `--xpl-icon-information` | blue-500 | blue-400 |
|
|
29
|
+
| Checkbox column | padding | `--xpl-space-16` + `--xpl-space-4` | 20px / 16px | 20px / 16px |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
<!-- Auto Generated Below -->
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
## Properties
|
|
37
|
+
|
|
38
|
+
| Property | Attribute | Description | Type | Default |
|
|
39
|
+
| ------------------- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | ----------- |
|
|
40
|
+
| `align` | `align` | Horizontal text alignment within the header cell. | `"center" \| "left" \| "right"` | `'left'` |
|
|
41
|
+
| `checkboxAriaLabel` | `checkbox-aria-label` | Accessible name for the header checkbox (native `aria-label`). Defaults to “Select all rows” when `type` is `checkbox`. | `string` | `undefined` |
|
|
42
|
+
| `checked` | `checked` | Whether the header checkbox is checked | `boolean` | `false` |
|
|
43
|
+
| `columnWidth` | `column-width` | CSS grid track size for this column (e.g. `1fr`, `minmax(120px, 1fr)`, `auto`). When set, overrides `width`. Use this when you need flexible columns; default layout uses `auto` per column unless you set a track here. | `string` | `undefined` |
|
|
44
|
+
| `icon` | `icon` | Icon to display in the cell. See [xpl-icon available icons](../xpl-icon/ICONS.md) for valid icon names. | `string` | `undefined` |
|
|
45
|
+
| `indeterminate` | `indeterminate` | Whether the checkbox is in indeterminate (partially selected) state | `boolean` | `false` |
|
|
46
|
+
| `label` | `label` | Text to display in the cell. | `string` | `''` |
|
|
47
|
+
| `sortDirection` | `sort-direction` | Active sort direction for this column when `sortable`. Set by `xpl-table` when used inside a compositional table; may be set by the app for controlled updates. | `"asc" \| "desc"` | `undefined` |
|
|
48
|
+
| `sortKey` | `sort-key` | When `sortable` is true, optional stable id used as the key in `sortChanged`’s detail object. Falls back to a slug of `label` when omitted. | `string` | `undefined` |
|
|
49
|
+
| `sortable` | `sortable` | When true (and `type` is `label`), renders a sort control (button + affordance icon). | `boolean` | `false` |
|
|
50
|
+
| `type` | `type` | The type of cell to render. **Reflected** to the host `type` attribute so `xpl-table` (and CSS `[type="checkbox"]`) can find the selection column after frameworks set the prop without syncing the attribute (e.g. Vue `:type="'checkbox'"`). | `"checkbox" \| "empty" \| "icon" \| "label"` | `'label'` |
|
|
51
|
+
| `width` | `width` | Fixed width for this column in pixels (minimum 48px). Sets the grid track to `Npx`. Ignored when `columnWidth` is set. When omitted, the column track defaults to `auto` (content-sized). | `number` | `undefined` |
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
## Events
|
|
55
|
+
|
|
56
|
+
| Event | Description | Type |
|
|
57
|
+
| ---------------------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------- |
|
|
58
|
+
| `headerCheckboxChange` | Emitted when header checkbox changes | `CustomEvent<boolean>` |
|
|
59
|
+
| `headerSortChange` | Emitted when a sortable label header is activated. Parent `xpl-table` coordinates columns and emits `sortChanged`. | `CustomEvent<HeaderSortChangeDetail>` |
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
## Dependencies
|
|
63
|
+
|
|
64
|
+
### Used by
|
|
65
|
+
|
|
66
|
+
- [xpl-table](..)
|
|
67
|
+
|
|
68
|
+
### Depends on
|
|
69
|
+
|
|
70
|
+
- [xpl-icon](../../xpl-icon)
|
|
71
|
+
- [xpl-checkbox](../../xpl-checkbox)
|
|
72
|
+
|
|
73
|
+
### Graph
|
|
74
|
+
```mermaid
|
|
75
|
+
graph TD;
|
|
76
|
+
xpl-table-header-cell --> xpl-icon
|
|
77
|
+
xpl-table-header-cell --> xpl-checkbox
|
|
78
|
+
xpl-table --> xpl-table-header-cell
|
|
79
|
+
style xpl-table-header-cell fill:#f9f,stroke:#333,stroke-width:4px
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
----------------------------------------------
|
|
83
|
+
|
|
84
|
+
*Built with [StencilJS](https://stenciljs.com/)*
|
|
@@ -2,20 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
Data row for compositional tables. Uses `display: contents` by default so cells align to the parent grid; when the body supports subgrid, the row becomes a full-width subgrid for drag interactions.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
5
|
+
## Design Tokens
|
|
6
|
+
|
|
7
|
+
Row state styles target descendant `.xpl-table-cell` nodes (see `table-row.css`).
|
|
8
|
+
|
|
9
|
+
| Element | Property | Token | Light | Dark |
|
|
10
|
+
| ------- | -------- | ----- | ----- | ---- |
|
|
11
|
+
| Host (default) | display | — | `contents` | `contents` |
|
|
12
|
+
| Host (subgrid body) | display | — | `grid` with `subgrid` | `grid` with `subgrid` |
|
|
13
|
+
| Disabled row | background | `--xpl-background-surface-subtlest` | neutral-50 | neutral-950 |
|
|
14
|
+
| Disabled row | text | `--xpl-text-disabled` | neutral-400 | neutral-600 |
|
|
15
|
+
| Dragging row | background | `--xpl-background-surface-subtle` | neutral-100 | neutral-900 |
|
|
16
|
+
| Dragging row | opacity | `--xpl-opacity-75` | 0.75 | 0.75 |
|
|
17
|
+
| Selected row | background | `--xpl-background-surface-information` | blue-50 | blue-950 |
|
|
18
|
+
| Selected grip (reorder) | icon color | `--xpl-icon-information` | blue-500 | blue-400 |
|
|
19
|
+
| Drag-over outline | inset ring | `--xpl-border-focus`, `--xpl-border-small` | purple-500 | purple-400 |
|
|
20
|
+
| Striped even | background | `--xpl-background-surface-subtlest` | neutral-50 | neutral-950 |
|
|
21
|
+
| Striped selected | background | `--xpl-background-surface-information-bold` | blue-100 | blue-900 |
|
|
22
|
+
| Keyboard reorder grip | outline | `--xpl-border-focus` | purple-500 | purple-400 |
|
|
19
23
|
|
|
20
24
|
<!-- Auto Generated Below -->
|
|
21
25
|
|
|
@@ -126,7 +126,7 @@ The mobile breakpoint (≤ 768px) resets the toast to bottom-center. If your app
|
|
|
126
126
|
| `&__icon--warning` | color | `--xpl-icon-negative` |
|
|
127
127
|
| `&__icon--success` | color | `--xpl-icon-positive` |
|
|
128
128
|
| `&` | body radius | `--xpl-border-radius-small` |
|
|
129
|
-
| `&` | shadow
|
|
129
|
+
| `&` | shadow | `--xpl-elevation-3` (theme-aware) |
|
|
130
130
|
| `&__title` | typography (size / weight / line-height) | `@extend .xpl-text-title-5` → `title-5` / `medium` / `1.4286` |
|
|
131
131
|
| `&__caption` | typography (size / weight / line-height) | `@extend .xpl-text-callout` → `callout` / `normal` / `1.3333` |
|
|
132
132
|
| `&__close` | margin | `@apply ml-4` |
|
|
@@ -142,7 +142,7 @@ Like `xpl-banner`, the messaging backgrounds resolve to transparent in dark mode
|
|
|
142
142
|
- Toast content is projected through the `title` and `action` slots. Provide the title as text (e.g. `<p slot="title">`) so screen readers announce the message.
|
|
143
143
|
- Dismissing runs a fade-out animation and then removes the host element from the DOM, so a dismissed toast leaves nothing behind in the accessibility tree.
|
|
144
144
|
|
|
145
|
-
> **Elevation shadow
|
|
145
|
+
> **Elevation shadow:** the toast uses `--xpl-elevation-3` (theme-aware), re-specified by design during the elevation 1–4 formalization — an earlier note citing the single "Shadow 4" style was superseded. See `TECH_DEBT.md`.
|
|
146
146
|
|
|
147
147
|
<!-- Auto Generated Below -->
|
|
148
148
|
|
|
@@ -24,7 +24,7 @@ in light and dark mode (no `.dark` overrides).
|
|
|
24
24
|
| Track (disabled, on/off) | `background-color` | `--xpl-background-action-disabled` |
|
|
25
25
|
| Track border | `border-color` | `--xpl-border-default` |
|
|
26
26
|
| Knob (all states) | `background-color` | `--xpl-background-surface-inverse-on-dark` (always-light — resolves to neutral-0 in both modes) |
|
|
27
|
-
| Knob shadow | `box-shadow`
|
|
27
|
+
| Knob shadow | `box-shadow` | `--xpl-elevation-1` (theme-aware) |
|
|
28
28
|
| Focus ring | `outline-color` | `--xpl-border-focus` (2px outline, 2px offset) |
|
|
29
29
|
| Heading | `color` | `--xpl-text-strong` |
|
|
30
30
|
| Heading | typography | `@extend .xpl-text-title-5` — 14px / medium / 1.4286 (via shared `label.css`) |
|
|
@@ -12,15 +12,17 @@ in both light and dark themes. Styling comes from Apollo Foundation tokens
|
|
|
12
12
|
| --- | --- | --- | --- |
|
|
13
13
|
| `.toolbar` surface | `background-color` | `--xpl-background-surface-inverse-on-light` | neutral-1000 / neutral-1000 |
|
|
14
14
|
| `.toolbar` top/bottom border | `border-color` | `--xpl-border-default` | neutral-600 (always-dark host) |
|
|
15
|
-
| `.toolbar` elevation | `box-shadow` | `--xpl-
|
|
15
|
+
| `.toolbar` elevation | `box-shadow` | `--xpl-elevation-1` | theme-aware (near-black light / near-white dark) |
|
|
16
16
|
| `.toolbar` height | `height` | `--xpl-size-350` | 56px |
|
|
17
17
|
| `.selected-item-count` text | `color` | `--xpl-text-inverse-on-dark` | white / white |
|
|
18
18
|
| `.selected-item-count` divider | `border-color` | `--xpl-border-default` | neutral-600 (always-dark host) |
|
|
19
19
|
| `.selected-item-count` label | `font-size` / `font-weight` / `line-height` | `@extend .xpl-text-title-5` (14px, medium, 1.4286) | — |
|
|
20
20
|
|
|
21
21
|
> **Design note:** the always-dark surface decision is confirmed (there is no
|
|
22
|
-
> toolbar node in `figma-manifest.json`).
|
|
23
|
-
> elevation
|
|
22
|
+
> toolbar node in `figma-manifest.json`). The elevation uses the theme-aware
|
|
23
|
+
> `--xpl-elevation-1` token: in dark mode the shadow color flips to near-white, so
|
|
24
|
+
> the always-dark bar gets a light halo beneath it — flagged for design verification
|
|
25
|
+
> (see `TECH_DEBT.md`).
|
|
24
26
|
|
|
25
27
|
<!-- Auto Generated Below -->
|
|
26
28
|
|
|
@@ -12,8 +12,7 @@ Tokens used by this component from `@xplortech/apollo-foundation`.
|
|
|
12
12
|
|
|
13
13
|
**Color**
|
|
14
14
|
- `--xpl-background-surface-default` — tooltip background and arrow fill
|
|
15
|
-
- `--xpl-
|
|
16
|
-
- `--xpl-background-surface-transparent-5` — shadow secondary layer
|
|
15
|
+
- `--xpl-elevation-3` — tooltip shadow (theme-aware)
|
|
17
16
|
- `--xpl-text-default` — tooltip text color
|
|
18
17
|
- `--xpl-border-default` — tooltip border and arrow stroke (keeps the arrow edge theme-aware in dark mode)
|
|
19
18
|
|