@nxgt/material 3.79.1 → 3.81.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/CHANGELOG.md +94 -0
- package/README.md +48 -8
- package/dist/{alert-dialog-653apk3f.js → alert-dialog-DOZ0SfQs.js} +1 -1
- package/dist/{async-slice-CXLbQuOc.js → async-slice-BfVokA46.js} +1 -1
- package/dist/{button-3op3rtZh.js → button-CSKUtMI3.js} +2 -2
- package/dist/{calculator-KqIMBXSh.js → calculator-Cv00UQgR.js} +10 -10
- package/dist/calculator-field.js +6 -6
- package/dist/{calculator-segment-BlJE1LaS.js → calculator-segment-CwnC2cV_.js} +1 -1
- package/dist/calculator.js +1 -1
- package/dist/charts.js +3 -3
- package/dist/{chip-MuKDwtkG.js → chip-BGn0V6Pt.js} +3 -3
- package/dist/{code-editor-Bp2RrdNx.js → code-editor-B25-mWhb.js} +4 -4
- package/dist/code-editor.js +4 -4
- package/dist/{code-language-items-B7WR5ua_.js → code-language-items-oRjtO3qV.js} +2 -2
- package/dist/components/base-content.css +11 -0
- package/dist/components/components.css +5 -0
- package/dist/components/ui/actions/fab/fab-dock.css +19 -6
- package/dist/components/ui/collections/data-table/data-table-items-tiles.css +27 -1
- package/dist/components/ui/display/tube-cap/tube-cap.css +87 -0
- package/dist/components/ui/layout/app-search/app-search.css +62 -0
- package/dist/components/ui/layout/app-shell/activity-backdrop.css +10 -2
- package/dist/components/ui/layout/app-shell/app-header.css +108 -0
- package/dist/components/ui/layout/navigation-toolbar/navigation-toolbar.css +43 -0
- package/dist/{components-CTyNC_zW.js → components-B00kDHzJ.js} +23101 -18734
- package/dist/components.js +37 -37
- package/dist/{conversion-variant-BDFAxqe9.js → conversion-variant-wZd-G6xR.js} +3 -3
- package/dist/{currency-field-DWHB5oms.js → currency-field-DizBTAat.js} +4 -4
- package/dist/{date.utils-DUvqcjan.js → date.utils-JTEIo3mM.js} +98 -98
- package/dist/{dialog-Bm5LvVlB.js → dialog-B-3s-oXt.js} +3 -3
- package/dist/dnd.js +2 -2
- package/dist/{dropdown-menu-xlZ6NYUA.js → dropdown-menu-C6rcYGB9.js} +1 -1
- package/dist/editor.js +19 -19
- package/dist/{empty-state-C0kviQdW.js → empty-state-CSkghnD9.js} +1 -1
- package/dist/{financial-variant-CggTpad2.js → financial-variant-igpGRbGw.js} +5 -5
- package/dist/{hooks-Dg94jPRq.js → hooks-DvIsom2p.js} +2 -2
- package/dist/hooks.js +9 -8
- package/dist/{hover-card-B1g55Hi6.js → hover-card-DuaVVKMb.js} +1 -1
- package/dist/i18n.js +3 -3
- package/dist/{icon-badge-BcW66bRk.js → icon-badge-3ThP6EOl.js} +1 -1
- package/dist/{icon-button-Cogxy1cy.js → icon-button-4PKlaI1g.js} +2 -2
- package/dist/lib/components/ui/actions/button/button-tones.d.ts +17 -16
- package/dist/lib/components/ui/collections/day-grouped-list/day-grouped-list.d.ts +6 -1
- package/dist/lib/components/ui/collections/filter/use-filter-field-config.d.ts +2 -0
- package/dist/lib/components/ui/collections/server-table/types-states.d.ts +5 -1
- package/dist/lib/components/ui/display/index.d.ts +1 -0
- package/dist/lib/components/ui/display/tube-cap/index.d.ts +2 -0
- package/dist/lib/components/ui/display/tube-cap/tube-cap.d.ts +27 -0
- package/dist/lib/components/ui/display/tube-cap/tube-cap.kinds.d.ts +7 -0
- package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
- package/dist/lib/components/ui/fields/repeatable-group/partials/repeatable-group-row.d.ts +3 -1
- package/dist/lib/components/ui/fields/repeatable-group/partials/repeatable-group-rows.d.ts +2 -1
- package/dist/lib/components/ui/fields/repeatable-group/repeatable-group.d.ts +1 -1
- package/dist/lib/components/ui/fields/repeatable-group/types.d.ts +7 -0
- package/dist/lib/components/ui/layout/app-bar/top-app-bar.d.ts +18 -3
- package/dist/lib/components/ui/layout/app-search/app-search-bar.d.ts +11 -0
- package/dist/lib/components/ui/layout/app-search/app-search.types.d.ts +47 -0
- package/dist/lib/components/ui/layout/app-search/index.d.ts +3 -0
- package/dist/lib/components/ui/layout/app-search/partials/on-phone.d.ts +2 -0
- package/dist/lib/components/ui/layout/app-search/partials/phone-search.d.ts +3 -0
- package/dist/lib/components/ui/layout/app-search/partials/pill-search.d.ts +3 -0
- package/dist/lib/components/ui/layout/app-search/pill-form.d.ts +18 -0
- package/dist/lib/components/ui/layout/app-search/search-panel.d.ts +24 -0
- package/dist/lib/components/ui/layout/app-search/search-results.d.ts +14 -0
- package/dist/lib/components/ui/layout/app-search/search-shortcut.d.ts +15 -0
- package/dist/lib/components/ui/layout/app-search/search-view.d.ts +22 -0
- package/dist/lib/components/ui/layout/app-search/use-pill-panel.d.ts +22 -0
- package/dist/lib/components/ui/layout/app-search/use-search-text.d.ts +8 -0
- package/dist/lib/components/ui/layout/app-shell/activity-app-bar.d.ts +35 -0
- package/dist/lib/components/ui/layout/app-shell/activity-chrome.d.ts +26 -3
- package/dist/lib/components/ui/layout/app-shell/activity-column-props.d.ts +22 -0
- package/dist/lib/components/ui/layout/app-shell/activity-column.d.ts +10 -2
- package/dist/lib/components/ui/layout/app-shell/activity-layout-navigation.types.d.ts +94 -0
- package/dist/lib/components/ui/layout/app-shell/activity-layout.d.ts +8 -1
- package/dist/lib/components/ui/layout/app-shell/activity-layout.types.d.ts +2 -1
- package/dist/lib/components/ui/layout/app-shell/activity-rails.d.ts +16 -0
- package/dist/lib/components/ui/layout/app-shell/activity-sidebar-lane.d.ts +22 -0
- package/dist/lib/components/ui/layout/app-shell/activity-top-nav.d.ts +11 -0
- package/dist/lib/components/ui/layout/app-shell/activity-two-level-lane.d.ts +14 -0
- package/dist/lib/components/ui/layout/app-shell/app-back.d.ts +22 -0
- package/dist/lib/components/ui/layout/app-shell/app-header-row.d.ts +3 -0
- package/dist/lib/components/ui/layout/app-shell/app-header.d.ts +33 -1
- package/dist/lib/components/ui/layout/app-shell/app-shell.utils.d.ts +8 -0
- package/dist/lib/components/ui/layout/app-shell/app-sidebar-entries.d.ts +13 -0
- package/dist/lib/components/ui/layout/app-shell/app-sidebar-label-item.d.ts +3 -1
- package/dist/lib/components/ui/layout/app-shell/bottom-chrome.d.ts +13 -0
- package/dist/lib/components/ui/layout/app-shell/header-title.d.ts +18 -2
- package/dist/lib/components/ui/layout/app-shell/header.utils.d.ts +37 -0
- package/dist/lib/components/ui/layout/app-shell/index.d.ts +3 -0
- package/dist/lib/components/ui/layout/app-shell/navigation-parts.d.ts +38 -0
- package/dist/lib/components/ui/layout/app-shell/navigation.utils.d.ts +36 -0
- package/dist/lib/components/ui/layout/app-shell/page-title-scope.d.ts +14 -0
- package/dist/lib/components/ui/layout/app-shell/page-title.d.ts +12 -1
- package/dist/lib/components/ui/layout/app-shell/shell-scroll.d.ts +32 -0
- package/dist/lib/components/ui/layout/app-shell/sticky-offset.d.ts +8 -0
- package/dist/lib/components/ui/layout/app-shell/types.d.ts +14 -0
- package/dist/lib/components/ui/layout/app-shell/use-focus-while-hidden.d.ts +9 -0
- package/dist/lib/components/ui/layout/app-shell/use-header-height.d.ts +12 -0
- package/dist/lib/components/ui/layout/app-shell/use-header-scroll.d.ts +19 -0
- package/dist/lib/components/ui/layout/app-shell/use-shell-header.d.ts +20 -0
- package/dist/lib/components/ui/layout/auth-card/auth-card-split.d.ts +14 -0
- package/dist/lib/components/ui/layout/auth-card/auth-card.d.ts +13 -1
- package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid-context.d.ts +21 -0
- package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.d.ts +9 -0
- package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.state.d.ts +30 -0
- package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.tiles.d.ts +8 -0
- package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.types.d.ts +50 -0
- package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.utils.d.ts +70 -0
- package/dist/lib/components/ui/layout/dashboard-grid/dashboard-tile.d.ts +7 -0
- package/dist/lib/components/ui/layout/dashboard-grid/index.d.ts +4 -0
- package/dist/lib/components/ui/layout/dashboard-grid/partials/dashboard-announcer.d.ts +6 -0
- package/dist/lib/components/ui/layout/dashboard-grid/partials/dashboard-edit-bar.d.ts +11 -0
- package/dist/lib/components/ui/layout/dashboard-grid/partials/dashboard-move-buttons.d.ts +9 -0
- package/dist/lib/components/ui/layout/dashboard-grid/partials/dashboard-toolbar.d.ts +7 -0
- package/dist/lib/components/ui/layout/dashboard-grid/use-dashboard-grid.d.ts +21 -0
- package/dist/lib/components/ui/layout/dashboard-grid/use-dashboard-moves.d.ts +22 -0
- package/dist/lib/components/ui/layout/doc/doc-context.d.ts +2 -0
- package/dist/lib/components/ui/layout/doc/doc.d.ts +5 -0
- package/dist/lib/components/ui/layout/doc/index.d.ts +1 -1
- package/dist/lib/components/ui/layout/doc/partials/doc-embedded-bar.d.ts +9 -0
- package/dist/lib/components/ui/layout/doc/partials/doc-embedded.d.ts +8 -0
- package/dist/lib/components/ui/layout/doc/use-doc.d.ts +9 -1
- package/dist/lib/components/ui/layout/editor-layout/editor-layout.d.ts +14 -0
- package/dist/lib/components/ui/layout/editor-layout/editor-layout.types.d.ts +31 -0
- package/dist/lib/components/ui/layout/editor-layout/index.d.ts +4 -0
- package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-body.d.ts +11 -0
- package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-canvas.d.ts +8 -0
- package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-context.d.ts +12 -0
- package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-start.d.ts +8 -0
- package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-triggers.d.ts +10 -0
- package/dist/lib/components/ui/layout/editor-layout/partials/use-editor-layout-names.d.ts +8 -0
- package/dist/lib/components/ui/layout/editor-layout/partials/use-editor-layout-state.d.ts +21 -0
- package/dist/lib/components/ui/layout/index.d.ts +9 -0
- package/dist/lib/components/ui/layout/landing/index.d.ts +6 -0
- package/dist/lib/components/ui/layout/landing/landing-layout.d.ts +15 -0
- package/dist/lib/components/ui/layout/landing/landing-layout.types.d.ts +27 -0
- package/dist/lib/components/ui/layout/landing/landing-section.d.ts +12 -0
- package/dist/lib/components/ui/layout/landing/landing-section.types.d.ts +32 -0
- package/dist/lib/components/ui/layout/landing/landing.classes.d.ts +20 -0
- package/dist/lib/components/ui/layout/landing/partials/landing-header.d.ts +11 -0
- package/dist/lib/components/ui/layout/landing/partials/landing-section-intro.d.ts +13 -0
- package/dist/lib/components/ui/layout/landing/partials/site-footer-group.d.ts +8 -0
- package/dist/lib/components/ui/layout/landing/site-footer.d.ts +13 -0
- package/dist/lib/components/ui/layout/landing/site-footer.types.d.ts +29 -0
- package/dist/lib/components/ui/layout/list-details-layout/internal.d.ts +2 -0
- package/dist/lib/components/ui/layout/list-details-layout/list-details-layout.d.ts +9 -17
- package/dist/lib/components/ui/layout/list-details-layout/partials/history-mark.d.ts +2 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-context.d.ts +17 -1
- package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-history.d.ts +8 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-inspector.d.ts +21 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-layout.types.d.ts +47 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-resizer.d.ts +9 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-root.d.ts +3 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-trigger.d.ts +13 -4
- package/dist/lib/components/ui/layout/list-details-layout/partials/use-inspector-focus.d.ts +8 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/use-list-details-param.d.ts +26 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/use-list-details-state.d.ts +15 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/use-list-width.d.ts +16 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/use-pane-focus.d.ts +6 -4
- package/dist/lib/components/ui/layout/navigation-bar/index.d.ts +3 -0
- package/dist/lib/components/ui/layout/navigation-bar/internal.d.ts +4 -0
- package/dist/lib/components/ui/layout/navigation-bar/navigation-bar.classes.d.ts +14 -0
- package/dist/lib/components/ui/layout/navigation-bar/navigation-bar.d.ts +35 -0
- package/dist/lib/components/ui/layout/navigation-bar/navigation-bar.utils.d.ts +19 -0
- package/dist/lib/components/ui/layout/navigation-bar/partials/bar-badge.d.ts +5 -0
- package/dist/lib/components/ui/layout/navigation-bar/partials/bar-entry.d.ts +12 -0
- package/dist/lib/components/ui/layout/navigation-bar/partials/navigation-bar-item.d.ts +22 -0
- package/dist/lib/components/ui/layout/navigation-bar/partials/navigation-bar-more.d.ts +24 -0
- package/dist/lib/components/ui/layout/navigation-bar/use-nav-bar-inset.d.ts +12 -0
- package/dist/lib/components/ui/layout/navigation-drawer/index.d.ts +5 -0
- package/dist/lib/components/ui/layout/navigation-drawer/navigation-drawer.classes.d.ts +9 -0
- package/dist/lib/components/ui/layout/navigation-drawer/navigation-drawer.d.ts +45 -0
- package/dist/lib/components/ui/layout/navigation-drawer/navigation-drawer.utils.d.ts +14 -0
- package/dist/lib/components/ui/layout/navigation-drawer/partials/navigation-drawer-body.d.ts +3 -0
- package/dist/lib/components/ui/layout/navigation-drawer/partials/navigation-drawer-item.d.ts +20 -0
- package/dist/lib/components/ui/layout/navigation-drawer/partials/navigation-drawer-modal.d.ts +17 -0
- package/dist/lib/components/ui/layout/navigation-drawer/partials/navigation-drawer-section.d.ts +15 -0
- package/dist/lib/components/ui/layout/navigation-rail/index.d.ts +3 -0
- package/dist/lib/components/ui/layout/navigation-rail/navigation-rail-panel.d.ts +26 -0
- package/dist/lib/components/ui/layout/navigation-rail/navigation-rail.classes.d.ts +23 -0
- package/dist/lib/components/ui/layout/navigation-rail/navigation-rail.d.ts +42 -1
- package/dist/lib/components/ui/layout/navigation-rail/navigation-rail.utils.d.ts +4 -0
- package/dist/lib/components/ui/layout/navigation-rail/partials/navigation-rail-body.d.ts +3 -0
- package/dist/lib/components/ui/layout/navigation-rail/partials/navigation-rail-item.d.ts +20 -0
- package/dist/lib/components/ui/layout/navigation-rail/partials/navigation-rail-panel-item.d.ts +7 -0
- package/dist/lib/components/ui/layout/navigation-rail/partials/navigation-rail-toggle.d.ts +7 -0
- package/dist/lib/components/ui/layout/navigation-rail/use-rail-expanded.d.ts +13 -0
- package/dist/lib/components/ui/layout/navigation-toolbar/index.d.ts +2 -0
- package/dist/lib/components/ui/layout/navigation-toolbar/navigation-toolbar.classes.d.ts +20 -0
- package/dist/lib/components/ui/layout/navigation-toolbar/navigation-toolbar.d.ts +51 -0
- package/dist/lib/components/ui/layout/navigation-toolbar/partials/navigation-toolbar-item.d.ts +25 -0
- package/dist/lib/components/ui/layout/navigation-toolbar/partials/navigation-toolbar-more.d.ts +3 -0
- package/dist/lib/components/ui/layout/pane-layout/internal.d.ts +3 -0
- package/dist/lib/components/ui/layout/pane-layout/pane-layout.d.ts +16 -2
- package/dist/lib/components/ui/layout/pane-layout/partials/pane-layout-classes.d.ts +7 -0
- package/dist/lib/components/ui/layout/pane-layout/partials/pane-layout-context.d.ts +13 -0
- package/dist/lib/components/ui/layout/pane-layout/partials/use-pane-layout-state.d.ts +16 -0
- package/dist/lib/components/ui/layout/pane-layout/partials/use-pane-narrow.d.ts +6 -0
- package/dist/lib/components/ui/layout/responsive-grid/index.d.ts +4 -1
- package/dist/lib/components/ui/layout/responsive-grid/responsive-grid-item.d.ts +19 -0
- package/dist/lib/components/ui/layout/responsive-grid/responsive-grid-spans.d.ts +19 -0
- package/dist/lib/components/ui/layout/responsive-grid/responsive-grid.d.ts +24 -2
- package/dist/lib/components/ui/layout/responsive-grid/responsive-grid.utils.d.ts +12 -0
- package/dist/lib/components/ui/layout/settings-layout/index.d.ts +2 -0
- package/dist/lib/components/ui/layout/settings-layout/partials/settings-link.d.ts +7 -0
- package/dist/lib/components/ui/layout/settings-layout/partials/settings-list.d.ts +11 -0
- package/dist/lib/components/ui/layout/settings-layout/partials/settings-page.d.ts +5 -0
- package/dist/lib/components/ui/layout/settings-layout/settings-layout.d.ts +10 -0
- package/dist/lib/components/ui/layout/settings-layout/settings-layout.types.d.ts +33 -0
- package/dist/lib/components/ui/layout/settings-layout/settings-layout.utils.d.ts +13 -0
- package/dist/lib/components/ui/layout/thread-layout/thread-layout-classes.d.ts +17 -0
- package/dist/lib/components/ui/layout/thread-layout/thread-layout-parts.d.ts +14 -0
- package/dist/lib/components/ui/layout/thread-layout/thread-layout-stepper.d.ts +11 -0
- package/dist/lib/components/ui/layout/thread-layout/thread-layout.d.ts +30 -3
- package/dist/lib/components/ui/layout/top-nav/index.d.ts +5 -0
- package/dist/lib/components/ui/layout/top-nav/partials/top-nav-item.d.ts +23 -0
- package/dist/lib/components/ui/layout/top-nav/partials/top-nav-menu.d.ts +22 -0
- package/dist/lib/components/ui/layout/top-nav/top-nav.classes.d.ts +10 -0
- package/dist/lib/components/ui/layout/top-nav/top-nav.d.ts +34 -0
- package/dist/lib/components/ui/layout/top-nav/top-nav.utils.d.ts +10 -0
- package/dist/lib/components/ui/media/galleries/gallery.d.ts +1 -1
- package/dist/lib/components/ui/media/galleries/lightbox-gallery.d.ts +1 -1
- package/dist/lib/components/ui/media/galleries/mini-gallery.d.ts +1 -1
- package/dist/lib/components/ui/overlays/dialog/dialog-parts.d.ts +1 -1
- package/dist/lib/components/ui/overlays/sheet/sheet-parts.d.ts +5 -0
- package/dist/lib/components/ui/selection/choice-card-group/choice-card-balance.d.ts +4 -0
- package/dist/lib/components/ui/selection/choice-card-group/choice-card-group.d.ts +3 -1
- package/dist/lib/components/ui/selection/choice-card-group/choice-card-group.types.d.ts +7 -0
- package/dist/lib/components/ui/selection/sortable-list/partials/sortable-list-body.d.ts +5 -1
- package/dist/lib/components/ui/selection/sortable-list/partials/sortable-list-row-parts.d.ts +2 -1
- package/dist/lib/components/ui/selection/sortable-list/partials/sortable-list-row-props.d.ts +8 -5
- package/dist/lib/components/ui/selection/sortable-list/partials/use-owed-focus.d.ts +10 -0
- package/dist/lib/components/ui/selection/sortable-list/sortable-list-context.d.ts +2 -0
- package/dist/lib/components/ui/selection/sortable-list/sortable-list.keyboard.d.ts +1 -1
- package/dist/lib/components/ui/widgets/event-calendar/event-calendar-context.d.ts +3 -0
- package/dist/lib/components/ui/widgets/event-calendar/event-calendar-shell.d.ts +15 -0
- package/dist/lib/components/ui/widgets/event-calendar/event-calendar-template.d.ts +9 -0
- package/dist/lib/components/ui/widgets/event-calendar/event-calendar.d.ts +7 -3
- package/dist/lib/components/ui/widgets/event-calendar/event-calendar.template.d.ts +41 -0
- package/dist/lib/components/ui/widgets/event-calendar/index.d.ts +1 -0
- package/dist/lib/components/ui/widgets/event-calendar/partials/calendar-date-nav.d.ts +2 -0
- package/dist/lib/components/ui/widgets/event-calendar/partials/calendar-lane-toggle.d.ts +5 -0
- package/dist/lib/components/ui/widgets/event-calendar/partials/time-grid-header-template.d.ts +7 -0
- package/dist/lib/components/ui/widgets/event-calendar/template.types.d.ts +73 -0
- package/dist/lib/components/ui/widgets/event-calendar/types.d.ts +2 -0
- package/dist/lib/components/ui/widgets/event-calendar/use-chip-event.d.ts +1 -0
- package/dist/lib/components/ui/widgets/event-calendar/use-drawn-events.d.ts +4 -3
- package/dist/lib/components/ui/widgets/event-calendar/use-template-calendar.d.ts +18 -0
- package/dist/lib/components/ui/widgets/event-calendar/use-template-lane.d.ts +17 -0
- package/dist/lib/components/ui/widgets/kanban/index.d.ts +1 -1
- package/dist/lib/components/ui/widgets/kanban/kanban-context.d.ts +5 -2
- package/dist/lib/components/ui/widgets/kanban/kanban.d.ts +11 -2
- package/dist/lib/components/ui/widgets/kanban/kanban.slice.d.ts +32 -0
- package/dist/lib/components/ui/widgets/kanban/kanban.utils.d.ts +9 -0
- package/dist/lib/components/ui/widgets/kanban/partials/kanban-card-preview.d.ts +3 -1
- package/dist/lib/components/ui/widgets/kanban/partials/kanban-column.d.ts +6 -0
- package/dist/lib/components/ui/widgets/kanban/partials/kanban-move-to.d.ts +13 -0
- package/dist/lib/components/ui/widgets/kanban/partials/kanban-phone-tabs.d.ts +10 -0
- package/dist/lib/components/ui/widgets/kanban/types.d.ts +7 -0
- package/dist/lib/components/ui/widgets/kanban/use-kanban-board-keys.d.ts +7 -0
- package/dist/lib/components/ui/widgets/kanban/use-kanban-item-actions.d.ts +5 -0
- package/dist/lib/components/ui/widgets/kanban/use-kanban-phone-column.d.ts +18 -0
- package/dist/lib/components/ui/widgets/kanban/use-kanban.d.ts +6 -1
- package/dist/lib/hooks/index.d.ts +1 -0
- package/dist/lib/i18n/resources/en/en.d.ts +52 -0
- package/dist/lib/i18n/resources/en/material.json.d.ts +54 -2
- package/dist/lib/i18n/resources/fr/fr.d.ts +52 -0
- package/dist/lib/i18n/resources/fr/material.json.d.ts +54 -2
- package/dist/lib/i18n/resources/resources.d.ts +104 -0
- package/dist/lib/i18n/translator.d.ts +1 -1
- package/dist/lib.js +2 -2
- package/dist/main.js +53 -52
- package/dist/map.js +7 -7
- package/dist/material.css +1 -1
- package/dist/pdf-reader.js +1 -1
- package/dist/{percent-field--WIXV5dX.js → percent-field-QwU1l2Q4.js} +1 -1
- package/dist/{picker-surface-CV09H7Nb.js → picker-surface-CiTycWgV.js} +4 -4
- package/dist/{popover-Cd7DkND4.js → popover-YmbzbKQG.js} +1 -1
- package/dist/{pos-types-DKCkOTYy.js → pos-types-BFrapNmx.js} +1 -1
- package/dist/{pos-variant-GrUfbTTP.js → pos-variant-CctfqieO.js} +4 -4
- package/dist/print.js +1 -1
- package/dist/{programmer-variant-eKJNKENL.js → programmer-variant-Dd0YOixn.js} +2 -2
- package/dist/{public-y6g4ddxd.js → public-CshR_aW7.js} +10 -10
- package/dist/{rich-code-block-CRQ0iyLb.js → rich-code-block-BuJLDoBu.js} +5 -5
- package/dist/{scientific-variant-2y3UxAAU.js → scientific-variant-CjErQxuZ.js} +2 -2
- package/dist/{sortable-provider-DdiI3Fwk.js → sortable-provider-DU2nvpFc.js} +3 -3
- package/dist/{spinner-C1QIewWv.js → spinner-DH1mm8hH.js} +2 -2
- package/dist/{tabs-KGKvve3y.js → tabs-Um0SFyf1.js} +1 -1
- package/dist/theme-picker.js +2 -2
- package/dist/{theme-toggle-C_VeiiCm.js → theme-toggle-C-Ih4uQU.js} +1 -1
- package/dist/{toolbar-items-D310xDuM.js → toolbar-items-BoEY5bkt.js} +4 -4
- package/dist/{translate-material-BypJJ1l5.js → translate-material-D4rn5UaQ.js} +1 -1
- package/dist/{translator-DJkf4J7t.js → translator-CcEgQ-H7.js} +112 -4
- package/dist/{use-chat-composer-BFhRMHcX.js → use-chat-composer-BBF1BI_s.js} +47 -43
- package/dist/{use-click-lock-BZYtTmVt.js → use-click-lock-Bwg_caHO.js} +14 -14
- package/dist/{use-heading-spy-DJR8YYm6.js → use-heading-spy-BgyA6SJl.js} +19 -19
- package/dist/{use-material-translation-CD6QoVal.js → use-material-translation-DYrfV_JJ.js} +1 -1
- package/dist/{use-return-focus-Cevw_6yq.js → use-return-focus-C_Qz_yTk.js} +1 -1
- package/docs/README.md +1 -0
- package/docs/components/data-display.md +40 -8
- package/docs/components/data-table-filter-and-lists.md +7 -3
- package/docs/components/form-fields.md +1 -0
- package/docs/components/media-and-files.md +1 -0
- package/docs/components/navigation-and-layout.md +946 -28
- package/docs/components/overlays-and-menus.md +11 -5
- package/docs/components/rich-widgets.md +111 -1
- package/docs/components/selection-and-choice.md +49 -10
- package/docs/guides/app-shell.md +641 -2
- package/docs/guides/forms.md +7 -0
- package/docs/guides/helpers.md +23 -0
- package/docs/guides/i18n.md +13 -1
- package/docs/guides/layouts.md +215 -0
- package/docs/guides/ssr.md +1 -1
- package/docs/guides/theming.md +7 -7
- package/docs/previews/data-display-tubecap.webp +0 -0
- package/docs/previews/navigation-layout-appshell-page-ground.webp +0 -0
- package/docs/previews/navigation-layout-appshell.webp +0 -0
- package/docs/previews/navigation-layout-authcard-split.webp +0 -0
- package/docs/previews/navigation-layout-authcard.webp +0 -0
- package/docs/previews/navigation-layout-dashboardgrid.webp +0 -0
- package/docs/previews/navigation-layout-editorlayout.webp +0 -0
- package/docs/previews/navigation-layout-landinglayout.webp +0 -0
- package/docs/previews/navigation-layout-panelayout.webp +0 -0
- package/docs/previews/navigation-layout-settingslayout.webp +0 -0
- package/docs/previews/navigation-layout-threadlayout-pages.webp +0 -0
- package/docs/previews/navigation-layout-threadlayout.webp +0 -0
- package/docs/previews/selection-choice-sortablelist.webp +0 -0
- package/docs/roadmap.md +12 -2
- package/docs/troubleshooting.md +50 -2
- package/lib/components/base-content.css +11 -0
- package/lib/components/components.css +5 -0
- package/lib/components/ui/actions/fab/fab-dock.css +19 -6
- package/lib/components/ui/collections/data-table/data-table-items-tiles.css +27 -1
- package/lib/components/ui/display/tube-cap/tube-cap.css +87 -0
- package/lib/components/ui/layout/app-search/app-search.css +62 -0
- package/lib/components/ui/layout/app-shell/activity-backdrop.css +10 -2
- package/lib/components/ui/layout/app-shell/app-header.css +108 -0
- package/lib/components/ui/layout/navigation-toolbar/navigation-toolbar.css +43 -0
- package/lib/themes/ambre.css +1 -1
- package/lib/themes/ardoise.css +1 -1
- package/lib/themes/bleumono.css +1 -1
- package/lib/themes/bluemoon.css +1 -1
- package/lib/themes/corail.css +2 -2
- package/lib/themes/foret.css +1 -1
- package/lib/themes/lavande.css +1 -1
- package/lib/themes/menthe.css +2 -2
- package/lib/themes/ocean.css +1 -1
- package/lib/themes/pink.css +2 -2
- package/lib/themes/prune.css +1 -1
- package/lib/themes/sable.css +1 -1
- package/lib/themes/slate.css +1 -1
- package/lib/themes/teal.css +2 -2
- package/package.json +2 -2
|
@@ -157,8 +157,12 @@ The look lives in the stylesheet (`nxgt-dialog`, `nxgt-scrim`), under the
|
|
|
157
157
|
utilities: a class you pass wins. The flat look of 2.x before it is
|
|
158
158
|
`className="rounded-lg border bg-background shadow-lg"` on `DialogContent`
|
|
159
159
|
(and `className="bg-black/50"` on a `DialogOverlay` of your own).
|
|
160
|
-
`DialogFooter` stacks its actions full width on a phone
|
|
161
|
-
|
|
160
|
+
`DialogFooter` stacks its actions full width on a phone. **One order for
|
|
161
|
+
`DialogFooter`, `SheetFooter` and `AlertDialogFooter`:** write the actions in
|
|
162
|
+
reading order, the secondary first and the main one last (`Cancel`, `Save`).
|
|
163
|
+
On a wide screen the dialog puts them in a row with the main one on the right;
|
|
164
|
+
on a phone the stack puts the main one on top and the secondary below it, in a
|
|
165
|
+
dialog and in a sheet alike. `stackOnPhone={false}` keeps one row instead, the first
|
|
162
166
|
action on the left and the last on the right, for two short actions such as
|
|
163
167
|
Cancel and Confirm. With `prefers-reduced-motion`, nothing moves: it appears and goes.
|
|
164
168
|
|
|
@@ -271,7 +275,9 @@ Parts: `Sheet`, `SheetTrigger`, `SheetContent`, `SheetHeader`, `SheetTitle`,
|
|
|
271
275
|
|
|
272
276
|
`SheetContent` scrolls inside itself, and a top or bottom sheet is capped at
|
|
273
277
|
`100dvh - 3.5rem`. Override the cap with `max-h-*` through `className`.
|
|
274
|
-
`SheetFooter` makes its buttons full width
|
|
278
|
+
`SheetFooter` makes its buttons full width, stacked in the same order as
|
|
279
|
+
`DialogFooter` on a phone: write the secondary first and the main action last,
|
|
280
|
+
the main one is on top. The former look is
|
|
275
281
|
`className="rounded-none border-l bg-background shadow-lg"` (the border on the
|
|
276
282
|
side facing the page), and `className="w-3/4"` for the former width.
|
|
277
283
|
|
|
@@ -339,7 +345,7 @@ A bottom drawer spans a phone's width and is centred, at most 672 px wide,
|
|
|
339
345
|
from 640 px up; `className="mx-auto max-w-md"` on `DrawerContent` centres a
|
|
340
346
|
narrower one, `sm:max-w-none` spans the viewport again, and
|
|
341
347
|
`className="rounded-t-lg bg-background"` is the former look. `DrawerFooter`
|
|
342
|
-
makes its buttons full width. Prefer it to `Sheet` on touch screens.
|
|
348
|
+
makes its buttons full width and keeps source order (first written on top). Prefer it to `Sheet` on touch screens.
|
|
343
349
|
`DrawerContent` moves focus in on open and hands it back on close as
|
|
344
350
|
`DialogContent` does (`Drawer` turns Vaul's `autoFocus` on; `autoFocus={false}`
|
|
345
351
|
keeps focus where it was): back to the
|
|
@@ -641,7 +647,7 @@ in a desktop application.
|
|
|
641
647
|
|
|
642
648
|

