@miaixz/ui 0.5.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/LICENSE +202 -0
- package/NOTICE +7 -0
- package/README.md +190 -0
- package/dist/accessibility/focus-scope.d.ts +57 -0
- package/dist/accessibility/focus-scope.d.ts.map +1 -0
- package/dist/accessibility/focus-scope.js +272 -0
- package/dist/accessibility/focus-scope.js.map +1 -0
- package/dist/accessibility/index.d.ts +2 -0
- package/dist/accessibility/index.d.ts.map +1 -0
- package/dist/accessibility/index.js +2 -0
- package/dist/accessibility/index.js.map +1 -0
- package/dist/components/alert/alert.d.ts +8 -0
- package/dist/components/alert/alert.d.ts.map +1 -0
- package/dist/components/alert/alert.js +24 -0
- package/dist/components/alert/alert.js.map +1 -0
- package/dist/components/alert/alert.types.d.ts +43 -0
- package/dist/components/alert/alert.types.d.ts.map +1 -0
- package/dist/components/alert/alert.types.js +2 -0
- package/dist/components/alert/alert.types.js.map +1 -0
- package/dist/components/alert/index.d.ts +4 -0
- package/dist/components/alert/index.d.ts.map +1 -0
- package/dist/components/alert/index.js +2 -0
- package/dist/components/alert/index.js.map +1 -0
- package/dist/components/avatar/avatar.d.ts +8 -0
- package/dist/components/avatar/avatar.d.ts.map +1 -0
- package/dist/components/avatar/avatar.js +29 -0
- package/dist/components/avatar/avatar.js.map +1 -0
- package/dist/components/avatar/avatar.types.d.ts +35 -0
- package/dist/components/avatar/avatar.types.d.ts.map +1 -0
- package/dist/components/avatar/avatar.types.js +2 -0
- package/dist/components/avatar/avatar.types.js.map +1 -0
- package/dist/components/avatar/index.d.ts +4 -0
- package/dist/components/avatar/index.d.ts.map +1 -0
- package/dist/components/avatar/index.js +2 -0
- package/dist/components/avatar/index.js.map +1 -0
- package/dist/components/badge/badge.d.ts +8 -0
- package/dist/components/badge/badge.d.ts.map +1 -0
- package/dist/components/badge/badge.js +12 -0
- package/dist/components/badge/badge.js.map +1 -0
- package/dist/components/badge/badge.types.d.ts +37 -0
- package/dist/components/badge/badge.types.d.ts.map +1 -0
- package/dist/components/badge/badge.types.js +2 -0
- package/dist/components/badge/badge.types.js.map +1 -0
- package/dist/components/badge/index.d.ts +3 -0
- package/dist/components/badge/index.d.ts.map +1 -0
- package/dist/components/badge/index.js +2 -0
- package/dist/components/badge/index.js.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts +14 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.js +22 -0
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.types.d.ts +30 -0
- package/dist/components/breadcrumb/breadcrumb.types.d.ts.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.types.js +2 -0
- package/dist/components/breadcrumb/breadcrumb.types.js.map +1 -0
- package/dist/components/breadcrumb/index.d.ts +3 -0
- package/dist/components/breadcrumb/index.d.ts.map +1 -0
- package/dist/components/breadcrumb/index.js +2 -0
- package/dist/components/breadcrumb/index.js.map +1 -0
- package/dist/components/button/button.d.ts +8 -0
- package/dist/components/button/button.d.ts.map +1 -0
- package/dist/components/button/button.js +16 -0
- package/dist/components/button/button.js.map +1 -0
- package/dist/components/button/button.types.d.ts +99 -0
- package/dist/components/button/button.types.d.ts.map +1 -0
- package/dist/components/button/button.types.js +2 -0
- package/dist/components/button/button.types.js.map +1 -0
- package/dist/components/button/index.d.ts +3 -0
- package/dist/components/button/index.d.ts.map +1 -0
- package/dist/components/button/index.js +2 -0
- package/dist/components/button/index.js.map +1 -0
- package/dist/components/checkbox/checkbox.d.ts +8 -0
- package/dist/components/checkbox/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox/checkbox.js +18 -0
- package/dist/components/checkbox/checkbox.js.map +1 -0
- package/dist/components/checkbox/checkbox.types.d.ts +23 -0
- package/dist/components/checkbox/checkbox.types.d.ts.map +1 -0
- package/dist/components/checkbox/checkbox.types.js +2 -0
- package/dist/components/checkbox/checkbox.types.js.map +1 -0
- package/dist/components/checkbox/index.d.ts +3 -0
- package/dist/components/checkbox/index.d.ts.map +1 -0
- package/dist/components/checkbox/index.js +2 -0
- package/dist/components/checkbox/index.js.map +1 -0
- package/dist/components/combobox/combobox.d.ts +123 -0
- package/dist/components/combobox/combobox.d.ts.map +1 -0
- package/dist/components/combobox/combobox.js +378 -0
- package/dist/components/combobox/combobox.js.map +1 -0
- package/dist/components/combobox/combobox.types.d.ts +108 -0
- package/dist/components/combobox/combobox.types.d.ts.map +1 -0
- package/dist/components/combobox/combobox.types.js +2 -0
- package/dist/components/combobox/combobox.types.js.map +1 -0
- package/dist/components/combobox/index.d.ts +3 -0
- package/dist/components/combobox/index.d.ts.map +1 -0
- package/dist/components/combobox/index.js +2 -0
- package/dist/components/combobox/index.js.map +1 -0
- package/dist/components/confirm-dialog/confirm-dialog.d.ts +10 -0
- package/dist/components/confirm-dialog/confirm-dialog.d.ts.map +1 -0
- package/dist/components/confirm-dialog/confirm-dialog.js +70 -0
- package/dist/components/confirm-dialog/confirm-dialog.js.map +1 -0
- package/dist/components/confirm-dialog/confirm-dialog.types.d.ts +63 -0
- package/dist/components/confirm-dialog/confirm-dialog.types.d.ts.map +1 -0
- package/dist/components/confirm-dialog/confirm-dialog.types.js +2 -0
- package/dist/components/confirm-dialog/confirm-dialog.types.js.map +1 -0
- package/dist/components/confirm-dialog/index.d.ts +3 -0
- package/dist/components/confirm-dialog/index.d.ts.map +1 -0
- package/dist/components/confirm-dialog/index.js +2 -0
- package/dist/components/confirm-dialog/index.js.map +1 -0
- package/dist/components/data-table/data-table.d.ts +9 -0
- package/dist/components/data-table/data-table.d.ts.map +1 -0
- package/dist/components/data-table/data-table.js +198 -0
- package/dist/components/data-table/data-table.js.map +1 -0
- package/dist/components/data-table/data-table.types.d.ts +127 -0
- package/dist/components/data-table/data-table.types.d.ts.map +1 -0
- package/dist/components/data-table/data-table.types.js +2 -0
- package/dist/components/data-table/data-table.types.js.map +1 -0
- package/dist/components/data-table/index.d.ts +3 -0
- package/dist/components/data-table/index.d.ts.map +1 -0
- package/dist/components/data-table/index.js +2 -0
- package/dist/components/data-table/index.js.map +1 -0
- package/dist/components/dialog/dialog.d.ts +8 -0
- package/dist/components/dialog/dialog.d.ts.map +1 -0
- package/dist/components/dialog/dialog.js +45 -0
- package/dist/components/dialog/dialog.js.map +1 -0
- package/dist/components/dialog/dialog.types.d.ts +57 -0
- package/dist/components/dialog/dialog.types.d.ts.map +1 -0
- package/dist/components/dialog/dialog.types.js +2 -0
- package/dist/components/dialog/dialog.types.js.map +1 -0
- package/dist/components/dialog/index.d.ts +3 -0
- package/dist/components/dialog/index.d.ts.map +1 -0
- package/dist/components/dialog/index.js +2 -0
- package/dist/components/dialog/index.js.map +1 -0
- package/dist/components/divider/divider.d.ts +8 -0
- package/dist/components/divider/divider.d.ts.map +1 -0
- package/dist/components/divider/divider.js +12 -0
- package/dist/components/divider/divider.js.map +1 -0
- package/dist/components/divider/divider.types.d.ts +22 -0
- package/dist/components/divider/divider.types.d.ts.map +1 -0
- package/dist/components/divider/divider.types.js +2 -0
- package/dist/components/divider/divider.types.js.map +1 -0
- package/dist/components/divider/index.d.ts +3 -0
- package/dist/components/divider/index.d.ts.map +1 -0
- package/dist/components/divider/index.js +2 -0
- package/dist/components/divider/index.js.map +1 -0
- package/dist/components/drawer/drawer.d.ts +8 -0
- package/dist/components/drawer/drawer.d.ts.map +1 -0
- package/dist/components/drawer/drawer.js +45 -0
- package/dist/components/drawer/drawer.js.map +1 -0
- package/dist/components/drawer/drawer.types.d.ts +69 -0
- package/dist/components/drawer/drawer.types.d.ts.map +1 -0
- package/dist/components/drawer/drawer.types.js +2 -0
- package/dist/components/drawer/drawer.types.js.map +1 -0
- package/dist/components/drawer/index.d.ts +3 -0
- package/dist/components/drawer/index.d.ts.map +1 -0
- package/dist/components/drawer/index.js +2 -0
- package/dist/components/drawer/index.js.map +1 -0
- package/dist/components/dropdown/dropdown.d.ts +26 -0
- package/dist/components/dropdown/dropdown.d.ts.map +1 -0
- package/dist/components/dropdown/dropdown.js +70 -0
- package/dist/components/dropdown/dropdown.js.map +1 -0
- package/dist/components/dropdown/dropdown.types.d.ts +83 -0
- package/dist/components/dropdown/dropdown.types.d.ts.map +1 -0
- package/dist/components/dropdown/dropdown.types.js +2 -0
- package/dist/components/dropdown/dropdown.types.js.map +1 -0
- package/dist/components/dropdown/index.d.ts +3 -0
- package/dist/components/dropdown/index.d.ts.map +1 -0
- package/dist/components/dropdown/index.js +2 -0
- package/dist/components/dropdown/index.js.map +1 -0
- package/dist/components/dropzone/dropzone.d.ts +8 -0
- package/dist/components/dropzone/dropzone.d.ts.map +1 -0
- package/dist/components/dropzone/dropzone.js +98 -0
- package/dist/components/dropzone/dropzone.js.map +1 -0
- package/dist/components/dropzone/dropzone.types.d.ts +40 -0
- package/dist/components/dropzone/dropzone.types.d.ts.map +1 -0
- package/dist/components/dropzone/dropzone.types.js +2 -0
- package/dist/components/dropzone/dropzone.types.js.map +1 -0
- package/dist/components/dropzone/index.d.ts +3 -0
- package/dist/components/dropzone/index.d.ts.map +1 -0
- package/dist/components/dropzone/index.js +2 -0
- package/dist/components/dropzone/index.js.map +1 -0
- package/dist/components/empty-state/empty-state.d.ts +8 -0
- package/dist/components/empty-state/empty-state.d.ts.map +1 -0
- package/dist/components/empty-state/empty-state.js +13 -0
- package/dist/components/empty-state/empty-state.js.map +1 -0
- package/dist/components/empty-state/empty-state.types.d.ts +37 -0
- package/dist/components/empty-state/empty-state.types.d.ts.map +1 -0
- package/dist/components/empty-state/empty-state.types.js +2 -0
- package/dist/components/empty-state/empty-state.types.js.map +1 -0
- package/dist/components/empty-state/index.d.ts +3 -0
- package/dist/components/empty-state/index.d.ts.map +1 -0
- package/dist/components/empty-state/index.js +2 -0
- package/dist/components/empty-state/index.js.map +1 -0
- package/dist/components/file-upload/file-upload.d.ts +8 -0
- package/dist/components/file-upload/file-upload.d.ts.map +1 -0
- package/dist/components/file-upload/file-upload.js +359 -0
- package/dist/components/file-upload/file-upload.js.map +1 -0
- package/dist/components/file-upload/file-upload.types.d.ts +91 -0
- package/dist/components/file-upload/file-upload.types.d.ts.map +1 -0
- package/dist/components/file-upload/file-upload.types.js +2 -0
- package/dist/components/file-upload/file-upload.types.js.map +1 -0
- package/dist/components/file-upload/index.d.ts +3 -0
- package/dist/components/file-upload/index.d.ts.map +1 -0
- package/dist/components/file-upload/index.js +2 -0
- package/dist/components/file-upload/index.js.map +1 -0
- package/dist/components/form-field/form-field.d.ts +11 -0
- package/dist/components/form-field/form-field.d.ts.map +1 -0
- package/dist/components/form-field/form-field.js +41 -0
- package/dist/components/form-field/form-field.js.map +1 -0
- package/dist/components/form-field/form-field.types.d.ts +66 -0
- package/dist/components/form-field/form-field.types.d.ts.map +1 -0
- package/dist/components/form-field/form-field.types.js +2 -0
- package/dist/components/form-field/form-field.types.js.map +1 -0
- package/dist/components/form-field/index.d.ts +3 -0
- package/dist/components/form-field/index.d.ts.map +1 -0
- package/dist/components/form-field/index.js +2 -0
- package/dist/components/form-field/index.js.map +1 -0
- package/dist/components/icon/icon.d.ts +14 -0
- package/dist/components/icon/icon.d.ts.map +1 -0
- package/dist/components/icon/icon.js +48 -0
- package/dist/components/icon/icon.js.map +1 -0
- package/dist/components/icon/icon.types.d.ts +69 -0
- package/dist/components/icon/icon.types.d.ts.map +1 -0
- package/dist/components/icon/icon.types.js +2 -0
- package/dist/components/icon/icon.types.js.map +1 -0
- package/dist/components/icon/index.d.ts +3 -0
- package/dist/components/icon/index.d.ts.map +1 -0
- package/dist/components/icon/index.js +2 -0
- package/dist/components/icon/index.js.map +1 -0
- package/dist/components/index.d.ts +46 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +45 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/inline-message/index.d.ts +4 -0
- package/dist/components/inline-message/index.d.ts.map +1 -0
- package/dist/components/inline-message/index.js +2 -0
- package/dist/components/inline-message/index.js.map +1 -0
- package/dist/components/inline-message/inline-message.d.ts +8 -0
- package/dist/components/inline-message/inline-message.d.ts.map +1 -0
- package/dist/components/inline-message/inline-message.js +20 -0
- package/dist/components/inline-message/inline-message.js.map +1 -0
- package/dist/components/inline-message/inline-message.types.d.ts +27 -0
- package/dist/components/inline-message/inline-message.types.d.ts.map +1 -0
- package/dist/components/inline-message/inline-message.types.js +2 -0
- package/dist/components/inline-message/inline-message.types.js.map +1 -0
- package/dist/components/input/index.d.ts +3 -0
- package/dist/components/input/index.d.ts.map +1 -0
- package/dist/components/input/index.js +2 -0
- package/dist/components/input/index.js.map +1 -0
- package/dist/components/input/input.d.ts +8 -0
- package/dist/components/input/input.d.ts.map +1 -0
- package/dist/components/input/input.js +13 -0
- package/dist/components/input/input.js.map +1 -0
- package/dist/components/input/input.types.d.ts +35 -0
- package/dist/components/input/input.types.d.ts.map +1 -0
- package/dist/components/input/input.types.js +2 -0
- package/dist/components/input/input.types.js.map +1 -0
- package/dist/components/list/index.d.ts +3 -0
- package/dist/components/list/index.d.ts.map +1 -0
- package/dist/components/list/index.js +2 -0
- package/dist/components/list/index.js.map +1 -0
- package/dist/components/list/list.d.ts +14 -0
- package/dist/components/list/list.d.ts.map +1 -0
- package/dist/components/list/list.js +21 -0
- package/dist/components/list/list.js.map +1 -0
- package/dist/components/list/list.types.d.ts +72 -0
- package/dist/components/list/list.types.d.ts.map +1 -0
- package/dist/components/list/list.types.js +2 -0
- package/dist/components/list/list.types.js.map +1 -0
- package/dist/components/loading-overlay/index.d.ts +3 -0
- package/dist/components/loading-overlay/index.d.ts.map +1 -0
- package/dist/components/loading-overlay/index.js +2 -0
- package/dist/components/loading-overlay/index.js.map +1 -0
- package/dist/components/loading-overlay/loading-overlay.d.ts +8 -0
- package/dist/components/loading-overlay/loading-overlay.d.ts.map +1 -0
- package/dist/components/loading-overlay/loading-overlay.js +13 -0
- package/dist/components/loading-overlay/loading-overlay.js.map +1 -0
- package/dist/components/loading-overlay/loading-overlay.types.d.ts +28 -0
- package/dist/components/loading-overlay/loading-overlay.types.d.ts.map +1 -0
- package/dist/components/loading-overlay/loading-overlay.types.js +2 -0
- package/dist/components/loading-overlay/loading-overlay.types.js.map +1 -0
- package/dist/components/multi-select/index.d.ts +3 -0
- package/dist/components/multi-select/index.d.ts.map +1 -0
- package/dist/components/multi-select/index.js +2 -0
- package/dist/components/multi-select/index.js.map +1 -0
- package/dist/components/multi-select/multi-select.d.ts +9 -0
- package/dist/components/multi-select/multi-select.d.ts.map +1 -0
- package/dist/components/multi-select/multi-select.js +74 -0
- package/dist/components/multi-select/multi-select.js.map +1 -0
- package/dist/components/multi-select/multi-select.types.d.ts +35 -0
- package/dist/components/multi-select/multi-select.types.d.ts.map +1 -0
- package/dist/components/multi-select/multi-select.types.js +2 -0
- package/dist/components/multi-select/multi-select.types.js.map +1 -0
- package/dist/components/navigation/index.d.ts +3 -0
- package/dist/components/navigation/index.d.ts.map +1 -0
- package/dist/components/navigation/index.js +2 -0
- package/dist/components/navigation/index.js.map +1 -0
- package/dist/components/navigation/navigation.d.ts +14 -0
- package/dist/components/navigation/navigation.d.ts.map +1 -0
- package/dist/components/navigation/navigation.js +29 -0
- package/dist/components/navigation/navigation.js.map +1 -0
- package/dist/components/navigation/navigation.types.d.ts +84 -0
- package/dist/components/navigation/navigation.types.d.ts.map +1 -0
- package/dist/components/navigation/navigation.types.js +2 -0
- package/dist/components/navigation/navigation.types.js.map +1 -0
- package/dist/components/page-layout/index.d.ts +3 -0
- package/dist/components/page-layout/index.d.ts.map +1 -0
- package/dist/components/page-layout/index.js +2 -0
- package/dist/components/page-layout/index.js.map +1 -0
- package/dist/components/page-layout/page-layout.d.ts +74 -0
- package/dist/components/page-layout/page-layout.d.ts.map +1 -0
- package/dist/components/page-layout/page-layout.js +103 -0
- package/dist/components/page-layout/page-layout.js.map +1 -0
- package/dist/components/page-layout/page-layout.types.d.ts +188 -0
- package/dist/components/page-layout/page-layout.types.d.ts.map +1 -0
- package/dist/components/page-layout/page-layout.types.js +2 -0
- package/dist/components/page-layout/page-layout.types.js.map +1 -0
- package/dist/components/pagination/index.d.ts +4 -0
- package/dist/components/pagination/index.d.ts.map +1 -0
- package/dist/components/pagination/index.js +2 -0
- package/dist/components/pagination/index.js.map +1 -0
- package/dist/components/pagination/pagination.d.ts +24 -0
- package/dist/components/pagination/pagination.d.ts.map +1 -0
- package/dist/components/pagination/pagination.js +48 -0
- package/dist/components/pagination/pagination.js.map +1 -0
- package/dist/components/pagination/pagination.types.d.ts +43 -0
- package/dist/components/pagination/pagination.types.d.ts.map +1 -0
- package/dist/components/pagination/pagination.types.js +2 -0
- package/dist/components/pagination/pagination.types.js.map +1 -0
- package/dist/components/panel/index.d.ts +3 -0
- package/dist/components/panel/index.d.ts.map +1 -0
- package/dist/components/panel/index.js +2 -0
- package/dist/components/panel/index.js.map +1 -0
- package/dist/components/panel/panel.d.ts +14 -0
- package/dist/components/panel/panel.d.ts.map +1 -0
- package/dist/components/panel/panel.js +22 -0
- package/dist/components/panel/panel.js.map +1 -0
- package/dist/components/panel/panel.types.d.ts +62 -0
- package/dist/components/panel/panel.types.d.ts.map +1 -0
- package/dist/components/panel/panel.types.js +2 -0
- package/dist/components/panel/panel.types.js.map +1 -0
- package/dist/components/popover/index.d.ts +3 -0
- package/dist/components/popover/index.d.ts.map +1 -0
- package/dist/components/popover/index.js +2 -0
- package/dist/components/popover/index.js.map +1 -0
- package/dist/components/popover/popover-context.d.ts +29 -0
- package/dist/components/popover/popover-context.d.ts.map +1 -0
- package/dist/components/popover/popover-context.js +14 -0
- package/dist/components/popover/popover-context.js.map +1 -0
- package/dist/components/popover/popover.d.ts +8 -0
- package/dist/components/popover/popover.d.ts.map +1 -0
- package/dist/components/popover/popover.js +60 -0
- package/dist/components/popover/popover.js.map +1 -0
- package/dist/components/popover/popover.types.d.ts +47 -0
- package/dist/components/popover/popover.types.d.ts.map +1 -0
- package/dist/components/popover/popover.types.js +2 -0
- package/dist/components/popover/popover.types.js.map +1 -0
- package/dist/components/progress/index.d.ts +3 -0
- package/dist/components/progress/index.d.ts.map +1 -0
- package/dist/components/progress/index.js +2 -0
- package/dist/components/progress/index.js.map +1 -0
- package/dist/components/progress/progress.d.ts +8 -0
- package/dist/components/progress/progress.d.ts.map +1 -0
- package/dist/components/progress/progress.js +32 -0
- package/dist/components/progress/progress.js.map +1 -0
- package/dist/components/progress/progress.types.d.ts +36 -0
- package/dist/components/progress/progress.types.d.ts.map +1 -0
- package/dist/components/progress/progress.types.js +2 -0
- package/dist/components/progress/progress.types.js.map +1 -0
- package/dist/components/radio/index.d.ts +3 -0
- package/dist/components/radio/index.d.ts.map +1 -0
- package/dist/components/radio/index.js +2 -0
- package/dist/components/radio/index.js.map +1 -0
- package/dist/components/radio/radio.d.ts +8 -0
- package/dist/components/radio/radio.d.ts.map +1 -0
- package/dist/components/radio/radio.js +12 -0
- package/dist/components/radio/radio.js.map +1 -0
- package/dist/components/radio/radio.types.d.ts +17 -0
- package/dist/components/radio/radio.types.d.ts.map +1 -0
- package/dist/components/radio/radio.types.js +2 -0
- package/dist/components/radio/radio.types.js.map +1 -0
- package/dist/components/search-input/index.d.ts +3 -0
- package/dist/components/search-input/index.d.ts.map +1 -0
- package/dist/components/search-input/index.js +2 -0
- package/dist/components/search-input/index.js.map +1 -0
- package/dist/components/search-input/search-input.d.ts +8 -0
- package/dist/components/search-input/search-input.d.ts.map +1 -0
- package/dist/components/search-input/search-input.js +35 -0
- package/dist/components/search-input/search-input.js.map +1 -0
- package/dist/components/search-input/search-input.types.d.ts +38 -0
- package/dist/components/search-input/search-input.types.d.ts.map +1 -0
- package/dist/components/search-input/search-input.types.js +2 -0
- package/dist/components/search-input/search-input.types.js.map +1 -0
- package/dist/components/select/index.d.ts +3 -0
- package/dist/components/select/index.d.ts.map +1 -0
- package/dist/components/select/index.js +2 -0
- package/dist/components/select/index.js.map +1 -0
- package/dist/components/select/select.d.ts +8 -0
- package/dist/components/select/select.d.ts.map +1 -0
- package/dist/components/select/select.js +14 -0
- package/dist/components/select/select.js.map +1 -0
- package/dist/components/select/select.types.d.ts +27 -0
- package/dist/components/select/select.types.d.ts.map +1 -0
- package/dist/components/select/select.types.js +2 -0
- package/dist/components/select/select.types.js.map +1 -0
- package/dist/components/shared.types.d.ts +13 -0
- package/dist/components/shared.types.d.ts.map +1 -0
- package/dist/components/shared.types.js +2 -0
- package/dist/components/shared.types.js.map +1 -0
- package/dist/components/skeleton/index.d.ts +3 -0
- package/dist/components/skeleton/index.d.ts.map +1 -0
- package/dist/components/skeleton/index.js +2 -0
- package/dist/components/skeleton/index.js.map +1 -0
- package/dist/components/skeleton/skeleton.d.ts +8 -0
- package/dist/components/skeleton/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton/skeleton.js +12 -0
- package/dist/components/skeleton/skeleton.js.map +1 -0
- package/dist/components/skeleton/skeleton.types.d.ts +29 -0
- package/dist/components/skeleton/skeleton.types.d.ts.map +1 -0
- package/dist/components/skeleton/skeleton.types.js +2 -0
- package/dist/components/skeleton/skeleton.types.js.map +1 -0
- package/dist/components/spinner/index.d.ts +4 -0
- package/dist/components/spinner/index.d.ts.map +1 -0
- package/dist/components/spinner/index.js +2 -0
- package/dist/components/spinner/index.js.map +1 -0
- package/dist/components/spinner/spinner.d.ts +8 -0
- package/dist/components/spinner/spinner.d.ts.map +1 -0
- package/dist/components/spinner/spinner.js +19 -0
- package/dist/components/spinner/spinner.js.map +1 -0
- package/dist/components/spinner/spinner.types.d.ts +27 -0
- package/dist/components/spinner/spinner.types.d.ts.map +1 -0
- package/dist/components/spinner/spinner.types.js +2 -0
- package/dist/components/spinner/spinner.types.js.map +1 -0
- package/dist/components/status-indicator/index.d.ts +4 -0
- package/dist/components/status-indicator/index.d.ts.map +1 -0
- package/dist/components/status-indicator/index.js +2 -0
- package/dist/components/status-indicator/index.js.map +1 -0
- package/dist/components/status-indicator/status-indicator.d.ts +8 -0
- package/dist/components/status-indicator/status-indicator.d.ts.map +1 -0
- package/dist/components/status-indicator/status-indicator.js +12 -0
- package/dist/components/status-indicator/status-indicator.js.map +1 -0
- package/dist/components/status-indicator/status-indicator.types.d.ts +25 -0
- package/dist/components/status-indicator/status-indicator.types.d.ts.map +1 -0
- package/dist/components/status-indicator/status-indicator.types.js +2 -0
- package/dist/components/status-indicator/status-indicator.types.js.map +1 -0
- package/dist/components/switch/index.d.ts +3 -0
- package/dist/components/switch/index.d.ts.map +1 -0
- package/dist/components/switch/index.js +2 -0
- package/dist/components/switch/index.js.map +1 -0
- package/dist/components/switch/switch.d.ts +8 -0
- package/dist/components/switch/switch.d.ts.map +1 -0
- package/dist/components/switch/switch.js +12 -0
- package/dist/components/switch/switch.js.map +1 -0
- package/dist/components/switch/switch.types.d.ts +17 -0
- package/dist/components/switch/switch.types.d.ts.map +1 -0
- package/dist/components/switch/switch.types.js +2 -0
- package/dist/components/switch/switch.types.js.map +1 -0
- package/dist/components/table/index.d.ts +3 -0
- package/dist/components/table/index.d.ts.map +1 -0
- package/dist/components/table/index.js +2 -0
- package/dist/components/table/index.js.map +1 -0
- package/dist/components/table/table.d.ts +56 -0
- package/dist/components/table/table.d.ts.map +1 -0
- package/dist/components/table/table.js +76 -0
- package/dist/components/table/table.js.map +1 -0
- package/dist/components/table/table.types.d.ts +101 -0
- package/dist/components/table/table.types.d.ts.map +1 -0
- package/dist/components/table/table.types.js +2 -0
- package/dist/components/table/table.types.js.map +1 -0
- package/dist/components/tabs/index.d.ts +3 -0
- package/dist/components/tabs/index.d.ts.map +1 -0
- package/dist/components/tabs/index.js +2 -0
- package/dist/components/tabs/index.js.map +1 -0
- package/dist/components/tabs/tabs.d.ts +26 -0
- package/dist/components/tabs/tabs.d.ts.map +1 -0
- package/dist/components/tabs/tabs.js +122 -0
- package/dist/components/tabs/tabs.js.map +1 -0
- package/dist/components/tabs/tabs.types.d.ts +70 -0
- package/dist/components/tabs/tabs.types.d.ts.map +1 -0
- package/dist/components/tabs/tabs.types.js +2 -0
- package/dist/components/tabs/tabs.types.js.map +1 -0
- package/dist/components/textarea/index.d.ts +3 -0
- package/dist/components/textarea/index.d.ts.map +1 -0
- package/dist/components/textarea/index.js +2 -0
- package/dist/components/textarea/index.js.map +1 -0
- package/dist/components/textarea/textarea.d.ts +8 -0
- package/dist/components/textarea/textarea.d.ts.map +1 -0
- package/dist/components/textarea/textarea.js +13 -0
- package/dist/components/textarea/textarea.js.map +1 -0
- package/dist/components/textarea/textarea.types.d.ts +39 -0
- package/dist/components/textarea/textarea.types.d.ts.map +1 -0
- package/dist/components/textarea/textarea.types.js +2 -0
- package/dist/components/textarea/textarea.types.js.map +1 -0
- package/dist/components/toast/index.d.ts +3 -0
- package/dist/components/toast/index.d.ts.map +1 -0
- package/dist/components/toast/index.js +2 -0
- package/dist/components/toast/index.js.map +1 -0
- package/dist/components/toast/toast.d.ts +24 -0
- package/dist/components/toast/toast.d.ts.map +1 -0
- package/dist/components/toast/toast.js +111 -0
- package/dist/components/toast/toast.js.map +1 -0
- package/dist/components/toast/toast.types.d.ts +103 -0
- package/dist/components/toast/toast.types.d.ts.map +1 -0
- package/dist/components/toast/toast.types.js +2 -0
- package/dist/components/toast/toast.types.js.map +1 -0
- package/dist/components/toolbar/index.d.ts +3 -0
- package/dist/components/toolbar/index.d.ts.map +1 -0
- package/dist/components/toolbar/index.js +2 -0
- package/dist/components/toolbar/index.js.map +1 -0
- package/dist/components/toolbar/toolbar.d.ts +20 -0
- package/dist/components/toolbar/toolbar.d.ts.map +1 -0
- package/dist/components/toolbar/toolbar.js +28 -0
- package/dist/components/toolbar/toolbar.js.map +1 -0
- package/dist/components/toolbar/toolbar.types.d.ts +37 -0
- package/dist/components/toolbar/toolbar.types.d.ts.map +1 -0
- package/dist/components/toolbar/toolbar.types.js +2 -0
- package/dist/components/toolbar/toolbar.types.js.map +1 -0
- package/dist/components/tooltip/index.d.ts +3 -0
- package/dist/components/tooltip/index.d.ts.map +1 -0
- package/dist/components/tooltip/index.js +2 -0
- package/dist/components/tooltip/index.js.map +1 -0
- package/dist/components/tooltip/tooltip.d.ts +8 -0
- package/dist/components/tooltip/tooltip.d.ts.map +1 -0
- package/dist/components/tooltip/tooltip.js +84 -0
- package/dist/components/tooltip/tooltip.js.map +1 -0
- package/dist/components/tooltip/tooltip.types.d.ts +34 -0
- package/dist/components/tooltip/tooltip.types.d.ts.map +1 -0
- package/dist/components/tooltip/tooltip.types.js +2 -0
- package/dist/components/tooltip/tooltip.types.js.map +1 -0
- package/dist/components/tree-view/index.d.ts +3 -0
- package/dist/components/tree-view/index.d.ts.map +1 -0
- package/dist/components/tree-view/index.js +2 -0
- package/dist/components/tree-view/index.js.map +1 -0
- package/dist/components/tree-view/tree-view.d.ts +9 -0
- package/dist/components/tree-view/tree-view.d.ts.map +1 -0
- package/dist/components/tree-view/tree-view.js +573 -0
- package/dist/components/tree-view/tree-view.js.map +1 -0
- package/dist/components/tree-view/tree-view.types.d.ts +92 -0
- package/dist/components/tree-view/tree-view.types.d.ts.map +1 -0
- package/dist/components/tree-view/tree-view.types.js +2 -0
- package/dist/components/tree-view/tree-view.types.js.map +1 -0
- package/dist/components/visually-hidden/index.d.ts +3 -0
- package/dist/components/visually-hidden/index.d.ts.map +1 -0
- package/dist/components/visually-hidden/index.js +2 -0
- package/dist/components/visually-hidden/index.js.map +1 -0
- package/dist/components/visually-hidden/visually-hidden.d.ts +8 -0
- package/dist/components/visually-hidden/visually-hidden.d.ts.map +1 -0
- package/dist/components/visually-hidden/visually-hidden.js +12 -0
- package/dist/components/visually-hidden/visually-hidden.js.map +1 -0
- package/dist/components/visually-hidden/visually-hidden.types.d.ts +9 -0
- package/dist/components/visually-hidden/visually-hidden.types.d.ts.map +1 -0
- package/dist/components/visually-hidden/visually-hidden.types.js +2 -0
- package/dist/components/visually-hidden/visually-hidden.types.js.map +1 -0
- package/dist/errors/index.d.ts +2 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +2 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/ui-error.d.ts +60 -0
- package/dist/errors/ui-error.d.ts.map +1 -0
- package/dist/errors/ui-error.js +219 -0
- package/dist/errors/ui-error.js.map +1 -0
- package/dist/i18n/i18n.d.ts +52 -0
- package/dist/i18n/i18n.d.ts.map +1 -0
- package/dist/i18n/i18n.js +156 -0
- package/dist/i18n/i18n.js.map +1 -0
- package/dist/i18n/index.d.ts +3 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +3 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/icons/icon-names.d.ts +7 -0
- package/dist/icons/icon-names.d.ts.map +1 -0
- package/dist/icons/icon-names.js +2 -0
- package/dist/icons/icon-names.js.map +1 -0
- package/dist/icons/icon-registry.d.ts +30 -0
- package/dist/icons/icon-registry.d.ts.map +1 -0
- package/dist/icons/icon-registry.js +31 -0
- package/dist/icons/icon-registry.js.map +1 -0
- package/dist/icons/index.d.ts +4 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/icons/index.js +2 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/class-names.d.ts +8 -0
- package/dist/internal/class-names.d.ts.map +1 -0
- package/dist/internal/class-names.js +10 -0
- package/dist/internal/class-names.js.map +1 -0
- package/dist/internal/menu/index.d.ts +3 -0
- package/dist/internal/menu/index.d.ts.map +1 -0
- package/dist/internal/menu/index.js +2 -0
- package/dist/internal/menu/index.js.map +1 -0
- package/dist/internal/menu/menu.d.ts +33 -0
- package/dist/internal/menu/menu.d.ts.map +1 -0
- package/dist/internal/menu/menu.js +150 -0
- package/dist/internal/menu/menu.js.map +1 -0
- package/dist/internal/overlay/dismissible-layer.d.ts +38 -0
- package/dist/internal/overlay/dismissible-layer.d.ts.map +1 -0
- package/dist/internal/overlay/dismissible-layer.js +99 -0
- package/dist/internal/overlay/dismissible-layer.js.map +1 -0
- package/dist/internal/overlay/document-scroll-lock.d.ts +8 -0
- package/dist/internal/overlay/document-scroll-lock.d.ts.map +1 -0
- package/dist/internal/overlay/document-scroll-lock.js +58 -0
- package/dist/internal/overlay/document-scroll-lock.js.map +1 -0
- package/dist/internal/overlay/floating-position.d.ts +46 -0
- package/dist/internal/overlay/floating-position.d.ts.map +1 -0
- package/dist/internal/overlay/floating-position.js +137 -0
- package/dist/internal/overlay/floating-position.js.map +1 -0
- package/dist/internal/overlay/index.d.ts +8 -0
- package/dist/internal/overlay/index.d.ts.map +1 -0
- package/dist/internal/overlay/index.js +6 -0
- package/dist/internal/overlay/index.js.map +1 -0
- package/dist/internal/overlay/native-modal.d.ts +11 -0
- package/dist/internal/overlay/native-modal.d.ts.map +1 -0
- package/dist/internal/overlay/native-modal.js +160 -0
- package/dist/internal/overlay/native-modal.js.map +1 -0
- package/dist/internal/overlay/portal-target.d.ts +19 -0
- package/dist/internal/overlay/portal-target.d.ts.map +1 -0
- package/dist/internal/overlay/portal-target.js +113 -0
- package/dist/internal/overlay/portal-target.js.map +1 -0
- package/dist/internal/overlay/top-layer.d.ts +21 -0
- package/dist/internal/overlay/top-layer.d.ts.map +1 -0
- package/dist/internal/overlay/top-layer.js +51 -0
- package/dist/internal/overlay/top-layer.js.map +1 -0
- package/dist/internal/use-merged-ref.d.ts +11 -0
- package/dist/internal/use-merged-ref.d.ts.map +1 -0
- package/dist/internal/use-merged-ref.js +31 -0
- package/dist/internal/use-merged-ref.js.map +1 -0
- package/dist/internal/use-native-dialog.d.ts +9 -0
- package/dist/internal/use-native-dialog.d.ts.map +1 -0
- package/dist/internal/use-native-dialog.js +19 -0
- package/dist/internal/use-native-dialog.js.map +1 -0
- package/dist/runtime/appearance.d.ts +32 -0
- package/dist/runtime/appearance.d.ts.map +1 -0
- package/dist/runtime/appearance.js +123 -0
- package/dist/runtime/appearance.js.map +1 -0
- package/dist/styles/components/alert.css +99 -0
- package/dist/styles/components/avatar.css +70 -0
- package/dist/styles/components/badge.css +101 -0
- package/dist/styles/components/breadcrumb.css +65 -0
- package/dist/styles/components/button.css +136 -0
- package/dist/styles/components/choice.css +120 -0
- package/dist/styles/components/combobox.css +200 -0
- package/dist/styles/components/confirm-dialog.css +50 -0
- package/dist/styles/components/data-table.css +120 -0
- package/dist/styles/components/dialog.css +135 -0
- package/dist/styles/components/divider.css +27 -0
- package/dist/styles/components/drawer.css +160 -0
- package/dist/styles/components/dropdown.css +75 -0
- package/dist/styles/components/dropzone.css +94 -0
- package/dist/styles/components/empty-state.css +85 -0
- package/dist/styles/components/file-upload.css +145 -0
- package/dist/styles/components/form-field.css +49 -0
- package/dist/styles/components/icon.css +53 -0
- package/dist/styles/components/inline-message.css +33 -0
- package/dist/styles/components/input.css +77 -0
- package/dist/styles/components/list.css +132 -0
- package/dist/styles/components/loading-overlay.css +24 -0
- package/dist/styles/components/menu.css +6 -0
- package/dist/styles/components/multi-select.css +68 -0
- package/dist/styles/components/navigation.css +116 -0
- package/dist/styles/components/page-layout.css +279 -0
- package/dist/styles/components/pagination.css +99 -0
- package/dist/styles/components/panel.css +123 -0
- package/dist/styles/components/popover.css +41 -0
- package/dist/styles/components/progress.css +65 -0
- package/dist/styles/components/search-input.css +12 -0
- package/dist/styles/components/select.css +56 -0
- package/dist/styles/components/skeleton.css +93 -0
- package/dist/styles/components/spinner.css +27 -0
- package/dist/styles/components/status-indicator.css +54 -0
- package/dist/styles/components/switch.css +111 -0
- package/dist/styles/components/table.css +127 -0
- package/dist/styles/components/tabs.css +144 -0
- package/dist/styles/components/textarea.css +79 -0
- package/dist/styles/components/toast.css +134 -0
- package/dist/styles/components/toolbar.css +27 -0
- package/dist/styles/components/tooltip.css +32 -0
- package/dist/styles/components/tree-view.css +146 -0
- package/dist/styles/components.css +45 -0
- package/dist/styles/foundation/controls.css +91 -0
- package/dist/styles/foundation/density.css +76 -0
- package/dist/styles/foundation/icons.css +29 -0
- package/dist/styles/foundation/layout.css +150 -0
- package/dist/styles/foundation/motion.css +58 -0
- package/dist/styles/foundation/surface.css +60 -0
- package/dist/styles/foundation/theme.css +166 -0
- package/dist/styles/foundation/typography.css +84 -0
- package/dist/styles/foundation.css +10 -0
- package/dist/styles/miaixz.css +4 -0
- package/package.json +304 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactElement, ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Describes the event and ARIA properties injected into a tooltip child.
|
|
4
|
+
*
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export interface MiaixzTooltipChildProps {
|
|
8
|
+
/**
|
|
9
|
+
* References the tooltip together with any existing descriptions.
|
|
10
|
+
*/
|
|
11
|
+
"aria-describedby"?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Configures concise contextual help associated with one child.
|
|
15
|
+
*
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
export interface TooltipProps extends Omit<HTMLAttributes<HTMLSpanElement>, "content"> {
|
|
19
|
+
/**
|
|
20
|
+
* Supplies the contextual help content.
|
|
21
|
+
*/
|
|
22
|
+
content: ReactNode;
|
|
23
|
+
/**
|
|
24
|
+
* Supplies the single element described by the tooltip.
|
|
25
|
+
*/
|
|
26
|
+
children: ReactElement<MiaixzTooltipChildProps>;
|
|
27
|
+
/**
|
|
28
|
+
* Selects the tooltip placement relative to its child.
|
|
29
|
+
*
|
|
30
|
+
* @defaultValue `"top"`
|
|
31
|
+
*/
|
|
32
|
+
placement?: "top" | "right" | "bottom" | "left";
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=tooltip.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.types.d.ts","sourceRoot":"","sources":["../../../src/components/tooltip/tooltip.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAErE;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC;IACpF;;OAEG;IACH,OAAO,EAAE,SAAS,CAAC;IACnB;;OAEG;IACH,QAAQ,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAAC;IAChD;;;;OAIG;IACH,SAAS,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;CACjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.types.js","sourceRoot":"","sources":["../../../src/components/tooltip/tooltip.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { HTMLAttributes, ReactElement, ReactNode } from \"react\";\n\n/**\n * Describes the event and ARIA properties injected into a tooltip child.\n *\n * @public\n */\nexport interface MiaixzTooltipChildProps {\n /**\n * References the tooltip together with any existing descriptions.\n */\n \"aria-describedby\"?: string;\n}\n\n/**\n * Configures concise contextual help associated with one child.\n *\n * @public\n */\nexport interface TooltipProps extends Omit<HTMLAttributes<HTMLSpanElement>, \"content\"> {\n /**\n * Supplies the contextual help content.\n */\n content: ReactNode;\n /**\n * Supplies the single element described by the tooltip.\n */\n children: ReactElement<MiaixzTooltipChildProps>;\n /**\n * Selects the tooltip placement relative to its child.\n *\n * @defaultValue `\"top\"`\n */\n placement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/tree-view/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,sBAAsB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/tree-view/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["export { TreeView } from \"./tree-view.js\";\nexport type { MiaixzTreeViewOwnProps, TreeNode, TreeViewProps } from \"./tree-view.types.js\";\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ReactElement, type RefAttributes } from "react";
|
|
2
|
+
import type { TreeViewProps } from "./tree-view.types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Renders a business-neutral WAI-ARIA tree view.
|
|
5
|
+
*
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export declare const TreeView: <Value = unknown>(props: TreeViewProps<Value> & RefAttributes<HTMLDivElement>) => ReactElement;
|
|
9
|
+
//# sourceMappingURL=tree-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-view.d.ts","sourceRoot":"","sources":["../../../src/components/tree-view/tree-view.tsx"],"names":[],"mappings":"AAAA,OAAO,EAYL,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,OAAO,CAAC;AAOf,OAAO,KAAK,EAAY,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAkjBpE;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAyC,CAAC,KAAK,GAAG,OAAO,EAC5E,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,cAAc,CAAC,KACxD,YAAY,CAAC"}
|
|
@@ -0,0 +1,573 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, } from "react";
|
|
3
|
+
import { createMiaixzUiError, MiaixzUiError } from "../../errors/index.js";
|
|
4
|
+
import { useMiaixzLocale } from "../../i18n/index.js";
|
|
5
|
+
import { classNames } from "../../internal/class-names.js";
|
|
6
|
+
import { useMergedRef } from "../../internal/use-merged-ref.js";
|
|
7
|
+
import { Icon } from "../icon/index.js";
|
|
8
|
+
/**
|
|
9
|
+
* Defines the delay used to combine printable-key tree navigation.
|
|
10
|
+
*/
|
|
11
|
+
const miaixzTreeTypeaheadResetMilliseconds = 500;
|
|
12
|
+
/**
|
|
13
|
+
* Renders the public generic TreeView implementation.
|
|
14
|
+
*
|
|
15
|
+
* @typeParam Value - Consumer-owned value attached to each node.
|
|
16
|
+
* @param props - Public tree configuration and native root attributes.
|
|
17
|
+
* @param forwardedRef - Forwarded root div reference.
|
|
18
|
+
* @returns A keyboard-navigable WAI-ARIA tree.
|
|
19
|
+
*/
|
|
20
|
+
function TreeViewImplementation(props, forwardedRef) {
|
|
21
|
+
const { nodes, selectionMode = "single", selectedIds, defaultSelectedIds, onSelectedIdsChange, expandedIds, defaultExpandedIds, onExpandedIdsChange, loadChildren, label, className, onBlurCapture, onFocusCapture, ...rootProps } = props;
|
|
22
|
+
const { t } = useMiaixzLocale();
|
|
23
|
+
const selectedControlled = selectedIds !== undefined;
|
|
24
|
+
const expandedControlled = expandedIds !== undefined;
|
|
25
|
+
validateMiaixzTreeControlledValue(t, selectedControlled, defaultSelectedIds !== undefined, onSelectedIdsChange !== undefined);
|
|
26
|
+
validateMiaixzTreeControlledValue(t, expandedControlled, defaultExpandedIds !== undefined, onExpandedIdsChange !== undefined);
|
|
27
|
+
useStableMiaixzTreeControlModes(t, selectedControlled, expandedControlled);
|
|
28
|
+
const [internalSelectedIds, setInternalSelectedIds] = useState(() => createUniqueMiaixzTreeIds(defaultSelectedIds ?? []));
|
|
29
|
+
const [internalExpandedIds, setInternalExpandedIds] = useState(() => createUniqueMiaixzTreeIds(defaultExpandedIds ?? []));
|
|
30
|
+
const [childCache, setChildCache] = useState(() => new Map());
|
|
31
|
+
const [loadingIds, setLoadingIds] = useState(() => new Set());
|
|
32
|
+
const [failedIds, setFailedIds] = useState(() => new Set());
|
|
33
|
+
const [focusedId, setFocusedId] = useState(null);
|
|
34
|
+
const [fatalError, setFatalError] = useState(null);
|
|
35
|
+
const rootElementRef = useRef(null);
|
|
36
|
+
const rootRef = useMergedRef(forwardedRef, rootElementRef);
|
|
37
|
+
const itemRefs = useRef(new Map());
|
|
38
|
+
const pendingLoadsRef = useRef(new Map());
|
|
39
|
+
const childCacheRef = useRef(new Map());
|
|
40
|
+
const selectedSnapshotRef = useRef(createUniqueMiaixzTreeIds(selectedIds ?? defaultSelectedIds ?? []));
|
|
41
|
+
const expandedSnapshotRef = useRef(createUniqueMiaixzTreeIds(expandedIds ?? defaultExpandedIds ?? []));
|
|
42
|
+
const typeaheadRef = useRef("");
|
|
43
|
+
const typeaheadTimerRef = useRef(undefined);
|
|
44
|
+
const treeHadFocusRef = useRef(false);
|
|
45
|
+
const currentSelectedIds = createUniqueMiaixzTreeIds(selectedControlled ? (selectedIds ?? []) : internalSelectedIds);
|
|
46
|
+
const currentExpandedIds = createUniqueMiaixzTreeIds(expandedControlled ? (expandedIds ?? []) : internalExpandedIds);
|
|
47
|
+
const selectedSet = useMemo(() => new Set(currentSelectedIds), [currentSelectedIds]);
|
|
48
|
+
const expandedSet = useMemo(() => new Set(currentExpandedIds), [currentExpandedIds]);
|
|
49
|
+
const treeIndex = useMemo(() => createMiaixzTreeIndex(t, nodes, childCache), [childCache, nodes, t]);
|
|
50
|
+
const visibleNodes = useMemo(() => createVisibleMiaixzTreeNodes(nodes, childCache, expandedSet), [childCache, expandedSet, nodes]);
|
|
51
|
+
const visibleIdSet = useMemo(() => new Set(visibleNodes.map((entry) => entry.node.id)), [visibleNodes]);
|
|
52
|
+
const resolvedFocusedId = resolveMiaixzTreeFocusedId(focusedId, currentSelectedIds, visibleNodes, visibleIdSet, treeIndex);
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
if (selectedControlled)
|
|
55
|
+
selectedSnapshotRef.current = currentSelectedIds;
|
|
56
|
+
}, [currentSelectedIds, selectedControlled]);
|
|
57
|
+
useEffect(() => {
|
|
58
|
+
if (expandedControlled)
|
|
59
|
+
expandedSnapshotRef.current = currentExpandedIds;
|
|
60
|
+
}, [currentExpandedIds, expandedControlled]);
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
const reachableIds = treeIndex.ids;
|
|
63
|
+
let cancelled = false;
|
|
64
|
+
queueMicrotask(() => {
|
|
65
|
+
if (cancelled)
|
|
66
|
+
return;
|
|
67
|
+
const nextCache = new Map(childCacheRef.current);
|
|
68
|
+
let changed = false;
|
|
69
|
+
for (const id of nextCache.keys()) {
|
|
70
|
+
if (reachableIds.has(id))
|
|
71
|
+
continue;
|
|
72
|
+
nextCache.delete(id);
|
|
73
|
+
changed = true;
|
|
74
|
+
}
|
|
75
|
+
for (const [id, pending] of pendingLoadsRef.current) {
|
|
76
|
+
if (reachableIds.has(id))
|
|
77
|
+
continue;
|
|
78
|
+
pending.controller.abort();
|
|
79
|
+
pendingLoadsRef.current.delete(id);
|
|
80
|
+
}
|
|
81
|
+
if (changed) {
|
|
82
|
+
childCacheRef.current = nextCache;
|
|
83
|
+
setChildCache(nextCache);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
return () => {
|
|
87
|
+
cancelled = true;
|
|
88
|
+
};
|
|
89
|
+
}, [treeIndex.ids]);
|
|
90
|
+
useEffect(() => () => {
|
|
91
|
+
if (typeaheadTimerRef.current !== undefined) {
|
|
92
|
+
window.clearTimeout(typeaheadTimerRef.current);
|
|
93
|
+
}
|
|
94
|
+
for (const pending of pendingLoadsRef.current.values())
|
|
95
|
+
pending.controller.abort();
|
|
96
|
+
pendingLoadsRef.current.clear();
|
|
97
|
+
}, []);
|
|
98
|
+
useLayoutEffect(() => {
|
|
99
|
+
if (focusedId !== resolvedFocusedId && resolvedFocusedId !== null && treeHadFocusRef.current) {
|
|
100
|
+
itemRefs.current.get(resolvedFocusedId)?.focus({ preventScroll: true });
|
|
101
|
+
}
|
|
102
|
+
}, [focusedId, resolvedFocusedId]);
|
|
103
|
+
const emitSelectedIds = useCallback((nextIds) => {
|
|
104
|
+
const normalizedIds = createUniqueMiaixzTreeIds(nextIds);
|
|
105
|
+
if (!selectedControlled) {
|
|
106
|
+
selectedSnapshotRef.current = normalizedIds;
|
|
107
|
+
setInternalSelectedIds(normalizedIds);
|
|
108
|
+
}
|
|
109
|
+
onSelectedIdsChange?.(normalizedIds);
|
|
110
|
+
}, [onSelectedIdsChange, selectedControlled]);
|
|
111
|
+
const emitExpandedIds = useCallback((nextIds) => {
|
|
112
|
+
const normalizedIds = createUniqueMiaixzTreeIds(nextIds);
|
|
113
|
+
if (!expandedControlled) {
|
|
114
|
+
expandedSnapshotRef.current = normalizedIds;
|
|
115
|
+
setInternalExpandedIds(normalizedIds);
|
|
116
|
+
}
|
|
117
|
+
onExpandedIdsChange?.(normalizedIds);
|
|
118
|
+
}, [expandedControlled, onExpandedIdsChange]);
|
|
119
|
+
const setNodeExpanded = useCallback((nodeId, expanded) => {
|
|
120
|
+
const currentIds = expandedSnapshotRef.current;
|
|
121
|
+
const nextIds = expanded
|
|
122
|
+
? currentIds.includes(nodeId)
|
|
123
|
+
? currentIds
|
|
124
|
+
: [...currentIds, nodeId]
|
|
125
|
+
: currentIds.filter((id) => id !== nodeId);
|
|
126
|
+
emitExpandedIds(nextIds);
|
|
127
|
+
}, [emitExpandedIds]);
|
|
128
|
+
const setNodeSelected = useCallback((node) => {
|
|
129
|
+
if (selectionMode === "none" || node.disabled === true)
|
|
130
|
+
return;
|
|
131
|
+
const currentIds = selectedSnapshotRef.current;
|
|
132
|
+
if (selectionMode === "single") {
|
|
133
|
+
emitSelectedIds([node.id]);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
emitSelectedIds(currentIds.includes(node.id)
|
|
137
|
+
? currentIds.filter((id) => id !== node.id)
|
|
138
|
+
: [...currentIds, node.id]);
|
|
139
|
+
}, [emitSelectedIds, selectionMode]);
|
|
140
|
+
const focusNode = useCallback((nodeId) => {
|
|
141
|
+
setFocusedId(nodeId);
|
|
142
|
+
itemRefs.current.get(nodeId)?.focus({ preventScroll: true });
|
|
143
|
+
}, []);
|
|
144
|
+
const loadLazyChildren = useCallback((node) => {
|
|
145
|
+
if (loadChildren === undefined || node.disabled === true)
|
|
146
|
+
return;
|
|
147
|
+
const existing = pendingLoadsRef.current.get(node.id);
|
|
148
|
+
if (existing !== undefined)
|
|
149
|
+
return existing.promise;
|
|
150
|
+
const controller = new AbortController();
|
|
151
|
+
setLoadingIds((currentIds) => addMiaixzTreeSetValue(currentIds, node.id));
|
|
152
|
+
setFailedIds((currentIds) => removeMiaixzTreeSetValue(currentIds, node.id));
|
|
153
|
+
const promise = loadChildren(node, controller.signal)
|
|
154
|
+
.then((children) => {
|
|
155
|
+
if (controller.signal.aborted)
|
|
156
|
+
return;
|
|
157
|
+
const nextCache = new Map(childCacheRef.current);
|
|
158
|
+
nextCache.set(node.id, children);
|
|
159
|
+
createMiaixzTreeIndex(t, nodes, nextCache);
|
|
160
|
+
childCacheRef.current = nextCache;
|
|
161
|
+
setChildCache(nextCache);
|
|
162
|
+
setFailedIds((currentIds) => removeMiaixzTreeSetValue(currentIds, node.id));
|
|
163
|
+
if (children.length > 0)
|
|
164
|
+
setNodeExpanded(node.id, true);
|
|
165
|
+
})
|
|
166
|
+
.catch((error) => {
|
|
167
|
+
if (controller.signal.aborted)
|
|
168
|
+
return;
|
|
169
|
+
if (error instanceof MiaixzUiError && error.code === "UI_TREE_DUPLICATE_ID") {
|
|
170
|
+
setFatalError(error);
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
setFailedIds((currentIds) => addMiaixzTreeSetValue(currentIds, node.id));
|
|
174
|
+
})
|
|
175
|
+
.finally(() => {
|
|
176
|
+
const current = pendingLoadsRef.current.get(node.id);
|
|
177
|
+
if (current?.promise === promise)
|
|
178
|
+
pendingLoadsRef.current.delete(node.id);
|
|
179
|
+
if (!controller.signal.aborted) {
|
|
180
|
+
setLoadingIds((currentIds) => removeMiaixzTreeSetValue(currentIds, node.id));
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
pendingLoadsRef.current.set(node.id, { controller, promise });
|
|
184
|
+
return promise;
|
|
185
|
+
}, [loadChildren, nodes, setNodeExpanded, t]);
|
|
186
|
+
const toggleNodeExpanded = useCallback((node) => {
|
|
187
|
+
if (node.disabled === true)
|
|
188
|
+
return;
|
|
189
|
+
if (expandedSnapshotRef.current.includes(node.id)) {
|
|
190
|
+
setNodeExpanded(node.id, false);
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
const resolvedChildren = resolveMiaixzTreeChildren(node, childCache);
|
|
194
|
+
if (resolvedChildren !== undefined) {
|
|
195
|
+
if (resolvedChildren.length > 0)
|
|
196
|
+
setNodeExpanded(node.id, true);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
if (node.hasChildren === true)
|
|
200
|
+
void loadLazyChildren(node);
|
|
201
|
+
}, [childCache, loadLazyChildren, setNodeExpanded]);
|
|
202
|
+
const handleTreeItemKeyDown = useCallback((event, entry) => {
|
|
203
|
+
event.stopPropagation();
|
|
204
|
+
const visibleIndex = visibleNodes.findIndex((candidate) => candidate.node.id === entry.node.id);
|
|
205
|
+
if (event.key === "ArrowDown") {
|
|
206
|
+
event.preventDefault();
|
|
207
|
+
const next = visibleNodes[Math.min(visibleIndex + 1, visibleNodes.length - 1)];
|
|
208
|
+
if (next !== undefined)
|
|
209
|
+
focusNode(next.node.id);
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
if (event.key === "ArrowUp") {
|
|
213
|
+
event.preventDefault();
|
|
214
|
+
const previous = visibleNodes[Math.max(visibleIndex - 1, 0)];
|
|
215
|
+
if (previous !== undefined)
|
|
216
|
+
focusNode(previous.node.id);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
if (event.key === "Home") {
|
|
220
|
+
event.preventDefault();
|
|
221
|
+
const first = visibleNodes[0];
|
|
222
|
+
if (first !== undefined)
|
|
223
|
+
focusNode(first.node.id);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
if (event.key === "End") {
|
|
227
|
+
event.preventDefault();
|
|
228
|
+
const last = visibleNodes[visibleNodes.length - 1];
|
|
229
|
+
if (last !== undefined)
|
|
230
|
+
focusNode(last.node.id);
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
if (event.key === "ArrowRight") {
|
|
234
|
+
event.preventDefault();
|
|
235
|
+
if (isMiaixzTreeNodeExpandable(entry.node, childCache) && !expandedSet.has(entry.node.id)) {
|
|
236
|
+
toggleNodeExpanded(entry.node);
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
const next = visibleNodes[visibleIndex + 1];
|
|
240
|
+
if (expandedSet.has(entry.node.id) && next?.parentId === entry.node.id) {
|
|
241
|
+
focusNode(next.node.id);
|
|
242
|
+
}
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
if (event.key === "ArrowLeft") {
|
|
246
|
+
event.preventDefault();
|
|
247
|
+
if (expandedSet.has(entry.node.id)) {
|
|
248
|
+
toggleNodeExpanded(entry.node);
|
|
249
|
+
}
|
|
250
|
+
else if (entry.parentId !== null) {
|
|
251
|
+
focusNode(entry.parentId);
|
|
252
|
+
}
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
256
|
+
event.preventDefault();
|
|
257
|
+
setNodeSelected(entry.node);
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
if (isMiaixzTreeTypeaheadKey(event)) {
|
|
261
|
+
typeaheadRef.current += event.key.toLocaleLowerCase();
|
|
262
|
+
if (typeaheadTimerRef.current !== undefined) {
|
|
263
|
+
window.clearTimeout(typeaheadTimerRef.current);
|
|
264
|
+
}
|
|
265
|
+
typeaheadTimerRef.current = window.setTimeout(() => {
|
|
266
|
+
typeaheadRef.current = "";
|
|
267
|
+
typeaheadTimerRef.current = undefined;
|
|
268
|
+
}, miaixzTreeTypeaheadResetMilliseconds);
|
|
269
|
+
const match = findMiaixzTreeTypeaheadMatch(visibleNodes, visibleIndex, typeaheadRef.current);
|
|
270
|
+
if (match !== undefined)
|
|
271
|
+
focusNode(match.node.id);
|
|
272
|
+
}
|
|
273
|
+
}, [childCache, expandedSet, focusNode, setNodeSelected, toggleNodeExpanded, visibleNodes]);
|
|
274
|
+
const handleFocusCapture = useCallback((event) => {
|
|
275
|
+
treeHadFocusRef.current = true;
|
|
276
|
+
onFocusCapture?.(event);
|
|
277
|
+
}, [onFocusCapture]);
|
|
278
|
+
const handleBlurCapture = useCallback((event) => {
|
|
279
|
+
if (!event.currentTarget.contains(event.relatedTarget)) {
|
|
280
|
+
queueMicrotask(() => {
|
|
281
|
+
treeHadFocusRef.current =
|
|
282
|
+
rootElementRef.current?.contains(document.activeElement) === true;
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
onBlurCapture?.(event);
|
|
286
|
+
}, [onBlurCapture]);
|
|
287
|
+
/**
|
|
288
|
+
* Renders one sibling collection and its recursively expanded descendants.
|
|
289
|
+
*
|
|
290
|
+
* @param siblings - Ordered sibling nodes to render.
|
|
291
|
+
* @returns Tree item elements for the supplied sibling collection.
|
|
292
|
+
*/
|
|
293
|
+
const renderNodes = (siblings) => siblings.map((node) => {
|
|
294
|
+
const entry = treeIndex.byId.get(node.id);
|
|
295
|
+
const resolvedChildren = resolveMiaixzTreeChildren(node, childCache);
|
|
296
|
+
const expandable = isMiaixzTreeNodeExpandable(node, childCache);
|
|
297
|
+
const expanded = expandable && expandedSet.has(node.id);
|
|
298
|
+
const selected = selectedSet.has(node.id);
|
|
299
|
+
const loading = loadingIds.has(node.id);
|
|
300
|
+
const failed = failedIds.has(node.id);
|
|
301
|
+
const itemState = loading
|
|
302
|
+
? "loading"
|
|
303
|
+
: failed
|
|
304
|
+
? "error"
|
|
305
|
+
: expanded
|
|
306
|
+
? "expanded"
|
|
307
|
+
: "collapsed";
|
|
308
|
+
return (_jsxs("div", { ref: (element) => {
|
|
309
|
+
if (element === null)
|
|
310
|
+
itemRefs.current.delete(node.id);
|
|
311
|
+
else
|
|
312
|
+
itemRefs.current.set(node.id, element);
|
|
313
|
+
}, role: "treeitem", tabIndex: node.id === resolvedFocusedId ? 0 : -1, "aria-level": entry.level, "aria-posinset": entry.position, "aria-setsize": entry.setSize, "aria-label": getMiaixzTreeLabelText(node.label) || undefined, "aria-expanded": expandable ? expanded : undefined, "aria-selected": selectionMode === "none" ? undefined : selected, "aria-disabled": node.disabled || undefined, "aria-busy": loading || undefined, className: "miaixz-tree-view-item", "data-state": itemState, "data-disabled": node.disabled || undefined, onFocus: (event) => {
|
|
314
|
+
event.stopPropagation();
|
|
315
|
+
setFocusedId(node.id);
|
|
316
|
+
}, onKeyDown: (event) => handleTreeItemKeyDown(event, entry), children: [_jsxs("div", { className: "miaixz-tree-view-row", onClick: () => {
|
|
317
|
+
focusNode(node.id);
|
|
318
|
+
setNodeSelected(node);
|
|
319
|
+
}, children: [_jsx("span", { className: "miaixz-tree-view-expander", "data-state": expandable ? (expanded ? "expanded" : "collapsed") : "leaf", onClick: (event) => {
|
|
320
|
+
event.stopPropagation();
|
|
321
|
+
focusNode(node.id);
|
|
322
|
+
if (expandable)
|
|
323
|
+
toggleNodeExpanded(node);
|
|
324
|
+
}, children: loading ? (_jsx(Icon, { name: "LoaderCircle", size: "control", className: "miaixz-icon-spin" })) : expandable ? (_jsx(Icon, { name: expanded ? "ChevronDown" : "ChevronRight", size: "control" })) : null }), _jsx("span", { className: "miaixz-tree-view-label", children: node.label }), selected && selectionMode !== "none" && (_jsx(Icon, { name: "Check", size: "control", className: "miaixz-tree-view-selection" }))] }), failed && (_jsxs("div", { className: "miaixz-tree-view-error", role: "alert", children: [_jsx("span", { children: t("ui.tree.loadError") }), _jsxs("button", { type: "button", className: "miaixz-tree-view-retry", onClick: (event) => {
|
|
325
|
+
event.stopPropagation();
|
|
326
|
+
void loadLazyChildren(node);
|
|
327
|
+
}, children: [_jsx(Icon, { name: "RotateCcw", size: "indicator" }), t("ui.action.retry")] })] })), expanded && resolvedChildren !== undefined && resolvedChildren.length > 0 && (_jsx("div", { role: "group", className: "miaixz-tree-view-group", children: renderNodes(resolvedChildren) }))] }, node.id));
|
|
328
|
+
});
|
|
329
|
+
if (fatalError !== null)
|
|
330
|
+
throw fatalError;
|
|
331
|
+
return (_jsx("div", { ...rootProps, ref: rootRef, role: "tree", "aria-label": label, "aria-multiselectable": selectionMode === "multiple" || undefined, className: classNames("miaixz-tree-view", className), onFocusCapture: handleFocusCapture, onBlurCapture: handleBlurCapture, children: renderNodes(nodes) }));
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Renders a business-neutral WAI-ARIA tree view.
|
|
335
|
+
*
|
|
336
|
+
* @public
|
|
337
|
+
*/
|
|
338
|
+
export const TreeView = forwardRef(TreeViewImplementation);
|
|
339
|
+
/**
|
|
340
|
+
* Validates one selected or expanded controlled-value contract.
|
|
341
|
+
*
|
|
342
|
+
* @param translate - Active localized message resolver.
|
|
343
|
+
* @param controlled - Whether a controlled value was supplied.
|
|
344
|
+
* @param hasDefault - Whether an uncontrolled default was supplied.
|
|
345
|
+
* @param hasChangeHandler - Whether requested changes can be observed.
|
|
346
|
+
*/
|
|
347
|
+
function validateMiaixzTreeControlledValue(translate, controlled, hasDefault, hasChangeHandler) {
|
|
348
|
+
if (controlled && (!hasChangeHandler || hasDefault)) {
|
|
349
|
+
throw createMiaixzUiError(translate, {
|
|
350
|
+
code: "UI_CONTROLLED_VALUE_INVALID",
|
|
351
|
+
messageKey: "ui.error.controlled.valueInvalid",
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Freezes selected and expanded control modes for the mounted lifetime.
|
|
357
|
+
*
|
|
358
|
+
* @param translate - Active localized message resolver.
|
|
359
|
+
* @param selectedControlled - Current selection control mode.
|
|
360
|
+
* @param expandedControlled - Current expansion control mode.
|
|
361
|
+
*/
|
|
362
|
+
function useStableMiaixzTreeControlModes(translate, selectedControlled, expandedControlled) {
|
|
363
|
+
const [initialModes] = useState({
|
|
364
|
+
selected: selectedControlled,
|
|
365
|
+
expanded: expandedControlled,
|
|
366
|
+
});
|
|
367
|
+
if (initialModes.selected !== selectedControlled ||
|
|
368
|
+
initialModes.expanded !== expandedControlled) {
|
|
369
|
+
throw createMiaixzUiError(translate, {
|
|
370
|
+
code: "UI_CONTROL_MODE_CHANGED",
|
|
371
|
+
messageKey: "ui.error.controlled.modeChanged",
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Produces an ordered identifier list without duplicate values.
|
|
377
|
+
*
|
|
378
|
+
* @param ids - Source identifier collection.
|
|
379
|
+
* @returns Ordered unique identifier collection.
|
|
380
|
+
*/
|
|
381
|
+
function createUniqueMiaixzTreeIds(ids) {
|
|
382
|
+
return [...new Set(ids)];
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Builds the complete reachable tree index and validates identifier uniqueness.
|
|
386
|
+
*
|
|
387
|
+
* @typeParam Value - Consumer-owned value attached to each node.
|
|
388
|
+
* @param translate - Active localized message resolver.
|
|
389
|
+
* @param nodes - Root node collection.
|
|
390
|
+
* @param childCache - Successful lazy child results.
|
|
391
|
+
* @returns Complete immutable structural index.
|
|
392
|
+
*/
|
|
393
|
+
function createMiaixzTreeIndex(translate, nodes, childCache) {
|
|
394
|
+
const byId = new Map();
|
|
395
|
+
/**
|
|
396
|
+
* Visits one sibling collection in source order.
|
|
397
|
+
*
|
|
398
|
+
* @param siblings - Ordered siblings at the current depth.
|
|
399
|
+
* @param parentId - Parent identifier or null for roots.
|
|
400
|
+
* @param level - One-based ARIA depth.
|
|
401
|
+
*/
|
|
402
|
+
function visit(siblings, parentId, level) {
|
|
403
|
+
siblings.forEach((node, index) => {
|
|
404
|
+
if (byId.has(node.id)) {
|
|
405
|
+
throw createMiaixzUiError(translate, {
|
|
406
|
+
code: "UI_TREE_DUPLICATE_ID",
|
|
407
|
+
messageKey: "ui.error.tree.duplicateId",
|
|
408
|
+
details: { duplicateId: node.id },
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
byId.set(node.id, {
|
|
412
|
+
node,
|
|
413
|
+
parentId,
|
|
414
|
+
level,
|
|
415
|
+
position: index + 1,
|
|
416
|
+
setSize: siblings.length,
|
|
417
|
+
});
|
|
418
|
+
const children = resolveMiaixzTreeChildren(node, childCache);
|
|
419
|
+
if (children !== undefined)
|
|
420
|
+
visit(children, node.id, level + 1);
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
visit(nodes, null, 1);
|
|
424
|
+
return { byId, ids: new Set(byId.keys()) };
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Creates the ordered visible-node collection for current expansion state.
|
|
428
|
+
*
|
|
429
|
+
* @typeParam Value - Consumer-owned value attached to each node.
|
|
430
|
+
* @param nodes - Root node collection.
|
|
431
|
+
* @param childCache - Successful lazy child results.
|
|
432
|
+
* @param expandedIds - Currently expanded identifiers.
|
|
433
|
+
* @returns Visible nodes in depth-first keyboard order.
|
|
434
|
+
*/
|
|
435
|
+
function createVisibleMiaixzTreeNodes(nodes, childCache, expandedIds) {
|
|
436
|
+
const result = [];
|
|
437
|
+
/**
|
|
438
|
+
* Appends one sibling collection and expanded descendants.
|
|
439
|
+
*
|
|
440
|
+
* @param siblings - Ordered siblings at the current depth.
|
|
441
|
+
* @param parentId - Parent identifier or null for roots.
|
|
442
|
+
* @param level - One-based ARIA depth.
|
|
443
|
+
*/
|
|
444
|
+
function append(siblings, parentId, level) {
|
|
445
|
+
siblings.forEach((node, index) => {
|
|
446
|
+
result.push({
|
|
447
|
+
node,
|
|
448
|
+
parentId,
|
|
449
|
+
level,
|
|
450
|
+
position: index + 1,
|
|
451
|
+
setSize: siblings.length,
|
|
452
|
+
});
|
|
453
|
+
const children = resolveMiaixzTreeChildren(node, childCache);
|
|
454
|
+
if (expandedIds.has(node.id) && children !== undefined && children.length > 0) {
|
|
455
|
+
append(children, node.id, level + 1);
|
|
456
|
+
}
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
append(nodes, null, 1);
|
|
460
|
+
return result;
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Resolves static or successfully loaded children for one node.
|
|
464
|
+
*
|
|
465
|
+
* @typeParam Value - Consumer-owned value attached to the node.
|
|
466
|
+
* @param node - Node whose children are requested.
|
|
467
|
+
* @param childCache - Successful lazy child results.
|
|
468
|
+
* @returns Loaded child collection, including an empty result, or undefined.
|
|
469
|
+
*/
|
|
470
|
+
function resolveMiaixzTreeChildren(node, childCache) {
|
|
471
|
+
return node.children ?? childCache.get(node.id);
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Reports whether one node currently exposes an expansion affordance.
|
|
475
|
+
*
|
|
476
|
+
* @typeParam Value - Consumer-owned value attached to the node.
|
|
477
|
+
* @param node - Candidate tree node.
|
|
478
|
+
* @param childCache - Successful lazy child results.
|
|
479
|
+
* @returns Whether the node has visible or loadable children.
|
|
480
|
+
*/
|
|
481
|
+
function isMiaixzTreeNodeExpandable(node, childCache) {
|
|
482
|
+
const children = resolveMiaixzTreeChildren(node, childCache);
|
|
483
|
+
return children === undefined ? node.hasChildren === true : children.length > 0;
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* Resolves the sole visible roving-tabindex node.
|
|
487
|
+
*
|
|
488
|
+
* @typeParam Value - Consumer-owned value attached to each node.
|
|
489
|
+
* @param focusedId - Last explicitly focused identifier.
|
|
490
|
+
* @param selectedIds - Ordered selected identifiers.
|
|
491
|
+
* @param visibleNodes - Current depth-first visible nodes.
|
|
492
|
+
* @param visibleIds - Set form of the visible identifiers.
|
|
493
|
+
* @param treeIndex - Complete reachable tree index.
|
|
494
|
+
* @returns Visible focused identifier or null for an empty tree.
|
|
495
|
+
*/
|
|
496
|
+
function resolveMiaixzTreeFocusedId(focusedId, selectedIds, visibleNodes, visibleIds, treeIndex) {
|
|
497
|
+
if (focusedId !== null) {
|
|
498
|
+
let candidate = focusedId;
|
|
499
|
+
while (candidate !== null) {
|
|
500
|
+
if (visibleIds.has(candidate))
|
|
501
|
+
return candidate;
|
|
502
|
+
candidate = treeIndex.byId.get(candidate)?.parentId ?? null;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
const selected = selectedIds.find((id) => visibleIds.has(id));
|
|
506
|
+
return selected ?? visibleNodes[0]?.node.id ?? null;
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* Adds one value to an immutable set snapshot.
|
|
510
|
+
*
|
|
511
|
+
* @param values - Current set snapshot.
|
|
512
|
+
* @param value - Value to add.
|
|
513
|
+
* @returns Original or updated set snapshot.
|
|
514
|
+
*/
|
|
515
|
+
function addMiaixzTreeSetValue(values, value) {
|
|
516
|
+
if (values.has(value))
|
|
517
|
+
return values;
|
|
518
|
+
const nextValues = new Set(values);
|
|
519
|
+
nextValues.add(value);
|
|
520
|
+
return nextValues;
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* Removes one value from an immutable set snapshot.
|
|
524
|
+
*
|
|
525
|
+
* @param values - Current set snapshot.
|
|
526
|
+
* @param value - Value to remove.
|
|
527
|
+
* @returns Original or updated set snapshot.
|
|
528
|
+
*/
|
|
529
|
+
function removeMiaixzTreeSetValue(values, value) {
|
|
530
|
+
if (!values.has(value))
|
|
531
|
+
return values;
|
|
532
|
+
const nextValues = new Set(values);
|
|
533
|
+
nextValues.delete(value);
|
|
534
|
+
return nextValues;
|
|
535
|
+
}
|
|
536
|
+
/**
|
|
537
|
+
* Reports whether a keyboard event contains one printable typeahead character.
|
|
538
|
+
*
|
|
539
|
+
* @param event - Tree-item keyboard event.
|
|
540
|
+
* @returns Whether the key can participate in typeahead navigation.
|
|
541
|
+
*/
|
|
542
|
+
function isMiaixzTreeTypeaheadKey(event) {
|
|
543
|
+
return (event.key.length === 1 && event.key !== " " && !event.altKey && !event.ctrlKey && !event.metaKey);
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Finds the next visible node matching the current typeahead buffer.
|
|
547
|
+
*
|
|
548
|
+
* @typeParam Value - Consumer-owned value attached to each node.
|
|
549
|
+
* @param visibleNodes - Current depth-first visible nodes.
|
|
550
|
+
* @param currentIndex - Current visible node index.
|
|
551
|
+
* @param query - Normalized accumulated typeahead query.
|
|
552
|
+
* @returns Next matching node or undefined.
|
|
553
|
+
*/
|
|
554
|
+
function findMiaixzTreeTypeaheadMatch(visibleNodes, currentIndex, query) {
|
|
555
|
+
for (let offset = 1; offset <= visibleNodes.length; offset += 1) {
|
|
556
|
+
const candidate = visibleNodes[(currentIndex + offset) % visibleNodes.length];
|
|
557
|
+
if (candidate !== undefined &&
|
|
558
|
+
getMiaixzTreeLabelText(candidate.node.label).toLocaleLowerCase().startsWith(query)) {
|
|
559
|
+
return candidate;
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
return undefined;
|
|
563
|
+
}
|
|
564
|
+
/**
|
|
565
|
+
* Extracts safe typeahead text from primitive React labels.
|
|
566
|
+
*
|
|
567
|
+
* @param label - Public React node label.
|
|
568
|
+
* @returns String or numeric label text, otherwise an empty string.
|
|
569
|
+
*/
|
|
570
|
+
function getMiaixzTreeLabelText(label) {
|
|
571
|
+
return typeof label === "string" || typeof label === "number" ? String(label) : "";
|
|
572
|
+
}
|
|
573
|
+
//# sourceMappingURL=tree-view.js.map
|