@eifi1/ui-kit 0.51.6 → 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 +146 -26
- 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 +3 -7
- 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.d.ts +3 -2
- package/dist/auth/complete-name-dialog.js +3 -5
- 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-request.d.ts +11 -2
- package/dist/billing/cancel-request.js +15 -3
- package/dist/billing/cancel-request.js.map +1 -1
- package/dist/billing/cancel-subscription.d.ts +22 -10
- package/dist/billing/cancel-subscription.js +8 -11
- 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 +21 -9
- package/dist/billing/plan-switch.js +10 -8
- 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 +22 -4
- package/dist/components/amount-input.js +3 -3
- 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/calculator.d.ts +21 -2
- package/dist/components/calculator.js +53 -14
- package/dist/components/calculator.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 +119 -7
- package/dist/components/combobox-core.js +151 -46
- package/dist/components/combobox-core.js.map +1 -1
- package/dist/components/combobox.d.ts +1 -1
- package/dist/components/combobox.js +142 -131
- 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 +36 -7
- package/dist/components/data-table-mobile.js +63 -31
- 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 +25 -8
- package/dist/components/data-table.js +154 -25
- 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/dialog-frame.d.ts +2 -1
- package/dist/components/dialog-frame.js.map +1 -1
- package/dist/components/entity-combobox.js +4 -2
- package/dist/components/entity-combobox.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 +150 -141
- 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 +4 -3
- 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.d.ts +24 -0
- package/dist/components/modal.js +12 -4
- package/dist/components/modal.js.map +1 -1
- package/dist/components/money-draft.js +7 -5
- package/dist/components/money-draft.js.map +1 -1
- package/dist/components/money-field.d.ts +2 -2
- package/dist/components/money-field.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-entity-combobox.js +2 -1
- package/dist/components/multi-entity-combobox.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/number-field.d.ts +6 -4
- package/dist/components/number-field.js +3 -2
- package/dist/components/number-field.js.map +1 -1
- package/dist/components/number-input.d.ts +4 -1
- package/dist/components/number-input.js +3 -2
- package/dist/components/number-input.js.map +1 -1
- package/dist/components/numpad-sheet.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/reauth-dialog.d.ts +4 -5
- package/dist/components/reauth-dialog.js +1 -4
- package/dist/components/reauth-dialog.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 +10 -3
- package/dist/components/series-chart-axes.js +1 -0
- 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 +13 -11
- 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-dismiss.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.d.ts +7 -1
- package/dist/hooks/use-overlay-history.js +35 -5
- 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/calc.d.ts +7 -1
- package/dist/lib/calc.js +3 -1
- package/dist/lib/calc.js.map +1 -1
- package/dist/lib/clipboard-minus.d.ts +2 -2
- package/dist/lib/clipboard-minus.js +1 -1
- package/dist/lib/clipboard-minus.js.map +1 -1
- 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/decimal-marks.d.ts +7 -1
- package/dist/lib/decimal-marks.js +5 -2
- package/dist/lib/decimal-marks.js.map +1 -1
- 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.d.ts +5 -3
- package/dist/lib/format.js +16 -13
- 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 +38 -0
- package/dist/lib/text-match.js +24 -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 +16 -4
- package/dist/tour/tour.js +62 -778
- 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/tour/use-tour-url-sync.js +2 -2
- package/dist/tour/use-tour-url-sync.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 +12 -8
- 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 +5 -10
- 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 +9 -8
- 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-request.ts +28 -6
- package/src/billing/cancel-subscription.tsx +29 -22
- 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 +31 -20
- 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 +32 -14
- 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/calculator.tsx +98 -17
- 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 +303 -69
- package/src/components/combobox.tsx +184 -155
- 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 +110 -27
- 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 +267 -41
- 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/dialog-frame.tsx +2 -1
- package/src/components/entity-combobox.tsx +4 -1
- 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 +198 -152
- 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 +14 -5
- package/src/components/measured-grid.tsx +8 -4
- package/src/components/mini-calendar.tsx +6 -5
- package/src/components/modal.tsx +45 -4
- package/src/components/money-draft.ts +16 -5
- package/src/components/money-field.tsx +2 -2
- package/src/components/month-grid.tsx +229 -0
- package/src/components/month-picker.tsx +192 -200
- package/src/components/multi-entity-combobox.tsx +1 -0
- package/src/components/multi-select.tsx +21 -9
- package/src/components/number-field.tsx +14 -7
- package/src/components/number-input.tsx +9 -3
- package/src/components/numpad-sheet.tsx +4 -3
- 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/reauth-dialog.tsx +6 -10
- package/src/components/row-actions.tsx +2 -1
- package/src/components/section-nav.tsx +7 -0
- package/src/components/series-chart-axes.ts +11 -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 +35 -19
- 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-dismiss.ts +3 -2
- 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 +70 -5
- 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/calc.ts +13 -2
- package/src/lib/clipboard-minus.ts +14 -4
- package/src/lib/date-format.ts +89 -13
- package/src/lib/day-format.ts +96 -0
- package/src/lib/decimal-marks.ts +12 -3
- 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 +34 -19
- 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 +69 -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 +116 -1193
- package/src/tour/use-tour-progress.ts +1 -1
- package/src/tour/use-tour-url-sync.ts +7 -3
- 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
|
@@ -1,30 +1,33 @@
|
|
|
1
1
|
// The id-keyed sibling of Combobox. Moved out of combobox.tsx as it was (MOD-9,
|
|
2
2
|
// refactor audit 2026-10); combobox still exports `InlineEntityCombobox` and its props.
|
|
3
|
-
import {
|
|
4
|
-
import type { ComponentPropsWithoutRef, ReactNode, Ref } from "react";
|
|
3
|
+
import { useId, useMemo, useRef, useState } from "react";
|
|
4
|
+
import type { ComponentPropsWithoutRef, KeyboardEvent, ReactNode, Ref } from "react";
|
|
5
5
|
import { ChevronDown, Plus, X } from "lucide-react";
|
|
6
6
|
import { FIELD_BASE, FIELD_FLOATING_PAD, FIELD_INVALID } from "./field-base";
|
|
7
7
|
import { cn } from "../lib/cn";
|
|
8
8
|
import { useDropdown } from "./dropdown";
|
|
9
|
-
import { takeEscape, useDismissLayer } from "../hooks/use-dismiss";
|
|
9
|
+
import { claimEscape, takeEscape, useDismissLayer } from "../hooks/use-dismiss";
|
|
10
10
|
import { isImeEnter } from "../lib/ime";
|
|
11
11
|
import { isQuietFocus } from "../lib/quiet-focus";
|
|
12
12
|
import { usePhoneLayout } from "../hooks/use-breakpoint";
|
|
13
13
|
import { PickerSheet, SHEET_ROW_CLASS } from "./picker-sheet";
|
|
14
14
|
import {
|
|
15
|
+
anchoredHeadingClass,
|
|
15
16
|
ComboboxFieldLabel,
|
|
16
17
|
DISABLED_ROW_CLASS,
|
|
17
18
|
endHintRowProps,
|
|
18
|
-
|
|
19
|
+
GroupedOptions,
|
|
20
|
+
groupRuns,
|
|
19
21
|
isOptionEnabled,
|
|
20
22
|
offersCreate,
|
|
23
|
+
SHEET_HEADING_CLASS,
|
|
21
24
|
stepEnabled,
|
|
22
|
-
|
|
25
|
+
useTypedListStatus,
|
|
23
26
|
type ComboClearValue,
|
|
24
27
|
type ComboOption,
|
|
25
28
|
} from "./combobox-core";
|
|
26
29
|
import { DEFAULT_COMBOBOX_LABELS, useKitLabels, useKitLocale } from "../i18n/kit-labels";
|
|
27
|
-
import {
|
|
30
|
+
import { sameName, searchRanked } from "../lib/text-match";
|
|
28
31
|
import {
|
|
29
32
|
EndHintRow,
|
|
30
33
|
FieldCaption,
|
|
@@ -65,7 +68,7 @@ export interface InlineEntityComboboxProps<V extends string | number, C extends
|
|
|
65
68
|
/** What a clear emits — `null` by default, `""` for a schema that wants an empty
|
|
66
69
|
* string. See {@link EntityCombobox}'s `clearValue`. */
|
|
67
70
|
clearValue?: C;
|
|
68
|
-
options: ComboOption<V>[];
|
|
71
|
+
options: readonly ComboOption<V>[];
|
|
69
72
|
/** The visible label — see {@link Combobox}'s `label` (a ReactNode since 0.34, API-9). */
|
|
70
73
|
label?: ReactNode;
|
|
71
74
|
id?: string;
|
|
@@ -81,8 +84,9 @@ export interface InlineEntityComboboxProps<V extends string | number, C extends
|
|
|
81
84
|
/** Phone sheet only — the anchored list has the field itself to type in. Falls
|
|
82
85
|
* back to `placeholder`, then to `combobox.search` from the {@link UiKitProvider}. */
|
|
83
86
|
searchPlaceholder?: string;
|
|
84
|
-
/**
|
|
85
|
-
*
|
|
87
|
+
/** What a query that finds nothing says: on the phone sheet, where a full screen
|
|
88
|
+
* showing nothing has to say why, and in the field's live status (0.52) — the anchored
|
|
89
|
+
* list itself simply does not open. Default: `combobox.noResults` from the provider. */
|
|
86
90
|
emptyLabel?: string;
|
|
87
91
|
closeLabel?: string;
|
|
88
92
|
/** The phone sheet's heading (and, as a string, its accessible name) for a field
|
|
@@ -310,19 +314,14 @@ export function InlineEntityCombobox<V extends string | number, C extends ComboC
|
|
|
310
314
|
const matches = useMemo(() => {
|
|
311
315
|
let ranked = options;
|
|
312
316
|
if (query) {
|
|
313
|
-
// Every word of the query, in the label or the sublabel (0.51.4).
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
//
|
|
317
|
-
//
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
return rank === 0 || rank === 1;
|
|
322
|
-
};
|
|
323
|
-
const starts = options.filter(leads);
|
|
324
|
-
const rest = options.filter((o) => !leads(o) && hit(o));
|
|
325
|
-
ranked = [...starts, ...rest];
|
|
317
|
+
// Every word of the query, in the label or the sublabel (0.51.4). The label's whole
|
|
318
|
+
// name or its start first (rank 0 and 1), then a match anywhere in the label or the
|
|
319
|
+
// sublabel; a stable sort keeps the options' order within each. Not the group
|
|
320
|
+
// (0.40, kk run 79): with first-letter groups one typed letter matched its whole
|
|
321
|
+
// group. Each option folded once (`searchRanked`).
|
|
322
|
+
ranked = searchRanked(options, query, (o) => [o.label, o.sublabel], { locale })
|
|
323
|
+
.sort((a, b) => Number(a.rank > 1) - Number(b.rank > 1))
|
|
324
|
+
.map((x) => x.row);
|
|
326
325
|
}
|
|
327
326
|
if (!ranked.some((o) => o.group)) return ranked;
|
|
328
327
|
// Keep each group contiguous so the headings below appear once instead of
|
|
@@ -353,6 +352,7 @@ export function InlineEntityCombobox<V extends string | number, C extends ComboC
|
|
|
353
352
|
createQuery,
|
|
354
353
|
options.map((o) => o.label),
|
|
355
354
|
createEmptyLabel,
|
|
355
|
+
locale,
|
|
356
356
|
);
|
|
357
357
|
const createText = createQuery ? labels.create(createQuery) : createEmptyLabel;
|
|
358
358
|
// Every row the keyboard can land on: the options, then the create row — passed over
|
|
@@ -360,20 +360,27 @@ export function InlineEntityCombobox<V extends string | number, C extends ComboC
|
|
|
360
360
|
const rows: readonly { disabled?: boolean }[] = showCreate ? [...matches, { disabled: createLocked }] : matches;
|
|
361
361
|
const createIndex = matches.length;
|
|
362
362
|
|
|
363
|
-
// Pointer-device only: the phone's rows live in a {@link PickerSheet} whose own
|
|
364
|
-
// search box holds focus, so the field behind it must not claim to be pointing at
|
|
365
|
-
// one of them.
|
|
366
|
-
// A disabled row is never the keyboard's, even if the list changed under it.
|
|
367
|
-
const activeId = !isPhone && isOptionEnabled(rows[active]) ? optionId(active) : undefined;
|
|
368
|
-
useActiveOptionScroll(activeId);
|
|
369
|
-
|
|
370
363
|
const close = () => {
|
|
371
364
|
setOpen(false);
|
|
372
365
|
setActive(-1);
|
|
373
366
|
setSheetQuery("");
|
|
374
367
|
};
|
|
375
|
-
//
|
|
376
|
-
|
|
368
|
+
// Whether a list shows, the row the keyboard is on — in the anchored list or the phone
|
|
369
|
+
// sheet, whose search box takes the same keys (INP-6) — and the live status, as
|
|
370
|
+
// Combobox has them. A disabled row is never the keyboard's, even if the list changed
|
|
371
|
+
// under it.
|
|
372
|
+
const { showing, expanded, activeOption, statusRegion } = useTypedListStatus({
|
|
373
|
+
isPhone,
|
|
374
|
+
open,
|
|
375
|
+
inert,
|
|
376
|
+
rowCount: matches.length,
|
|
377
|
+
extraRow: showCreate,
|
|
378
|
+
query,
|
|
379
|
+
active: isOptionEnabled(rows[active]) ? active : -1,
|
|
380
|
+
optionId,
|
|
381
|
+
labels,
|
|
382
|
+
});
|
|
383
|
+
// A layer while the list SHOWS, and Escape puts the label back.
|
|
377
384
|
useDismissLayer(showing, () => {
|
|
378
385
|
setText(null);
|
|
379
386
|
close();
|
|
@@ -402,6 +409,13 @@ export function InlineEntityCombobox<V extends string | number, C extends ComboC
|
|
|
402
409
|
setText(null);
|
|
403
410
|
close();
|
|
404
411
|
};
|
|
412
|
+
// The ONE option a name typed out in full names, else null. A disabled option's label
|
|
413
|
+
// is not a hit — typing it is not a way round `disabled` — and a label is typed out in
|
|
414
|
+
// full as the list matches it, so "cafe" names Café (DUP-5).
|
|
415
|
+
const exactHit = (q: string): ComboOption<V> | null => {
|
|
416
|
+
const hits = options.filter((o) => !o.disabled && sameName(o.label, q, locale));
|
|
417
|
+
return new Set(hits.map((h) => h.value)).size === 1 ? hits[0] : null;
|
|
418
|
+
};
|
|
405
419
|
const reconcile = () => {
|
|
406
420
|
// Locked, loose text is dropped rather than judged: nothing reaches `onChange`.
|
|
407
421
|
if (text !== null && !locked) {
|
|
@@ -409,16 +423,60 @@ export function InlineEntityCombobox<V extends string | number, C extends ComboC
|
|
|
409
423
|
if (!q) {
|
|
410
424
|
if (value != null) onChange(clearValue);
|
|
411
425
|
} else {
|
|
412
|
-
//
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
const ids = new Set(hits.map((h) => h.value));
|
|
416
|
-
if (ids.size === 1 && hits[0].value !== value) onChange(hits[0].value);
|
|
426
|
+
// Anything but a hit reverts, like any other non-answer.
|
|
427
|
+
const hit = exactHit(q);
|
|
428
|
+
if (hit && hit.value !== value) onChange(hit.value);
|
|
417
429
|
}
|
|
418
430
|
}
|
|
419
431
|
setText(null);
|
|
420
432
|
close();
|
|
421
433
|
};
|
|
434
|
+
// The phone sheet's way out — the X, Escape, Back — keeps the value and judges nothing.
|
|
435
|
+
// Not `reconcile`: on a phone `text` is never typed in (the sheet's own box is), so it
|
|
436
|
+
// only holds what the field showed at focus, and that is "" for a value whose option
|
|
437
|
+
// has not loaded yet — judged, it read as "the user emptied the field" and the X
|
|
438
|
+
// cleared the answer (0.52 code review, inline-entity-combobox.tsx).
|
|
439
|
+
const dismissSheet = () => {
|
|
440
|
+
setText(null);
|
|
441
|
+
close();
|
|
442
|
+
};
|
|
443
|
+
|
|
444
|
+
/** The list's keys — in the field and, on a phone, in the sheet's search box (INP-6).
|
|
445
|
+
* Disabled rows are passed over; Up from "nothing highlighted" lands on the first
|
|
446
|
+
* takeable row, as it always landed on row 0. The create row is the last row the
|
|
447
|
+
* arrows reach. */
|
|
448
|
+
const listKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {
|
|
449
|
+
if (e.key === "ArrowDown") {
|
|
450
|
+
e.preventDefault();
|
|
451
|
+
setOpen(true);
|
|
452
|
+
setActive((i) => stepEnabled(rows, i, 1));
|
|
453
|
+
} else if (e.key === "ArrowUp") {
|
|
454
|
+
e.preventDefault();
|
|
455
|
+
setActive((i) => (i < 0 ? stepEnabled(rows, -1, 1) : stepEnabled(rows, i, -1)));
|
|
456
|
+
} else if (e.key === "Enter") {
|
|
457
|
+
// An IME's Enter takes nothing, and judges no loose text (BUG-9).
|
|
458
|
+
if (isImeEnter(e)) return;
|
|
459
|
+
if (open && isOptionEnabled(rows[active])) {
|
|
460
|
+
e.preventDefault();
|
|
461
|
+
if (active === createIndex && showCreate) create();
|
|
462
|
+
else take(matches[active]);
|
|
463
|
+
} else if (isPhone) {
|
|
464
|
+
// The sheet's search box: its QUERY is what was typed, and a name typed out in
|
|
465
|
+
// full is taken, as the desktop field takes it. Anything else leaves the sheet
|
|
466
|
+
// and its search as they are — the panel pickers' sheet does the same. This was
|
|
467
|
+
// `reconcile`, which judged the field's text from before the sheet opened and
|
|
468
|
+
// closed: the search was thrown away and "Groceries" typed out was not taken
|
|
469
|
+
// (0.52 code review, inline-entity-combobox.tsx).
|
|
470
|
+
const hit = exactHit(sheetQuery.trim());
|
|
471
|
+
if (hit) {
|
|
472
|
+
e.preventDefault();
|
|
473
|
+
take(hit);
|
|
474
|
+
}
|
|
475
|
+
} else {
|
|
476
|
+
reconcile();
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
};
|
|
422
480
|
|
|
423
481
|
// The create row's inside, one for both shells: a "+" (it is an action, not a record),
|
|
424
482
|
// the words, and — while a write lock holds it — the lock's reason as a second line.
|
|
@@ -445,6 +503,21 @@ export function InlineEntityCombobox<V extends string | number, C extends ComboC
|
|
|
445
503
|
box
|
|
446
504
|
);
|
|
447
505
|
|
|
506
|
+
/** The rows in their runs, each group a `role="group"` its heading names (INP-8), for
|
|
507
|
+
* the sheet or the anchored list — a group heading at each boundary rather than the
|
|
508
|
+
* group on every row (feedback #136). `matches` is group-contiguous, so comparing with
|
|
509
|
+
* the row above is enough. An option may deliberately appear in two groups (see
|
|
510
|
+
* `reconcile`): a value is a row's key within its group. */
|
|
511
|
+
const groupedRows = (sheet: boolean, row: (o: ComboOption<V>, i: number) => ReactNode) => (
|
|
512
|
+
<GroupedOptions
|
|
513
|
+
runs={groupRuns(matches, (o) => o.group)}
|
|
514
|
+
listboxId={listboxId}
|
|
515
|
+
rowKey={(o) => String(o.value)}
|
|
516
|
+
row={row}
|
|
517
|
+
headingClassName={(run) => (sheet ? SHEET_HEADING_CLASS : anchoredHeadingClass(run))}
|
|
518
|
+
/>
|
|
519
|
+
);
|
|
520
|
+
|
|
448
521
|
return (
|
|
449
522
|
// `rest` dresses the outer box — a `data-tour` anchor, a test id. Not the NAME,
|
|
450
523
|
// description, invalid or required state: those belong on the <input> below,
|
|
@@ -476,12 +549,14 @@ export function InlineEntityCombobox<V extends string | number, C extends ComboC
|
|
|
476
549
|
// already exposes its value separately.
|
|
477
550
|
aria-label={ariaLabel}
|
|
478
551
|
role="combobox"
|
|
479
|
-
aria-expanded={
|
|
552
|
+
aria-expanded={expanded}
|
|
480
553
|
// Required by the role, and the half that was missing: the field said it
|
|
481
554
|
// was expanded and never said what it had expanded (ESLint's
|
|
482
555
|
// `role-has-required-aria-props`, the audit's §a11y).
|
|
483
556
|
aria-controls={listboxId}
|
|
484
|
-
|
|
557
|
+
// Pointer-device only: on a phone the sheet's own search box holds focus
|
|
558
|
+
// and names the row; the field behind it must not claim one.
|
|
559
|
+
aria-activedescendant={isPhone ? undefined : activeOption}
|
|
485
560
|
aria-autocomplete="list"
|
|
486
561
|
aria-invalid={field.isInvalid || undefined}
|
|
487
562
|
aria-describedby={mergeDescribedBy(field.describedBy, locked && lock.reasonId)}
|
|
@@ -538,30 +613,17 @@ export function InlineEntityCombobox<V extends string | number, C extends ComboC
|
|
|
538
613
|
}}
|
|
539
614
|
onKeyDown={(e) => {
|
|
540
615
|
if (locked) return lockedKeyDown(e);
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
// the last row the arrows reach.
|
|
544
|
-
if (e.key === "ArrowDown") {
|
|
545
|
-
e.preventDefault();
|
|
546
|
-
setOpen(true);
|
|
547
|
-
setActive((i) => stepEnabled(rows, i, 1));
|
|
548
|
-
} else if (e.key === "ArrowUp") {
|
|
549
|
-
e.preventDefault();
|
|
550
|
-
setActive((i) => (i < 0 ? stepEnabled(rows, -1, 1) : stepEnabled(rows, i, -1)));
|
|
551
|
-
} else if (e.key === "Enter") {
|
|
552
|
-
// An IME's Enter takes nothing, and judges no loose text (BUG-9).
|
|
553
|
-
if (isImeEnter(e)) return;
|
|
554
|
-
if (open && isOptionEnabled(rows[active])) {
|
|
555
|
-
e.preventDefault();
|
|
556
|
-
if (active === createIndex && showCreate) create();
|
|
557
|
-
else take(matches[active]);
|
|
558
|
-
} else {
|
|
559
|
-
reconcile();
|
|
560
|
-
}
|
|
561
|
-
} else if (e.key === "Escape") {
|
|
616
|
+
listKeyDown(e);
|
|
617
|
+
if (e.key === "Escape") {
|
|
562
618
|
// A showing list takes the key and stops it — see the twin in
|
|
563
619
|
// {@link Combobox} (round 0.34 BUG-1).
|
|
564
620
|
if (showing && takeEscape(e)) return;
|
|
621
|
+
// With no list, putting loose text back is this field's own undo step,
|
|
622
|
+
// and the step is all the key does: claimed, so the dialog around the
|
|
623
|
+
// field stays — it closed with the form in it (refactor audit
|
|
624
|
+
// 2026-10-30, INP-5; ChipInput's draft is the rule). With nothing to
|
|
625
|
+
// undo the key goes on, as before.
|
|
626
|
+
if (text !== null && text !== (selected?.label ?? "")) claimEscape(e);
|
|
565
627
|
setText(null);
|
|
566
628
|
close();
|
|
567
629
|
} else if (e.key === "Tab") {
|
|
@@ -635,12 +697,13 @@ export function InlineEntityCombobox<V extends string | number, C extends ComboC
|
|
|
635
697
|
)}
|
|
636
698
|
<FieldCaption parts={hintParts} />
|
|
637
699
|
{field.errorEl}
|
|
700
|
+
{/* The live status — see `useTypedListStatus` for where it goes and why. */}
|
|
701
|
+
{!isPhone && statusRegion}
|
|
638
702
|
{isPhone && (
|
|
639
703
|
<PickerSheet
|
|
640
704
|
open={open && !inert}
|
|
641
|
-
// Closing without choosing keeps the value
|
|
642
|
-
|
|
643
|
-
onClose={reconcile}
|
|
705
|
+
// Closing without choosing keeps the value — see `dismissSheet`.
|
|
706
|
+
onClose={dismissSheet}
|
|
644
707
|
title={sheetTitle ?? label}
|
|
645
708
|
query={sheetQuery}
|
|
646
709
|
onQueryChange={(v) => {
|
|
@@ -650,121 +713,104 @@ export function InlineEntityCombobox<V extends string | number, C extends ComboC
|
|
|
650
713
|
searchPlaceholder={searchPlaceholder ?? placeholder ?? labels.search}
|
|
651
714
|
inputRef={sheetInputRef}
|
|
652
715
|
closeLabel={closeLabel}
|
|
716
|
+
// The field's own keys, in the box focus is in while the sheet is up: arrows
|
|
717
|
+
// and Enter there did nothing (INP-6, as BUG-5 gave the panel pickers).
|
|
718
|
+
onSearchKeyDown={listKeyDown}
|
|
719
|
+
listboxId={listboxId}
|
|
720
|
+
activeId={activeOption}
|
|
653
721
|
>
|
|
654
722
|
<ul id={listboxId} role="listbox">
|
|
655
|
-
{
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
aria-selected={o.value === value}
|
|
676
|
-
aria-disabled={o.disabled || undefined}
|
|
677
|
-
onClick={() => take(o)}
|
|
678
|
-
className={cn(
|
|
679
|
-
SHEET_ROW_CLASS,
|
|
680
|
-
o.value === value && "font-medium",
|
|
681
|
-
o.disabled && DISABLED_ROW_CLASS,
|
|
682
|
-
)}
|
|
683
|
-
>
|
|
684
|
-
{o.label}
|
|
685
|
-
</button>
|
|
686
|
-
</li>
|
|
687
|
-
</Fragment>
|
|
723
|
+
{groupedRows(true, (o, i) => (
|
|
724
|
+
<li role="presentation">
|
|
725
|
+
<button
|
|
726
|
+
type="button"
|
|
727
|
+
id={optionId(i)}
|
|
728
|
+
role="option"
|
|
729
|
+
aria-selected={o.value === value}
|
|
730
|
+
aria-disabled={o.disabled || undefined}
|
|
731
|
+
onClick={() => take(o)}
|
|
732
|
+
className={cn(
|
|
733
|
+
SHEET_ROW_CLASS,
|
|
734
|
+
// The row the sheet's arrows are on.
|
|
735
|
+
i === active && !o.disabled && "bg-active",
|
|
736
|
+
o.value === value && "font-medium",
|
|
737
|
+
o.disabled && DISABLED_ROW_CLASS,
|
|
738
|
+
)}
|
|
739
|
+
>
|
|
740
|
+
{o.label}
|
|
741
|
+
</button>
|
|
742
|
+
</li>
|
|
688
743
|
))}
|
|
689
744
|
{showCreate && (
|
|
690
745
|
<li role="presentation">
|
|
691
746
|
<button
|
|
692
747
|
type="button"
|
|
748
|
+
id={optionId(createIndex)}
|
|
693
749
|
role="option"
|
|
694
750
|
// An action, never chosen — see `onCreate`.
|
|
695
751
|
aria-selected={false}
|
|
696
752
|
aria-disabled={createLocked || undefined}
|
|
697
753
|
onClick={create}
|
|
698
|
-
className={cn(
|
|
754
|
+
className={cn(
|
|
755
|
+
SHEET_ROW_CLASS,
|
|
756
|
+
CREATE_ROW_CLASS,
|
|
757
|
+
active === createIndex && !createLocked && "bg-active",
|
|
758
|
+
createLocked && DISABLED_ROW_CLASS,
|
|
759
|
+
)}
|
|
699
760
|
>
|
|
700
761
|
{createRowContent}
|
|
701
762
|
</button>
|
|
702
763
|
</li>
|
|
703
764
|
)}
|
|
704
765
|
{/* "Nothing matched" only when there is nothing to do either: with a create
|
|
705
|
-
row the list is not empty, it is offering to fill itself.
|
|
766
|
+
row the list is not empty, it is offering to fill itself. A picture: the
|
|
767
|
+
status below says it to a reader. */}
|
|
706
768
|
{matches.length === 0 && !showCreate && (
|
|
707
|
-
<li className="px-4 py-3 text-sm text-muted">
|
|
769
|
+
<li aria-hidden className="px-4 py-3 text-sm text-muted">
|
|
770
|
+
{labels.noResults}
|
|
771
|
+
</li>
|
|
708
772
|
)}
|
|
709
773
|
</ul>
|
|
774
|
+
{statusRegion}
|
|
710
775
|
</PickerSheet>
|
|
711
776
|
)}
|
|
712
777
|
{showing && (
|
|
713
778
|
<SuggestionList id={listboxId} anchorRef={fieldRef} panelRef={panelRef}>
|
|
714
|
-
{
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
//
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
take(o);
|
|
750
|
-
}}
|
|
751
|
-
onMouseEnter={() => {
|
|
752
|
-
if (!o.disabled) setActive(i);
|
|
753
|
-
}}
|
|
754
|
-
className={cn(
|
|
755
|
-
rowClass(i === active && !o.disabled),
|
|
756
|
-
o.disabled && DISABLED_ROW_CLASS,
|
|
757
|
-
// Indented under its heading, so the hierarchy is readable at a
|
|
758
|
-
// glance instead of inferred from grey trailing text.
|
|
759
|
-
o.group && "ps-6",
|
|
760
|
-
o.value === value && "font-medium",
|
|
761
|
-
)}
|
|
762
|
-
>
|
|
763
|
-
{o.label}
|
|
764
|
-
{o.sublabel && <span className="ms-2 text-xs text-placeholder">{o.sublabel}</span>}
|
|
765
|
-
</button>
|
|
766
|
-
</li>
|
|
767
|
-
</Fragment>
|
|
779
|
+
{groupedRows(false, (o, i) => (
|
|
780
|
+
<li role="presentation">
|
|
781
|
+
<button
|
|
782
|
+
type="button"
|
|
783
|
+
id={optionId(i)}
|
|
784
|
+
// See {@link Combobox}: the role rides the button, `aria-selected` is the
|
|
785
|
+
// CHOSEN row, and the keyboard's row is the field's
|
|
786
|
+
// `aria-activedescendant`.
|
|
787
|
+
role="option"
|
|
788
|
+
aria-selected={o.value === value}
|
|
789
|
+
aria-disabled={o.disabled || undefined}
|
|
790
|
+
tabIndex={-1}
|
|
791
|
+
onMouseDown={(e) => {
|
|
792
|
+
// mousedown (not click) so the input's blur can't close the list
|
|
793
|
+
// before the selection registers. Prevented on a disabled row too, so
|
|
794
|
+
// pressing one leaves the field focused and open.
|
|
795
|
+
e.preventDefault();
|
|
796
|
+
take(o);
|
|
797
|
+
}}
|
|
798
|
+
onMouseEnter={() => {
|
|
799
|
+
if (!o.disabled) setActive(i);
|
|
800
|
+
}}
|
|
801
|
+
className={cn(
|
|
802
|
+
rowClass(i === active && !o.disabled),
|
|
803
|
+
o.disabled && DISABLED_ROW_CLASS,
|
|
804
|
+
// Indented under its heading, so the hierarchy is readable at a glance
|
|
805
|
+
// instead of inferred from grey trailing text.
|
|
806
|
+
o.group && "ps-6",
|
|
807
|
+
o.value === value && "font-medium",
|
|
808
|
+
)}
|
|
809
|
+
>
|
|
810
|
+
{o.label}
|
|
811
|
+
{o.sublabel && <span className="ms-2 text-xs text-placeholder">{o.sublabel}</span>}
|
|
812
|
+
</button>
|
|
813
|
+
</li>
|
|
768
814
|
))}
|
|
769
815
|
{showCreate && (
|
|
770
816
|
<li role="presentation">
|
package/src/components/input.tsx
CHANGED