|
|
643
649
|
|
|
644
|
-
Command palette with filtering, groups and shortcuts. `CommandDialog` shows it in a modal, with a visible close button (`showCloseButton`, on by default; `false` removes it) at the end of the input row: named "Close" (`material.buttons.close`) and 44px on a coarse pointer, since a phone has no Escape key.
|
|
650
|
+
Command palette with filtering, groups and shortcuts. `CommandDialog` shows it in a modal, with a visible close button (`showCloseButton`, on by default; `false` removes it) at the end of the input row: named "Close" (`material.buttons.close`) and 44px on a coarse pointer, since a phone has no Escape key. For results the server already filtered (`commandProps={{ shouldFilter: false }}`), with debounced suggestions grouped by type, see the `Guides/Recipes/Search dialog and results page` story.
|
|
645
651
|
|
|
646
652
|
```tsx
|
|
647
653
|
import {
|
|
@@ -215,6 +215,32 @@ follow the language of an `I18nProvider` from `@nxgt/material/i18n` (see
|
|
|
215
215
|
| `searchable` | `boolean` | `true` | search field filtering cards |
|
|
216
216
|
| `reorderableColumns` | `boolean` | `true` | columns can be dragged |
|
|
217
217
|
| `renderCard` | `(item, column) => ReactNode` | — | replaces the default card body |
|
|
218
|
+
| `phoneLayout` | `'tabs' \| 'swipe' \| 'columns'` | unset (= `'columns'`) | below 768px of the board's own width: one column at a time under tabs, full-width snapping columns, or today's peeking columns |
|
|
219
|
+
| `phoneColumn` / `onPhoneColumnChange` | `string` / `(columnId) => void` | first column | the column `tabs` shows (controlled) |
|
|
220
|
+
|
|
221
|
+
### On a phone
|
|
222
|
+
|
|
223
|
+
`phoneLayout="tabs"` puts a tab list (column name and card count) above the
|
|
224
|
+
board and shows one column at a time under 768px; the selected column is kept
|
|
225
|
+
in the board's state, or controlled with `phoneColumn`. The tabs follow the
|
|
226
|
+
WAI-ARIA tabs keyboard model (arrows, Home, End). Every column stays in the
|
|
227
|
+
markup and the switch is made by CSS container queries, so the server and the
|
|
228
|
+
client render the same thing at every width; from 768px the tab list is gone
|
|
229
|
+
and the board is the usual row of columns. `phoneLayout="swipe"` keeps all
|
|
230
|
+
columns in a row, one per screen width, with scroll snapping.
|
|
231
|
+
|
|
232
|
+
With either layout, a card's popover lists the other columns under "Move to"
|
|
233
|
+
when the board is narrower than 768px (its own width, not the screen's), so a card can be moved without dragging; Ctrl/Cmd + arrows
|
|
234
|
+
still move it, and with tabs the selected tab follows the card. A card drawn
|
|
235
|
+
by `renderCard` has no popover: move it with the keys or drag.
|
|
236
|
+
|
|
237
|
+
`useKanban()` returns `phoneColumnId` and `setPhoneColumn(id)`; the prop type is
|
|
238
|
+
`KanbanPhoneLayout`. With `tabs` only the selected column is visible, so a card
|
|
239
|
+
cannot be dragged to another tab; use Move to or Ctrl/Cmd + arrows.
|
|
240
|
+
|
|
241
|
+
```tsx
|
|
242
|
+
<Kanban phoneLayout="tabs" columns={columns} items={items} onColumnsChange={setColumns} />
|
|
243
|
+
```
|
|
218
244
|
|
|
219
245
|
**Storybook:** `Rich widgets/Kanban` · **Vue:** `Kanban`
|
|
220
246
|
|
|
@@ -226,6 +252,8 @@ follow the language of an `I18nProvider` from `@nxgt/material/i18n` (see
|
|
|
226
252
|
|
|
227
253
|
Month / week / day / agenda calendar with drag, resize and slot creation, a
|
|
228
254
|
now line, an optional mini-month side panel and a phone layout of its own.
|
|
255
|
+
With `mode="template"` it edits a recurring week instead (weekday columns, no
|
|
256
|
+
dates), see [Template week](#eventcalendar-template-week).
|
|
229
257
|
|
|
230
258
|
It reads its **own width**, not the window's, so it adapts inside a narrow
|
|
231
259
|
column too. From 1024px `sidebar` shows a [MiniMonth](date-and-time.md#minimonth)
|
|
@@ -281,6 +309,7 @@ function Schedule() {
|
|
|
281
309
|
| `scrollToHour` | `number` | `7` | the hour the week and day views open on when today is not shown |
|
|
282
310
|
| `resources` | `EventCalendarResource[]` | — | the day view draws one column per resource, see [Resources](#eventcalendar-resources) |
|
|
283
311
|
| `timeZone` | `string` | the machine's | an IANA zone the grid, today and the times follow, see [Time zone](#eventcalendar-time-zone) |
|
|
312
|
+
| `mode` | `'dated' \| 'template'` | `'dated'` | `'template'` is a recurring week with weekday columns and no dates, see [Template week](#eventcalendar-template-week) |
|
|
284
313
|
|
|
285
314
|
**Short events.** Events that do not overlap in time share a column and keep the
|
|
286
315
|
full width. An event is drawn at least 24px tall only where there is free space
|
|
@@ -346,6 +375,87 @@ const events: CalendarEvent[] = [
|
|
|
346
375
|
date (`Room A, Thursday, March 12th, 2026`), and an event's name includes
|
|
347
376
|
its resource (`Visit 1, Room A`).
|
|
348
377
|
|
|
378
|
+
### EventCalendar template week
|
|
379
|
+
|
|
380
|
+
`mode="template"` edits a **recurring week** instead of a dated one: a weekly
|
|
381
|
+
timetable, an opening-hours grid. The columns are named by weekday only (a
|
|
382
|
+
letter on a phone, the full name from 1024px), and there is no date
|
|
383
|
+
navigation, no Today button, no today marker and no now line. Events,
|
|
384
|
+
slots and changes are keyed by **ISO weekday** (1 Monday to 7 Sunday) and
|
|
385
|
+
`HH:mm` times, never by a date. Create (click or drag across free hours),
|
|
386
|
+
move, resize, the keyboard moves and the preview popover keep working.
|
|
387
|
+
The month, day and agenda views do not apply: `view` is `'week'` (the
|
|
388
|
+
default) or `'workweek'` (Monday to Friday), and the week always starts on
|
|
389
|
+
Monday.
|
|
390
|
+
|
|
391
|
+
```tsx
|
|
392
|
+
import { useState } from 'react';
|
|
393
|
+
import { EventCalendar, type EventCalendarTemplateEvent } from '@nxgt/material/components';
|
|
394
|
+
|
|
395
|
+
function Timetable() {
|
|
396
|
+
const [events, setEvents] = useState<EventCalendarTemplateEvent[]>([
|
|
397
|
+
{ id: 'm', title: 'Maths', weekday: 1, start: '08:00', end: '09:00' },
|
|
398
|
+
{ id: 'p', title: 'Physics', weekday: 1, start: '09:00', end: '10:30', lane: 'A' },
|
|
399
|
+
{ id: 'c', title: 'Chemistry', weekday: 1, start: '09:00', end: '10:30', lane: 'B' },
|
|
400
|
+
]);
|
|
401
|
+
return (
|
|
402
|
+
<EventCalendar
|
|
403
|
+
mode="template"
|
|
404
|
+
events={events}
|
|
405
|
+
onEventsChange={setEvents}
|
|
406
|
+
lanes={[
|
|
407
|
+
{ id: 'A', label: 'Week A' },
|
|
408
|
+
{ id: 'B', label: 'Week B' },
|
|
409
|
+
]}
|
|
410
|
+
onSlotClick={({ weekday, start, end, lane }) =>
|
|
411
|
+
setEvents((current) => [
|
|
412
|
+
...current,
|
|
413
|
+
{ id: crypto.randomUUID(), title: 'New lesson', weekday, start, end, lane },
|
|
414
|
+
])
|
|
415
|
+
}
|
|
416
|
+
/>
|
|
417
|
+
);
|
|
418
|
+
}
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
| Prop | Type | Default | Effect |
|
|
422
|
+
| --- | --- | --- | --- |
|
|
423
|
+
| `mode` | `'template'` | `'dated'` | the recurring week; `'dated'` (the default) is the calendar above |
|
|
424
|
+
| `events` / `defaultEvents` | `EventCalendarTemplateEvent[]` | — | `{ id, title, weekday, start, end, lane?, color?, description?, disabled? }`; `end` may be `'24:00'` |
|
|
425
|
+
| `onEventsChange` | `(events: EventCalendarTemplateEvent[]) => void` | — | the whole list after a move, a resize, an edit or a delete |
|
|
426
|
+
| `onChange` | `(change: EventCalendarTemplateChange) => void` | — | `{ events, event, previous }` after a move, a resize or an edit |
|
|
427
|
+
| `onEventClick` | `(event: EventCalendarTemplateEvent) => void` | — | an event was clicked |
|
|
428
|
+
| `onSlotClick` | `(slot: EventCalendarTemplateSlot) => void` | — | `{ weekday, start, end, lane? }` of the free slot clicked or dragged over; `lane` is the one picked in the switch |
|
|
429
|
+
| `view` / `defaultView` / `onViewChange` | `'week' \| 'workweek'` | `'week'` | the visible view |
|
|
430
|
+
| `renderEvent` | `(event: EventCalendarTemplateEvent) => ReactNode` | — | replaces how an event is drawn |
|
|
431
|
+
| `className` | `string` | — | on the calendar's root |
|
|
432
|
+
| `lanes` | `EventCalendarLane[]` | — | `{ id, label }` of the alternating weeks (`A`, `B`); adds a switch to the toolbar |
|
|
433
|
+
| `lane` / `defaultLane` / `onLaneChange` | `string \| null` | `null` (all) | the lane shown; `null` shows them all |
|
|
434
|
+
|
|
435
|
+
**Lanes.** An event with a `lane` belongs to that alternating week only; one
|
|
436
|
+
with none belongs to every week. Picking a lane in the switch hides the other
|
|
437
|
+
lanes' events, so one week is edited at a time; with **All weeks** every event shows,
|
|
438
|
+
and the ones with a lane carry its label (`A · Physics`), side by side where they
|
|
439
|
+
overlap. A slot made while a lane is picked reports it in `slot.lane`.
|
|
440
|
+
Moving and resizing keep an event's lane.
|
|
441
|
+
|
|
442
|
+
The shared options (`startHour`, `endHour`, `hourHeight`,
|
|
443
|
+
`slotDurationMinutes`, `density`, `eventVariant`, `scrollToHour`, `toolbar`,
|
|
444
|
+
`searchable`, `disabled`) work as in the dated calendar; `renderEvent` and
|
|
445
|
+
`className` are in the table above. `date`, `resources`, `timeZone`,
|
|
446
|
+
`sidebar`, `phoneView`, `views` and `weekStartsOn` do not apply. All-day
|
|
447
|
+
events do not exist in a template week.
|
|
448
|
+
|
|
449
|
+
Ctrl+Arrow moves the focused event within the visible days (Friday wraps to
|
|
450
|
+
Monday in a `workweek`) and stops at 00:00 and 24:00. `ComponentProps<typeof
|
|
451
|
+
EventCalendar>` is the union of the dated and template props: type a wrapper
|
|
452
|
+
with `EventCalendarProps` or `EventCalendarTemplateProps`.
|
|
453
|
+
|
|
454
|
+
The types are exported from `@nxgt/material/components`: `EventCalendarTemplateProps`
|
|
455
|
+
(the props of this mode), `EventCalendarTemplateEvent`, `EventCalendarTemplateSlot`,
|
|
456
|
+
`EventCalendarTemplateChange`, `EventCalendarLane` and `EventCalendarWeekday`
|
|
457
|
+
(`1 | 2 | … | 7`, the ISO weekday).
|
|
458
|
+
|
|
349
459
|
### EventCalendar time zone
|
|
350
460
|
|
|
351
461
|
`timeZone` (an IANA name such as `Africa/Lagos`) makes the calendar read that
|
|
@@ -383,7 +493,7 @@ zone's wall clock. Without it, nothing changes: the machine's clock.
|
|
|
383
493
|
<EventCalendar view="day" date="2026-03-12" timeZone="Asia/Tokyo" events={events} />
|
|
384
494
|
```
|
|
385
495
|
|
|
386
|
-
**Storybook:** `Rich widgets/EventCalendar`, `Rich widgets/EventCalendar/Layouts`, `Rich widgets/EventCalendar/Resources`, `Rich widgets/EventCalendar/Resources on a phone`, `Rich widgets/EventCalendar/Resources a11y`, `Rich widgets/EventCalendar/Time zone`, `Rich widgets/EventCalendar/Back to back`, `Rich widgets/EventCalendar/Resource tone`, `Rich widgets/EventCalendar/Hydration` · **Vue:** `EventCalendar` (the new props and layouts, `resources` and `
|
|
496
|
+
**Storybook:** `Rich widgets/EventCalendar`, `Rich widgets/EventCalendar/Layouts`, `Rich widgets/EventCalendar/Resources`, `Rich widgets/EventCalendar/Resources on a phone`, `Rich widgets/EventCalendar/Resources a11y`, `Rich widgets/EventCalendar/Time zone`, `Rich widgets/EventCalendar/Back to back`, `Rich widgets/EventCalendar/Resource tone`, `Rich widgets/EventCalendar/Hydration`, `Rich widgets/EventCalendar/Template week` · **Vue:** `EventCalendar` (the new props and layouts, `resources`, `timeZone` and `mode="template"`: React only for now, #892, #1780 and #2458)
|
|
387
497
|
|
|
388
498
|
---
|
|
389
499
|
|
|
@@ -839,6 +839,18 @@ export function Topics() {
|
|
|
839
839
|
}
|
|
840
840
|
```
|
|
841
841
|
|
|
842
|
+
Balanced by default, and the unbalanced fill:
|
|
843
|
+
|
|
844
|
+
```tsx
|
|
845
|
+
const four = ['a', 'b', 'c', 'd'].map((value) => ({ value, title: value.toUpperCase() }));
|
|
846
|
+
|
|
847
|
+
// Room for 3 columns, 4 cards: drawn 2+2, no orphan.
|
|
848
|
+
<ChoiceCardGroup label="Size" columns={3} options={four} value={value} onValueChange={setValue} />
|
|
849
|
+
|
|
850
|
+
// Every column that fits: 3+1.
|
|
851
|
+
<ChoiceCardGroup label="Size" columns={3} balance={false} options={four} value={value} onValueChange={setValue} />
|
|
852
|
+
```
|
|
853
|
+
|
|
842
854
|
| Prop | Type | Default | Effect |
|
|
843
855
|
| --- | --- | --- | --- |
|
|
844
856
|
| `type` | `'single' \| 'multiple'` | `'single'` | the value is `string \| null` or `string[]` |
|
|
@@ -945,8 +957,18 @@ check box at the end. `type="single"` (the default) is a radio group of
|
|
|
945
957
|
card has a soft tint and a bar on its start edge; the mark says it too, so
|
|
946
958
|
colour is never the only cue. The cards fill as many columns as fit (each at
|
|
947
959
|
least 13.5rem wide), up to `columns`, so the layout follows the space the field
|
|
948
|
-
has, not the window
|
|
949
|
-
|
|
960
|
+
has, not the window. The rows are balanced: when the last row would hold one
|
|
961
|
+
orphan card (4 cards in room for 3), the group draws fewer columns and sits 2+2;
|
|
962
|
+
`balance={false}` fills every column that fits (3+1).
|
|
963
|
+
|
|
964
|
+
When it balances (the default, horizontal), the group is an inline-size
|
|
965
|
+
container (`@container`), which is how it measures its own width. A container's
|
|
966
|
+
width never comes from its content, so give the group a parent with a width: in
|
|
967
|
+
a shrink-to-fit parent (an `inline-flex` box, a float, a centred `w-fit` column)
|
|
968
|
+
it collapses to nothing. Add `w-full`, a `max-w-*` or a fixed width to that
|
|
969
|
+
parent, or pass `balance={false}`: with it (and with `orientation="vertical"`)
|
|
970
|
+
there is no container, and the group behaves as before in a shrink-to-fit
|
|
971
|
+
parent.
|
|
950
972
|
|
|
951
973
|
```tsx
|
|
952
974
|
import { ChoiceCardGroup } from '@nxgt/material/components';
|
|
@@ -971,7 +993,8 @@ export function Plan() {
|
|
|
971
993
|
| `deselectable` | `boolean` | `false` | `single` only: pressing the chosen card clears it |
|
|
972
994
|
| `max` / `min` | `number` | — | `multiple` only: `max` blocks the other cards once reached and speaks "{count} of {max} chosen"; `min` is a hint only |
|
|
973
995
|
| `options` | `{ value; title; description?; meta?; icon?; disabled?; disabledReason? }[]` | — | the cards |
|
|
974
|
-
| `columns` | `1 \| 2 \| 3 \| 4` | `2` | the most columns; fewer when a card would be under 13.5rem (one on a phone) |
|
|
996
|
+
| `columns` | `1 \| 2 \| 3 \| 4` | `2` | the most columns; fewer when a card would be under 13.5rem (one on a phone). With `balance`, fewer also when it avoids an orphan: `columns={3}` and 4 cards draw 2+2 |
|
|
997
|
+
| `balance` | `boolean` | `true` | when the last row would hold one orphan card (4 cards in room for 3), draw fewer columns (2+2); by container width, CSS only. `false` fills every column that fits |
|
|
975
998
|
| `density` | `'comfortable' \| 'compact'` | `'comfortable'` | the cards' padding |
|
|
976
999
|
| `label`, `helperText`, `error`, `required`, `disabled`, `id` | as on `ChipGroupField` | — | the shared choice-group props: the group's name and help, its invalid and required states |
|
|
977
1000
|
| `name` | `string` | — | put on every card (`ChoiceCardGroupFormField` passes its field `name`), so `document.getElementsByName(name)` finds the group's cards in order |
|
|
@@ -1113,11 +1136,19 @@ English without one.
|
|
|
1113
1136
|
|
|
1114
1137
|
Searchable list you reorder by dragging or with the keyboard. The row under
|
|
1115
1138
|
the pointer lifts into a card with a deep shadow, and its place in the list
|
|
1116
|
-
stays as a dashed slot.
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1139
|
+
stays as a dashed slot. With reduced motion the drop does not animate.
|
|
1140
|
+
|
|
1141
|
+
The list is a `role="list"` of `listitem` rows, not a listbox: a row holds
|
|
1142
|
+
buttons of its own (grip, move, remove), which an `option` may not. Tab reaches
|
|
1143
|
+
the list once, on one row (a roving tab stop), and the arrows move the focus
|
|
1144
|
+
from row to row. A row of a disabled list is never a tab stop and carries
|
|
1145
|
+
`aria-disabled`. A long label keeps its full text in a `title`, and the grip is
|
|
1146
|
+
named after its item ("Drag: Ada Lovelace").
|
|
1147
|
+
|
|
1148
|
+
From the keyboard, Space (or Enter) on a row picks it up, the arrows move it,
|
|
1149
|
+
Space drops it and Escape puts it back; Ctrl/⌘ + arrow moves it at once,
|
|
1150
|
+
Home / End jump. Each step is read out by a live region ("Ada Lovelace moved to
|
|
1151
|
+
position 3 of 5."). A key pressed on a row's own button is that button's.
|
|
1121
1152
|
|
|
1122
1153
|
```tsx
|
|
1123
1154
|
import { SortableList, type SortableListItem } from '@nxgt/material/components';
|
|
@@ -1144,7 +1175,7 @@ export function Ranking() {
|
|
|
1144
1175
|
| `reorderable` | `boolean` | `false` | move up / down buttons |
|
|
1145
1176
|
| `searchable` | `boolean` | `true` | filter box |
|
|
1146
1177
|
| `height` | `number \| string` | `320` | list height |
|
|
1147
|
-
| `required` | `boolean` | — | the asterisk
|
|
1178
|
+
| `required` | `boolean` | — | the asterisk on the label (a `list` takes no `aria-required`) |
|
|
1148
1179
|
| `hideLabel` | `boolean` | `false` | `true` keeps `label` as the list's accessible name (`aria-labelledby`) but draws nothing, for a heading that already titles it |
|
|
1149
1180
|
| `numbered` | `boolean` | `false` | each row shows its rank in the whole order |
|
|
1150
1181
|
| `removable` | `boolean` | `false` | a remove button on each row, and Delete: the row leaves the value |
|
|
@@ -1156,8 +1187,16 @@ export function Ranking() {
|
|
|
1156
1187
|
where it is: no grip, not draggable, not movable from the keyboard, not
|
|
1157
1188
|
removable).
|
|
1158
1189
|
|
|
1190
|
+
In a test, query it by role and name:
|
|
1191
|
+
|
|
1192
|
+
```ts
|
|
1193
|
+
const list = screen.getByRole('list', { name: 'Ranking' });
|
|
1194
|
+
const rows = within(list).getAllByRole('listitem');
|
|
1195
|
+
await user.click(within(rows[0]).getByRole('button', { name: /^Move down/ }));
|
|
1196
|
+
```
|
|
1197
|
+
|
|
1159
1198
|
**Emits:** `string[]`, in the new order.
|
|
1160
|
-
**Form wrapper:** `SortableListFormField` — `control` and `name` plus the same props, `hideLabel` included (the label's `required` asterisk is hidden with it; the `
|
|
1199
|
+
**Form wrapper:** `SortableListFormField` — `control` and `name` plus the same props, `hideLabel` included (the label's `required` asterisk is hidden with it; the asterisk only: a `list` takes no `aria-required`, so a required list is described by a visually hidden "This field is required."), see
|
|
1161
1200
|
[forms](../guides/forms.md#the-pair) and [what each field emits](../guides/forms.md#what-each-field-emits).
|
|
1162
1201
|
**Storybook:** `Selection & choice/SortableList` · **Vue:** `SortableList`, `SortableListFormField`
|
|
1163
1202
|
|