@eifi1/ui-kit 0.51.7 → 0.52.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/README.md +141 -23
- package/dist/account/account-parts.d.ts +10 -8
- package/dist/account/account-parts.js +1 -18
- package/dist/account/account-parts.js.map +1 -1
- package/dist/account/data-export-setting-labels.js +1 -1
- package/dist/account/data-export-setting-labels.js.map +1 -1
- package/dist/account/delete-account-setting-labels.js +1 -1
- package/dist/account/delete-account-setting-labels.js.map +1 -1
- package/dist/account/email-change-setting-labels.js +1 -1
- package/dist/account/email-change-setting-labels.js.map +1 -1
- package/dist/account/passkeys-setting.d.ts +9 -2
- package/dist/account/passkeys-setting.js +41 -29
- package/dist/account/passkeys-setting.js.map +1 -1
- package/dist/account/sessions-setting.d.ts +3 -2
- package/dist/account/sessions-setting.js +10 -8
- package/dist/account/sessions-setting.js.map +1 -1
- package/dist/admin/admin-action-confirm.js +1 -3
- package/dist/admin/admin-action-confirm.js.map +1 -1
- package/dist/admin/admin-parts.d.ts +6 -3
- package/dist/admin/admin-parts.js +6 -21
- package/dist/admin/admin-parts.js.map +1 -1
- package/dist/admin/mail-test-card-labels.js +1 -1
- package/dist/admin/mail-test-card-labels.js.map +1 -1
- package/dist/admin/plan-change-labels.d.ts +2 -2
- package/dist/admin/plan-change-labels.js +1 -17
- package/dist/admin/plan-change-labels.js.map +1 -1
- package/dist/admin/plan-change.d.ts +3 -42
- package/dist/admin/plan-change.js +1 -1
- package/dist/admin/plan-change.js.map +1 -1
- package/dist/admin/reviewer-scope-editor.js +3 -3
- package/dist/admin/reviewer-scope-editor.js.map +1 -1
- package/dist/auth/auth-errors-labels.d.ts +11 -0
- package/dist/auth/auth-errors-labels.js +13 -0
- package/dist/auth/auth-errors-labels.js.map +1 -0
- package/dist/auth/auth-errors.d.ts +7 -23
- package/dist/auth/auth-errors.js +2 -15
- package/dist/auth/auth-errors.js.map +1 -1
- package/dist/auth/complete-name-dialog.js +2 -1
- package/dist/auth/complete-name-dialog.js.map +1 -1
- package/dist/auth/forgot-password-form-labels.js +1 -1
- package/dist/auth/forgot-password-form-labels.js.map +1 -1
- package/dist/auth/forgot-password-form.js +7 -2
- package/dist/auth/forgot-password-form.js.map +1 -1
- package/dist/auth/register-form-labels.js +1 -1
- package/dist/auth/register-form-labels.js.map +1 -1
- package/dist/auth/reset-password-form-labels.js +1 -1
- package/dist/auth/reset-password-form-labels.js.map +1 -1
- package/dist/auth/reset-password-form.js +5 -1
- package/dist/auth/reset-password-form.js.map +1 -1
- package/dist/auth/sign-in-form-labels.js +1 -1
- package/dist/auth/sign-in-form-labels.js.map +1 -1
- package/dist/auth/status-parts.d.ts +0 -3
- package/dist/auth/status-parts.js +0 -4
- package/dist/auth/status-parts.js.map +1 -1
- package/dist/auth/verify-email-labels.js +1 -1
- package/dist/auth/verify-email-labels.js.map +1 -1
- package/dist/auth/verify-email.js +7 -2
- package/dist/auth/verify-email.js.map +1 -1
- package/dist/billing/cancel-subscription.d.ts +20 -8
- package/dist/billing/cancel-subscription.js +7 -5
- package/dist/billing/cancel-subscription.js.map +1 -1
- package/dist/billing/dialog-close.d.ts +29 -0
- package/dist/billing/dialog-close.js +8 -0
- package/dist/billing/dialog-close.js.map +1 -0
- package/dist/billing/plan-card.d.ts +14 -4
- package/dist/billing/plan-card.js +15 -8
- package/dist/billing/plan-card.js.map +1 -1
- package/dist/billing/plan-change-labels.d.ts +42 -0
- package/dist/billing/plan-change-labels.js +22 -0
- package/dist/billing/plan-change-labels.js.map +1 -0
- package/dist/billing/plan-switch.d.ts +19 -7
- package/dist/billing/plan-switch.js +8 -4
- package/dist/billing/plan-switch.js.map +1 -1
- package/dist/chart.d.ts +12 -0
- package/dist/chart.js +16 -1
- package/dist/chart.js.map +1 -1
- package/dist/components/account-chips.d.ts +5 -5
- package/dist/components/account-chips.js +11 -13
- package/dist/components/account-chips.js.map +1 -1
- package/dist/components/alert-banner.d.ts +16 -5
- package/dist/components/alert-banner.js +46 -1
- package/dist/components/alert-banner.js.map +1 -1
- package/dist/components/amount-input.d.ts +13 -0
- package/dist/components/amount-input.js +1 -0
- package/dist/components/amount-input.js.map +1 -1
- package/dist/components/autocomplete.js +57 -65
- package/dist/components/autocomplete.js.map +1 -1
- package/dist/components/bulk-action-bar.d.ts +12 -2
- package/dist/components/bulk-action-bar.js +65 -21
- package/dist/components/bulk-action-bar.js.map +1 -1
- package/dist/components/button-look.d.ts +5 -5
- package/dist/components/button-look.js.map +1 -1
- package/dist/components/button.d.ts +2 -2
- package/dist/components/button.js.map +1 -1
- package/dist/components/chart-edge.d.ts +16 -0
- package/dist/components/chart-edge.js +14 -1
- package/dist/components/chart-edge.js.map +1 -1
- package/dist/components/chart-figure.d.ts +13 -0
- package/dist/components/chart-figure.js +15 -0
- package/dist/components/chart-figure.js.map +1 -0
- package/dist/components/chart-zoom-core.js +1 -4
- package/dist/components/chart-zoom-core.js.map +1 -1
- package/dist/components/chart.d.ts +8 -1
- package/dist/components/chart.js +19 -10
- package/dist/components/chart.js.map +1 -1
- package/dist/components/combobox-core.d.ts +111 -2
- package/dist/components/combobox-core.js +148 -42
- package/dist/components/combobox-core.js.map +1 -1
- package/dist/components/combobox.d.ts +1 -1
- package/dist/components/combobox.js +141 -130
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/copy-button.d.ts +6 -5
- package/dist/components/copy-button.js +5 -3
- package/dist/components/copy-button.js.map +1 -1
- package/dist/components/country-select.js +2 -2
- package/dist/components/country-select.js.map +1 -1
- package/dist/components/data-table-column-settings.d.ts +1 -1
- package/dist/components/data-table-column-settings.js +33 -7
- package/dist/components/data-table-column-settings.js.map +1 -1
- package/dist/components/data-table-filters.d.ts +4 -2
- package/dist/components/data-table-filters.js +2 -2
- package/dist/components/data-table-filters.js.map +1 -1
- package/dist/components/data-table-fit.d.ts +6 -4
- package/dist/components/data-table-fit.js +4 -1
- package/dist/components/data-table-fit.js.map +1 -1
- package/dist/components/data-table-groups.d.ts +1 -1
- package/dist/components/data-table-groups.js.map +1 -1
- package/dist/components/data-table-head.d.ts +1 -1
- package/dist/components/data-table-head.js +15 -12
- package/dist/components/data-table-head.js.map +1 -1
- package/dist/components/data-table-mobile.d.ts +12 -7
- package/dist/components/data-table-mobile.js +43 -30
- package/dist/components/data-table-mobile.js.map +1 -1
- package/dist/components/data-table-pagination.js +11 -6
- package/dist/components/data-table-pagination.js.map +1 -1
- package/dist/components/data-table-resize.d.ts +1 -1
- package/dist/components/data-table-resize.js.map +1 -1
- package/dist/components/data-table-row-actions.d.ts +2 -2
- package/dist/components/data-table-row-actions.js.map +1 -1
- package/dist/components/data-table-row.d.ts +6 -2
- package/dist/components/data-table-row.js +17 -10
- package/dist/components/data-table-row.js.map +1 -1
- package/dist/components/data-table-selection.d.ts +1 -1
- package/dist/components/data-table-selection.js.map +1 -1
- package/dist/components/data-table-shared.d.ts +10 -2
- package/dist/components/data-table-shared.js +18 -0
- package/dist/components/data-table-shared.js.map +1 -1
- package/dist/components/data-table-sort.d.ts +21 -2
- package/dist/components/data-table-sort.js +24 -0
- package/dist/components/data-table-sort.js.map +1 -1
- package/dist/components/data-table-virtual.d.ts +1 -1
- package/dist/components/data-table-virtual.js +18 -6
- package/dist/components/data-table-virtual.js.map +1 -1
- package/dist/components/data-table.d.ts +13 -4
- package/dist/components/data-table.js +139 -36
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/date-field.d.ts +24 -2
- package/dist/components/date-field.js +33 -8
- package/dist/components/date-field.js.map +1 -1
- package/dist/components/date-picker.d.ts +15 -2
- package/dist/components/date-picker.js +55 -26
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/date-range-picker.d.ts +47 -20
- package/dist/components/date-range-picker.js +23 -7
- package/dist/components/date-range-picker.js.map +1 -1
- package/dist/components/error-boundary.js +37 -30
- package/dist/components/error-boundary.js.map +1 -1
- package/dist/components/{ui-labels.d.ts → field-base-labels.d.ts} +0 -2
- package/dist/components/{ui-labels.js → field-base-labels.js} +2 -9
- package/dist/components/field-base-labels.js.map +1 -0
- package/dist/components/field-base.d.ts +4 -3
- package/dist/components/field-base.js +3 -3
- package/dist/components/field-base.js.map +1 -1
- package/dist/components/field-sync-labels.d.ts +1 -0
- package/dist/components/field-sync-labels.js.map +1 -1
- package/dist/components/field-sync.d.ts +23 -1
- package/dist/components/field-sync.js.map +1 -1
- package/dist/components/form-actions.js +11 -5
- package/dist/components/form-actions.js.map +1 -1
- package/dist/components/hover-menu.d.ts +3 -0
- package/dist/components/hover-menu.js +5 -3
- package/dist/components/hover-menu.js.map +1 -1
- package/dist/components/icon-button.js +14 -9
- package/dist/components/icon-button.js.map +1 -1
- package/dist/components/inline-confirm.d.ts +43 -0
- package/dist/components/inline-confirm.js +67 -0
- package/dist/components/inline-confirm.js.map +1 -0
- package/dist/components/inline-entity-combobox.d.ts +4 -3
- package/dist/components/inline-entity-combobox.js +148 -140
- package/dist/components/inline-entity-combobox.js.map +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/input.js.map +1 -1
- package/dist/components/jump-calendar.js +28 -112
- package/dist/components/jump-calendar.js.map +1 -1
- package/dist/components/legal-page.d.ts +3 -1
- package/dist/components/legal-page.js +3 -2
- package/dist/components/legal-page.js.map +1 -1
- package/dist/components/legal.d.ts +4 -2
- package/dist/components/legal.js.map +1 -1
- package/dist/components/lightbox.d.ts +2 -2
- package/dist/components/lightbox.js +17 -6
- package/dist/components/lightbox.js.map +1 -1
- package/dist/components/list.d.ts +6 -2
- package/dist/components/list.js +3 -2
- package/dist/components/list.js.map +1 -1
- package/dist/components/measured-grid.d.ts +1 -1
- package/dist/components/measured-grid.js +2 -1
- package/dist/components/measured-grid.js.map +1 -1
- package/dist/components/mini-calendar.js +3 -5
- package/dist/components/mini-calendar.js.map +1 -1
- package/dist/components/modal.js +3 -1
- package/dist/components/modal.js.map +1 -1
- package/dist/components/month-grid.d.ts +55 -0
- package/dist/components/month-grid.js +148 -0
- package/dist/components/month-grid.js.map +1 -0
- package/dist/components/month-picker.d.ts +36 -4
- package/dist/components/month-picker.js +123 -146
- package/dist/components/month-picker.js.map +1 -1
- package/dist/components/multi-select.d.ts +2 -2
- package/dist/components/multi-select.js +11 -6
- package/dist/components/multi-select.js.map +1 -1
- package/dist/components/picker-sheet.js +2 -1
- package/dist/components/picker-sheet.js.map +1 -1
- package/dist/components/pie-chart-labels.d.ts +7 -0
- package/dist/components/pie-chart-labels.js +1 -0
- package/dist/components/pie-chart-labels.js.map +1 -1
- package/dist/components/pie-chart.d.ts +5 -3
- package/dist/components/pie-chart.js +7 -22
- package/dist/components/pie-chart.js.map +1 -1
- package/dist/components/popover.d.ts +3 -0
- package/dist/components/popover.js +7 -1
- package/dist/components/popover.js.map +1 -1
- package/dist/components/row-actions.js +2 -1
- package/dist/components/row-actions.js.map +1 -1
- package/dist/components/section-nav.d.ts +7 -0
- package/dist/components/section-nav.js.map +1 -1
- package/dist/components/series-chart-axes.d.ts +3 -3
- package/dist/components/series-chart-axes.js.map +1 -1
- package/dist/components/series-chart-labels.d.ts +7 -4
- package/dist/components/series-chart-labels.js.map +1 -1
- package/dist/components/series-chart.d.ts +31 -7
- package/dist/components/series-chart.js +72 -29
- package/dist/components/series-chart.js.map +1 -1
- package/dist/components/share-card.js +3 -3
- package/dist/components/share-card.js.map +1 -1
- package/dist/components/sign-chip-labels.d.ts +1 -0
- package/dist/components/sign-chip-labels.js.map +1 -1
- package/dist/components/sign-chip.d.ts +10 -1
- package/dist/components/sign-chip.js.map +1 -1
- package/dist/components/tabs-labels.d.ts +2 -0
- package/dist/components/tabs-labels.js +11 -0
- package/dist/components/tabs-labels.js.map +1 -0
- package/dist/components/tabs.d.ts +1 -1
- package/dist/components/tabs.js +1 -1
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/toggle-legend.d.ts +2 -2
- package/dist/components/toggle-legend.js +6 -6
- package/dist/components/toggle-legend.js.map +1 -1
- package/dist/components/translation-review-editor.d.ts +4 -2
- package/dist/components/translation-review-editor.js +2 -3
- package/dist/components/translation-review-editor.js.map +1 -1
- package/dist/components/translation-review.d.ts +2 -1
- package/dist/components/translation-review.js +2 -2
- package/dist/components/translation-review.js.map +1 -1
- package/dist/components/treemap-labels.d.ts +26 -0
- package/dist/components/treemap-labels.js +10 -0
- package/dist/components/treemap-labels.js.map +1 -0
- package/dist/components/treemap-layout.d.ts +62 -0
- package/dist/components/treemap-layout.js +126 -0
- package/dist/components/treemap-layout.js.map +1 -0
- package/dist/components/treemap.d.ts +140 -17
- package/dist/components/treemap.js +324 -97
- package/dist/components/treemap.js.map +1 -1
- package/dist/components/use-table-state.d.ts +5 -5
- package/dist/components/use-table-state.js +4 -1
- package/dist/components/use-table-state.js.map +1 -1
- package/dist/data-table.d.ts +6 -2
- package/dist/data-table.js +7 -2
- package/dist/data-table.js.map +1 -1
- package/dist/eslint/index.js +1 -1
- package/dist/eslint/role-utilities.d.ts +36 -7
- package/dist/eslint/role-utilities.js +42 -9
- package/dist/eslint/role-utilities.js.map +1 -1
- package/dist/feedback/feedback-dialog.d.ts +25 -16
- package/dist/feedback/feedback-dialog.js +6 -2
- package/dist/feedback/feedback-dialog.js.map +1 -1
- package/dist/feedback/feedback-mutation.d.ts +30 -0
- package/dist/feedback/feedback-mutation.js +16 -0
- package/dist/feedback/feedback-mutation.js.map +1 -0
- package/dist/feedback/feedback-page-link.d.ts +53 -0
- package/dist/feedback/feedback-page-link.js +37 -0
- package/dist/feedback/feedback-page-link.js.map +1 -0
- package/dist/feedback/feedback-public-list.d.ts +12 -3
- package/dist/feedback/feedback-public-list.js +2 -1
- package/dist/feedback/feedback-public-list.js.map +1 -1
- package/dist/feedback/feedback-replies.d.ts +3 -1
- package/dist/feedback/feedback-replies.js +5 -4
- package/dist/feedback/feedback-replies.js.map +1 -1
- package/dist/feedback/feedback-row-detail-labels.js +5 -0
- package/dist/feedback/feedback-row-detail-labels.js.map +1 -1
- package/dist/feedback/feedback-row-detail.d.ts +64 -28
- package/dist/feedback/feedback-row-detail.js +30 -28
- package/dist/feedback/feedback-row-detail.js.map +1 -1
- package/dist/feedback/feedback-status-undo.d.ts +30 -11
- package/dist/feedback/feedback-status-undo.js +10 -15
- package/dist/feedback/feedback-status-undo.js.map +1 -1
- package/dist/feedback/feedback-submit-dialog.d.ts +1 -1
- package/dist/feedback/feedback-submit-dialog.js +1 -1
- package/dist/feedback/feedback-submit-dialog.js.map +1 -1
- package/dist/feedback/feedback-submit.js +9 -3
- package/dist/feedback/feedback-submit.js.map +1 -1
- package/dist/feedback/feedback-swipe.d.ts +1 -1
- package/dist/feedback/feedback-swipe.js.map +1 -1
- package/dist/feedback/feedback-table.d.ts +21 -9
- package/dist/feedback/feedback-table.js +45 -25
- package/dist/feedback/feedback-table.js.map +1 -1
- package/dist/feedback/feedback-thread-labels.d.ts +2 -2
- package/dist/feedback/feedback-thread-labels.js.map +1 -1
- package/dist/feedback/feedback-thread.d.ts +24 -23
- package/dist/feedback/feedback-thread.js +2 -1
- package/dist/feedback/feedback-thread.js.map +1 -1
- package/dist/feedback.d.ts +34 -0
- package/dist/feedback.js +42 -0
- package/dist/feedback.js.map +1 -1
- package/dist/hooks/use-focus-trap.d.ts +35 -0
- package/dist/hooks/use-focus-trap.js +6 -4
- package/dist/hooks/use-focus-trap.js.map +1 -1
- package/dist/hooks/use-hotkey.d.ts +5 -2
- package/dist/hooks/use-hotkey.js +5 -4
- package/dist/hooks/use-hotkey.js.map +1 -1
- package/dist/hooks/use-long-press.d.ts +7 -4
- package/dist/hooks/use-long-press.js +3 -0
- package/dist/hooks/use-long-press.js.map +1 -1
- package/dist/hooks/use-media-query.js +12 -4
- package/dist/hooks/use-media-query.js.map +1 -1
- package/dist/hooks/use-mounted.d.ts +22 -0
- package/dist/hooks/use-mounted.js +24 -0
- package/dist/hooks/use-mounted.js.map +1 -0
- package/dist/hooks/use-overlay-history.js +19 -3
- package/dist/hooks/use-overlay-history.js.map +1 -1
- package/dist/i18n/defaults.js +4 -5
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/german.js +7 -1
- package/dist/i18n/german.js.map +1 -1
- package/dist/i18n/kit-labels.d.ts +9 -2
- package/dist/i18n/kit-labels.js.map +1 -1
- package/dist/i18n/locales/en.js +20 -41
- package/dist/i18n/locales/en.js.map +3 -3
- package/dist/i18n/locales/es.js +7 -1
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.js +20 -10
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.js +9 -1
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.js +7 -1
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.js +8 -1
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/review.js +5 -0
- package/dist/i18n/review.js.map +1 -1
- package/dist/index.d.ts +64 -17
- package/dist/index.js +77 -12
- package/dist/index.js.map +1 -1
- package/dist/landing/routing.d.ts +3 -1
- package/dist/landing/routing.js +4 -7
- package/dist/landing/routing.js.map +1 -1
- package/dist/lib/broadcast.d.ts +17 -0
- package/dist/lib/broadcast.js +30 -0
- package/dist/lib/broadcast.js.map +1 -0
- package/dist/lib/date-format.d.ts +37 -2
- package/dist/lib/date-format.js +34 -8
- package/dist/lib/date-format.js.map +1 -1
- package/dist/lib/day-format.d.ts +46 -0
- package/dist/lib/day-format.js +46 -0
- package/dist/lib/day-format.js.map +1 -0
- package/dist/lib/describe-failure.d.ts +14 -0
- package/dist/lib/describe-failure.js +9 -0
- package/dist/lib/describe-failure.js.map +1 -0
- package/dist/lib/direction.d.ts +16 -0
- package/dist/lib/direction.js +9 -1
- package/dist/lib/direction.js.map +1 -1
- package/dist/lib/focus-left.d.ts +63 -0
- package/dist/lib/focus-left.js +67 -0
- package/dist/lib/focus-left.js.map +1 -0
- package/dist/lib/format.js +5 -14
- package/dist/lib/format.js.map +1 -1
- package/dist/lib/http-status.d.ts +24 -0
- package/dist/lib/http-status.js +14 -0
- package/dist/lib/http-status.js.map +1 -0
- package/dist/lib/intl-cache.d.ts +14 -0
- package/dist/lib/intl-cache.js +15 -0
- package/dist/lib/intl-cache.js.map +1 -0
- package/dist/lib/isin.d.ts +10 -0
- package/dist/lib/isin.js.map +1 -1
- package/dist/lib/iso-day.d.ts +11 -0
- package/dist/lib/iso-day.js +8 -0
- package/dist/lib/iso-day.js.map +1 -0
- package/dist/lib/lazy-with-fallback.d.ts +31 -0
- package/dist/lib/lazy-with-fallback.js +40 -0
- package/dist/lib/lazy-with-fallback.js.map +1 -0
- package/dist/lib/path-pattern.d.ts +34 -0
- package/dist/lib/path-pattern.js +24 -0
- package/dist/lib/path-pattern.js.map +1 -0
- package/dist/lib/reduced-motion.d.ts +2 -1
- package/dist/lib/reduced-motion.js.map +1 -1
- package/dist/lib/round.d.ts +2 -1
- package/dist/lib/round.js +2 -1
- package/dist/lib/round.js.map +1 -1
- package/dist/lib/safe-storage.d.ts +24 -5
- package/dist/lib/safe-storage.js +27 -2
- package/dist/lib/safe-storage.js.map +1 -1
- package/dist/lib/session-refresh.js +1 -1
- package/dist/lib/session-refresh.js.map +1 -1
- package/dist/lib/share-format.d.ts +13 -0
- package/dist/lib/share-format.js +10 -0
- package/dist/lib/share-format.js.map +1 -0
- package/dist/lib/text-case.d.ts +17 -0
- package/dist/lib/text-case.js +8 -0
- package/dist/lib/text-case.js.map +1 -0
- package/dist/lib/text-match.d.ts +29 -0
- package/dist/lib/text-match.js +20 -2
- package/dist/lib/text-match.js.map +1 -1
- package/dist/lib/thenable.d.ts +13 -0
- package/dist/lib/thenable.js +8 -0
- package/dist/lib/thenable.js.map +1 -0
- package/dist/lib/translation-review.d.ts +7 -2
- package/dist/lib/translation-review.js +4 -4
- package/dist/lib/translation-review.js.map +1 -1
- package/dist/notifications/device-zone-report.js +1 -1
- package/dist/notifications/device-zone-report.js.map +1 -1
- package/dist/notifications/notification-bell.d.ts +2 -1
- package/dist/notifications/notification-bell.js +3 -3
- package/dist/notifications/notification-bell.js.map +1 -1
- package/dist/notifications/notification-inbox.d.ts +10 -6
- package/dist/notifications/notification-inbox.js +26 -48
- package/dist/notifications/notification-inbox.js.map +1 -1
- package/dist/notifications/notification-parts.d.ts +3 -2
- package/dist/notifications/notification-parts.js +1 -3
- package/dist/notifications/notification-parts.js.map +1 -1
- package/dist/notifications/notification-types-setting.js +1 -1
- package/dist/notifications/notification-types-setting.js.map +1 -1
- package/dist/notifications/notifications-labels.d.ts +6 -0
- package/dist/notifications/notifications-labels.js +1 -0
- package/dist/notifications/notifications-labels.js.map +1 -1
- package/dist/notifications/push-device-setting.js +1 -1
- package/dist/notifications/push-device-setting.js.map +1 -1
- package/dist/notifications/push-devices-setting.d.ts +2 -1
- package/dist/notifications/push-devices-setting.js +27 -49
- package/dist/notifications/push-devices-setting.js.map +1 -1
- package/dist/notifications/quiet-hours-setting.d.ts +10 -3
- package/dist/notifications/quiet-hours-setting.js +65 -26
- package/dist/notifications/quiet-hours-setting.js.map +1 -1
- package/dist/notifications/unsubscribe-panel.js +4 -7
- package/dist/notifications/unsubscribe-panel.js.map +1 -1
- package/dist/notifications/use-push-device.d.ts +39 -1
- package/dist/notifications/use-push-device.js +28 -7
- package/dist/notifications/use-push-device.js.map +1 -1
- package/dist/offline/query-persistence.d.ts +3 -1
- package/dist/offline/query-persistence.js +19 -2
- package/dist/offline/query-persistence.js.map +1 -1
- package/dist/rhf/fields.d.ts +11 -4
- package/dist/rhf/fields.js.map +1 -1
- package/dist/search/command-palette.js +1 -1
- package/dist/search/command-palette.js.map +1 -1
- package/dist/search/global-search.js +19 -9
- package/dist/search/global-search.js.map +1 -1
- package/dist/search/use-command-key.d.ts +12 -1
- package/dist/search/use-command-key.js +3 -12
- package/dist/search/use-command-key.js.map +1 -1
- package/dist/search.d.ts +7 -0
- package/dist/search.js +10 -0
- package/dist/search.js.map +1 -1
- package/dist/settings/use-settings-focus.js +1 -0
- package/dist/settings/use-settings-focus.js.map +1 -1
- package/dist/shell/account-menu-language.d.ts +21 -5
- package/dist/shell/account-menu-language.js +3 -1
- package/dist/shell/account-menu-language.js.map +1 -1
- package/dist/shell/account-menu-text-size.d.ts +26 -9
- package/dist/shell/account-menu-text-size.js +3 -2
- package/dist/shell/account-menu-text-size.js.map +1 -1
- package/dist/shell/dev-menu.js +5 -18
- package/dist/shell/dev-menu.js.map +1 -1
- package/dist/shell/role-switcher.d.ts +7 -0
- package/dist/shell/role-switcher.js.map +1 -1
- package/dist/shell/top-bar-actions.d.ts +1 -1
- package/dist/shell/top-bar-actions.js.map +1 -1
- package/dist/shell/top-bar-parts-labels.d.ts +0 -2
- package/dist/shell/top-bar-parts-labels.js +0 -1
- package/dist/shell/top-bar-parts-labels.js.map +1 -1
- package/dist/shell.d.ts +27 -8
- package/dist/shell.js +28 -7
- package/dist/shell.js.map +1 -1
- package/dist/sync/engine.d.ts +30 -4
- package/dist/sync/engine.js +172 -52
- package/dist/sync/engine.js.map +1 -1
- package/dist/sync.d.ts +6 -2
- package/dist/sync.js +6 -1
- package/dist/sync.js.map +1 -1
- package/dist/testing/css-variables.js +3 -8
- package/dist/testing/css-variables.js.map +1 -1
- package/dist/theme/contrast.d.ts +2 -1
- package/dist/theme/contrast.js +3 -8
- package/dist/theme/contrast.js.map +1 -1
- package/dist/theme/palette-store.js +6 -6
- package/dist/theme/palette-store.js.map +1 -1
- package/dist/theme/text-size.js +3 -8
- package/dist/theme/text-size.js.map +1 -1
- package/dist/theme/theme-store.js +3 -6
- package/dist/theme/theme-store.js.map +1 -1
- package/dist/tour/tour-catalogue.d.ts +7 -4
- package/dist/tour/tour-catalogue.js +12 -10
- package/dist/tour/tour-catalogue.js.map +1 -1
- package/dist/tour/tour-dock.d.ts +0 -2
- package/dist/tour/tour-dock.js +0 -2
- package/dist/tour/tour-dock.js.map +1 -1
- package/dist/tour/tour-gates.d.ts +4 -0
- package/dist/tour/tour-gates.js +14 -0
- package/dist/tour/tour-gates.js.map +1 -1
- package/dist/tour/tour-overlay.d.ts +27 -0
- package/dist/tour/tour-overlay.js +741 -0
- package/dist/tour/tour-overlay.js.map +1 -0
- package/dist/tour/tour.d.ts +13 -3
- package/dist/tour/tour.js +59 -781
- package/dist/tour/tour.js.map +1 -1
- package/dist/tour/use-tour-progress.js +1 -1
- package/dist/tour/use-tour-progress.js.map +1 -1
- package/dist/wizard/stepper-nav.d.ts +5 -1
- package/dist/wizard/stepper-nav.js.map +1 -1
- package/dist/wizard/types.d.ts +6 -2
- package/dist/wizard/types.js.map +1 -1
- package/dist/wizard/use-wizard.d.ts +3 -1
- package/dist/wizard/use-wizard.js.map +1 -1
- package/dist/wizard/validation.d.ts +3 -1
- package/dist/wizard/validation.js.map +1 -1
- package/package.json +10 -6
- package/src/account/account-parts.ts +5 -25
- package/src/account/data-export-setting-labels.ts +1 -1
- package/src/account/delete-account-setting-labels.ts +1 -1
- package/src/account/email-change-setting-labels.ts +1 -1
- package/src/account/passkeys-setting.tsx +60 -38
- package/src/account/sessions-setting.tsx +18 -12
- package/src/admin/admin-action-confirm.tsx +1 -5
- package/src/admin/admin-parts.ts +11 -25
- package/src/admin/mail-test-card-labels.ts +1 -1
- package/src/admin/plan-change-labels.ts +5 -23
- package/src/admin/plan-change.tsx +7 -44
- package/src/admin/reviewer-scope-editor.tsx +3 -3
- package/src/auth/auth-errors-labels.ts +23 -0
- package/src/auth/auth-errors.ts +11 -38
- package/src/auth/complete-name-dialog.tsx +4 -1
- package/src/auth/forgot-password-form-labels.ts +1 -1
- package/src/auth/forgot-password-form.tsx +11 -6
- package/src/auth/register-form-labels.ts +1 -1
- package/src/auth/reset-password-form-labels.ts +1 -1
- package/src/auth/reset-password-form.tsx +8 -4
- package/src/auth/sign-in-form-labels.ts +1 -1
- package/src/auth/status-parts.tsx +0 -6
- package/src/auth/verify-email-labels.ts +1 -1
- package/src/auth/verify-email.tsx +11 -6
- package/src/billing/cancel-subscription.tsx +26 -12
- package/src/billing/dialog-close.ts +34 -0
- package/src/billing/plan-card.tsx +36 -11
- package/src/billing/plan-change-labels.ts +66 -0
- package/src/billing/plan-switch.tsx +26 -12
- package/src/chart.ts +21 -3
- package/src/components/account-chips.tsx +20 -23
- package/src/components/alert-banner.tsx +82 -5
- package/src/components/amount-input.tsx +18 -7
- package/src/components/autocomplete.tsx +64 -70
- package/src/components/bulk-action-bar.tsx +70 -2
- package/src/components/button-look.ts +5 -5
- package/src/components/button.tsx +2 -2
- package/src/components/chart-edge.ts +34 -1
- package/src/components/chart-figure.tsx +35 -0
- package/src/components/chart-zoom-core.tsx +6 -5
- package/src/components/chart.tsx +26 -5
- package/src/components/combobox-core.tsx +293 -62
- package/src/components/combobox.tsx +183 -153
- package/src/components/copy-button.tsx +34 -23
- package/src/components/country-select.tsx +16 -11
- package/src/components/data-table-column-settings.tsx +52 -10
- package/src/components/data-table-filters.ts +6 -4
- package/src/components/data-table-fit.ts +19 -5
- package/src/components/data-table-groups.tsx +1 -1
- package/src/components/data-table-head.tsx +32 -22
- package/src/components/data-table-mobile.tsx +61 -26
- package/src/components/data-table-pagination.tsx +21 -6
- package/src/components/data-table-resize.ts +1 -1
- package/src/components/data-table-row-actions.tsx +3 -3
- package/src/components/data-table-row.tsx +25 -14
- package/src/components/data-table-selection.ts +1 -1
- package/src/components/data-table-shared.tsx +33 -1
- package/src/components/data-table-sort.ts +57 -2
- package/src/components/data-table-virtual.ts +32 -8
- package/src/components/data-table.tsx +239 -68
- package/src/components/date-field.tsx +65 -8
- package/src/components/date-picker.tsx +125 -48
- package/src/components/date-range-picker.tsx +82 -31
- package/src/components/error-boundary.tsx +53 -39
- package/src/components/field-base-labels.ts +20 -0
- package/src/components/field-base.tsx +13 -7
- package/src/components/field-sync-labels.ts +1 -0
- package/src/components/field-sync.tsx +23 -1
- package/src/components/form-actions.tsx +20 -5
- package/src/components/hover-menu.tsx +18 -8
- package/src/components/icon-button.tsx +14 -9
- package/src/components/inline-confirm.tsx +116 -0
- package/src/components/inline-entity-combobox.tsx +197 -153
- package/src/components/input.tsx +1 -1
- package/src/components/jump-calendar.tsx +30 -146
- package/src/components/legal-page.tsx +10 -7
- package/src/components/legal.tsx +4 -2
- package/src/components/lightbox.tsx +21 -8
- package/src/components/list.tsx +10 -4
- package/src/components/measured-grid.tsx +8 -4
- package/src/components/mini-calendar.tsx +6 -5
- package/src/components/modal.tsx +6 -1
- package/src/components/month-grid.tsx +229 -0
- package/src/components/month-picker.tsx +192 -200
- package/src/components/multi-select.tsx +21 -9
- package/src/components/picker-sheet.tsx +12 -9
- package/src/components/pie-chart-labels.ts +8 -0
- package/src/components/pie-chart.tsx +22 -28
- package/src/components/popover.tsx +18 -1
- package/src/components/row-actions.tsx +2 -1
- package/src/components/section-nav.tsx +7 -0
- package/src/components/series-chart-axes.ts +3 -3
- package/src/components/series-chart-labels.ts +7 -4
- package/src/components/series-chart.tsx +178 -69
- package/src/components/share-card.tsx +6 -6
- package/src/components/sign-chip-labels.ts +1 -0
- package/src/components/sign-chip.tsx +10 -1
- package/src/components/tabs-labels.ts +13 -0
- package/src/components/tabs.tsx +2 -2
- package/src/components/toggle-legend.tsx +16 -11
- package/src/components/translation-review-editor.tsx +6 -5
- package/src/components/translation-review.tsx +4 -3
- package/src/components/treemap-labels.ts +39 -0
- package/src/components/treemap-layout.ts +210 -0
- package/src/components/treemap.tsx +722 -133
- package/src/components/use-table-state.ts +12 -9
- package/src/data-table.ts +9 -2
- package/src/eslint/role-utilities.ts +97 -19
- package/src/feedback/feedback-dialog.tsx +30 -19
- package/src/feedback/feedback-mutation.ts +41 -0
- package/src/feedback/feedback-page-link.ts +90 -0
- package/src/feedback/feedback-public-list.tsx +17 -5
- package/src/feedback/feedback-replies.tsx +13 -6
- package/src/feedback/feedback-row-detail-labels.ts +5 -0
- package/src/feedback/feedback-row-detail.tsx +103 -67
- package/src/feedback/feedback-status-undo.ts +41 -27
- package/src/feedback/feedback-submit-dialog.tsx +2 -2
- package/src/feedback/feedback-submit.tsx +21 -7
- package/src/feedback/feedback-swipe.tsx +1 -1
- package/src/feedback/feedback-table.tsx +86 -38
- package/src/feedback/feedback-thread-labels.ts +2 -2
- package/src/feedback/feedback-thread.tsx +27 -25
- package/src/feedback.ts +42 -0
- package/src/hooks/use-focus-trap.ts +8 -24
- package/src/hooks/use-hotkey.ts +24 -7
- package/src/hooks/use-long-press.ts +16 -2
- package/src/hooks/use-media-query.ts +20 -4
- package/src/hooks/use-mounted.ts +39 -0
- package/src/hooks/use-overlay-history.ts +32 -3
- package/src/i18n/defaults.ts +4 -5
- package/src/i18n/german.ts +8 -2
- package/src/i18n/kit-labels.tsx +9 -2
- package/src/i18n/locales/es.ts +8 -2
- package/src/i18n/locales/fr.ts +21 -13
- package/src/i18n/locales/hu.ts +10 -2
- package/src/i18n/locales/it.ts +8 -2
- package/src/i18n/locales/zh.ts +9 -2
- package/src/i18n/review.ts +5 -0
- package/src/index.ts +103 -13
- package/src/landing/routing.tsx +14 -10
- package/src/lib/broadcast.ts +52 -0
- package/src/lib/date-format.ts +89 -13
- package/src/lib/day-format.ts +96 -0
- package/src/lib/describe-failure.ts +18 -0
- package/src/lib/direction.ts +39 -0
- package/src/lib/focus-left.ts +156 -0
- package/src/lib/format.ts +5 -17
- package/src/lib/http-status.ts +38 -0
- package/src/lib/intl-cache.ts +25 -0
- package/src/lib/isin.ts +10 -0
- package/src/lib/iso-day.ts +13 -0
- package/src/lib/lazy-with-fallback.ts +82 -0
- package/src/lib/path-pattern.ts +55 -0
- package/src/lib/reduced-motion.ts +2 -1
- package/src/lib/round.ts +7 -2
- package/src/lib/safe-storage.ts +48 -6
- package/src/lib/session-refresh.ts +1 -1
- package/src/lib/share-format.ts +18 -0
- package/src/lib/text-case.ts +19 -0
- package/src/lib/text-match.ts +57 -2
- package/src/lib/thenable.ts +19 -0
- package/src/lib/translation-review.ts +13 -5
- package/src/notifications/device-zone-report.ts +1 -1
- package/src/notifications/notification-bell.tsx +7 -4
- package/src/notifications/notification-inbox.tsx +40 -58
- package/src/notifications/notification-parts.tsx +3 -4
- package/src/notifications/notification-types-setting.tsx +1 -1
- package/src/notifications/notifications-labels.ts +7 -0
- package/src/notifications/push-device-setting.tsx +1 -1
- package/src/notifications/push-devices-setting.tsx +30 -55
- package/src/notifications/quiet-hours-setting.tsx +93 -31
- package/src/notifications/unsubscribe-panel.tsx +4 -7
- package/src/notifications/use-push-device.ts +76 -10
- package/src/offline/query-persistence.ts +35 -3
- package/src/rhf/fields.tsx +11 -4
- package/src/search/command-palette.tsx +2 -4
- package/src/search/global-search.tsx +36 -15
- package/src/search/use-command-key.ts +13 -12
- package/src/search.ts +9 -0
- package/src/settings/use-settings-focus.ts +3 -0
- package/src/shell/account-menu-language.tsx +27 -5
- package/src/shell/account-menu-text-size.tsx +32 -10
- package/src/shell/dev-menu.tsx +7 -21
- package/src/shell/role-switcher.tsx +7 -0
- package/src/shell/top-bar-actions.tsx +1 -1
- package/src/shell/top-bar-parts-labels.ts +0 -3
- package/src/shell.ts +40 -9
- package/src/sync/engine.ts +339 -61
- package/src/sync.ts +8 -1
- package/src/testing/css-variables.ts +8 -9
- package/src/theme/contrast.ts +8 -9
- package/src/theme/palette-store.ts +9 -9
- package/src/theme/text-size.ts +6 -8
- package/src/theme/theme-store.ts +7 -9
- package/src/tour/tour-catalogue.tsx +26 -15
- package/src/tour/tour-dock.ts +0 -2
- package/src/tour/tour-gates.ts +23 -0
- package/src/tour/tour-overlay.tsx +1170 -0
- package/src/tour/tour.tsx +108 -1202
- package/src/tour/use-tour-progress.ts +1 -1
- package/src/wizard/stepper-nav.tsx +3 -1
- package/src/wizard/types.ts +11 -2
- package/src/wizard/use-wizard.ts +2 -1
- package/src/wizard/validation.ts +8 -2
- package/tokens.css +2 -1
- package/dist/components/ui-labels.js.map +0 -1
- package/dist/shell/dev-switchers.d.ts +0 -6
- package/dist/shell/dev-switchers.js +0 -12
- package/dist/shell/dev-switchers.js.map +0 -1
- package/src/components/ui-labels.ts +0 -24
- package/src/shell/dev-switchers.tsx +0 -18
|
@@ -3,6 +3,7 @@ import type { MouseEvent as ReactMouseEvent, ReactNode, RefObject } from "react"
|
|
|
3
3
|
import { RowLink, cleanAttrs, fromOutside, fromOwnControl, logicalAlign, splitCellProps } from "./data-table-shared";
|
|
4
4
|
import { GROW_CELL_CLASS, GROW_PEER_CELL_CLASS } from "./data-table-fit";
|
|
5
5
|
import { MobileRow, type MobileRowProps } from "./data-table-mobile";
|
|
6
|
+
import { Checkbox } from "./checkbox";
|
|
6
7
|
import type { DataTableColumn, MobileSwipeActions } from "./data-table";
|
|
7
8
|
import { cn } from "../lib/cn";
|
|
8
9
|
|
|
@@ -47,6 +48,10 @@ export interface DataTableRowCtx<T> {
|
|
|
47
48
|
/** Under `virtualize` (0.48.2): Arrow/Home/End over every row, rendered or not. True
|
|
48
49
|
* when the key was one of them. Without it the roving walks the rendered rows. */
|
|
49
50
|
moveFocus?: (fromIndex: number, key: string) => boolean;
|
|
51
|
+
/** The focus came into this row — the row, a control in it, its open detail, or a
|
|
52
|
+
* portal one of them opened: where the table puts the focus if the row leaves
|
|
53
|
+
* (refactor audit 2026-10-30, DSP-4). */
|
|
54
|
+
noteFocus: (key: string | number) => void;
|
|
50
55
|
}
|
|
51
56
|
|
|
52
57
|
/** `rowAttributes`' result compared key by key: a call site returns a fresh object (or
|
|
@@ -133,7 +138,7 @@ export interface DataTableRowProps<T> {
|
|
|
133
138
|
rowDetailsLabel: string;
|
|
134
139
|
selectRowLabel: string;
|
|
135
140
|
/** Under `virtualize` (0.48.2): the row's `aria-rowindex` (its open detail row is the
|
|
136
|
-
* next), and
|
|
141
|
+
* next), and its detail row is marked with the row's index for the window's measuring. */
|
|
137
142
|
ariaRowIndex?: number;
|
|
138
143
|
}
|
|
139
144
|
|
|
@@ -191,16 +196,15 @@ function DataTableRowImpl<T>({
|
|
|
191
196
|
<tr
|
|
192
197
|
{...cleanAttrs(attrs)}
|
|
193
198
|
aria-rowindex={ariaRowIndex}
|
|
194
|
-
|
|
199
|
+
// Every row, windowed or not: the window measures by it (0.48.2), and the table
|
|
200
|
+
// finds by it the row that takes the focus when a focused one leaves (DSP-4).
|
|
201
|
+
data-row-index={rowIndex}
|
|
195
202
|
data-row-nav={rowsFocusable ? "" : undefined}
|
|
196
203
|
tabIndex={rowsFocusable ? (tabbable ? 0 : -1) : undefined}
|
|
197
|
-
onFocus={
|
|
198
|
-
rowsFocusable
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}
|
|
202
|
-
: undefined
|
|
203
|
-
}
|
|
204
|
+
onFocus={(e) => {
|
|
205
|
+
if (rowsFocusable && e.target === e.currentTarget) ctx.current.setFocusRowKey(key);
|
|
206
|
+
ctx.current.noteFocus(key);
|
|
207
|
+
}}
|
|
204
208
|
onKeyDown={
|
|
205
209
|
rowsFocusable
|
|
206
210
|
? (e) => {
|
|
@@ -278,9 +282,10 @@ function DataTableRowImpl<T>({
|
|
|
278
282
|
onClick={(e) => e.stopPropagation()}
|
|
279
283
|
>
|
|
280
284
|
{selectable && (
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
285
|
+
// The kit's Checkbox, as the phone card's, not an indigo native box (DSP-14;
|
|
286
|
+
// see the header's).
|
|
287
|
+
<Checkbox
|
|
288
|
+
inputClassName={compact ? "size-3.5" : undefined}
|
|
284
289
|
checked={selected}
|
|
285
290
|
// Shift+click selects the range from the last toggled
|
|
286
291
|
// row. `preventDefault` puts the box back, but it does NOT
|
|
@@ -334,8 +339,10 @@ function DataTableRowImpl<T>({
|
|
|
334
339
|
{col === linkColumn && href ? (
|
|
335
340
|
// No `onActivate`: the click is left to bubble to the
|
|
336
341
|
// <tr> handler above, which already owns expand-vs-select.
|
|
337
|
-
// Calling it here as well would toggle the row twice.
|
|
338
|
-
|
|
342
|
+
// Calling it here as well would toggle the row twice. Without
|
|
343
|
+
// `onRowClick` (the row is not focusable then) nothing opens it in
|
|
344
|
+
// place, and the link is followed (DSP-23 b).
|
|
345
|
+
<RowLink href={href} navigate={!rowsFocusable} className="block" data-row-link="">
|
|
339
346
|
{col.cell(row)}
|
|
340
347
|
</RowLink>
|
|
341
348
|
) : (
|
|
@@ -350,6 +357,8 @@ function DataTableRowImpl<T>({
|
|
|
350
357
|
id={hasDisclosure ? detailId : undefined}
|
|
351
358
|
aria-rowindex={windowed ? ariaRowIndex + 1 : undefined}
|
|
352
359
|
data-row-detail={windowed ? rowIndex : undefined}
|
|
360
|
+
// An inline editor's field is the row's focus too (DSP-4).
|
|
361
|
+
onFocus={() => ctx.current.noteFocus(key)}
|
|
353
362
|
className="bg-surface-2 border-t border-subtle"
|
|
354
363
|
>
|
|
355
364
|
{/* The detail panel spans every column. In an `auto` table
|
|
@@ -400,6 +409,7 @@ export const DataTableRow = memo(DataTableRowImpl, sameProps) as <T>(
|
|
|
400
409
|
export interface DataTableMobileRowProps<T> extends Pick<
|
|
401
410
|
MobileRowProps<T>,
|
|
402
411
|
| "row"
|
|
412
|
+
| "rowIndex"
|
|
403
413
|
| "opensRow"
|
|
404
414
|
| "mobileDir"
|
|
405
415
|
| "mobileCardLinkable"
|
|
@@ -461,6 +471,7 @@ function DataTableMobileRowImpl<T>({
|
|
|
461
471
|
rowAttributes={() => attrs}
|
|
462
472
|
onRowClick={interactive ? (r) => ctx.current.onRowClick!(r) : undefined}
|
|
463
473
|
rowHref={href !== undefined ? () => href : undefined}
|
|
474
|
+
onFocusIn={() => ctx.current.noteFocus(key)}
|
|
464
475
|
select={
|
|
465
476
|
selectionOn
|
|
466
477
|
? {
|
|
@@ -20,7 +20,7 @@ export function useRangeSelection<T>({
|
|
|
20
20
|
}: {
|
|
21
21
|
selection: DataTableProps<T>["selection"];
|
|
22
22
|
/** The rows on screen, in the order shown. */
|
|
23
|
-
slice: T[];
|
|
23
|
+
slice: readonly T[];
|
|
24
24
|
rowKey: (row: T) => string | number;
|
|
25
25
|
}) {
|
|
26
26
|
// The row whose selection was last toggled, so Shift+click can select the range up
|
|
@@ -2,7 +2,8 @@ import type { CSSProperties, ReactNode } from "react";
|
|
|
2
2
|
import { isTableOwnColumn } from "./data-table-row-actions";
|
|
3
3
|
import { DEFAULT_DATA_TABLE_LABELS, type DataTableLabels } from "./data-table-labels";
|
|
4
4
|
import type { DataTableCellProps, DataTableColumn, DataTableHeadProps } from "./data-table";
|
|
5
|
-
import type
|
|
5
|
+
import { useKitLink, type LabelOverride } from "../i18n/kit-labels";
|
|
6
|
+
import { pickLinkRenderer, RenderedKitLink } from "./text-link";
|
|
6
7
|
|
|
7
8
|
// What DataTable shares with its header (data-table-head.tsx), its column panel and its
|
|
8
9
|
// phone layout (data-table-mobile.tsx): the cell-attribute and alignment rules, a
|
|
@@ -195,10 +196,17 @@ const isPlainLeftClick = (e: React.MouseEvent) =>
|
|
|
195
196
|
* `draggable={false}` because an anchor otherwise hijacks a horizontal mouse drag as
|
|
196
197
|
* a link-drag: that is both drag-to-select-text on the desktop table and the mouse
|
|
197
198
|
* path through SwipeableRow's gesture on the mobile card.
|
|
199
|
+
*
|
|
200
|
+
* `navigate` (refactor audit 2026-10-30, DSP-23 b): a table with `rowHref` and no
|
|
201
|
+
* `onRowClick` has nothing to open the row in place, and the cancelled click opened
|
|
202
|
+
* nothing at all. There the plain click is the link's: followed through the provider's
|
|
203
|
+
* `linkComponent` for an in-app path, as every kit link is (`pickLinkRenderer`), else
|
|
204
|
+
* by the browser.
|
|
198
205
|
*/
|
|
199
206
|
export function RowLink({
|
|
200
207
|
href,
|
|
201
208
|
onActivate,
|
|
209
|
+
navigate = false,
|
|
202
210
|
className,
|
|
203
211
|
children,
|
|
204
212
|
...rest
|
|
@@ -207,12 +215,36 @@ export function RowLink({
|
|
|
207
215
|
/** Runs on a plain left click. Omit it where an ANCESTOR already handles the
|
|
208
216
|
* click (the desktop `<tr>`), or the row would toggle twice. */
|
|
209
217
|
onActivate?: () => void;
|
|
218
|
+
/** The row has no `onRowClick`: a plain click follows the link instead. */
|
|
219
|
+
navigate?: boolean;
|
|
210
220
|
className?: string;
|
|
211
221
|
children: ReactNode;
|
|
212
222
|
} & Omit<
|
|
213
223
|
React.AnchorHTMLAttributes<HTMLAnchorElement>,
|
|
214
224
|
"href" | "className" | "children" | "onClick" | "onClickCapture"
|
|
215
225
|
>) {
|
|
226
|
+
const kitLink = useKitLink();
|
|
227
|
+
if (navigate) {
|
|
228
|
+
const render = pickLinkRenderer(undefined, kitLink, href);
|
|
229
|
+
const linkProps = {
|
|
230
|
+
...rest,
|
|
231
|
+
href,
|
|
232
|
+
draggable: false,
|
|
233
|
+
className,
|
|
234
|
+
// A modified click opens a tab; it must not also select the row (see above).
|
|
235
|
+
onClick: (e: React.MouseEvent<HTMLAnchorElement>) => {
|
|
236
|
+
if (!fromOutside(e.target, e.currentTarget) && !isPlainLeftClick(e)) e.stopPropagation();
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
// Drawn as a component of its own, so a router link's hooks are its own: text-link's
|
|
240
|
+
// RenderedKitLink, every kit link's (0.52 code review, data-table-shared.tsx — this
|
|
241
|
+
// module had a copy).
|
|
242
|
+
return render ? (
|
|
243
|
+
<RenderedKitLink render={render} props={{ ...linkProps, children }} />
|
|
244
|
+
) : (
|
|
245
|
+
<a {...linkProps}>{children}</a>
|
|
246
|
+
);
|
|
247
|
+
}
|
|
216
248
|
return (
|
|
217
249
|
<a
|
|
218
250
|
{...rest}
|
|
@@ -31,7 +31,7 @@ export function normalizeSorts(raw: unknown): SortState[] {
|
|
|
31
31
|
return single ? [single] : [];
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
export function encodeSorts(sorts: SortState[]): string | null {
|
|
34
|
+
export function encodeSorts(sorts: readonly SortState[]): string | null {
|
|
35
35
|
if (!sorts.length) return null;
|
|
36
36
|
return sorts.map((s) => (s.dir === "desc" ? `${s.key}.desc` : s.key)).join(",");
|
|
37
37
|
}
|
|
@@ -75,6 +75,61 @@ export interface SortStepOptions {
|
|
|
75
75
|
|
|
76
76
|
const flip = (d: SortDir): SortDir => (d === "asc" ? "desc" : "asc");
|
|
77
77
|
|
|
78
|
+
// ---------- The client sort's order ----------
|
|
79
|
+
|
|
80
|
+
/** One collator per locale, built once: `localeCompare` with a locale sets one up on
|
|
81
|
+
* every call, n·log n times a sort. */
|
|
82
|
+
const collators = new Map<string, Intl.Collator>();
|
|
83
|
+
|
|
84
|
+
function sortCollator(locale: string | undefined): Intl.Collator {
|
|
85
|
+
const key = locale ?? "";
|
|
86
|
+
let collator = collators.get(key);
|
|
87
|
+
if (!collator) {
|
|
88
|
+
const options: Intl.CollatorOptions = { numeric: true, sensitivity: "base" };
|
|
89
|
+
try {
|
|
90
|
+
collator = new Intl.Collator(locale, options);
|
|
91
|
+
} catch {
|
|
92
|
+
// An unknown tag (a typo in a provider's `locale`) throws a RangeError, and a sort
|
|
93
|
+
// is no reason for a table to stop rendering: the runtime's own collation then, as
|
|
94
|
+
// CountrySelect falls back.
|
|
95
|
+
collator = new Intl.Collator(undefined, options);
|
|
96
|
+
}
|
|
97
|
+
collators.set(key, collator);
|
|
98
|
+
}
|
|
99
|
+
return collator;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Two `sortBy` values in the order DataTable's client sort puts them, ascending — the
|
|
104
|
+
* table's own comparator, exported (0.52) for a list an app sorts beside or into a
|
|
105
|
+
* kit-sorted table: keksdose weaves its scheduled rows into the register and had to copy
|
|
106
|
+
* the rule, a copy that drifts the day the table's changes. Negative when `a` comes first.
|
|
107
|
+
*
|
|
108
|
+
* - Strings collate in `locale` (audit 2026-10-30 DSP-3, 0.51.7; `<` compared UTF-16 code
|
|
109
|
+
* units — every lower-case initial after every capital, Ä/Ö/Ü after Z): digits as
|
|
110
|
+
* numbers ("Item 2" before "Item 10"), case and accents left out, so two values that
|
|
111
|
+
* differ only by them compare equal and the next sort key decides. One collator per
|
|
112
|
+
* locale, cached; an unknown tag falls back to the runtime's collation, not a throw.
|
|
113
|
+
* - Numbers compare as numbers, and a number comes before a string.
|
|
114
|
+
* - `null` and `undefined` come last, and equal each other. The table puts them last in
|
|
115
|
+
* either direction; turn only the two present values round for a descending order.
|
|
116
|
+
* - Any other pair (a `Date` an untyped caller returns) keeps `<` / `>`.
|
|
117
|
+
*
|
|
118
|
+
* rows.sort((a, b) => compareSortValues(a.payee, b.payee, locale));
|
|
119
|
+
*/
|
|
120
|
+
export function compareSortValues(
|
|
121
|
+
a: string | number | null | undefined,
|
|
122
|
+
b: string | number | null | undefined,
|
|
123
|
+
locale?: string,
|
|
124
|
+
): number {
|
|
125
|
+
if (a == null || b == null) return a == null ? (b == null ? 0 : 1) : -1;
|
|
126
|
+
const aText = typeof a === "string";
|
|
127
|
+
const bText = typeof b === "string";
|
|
128
|
+
if (aText && bText) return sortCollator(locale).compare(a, b);
|
|
129
|
+
if (aText !== bText) return aText ? 1 : -1;
|
|
130
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
131
|
+
}
|
|
132
|
+
|
|
78
133
|
/** Header-click semantics. Plain click: make `key` the only sort — cycling
|
|
79
134
|
* first → other → none (`"tri"`) or first ⇄ other (`"toggle"`) when it already is
|
|
80
135
|
* the sole criterion. Shift-click (`additive`): append `key` as the next-priority
|
|
@@ -82,7 +137,7 @@ const flip = (d: SortDir): SortDir => (d === "asc" ? "desc" : "asc");
|
|
|
82
137
|
* a plain flip under `"toggle"`). `firstDir` defaults to `"asc"`, `cycle` to
|
|
83
138
|
* `"tri"` — the cycle every table had before the options existed. */
|
|
84
139
|
export function nextSorts(
|
|
85
|
-
prev: SortState[],
|
|
140
|
+
prev: readonly SortState[],
|
|
86
141
|
key: string,
|
|
87
142
|
additive: boolean,
|
|
88
143
|
options: SortStepOptions = {},
|
|
@@ -199,7 +199,7 @@ export function useRowWindow<T>({
|
|
|
199
199
|
}: {
|
|
200
200
|
enabled: boolean;
|
|
201
201
|
/** The rows on screen, in order. */
|
|
202
|
-
rows: T[];
|
|
202
|
+
rows: readonly T[];
|
|
203
203
|
rowKey: (row: T) => string | number;
|
|
204
204
|
groups: readonly VirtualGroup[];
|
|
205
205
|
/** Indices of the open rows: always rendered, their detail rows counted. */
|
|
@@ -246,6 +246,10 @@ export function useRowWindow<T>({
|
|
|
246
246
|
const naturalOverflow = useRef(false);
|
|
247
247
|
|
|
248
248
|
const expandedSig = expanded.join(",");
|
|
249
|
+
// The groups by what they say, not by identity (0.52 code review, data-table.tsx): the
|
|
250
|
+
// table builds them afresh on every render, and the model — `rowKey` on every row, and
|
|
251
|
+
// its arrays — was rebuilt with them: 3000 rows, ~6000 `rowKey` calls per arrow step.
|
|
252
|
+
const groupsSig = groups.map((g) => `${g.start}:${g.end}:${g.bands.join(".")}:${g.first}`).join(",");
|
|
249
253
|
const model = useMemo<Model | null>(() => {
|
|
250
254
|
if (!enabled) return null;
|
|
251
255
|
const keys = rows.map(rowKey);
|
|
@@ -277,9 +281,9 @@ export function useRowWindow<T>({
|
|
|
277
281
|
gTop[groups.length] = y;
|
|
278
282
|
tops[n] = y;
|
|
279
283
|
return { n, keys, tops, h, gTop, total: y, ariaRows, ariaBands, rowCount: aria - 1 + rowsAfter };
|
|
280
|
-
// `expanded` by
|
|
284
|
+
// `expanded` and `groups` by their signatures.
|
|
281
285
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
282
|
-
}, [enabled, rows, rowKey,
|
|
286
|
+
}, [enabled, rows, rowKey, groupsSig, expandedSig, measured, estimate, n, rowsBefore, rowsAfter]);
|
|
283
287
|
|
|
284
288
|
// The rows outside the range that stay: open rows, the tab stop, the focused row and
|
|
285
289
|
// the keyboard's target.
|
|
@@ -301,7 +305,7 @@ export function useRowWindow<T>({
|
|
|
301
305
|
const bodies = useMemo(
|
|
302
306
|
() => (model ? planBodies(model, groups, start, end, pinned) : []),
|
|
303
307
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
304
|
-
[model,
|
|
308
|
+
[model, groupsSig, start, end, pinnedSig],
|
|
305
309
|
);
|
|
306
310
|
|
|
307
311
|
const lockSig = `${resetKey}|${scrollerWidth}|${colKeys.join(",")}`;
|
|
@@ -321,7 +325,7 @@ export function useRowWindow<T>({
|
|
|
321
325
|
const sc = scrollerRef.current;
|
|
322
326
|
const table = tableRef.current;
|
|
323
327
|
if (!m || !sc || !table) return;
|
|
324
|
-
const origin = table.querySelector<HTMLElement>("tbody[data-vt-body]");
|
|
328
|
+
const origin = table.querySelector<HTMLElement>(":scope > tbody[data-vt-body]");
|
|
325
329
|
if (!origin) return;
|
|
326
330
|
const sr = sc.getBoundingClientRect();
|
|
327
331
|
const top = Math.max(sr.top, 0);
|
|
@@ -479,7 +483,7 @@ export function useRowWindow<T>({
|
|
|
479
483
|
const table = tableRef.current;
|
|
480
484
|
if (!enabled || !table) return;
|
|
481
485
|
const onIn = (e: FocusEvent) => {
|
|
482
|
-
const tr = (e.target as Element | null)
|
|
486
|
+
const tr = ownRowOf(table, e.target as Element | null);
|
|
483
487
|
const index = tr ? Number(tr.dataset.rowIndex ?? tr.dataset.rowDetail) : NaN;
|
|
484
488
|
const key = Number.isNaN(index) ? undefined : latest.current.model?.keys[index];
|
|
485
489
|
setFocusKey(key ?? null);
|
|
@@ -518,12 +522,14 @@ export function useRowWindow<T>({
|
|
|
518
522
|
if (focusTarget === null) return;
|
|
519
523
|
// Released by the focus it receives (the `focusin` above), which pins it as the
|
|
520
524
|
// focused row from then on.
|
|
521
|
-
tableRef.current
|
|
525
|
+
const table = tableRef.current;
|
|
526
|
+
if (table) ownRowAt(table, focusTarget)?.focus();
|
|
522
527
|
}, [focusTarget, bodies, tableRef]);
|
|
523
528
|
|
|
524
529
|
const focusRow = useCallback(
|
|
525
530
|
(i: number) => {
|
|
526
|
-
const
|
|
531
|
+
const table = tableRef.current;
|
|
532
|
+
const el = table && ownRowAt(table, i);
|
|
527
533
|
if (el) el.focus();
|
|
528
534
|
else setFocusTarget(i);
|
|
529
535
|
},
|
|
@@ -541,6 +547,24 @@ export function useRowWindow<T>({
|
|
|
541
547
|
};
|
|
542
548
|
}
|
|
543
549
|
|
|
550
|
+
// The window's rows are the table's OWN (0.52 code review, data-table-row.tsx): every
|
|
551
|
+
// desktop row carries `data-row-index` since DSP-4, a nested DataTable's in an open row
|
|
552
|
+
// too, and a lookup over the whole subtree answered for the outer table with the nested
|
|
553
|
+
// one's rows — ArrowDown from row 0 went to the nested row 1, the first in document order.
|
|
554
|
+
|
|
555
|
+
/** This table's row at `index`, if it is drawn. */
|
|
556
|
+
function ownRowAt(table: HTMLTableElement, index: number): HTMLElement | null {
|
|
557
|
+
return table.querySelector<HTMLElement>(`:scope > tbody > tr[data-row-index="${index}"]`);
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
/** This table's row (or open detail row) that holds `node` — past a nested table's own. */
|
|
561
|
+
function ownRowOf(table: HTMLTableElement, node: Element | null): HTMLElement | null {
|
|
562
|
+
const ROW = "tr[data-row-index], tr[data-row-detail]";
|
|
563
|
+
for (let tr = node?.closest?.<HTMLElement>(ROW) ?? null; tr; tr = tr.parentElement?.closest<HTMLElement>(ROW) ?? null)
|
|
564
|
+
if (tr.parentElement?.parentElement === table) return tr;
|
|
565
|
+
return null;
|
|
566
|
+
}
|
|
567
|
+
|
|
544
568
|
/** The roving rows' Arrow/Home/End target over ALL the rows, rendered or not. */
|
|
545
569
|
export function rowNavTarget(from: number, key: string, n: number): number | null {
|
|
546
570
|
if (n === 0) return null;
|