@ticatec/uniface-element 5.0.4 → 5.1.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 +14 -13
- package/README_CN.md +17 -15
- package/dist/app_layout/ColumnsLayout.svelte +14 -10
- package/dist/app_layout/ColumnsLayout.svelte.d.ts +8 -4
- package/dist/app_layout/README.md +14 -12
- package/dist/app_layout/README_CN.md +14 -12
- package/dist/app_layout/RowsLayout.svelte +14 -10
- package/dist/app_layout/RowsLayout.svelte.d.ts +8 -4
- package/dist/base-calendar/CalendarBase.svelte +4 -10
- package/dist/base-calendar/CalendarBase.svelte.d.ts +0 -4
- package/dist/base-calendar/DateContext.d.ts +1 -0
- package/dist/base-calendar/DateContext.js +5 -8
- package/dist/base-calendar/MonthlyCalendar.svelte +11 -3
- package/dist/base-calendar/MonthlyCalendar.svelte.d.ts +1 -2
- package/dist/base-calendar/YearPickupPanel.svelte +5 -5
- package/dist/base-calendar/YearPickupPanel.svelte.d.ts +2 -2
- package/dist/base-calendar/dateUtils.js +9 -5
- package/dist/composite/pagination_panel/PaginationPanel.svelte +19 -13
- package/dist/composite/pagination_panel/PaginationPanel.svelte.d.ts +8 -5
- package/dist/composite/pagination_panel/README.md +3 -1
- package/dist/composite/pagination_panel/README_CN.md +3 -1
- package/dist/composite/transfer/Transfer.svelte +30 -16
- package/dist/composite/transfer/Transfer.svelte.d.ts +11 -4
- package/dist/composite/transfer/index.d.ts +2 -2
- package/dist/data_display/accordion/Accordion.svelte +10 -9
- package/dist/data_display/accordion/Accordion.svelte.d.ts +2 -1
- package/dist/data_display/accordion/AccordionItemView.svelte +6 -6
- package/dist/data_display/accordion/AccordionItemView.svelte.d.ts +1 -1
- package/dist/data_display/accordion/README.md +6 -4
- package/dist/data_display/accordion/README_CN.md +6 -4
- package/dist/data_display/card/Card.svelte +13 -11
- package/dist/data_display/card/Card.svelte.d.ts +5 -3
- package/dist/data_display/card/CardAction.d.ts +7 -2
- package/dist/data_display/card/CommonCardActionBar.svelte +2 -2
- package/dist/data_display/card/README.md +11 -9
- package/dist/data_display/card/README_CN.md +11 -9
- package/dist/data_display/card/index.d.ts +2 -1
- package/dist/data_display/concise_data_table/Column.d.ts +0 -6
- package/dist/data_display/concise_data_table/ConciseListTable.svelte +6 -5
- package/dist/data_display/concise_data_table/ConciseListTable.svelte.d.ts +4 -3
- package/dist/data_display/concise_data_table/DataCell.svelte +1 -1
- package/dist/data_display/concise_data_table/README.md +7 -5
- package/dist/data_display/concise_data_table/README_CN.md +7 -5
- package/dist/data_display/concise_data_table/TableOptions.d.ts +1 -1
- package/dist/data_display/list_box/ListBox.svelte +11 -15
- package/dist/data_display/list_box/ListBox.svelte.d.ts +6 -9
- package/dist/data_display/list_box/README.md +10 -8
- package/dist/data_display/list_box/README_CN.md +10 -8
- package/dist/data_display/list_box/index.d.ts +2 -3
- package/dist/data_display/tree_view/README.md +4 -2
- package/dist/data_display/tree_view/README_CN.md +4 -2
- package/dist/data_display/tree_view/TreeNodeView.svelte +15 -16
- package/dist/data_display/tree_view/TreeNodeView.svelte.d.ts +4 -5
- package/dist/data_display/tree_view/TreeView.svelte +27 -19
- package/dist/data_display/tree_view/TreeView.svelte.d.ts +12 -4
- package/dist/data_display/tree_view/index.d.ts +2 -3
- package/dist/data_table/DataTable.svelte +46 -15
- package/dist/data_table/DataTable.svelte.d.ts +9 -1
- package/dist/data_table/README.md +10 -8
- package/dist/data_table/README_CN.md +10 -8
- package/dist/data_table/UniDataTable.d.ts +4 -4
- package/dist/data_table/UniDataTable.js +2 -2
- package/dist/data_table/index.d.ts +5 -5
- package/dist/data_table/lib/CellAction.d.ts +9 -0
- package/dist/data_table/lib/CommonHeaderCell.d.ts +2 -2
- package/dist/data_table/lib/CompareFn.d.ts +3 -0
- package/dist/data_table/lib/DataColumn.d.ts +7 -12
- package/dist/data_table/lib/FormatCellFn.d.ts +2 -0
- package/dist/data_table/lib/HrefLink.d.ts +3 -3
- package/dist/data_table/lib/IndicatorColumn.d.ts +2 -1
- package/dist/data_table/lib/RowAction.d.ts +14 -20
- package/dist/data_table/lib/virtualWindow.d.ts +37 -0
- package/dist/data_table/lib/virtualWindow.js +41 -0
- package/dist/data_table/parts/ActionCell.svelte +3 -3
- package/dist/data_table/parts/ActionCell.svelte.d.ts +1 -1
- package/dist/data_table/parts/ActionsPanel.svelte +17 -2
- package/dist/data_table/parts/ActionsPanel.svelte.d.ts +3 -0
- package/dist/data_table/parts/ActionsRow.svelte +7 -5
- package/dist/data_table/parts/ContentPanel.svelte +40 -15
- package/dist/data_table/parts/ContentPanel.svelte.d.ts +11 -6
- package/dist/data_table/parts/FixedColumnsPanel.svelte +32 -16
- package/dist/data_table/parts/FixedColumnsPanel.svelte.d.ts +8 -5
- package/dist/data_table/parts/FixedHeaderPanel.svelte +14 -15
- package/dist/data_table/parts/FixedHeaderPanel.svelte.d.ts +4 -4
- package/dist/data_table/parts/FixedRow.svelte +9 -9
- package/dist/data_table/parts/FixedRow.svelte.d.ts +3 -3
- package/dist/data_table/parts/HrefCell.svelte +1 -1
- package/dist/data_table/parts/PopupMenu.svelte +3 -3
- package/dist/data_table/parts/PopupMenu.svelte.d.ts +1 -1
- package/dist/data_table/parts/TableHeaderPanel.svelte +14 -14
- package/dist/data_table/parts/TableHeaderPanel.svelte.d.ts +4 -4
- package/dist/data_table/parts/TextCell.svelte +1 -1
- package/dist/feedback/progress-bar/ProgressBar.svelte +13 -10
- package/dist/feedback/progress-bar/ProgressBar.svelte.d.ts +6 -3
- package/dist/form/FormEditor.svelte +2 -2
- package/dist/form/FormEditor.svelte.d.ts +1 -1
- package/dist/form/attachment_files/AttachmentEditor.svelte +407 -92
- package/dist/form/attachment_files/AttachmentEditor.svelte.d.ts +71 -15
- package/dist/form/attachment_files/AttachmentFile.d.ts +35 -8
- package/dist/form/attachment_files/AttachmentFile.js +54 -29
- package/dist/form/attachment_files/AttachmentListItem.svelte +208 -0
- package/dist/form/attachment_files/AttachmentListItem.svelte.d.ts +25 -0
- package/dist/form/attachment_files/AttachmentTile.svelte +296 -0
- package/dist/form/attachment_files/AttachmentTile.svelte.d.ts +25 -0
- package/dist/form/attachment_files/FileUpload.d.ts +2 -2
- package/dist/form/attachment_files/README.md +71 -452
- package/dist/form/attachment_files/README_CN.md +68 -449
- package/dist/form/attachment_files/UploadTask.d.ts +27 -0
- package/dist/form/attachment_files/index.d.ts +8 -5
- package/dist/form/attachment_files/index.js +4 -2
- package/dist/form/cascade_options_select/CascadeOptionSelect.svelte +16 -15
- package/dist/form/cascade_options_select/CascadeOptionSelect.svelte.d.ts +6 -5
- package/dist/form/cascade_options_select/IsLeaf.d.ts +4 -0
- package/dist/form/cascade_options_select/IsLeaf.js +1 -0
- package/dist/form/cascade_options_select/OptionsBox.svelte +4 -4
- package/dist/form/cascade_options_select/OptionsBox.svelte.d.ts +2 -2
- package/dist/form/color_picker/ColorPicker.svelte +3 -3
- package/dist/form/color_picker/ColorPickerPanel.svelte +1 -1
- package/dist/form/common_editor/BasePicker.svelte +7 -7
- package/dist/form/common_editor/BasePicker.svelte.d.ts +3 -3
- package/dist/form/common_editor/CommonEditor.svelte +8 -8
- package/dist/form/common_editor/CommonEditor.svelte.d.ts +2 -2
- package/dist/form/common_editor/CommonPicker.svelte +43 -31
- package/dist/form/common_editor/CommonPicker.svelte.d.ts +6 -6
- package/dist/form/common_editor/CommonPickerProps.d.ts +2 -2
- package/dist/form/common_editor/CommonPopupEditor.svelte +13 -13
- package/dist/form/common_editor/CommonPopupEditor.svelte.d.ts +3 -4
- package/dist/form/common_editor/NumberInput.svelte +10 -2
- package/dist/form/common_editor/NumberInput.svelte.d.ts +1 -1
- package/dist/form/common_range_editor/CommonRangeEditor.svelte +17 -17
- package/dist/form/common_range_editor/CommonRangeEditor.svelte.d.ts +5 -5
- package/dist/form/date_picker/DatePicker.svelte +5 -5
- package/dist/form/date_picker/DatePicker.svelte.d.ts +1 -1
- package/dist/form/date_picker/DateTimePicker.svelte +16 -6
- package/dist/form/date_picker/README.md +7 -5
- package/dist/form/date_picker/README_CN.md +7 -5
- package/dist/form/date_picker/ScrollBar.svelte +21 -20
- package/dist/form/date_picker/ScrollBar.svelte.d.ts +3 -3
- package/dist/form/date_range/DateRangeEditor.svelte +6 -6
- package/dist/form/events.d.ts +70 -0
- package/dist/form/events.js +6 -0
- package/dist/form/group_box/group-check-box/GroupCheckBox.svelte +9 -7
- package/dist/form/group_box/group-check-box/GroupCheckBox.svelte.d.ts +4 -3
- package/dist/form/group_box/group-check-box/README.md +5 -3
- package/dist/form/group_box/group-check-box/README_CN.md +5 -3
- package/dist/form/group_box/group-radio-box/GroupRadioBox.svelte +9 -7
- package/dist/form/group_box/group-radio-box/GroupRadioBox.svelte.d.ts +4 -3
- package/dist/form/group_box/group-radio-box/README.md +3 -1
- package/dist/form/group_box/group-radio-box/README_CN.md +3 -1
- package/dist/form/image_editor/ImageEditor.svelte +118 -0
- package/dist/form/image_editor/ImageEditor.svelte.d.ts +52 -0
- package/dist/form/image_editor/ImageFile.d.ts +11 -0
- package/dist/form/image_editor/ImageFile.js +1 -0
- package/dist/form/{image-files → image_editor}/ImagePreview.svelte +10 -2
- package/dist/form/image_editor/README.md +89 -0
- package/dist/form/image_editor/README_CN.md +89 -0
- package/dist/form/image_editor/index.d.ts +11 -0
- package/dist/form/image_editor/index.js +4 -0
- package/dist/form/input_options_select/InputOptionsSelect.svelte +11 -8
- package/dist/form/input_options_select/InputOptionsSelect.svelte.d.ts +2 -1
- package/dist/form/input_options_select/README.md +44 -218
- package/dist/form/input_options_select/README_CN.md +38 -211
- package/dist/form/lookup_editor/LookupEditor.svelte +7 -10
- package/dist/form/lookup_editor/LookupEditor.svelte.d.ts +2 -1
- package/dist/form/memo_editor/MemoEditor.svelte +2 -2
- package/dist/form/memo_editor/MemoEditor.svelte.d.ts +1 -1
- package/dist/form/number_editor/NumberEditor.svelte +13 -1
- package/dist/form/number_editor/NumberEditor.svelte.d.ts +1 -1
- package/dist/form/number_range/NumberRange.svelte +5 -5
- package/dist/form/options_multi_select/OptionsMultiSelect.svelte +13 -13
- package/dist/form/options_multi_select/OptionsMultiSelect.svelte.d.ts +3 -2
- package/dist/form/options_multi_select/README.md +5 -3
- package/dist/form/options_multi_select/README_CN.md +5 -3
- package/dist/form/options_select/OptionsSelect.svelte +19 -15
- package/dist/form/options_select/OptionsSelect.svelte.d.ts +2 -1
- package/dist/form/options_select/README.md +9 -7
- package/dist/form/options_select/README_CN.md +8 -6
- package/dist/form/prompts_text_editor/PromptsTextEditor.svelte +6 -5
- package/dist/form/prompts_text_editor/PromptsTextEditor.svelte.d.ts +2 -1
- package/dist/form/prompts_text_editor/README.md +16 -14
- package/dist/form/prompts_text_editor/README_CN.md +16 -14
- package/dist/form/search_box/SearchBox.svelte +3 -2
- package/dist/form/search_box/SearchBox.svelte.d.ts +1 -1
- package/dist/form/switch/README.md +7 -5
- package/dist/form/switch/README_CN.md +7 -5
- package/dist/form/switch/Switch.svelte +7 -5
- package/dist/form/switch/Switch.svelte.d.ts +4 -2
- package/dist/form/text_editor/PasswordEditor.svelte +2 -2
- package/dist/form/text_editor/PasswordEditor.svelte.d.ts +1 -1
- package/dist/form/text_editor/TextEditor.svelte +6 -4
- package/dist/form/text_editor/TextEditor.svelte.d.ts +1 -1
- package/dist/form/time_editor/README.md +4 -2
- package/dist/form/time_editor/README_CN.md +4 -2
- package/dist/form/time_editor/TimeEditor.svelte +10 -7
- package/dist/form/time_editor/TimeEditor.svelte.d.ts +2 -1
- package/dist/form/types.d.ts +5 -42
- package/dist/form/unit-number-editor/README.md +21 -19
- package/dist/form/unit-number-editor/README_CN.md +21 -19
- package/dist/form/unit-number-editor/UnitNumberEditor.svelte +12 -11
- package/dist/form/unit-number-editor/UnitNumberEditor.svelte.d.ts +4 -3
- package/dist/general/button/Button.svelte +4 -1
- package/dist/general/button/Button.svelte.d.ts +3 -1
- package/dist/general/button/IconButton.svelte +11 -5
- package/dist/general/button/IconButton.svelte.d.ts +5 -2
- package/dist/general/button/IconButton_README.md +9 -6
- package/dist/general/button/IconButton_README_CN.md +9 -6
- package/dist/general/button/TextButton.svelte +15 -5
- package/dist/general/button/TextButton.svelte.d.ts +6 -2
- package/dist/general/button/TextButton_README.md +10 -6
- package/dist/general/button/TextButton_README_CN.md +10 -6
- package/dist/general/icon/Icon.svelte +6 -4
- package/dist/general/icon/Icon.svelte.d.ts +3 -2
- package/dist/general/tag/Tag.svelte +8 -4
- package/dist/general/tag/Tag.svelte.d.ts +3 -1
- package/dist/i18nRes/i18nRes.d.ts +45 -2
- package/dist/i18nRes/i18nRes.js +7 -2
- package/dist/layouts/action_bar/ActionBar.svelte +5 -4
- package/dist/layouts/action_bar/ActionBar.svelte.d.ts +2 -1
- package/dist/layouts/action_bar/ButtonAction.d.ts +1 -23
- package/dist/layouts/action_bar/README.md +20 -18
- package/dist/layouts/action_bar/README_CN.md +19 -17
- package/dist/layouts/box/Box.svelte +4 -3
- package/dist/layouts/box/Box.svelte.d.ts +2 -1
- package/dist/layouts/box/README.md +13 -11
- package/dist/layouts/box/README_CN.md +13 -11
- package/dist/layouts/form_field/FormField.svelte +5 -4
- package/dist/layouts/form_field/FormField.svelte.d.ts +3 -2
- package/dist/layouts/form_field/README.md +11 -9
- package/dist/layouts/form_field/README_CN.md +9 -7
- package/dist/layouts/form_panel/flex_row_form/Cell.svelte +3 -1
- package/dist/layouts/form_panel/flex_row_form/Cell.svelte.d.ts +3 -1
- package/dist/layouts/form_panel/flex_row_form/Row.svelte +3 -1
- package/dist/layouts/form_panel/flex_row_form/Row.svelte.d.ts +3 -1
- package/dist/layouts/form_panel/grid_form/GridField.svelte +8 -4
- package/dist/layouts/form_panel/grid_form/GridField.svelte.d.ts +6 -2
- package/dist/layouts/form_panel/grid_form/GridForm.svelte +3 -1
- package/dist/layouts/form_panel/grid_form/GridForm.svelte.d.ts +3 -1
- package/dist/layouts/form_panel/grid_form/README.md +6 -4
- package/dist/layouts/form_panel/grid_form/README_CN.md +6 -4
- package/dist/layouts/page/Page.svelte +7 -7
- package/dist/layouts/page/Page.svelte.d.ts +2 -2
- package/dist/layouts/page/PageHeader.svelte +4 -4
- package/dist/layouts/page/PageHeader.svelte.d.ts +1 -1
- package/dist/layouts/page/README.md +18 -18
- package/dist/layouts/page/README_CN.md +18 -18
- package/dist/navigation/nav_menu/MenuItem.d.ts +1 -1
- package/dist/navigation/nav_menu/NavigatorMenu.svelte +16 -14
- package/dist/navigation/nav_menu/NavigatorMenu.svelte.d.ts +7 -5
- package/dist/navigation/nav_menu/NavigatorMenuItem.svelte +2 -2
- package/dist/navigation/nav_menu/NavigatorMenuItem.svelte.d.ts +2 -2
- package/dist/navigation/nav_menu/README.md +8 -6
- package/dist/navigation/nav_menu/README_CN.md +8 -6
- package/dist/navigation/nav_menu/index.d.ts +2 -2
- package/dist/navigation/navigator/Navigator.svelte +5 -4
- package/dist/navigation/navigator/Navigator.svelte.d.ts +3 -2
- package/dist/navigation/navigator/README.md +12 -10
- package/dist/navigation/navigator/README_CN.md +12 -10
- package/dist/navigation/pagination/Pagination.svelte +23 -15
- package/dist/navigation/pagination/Pagination.svelte.d.ts +6 -4
- package/dist/navigation/progress_step_bar/ProgressStep.d.ts +2 -1
- package/dist/navigation/progress_step_bar/ProgressStepBar.svelte +5 -4
- package/dist/navigation/progress_step_bar/ProgressStepBar.svelte.d.ts +2 -1
- package/dist/navigation/progress_step_bar/ProgressStepBlock.svelte +3 -3
- package/dist/navigation/progress_step_bar/ProgressStepBlock.svelte.d.ts +1 -1
- package/dist/navigation/progress_step_bar/README.md +37 -35
- package/dist/navigation/progress_step_bar/README_CN.md +36 -34
- package/dist/navigation/tabs/Tabs.svelte +14 -5
- package/dist/navigation/tabs/Tabs.svelte.d.ts +11 -4
- package/dist/navigation/tabs/index.d.ts +2 -2
- package/dist/overlay/common/ModalPopover.svelte +5 -4
- package/dist/overlay/common/ModalPopover.svelte.d.ts +2 -1
- package/dist/overlay/common/Popover.svelte +4 -3
- package/dist/overlay/common/Popover.svelte.d.ts +2 -1
- package/dist/overlay/context-menu/ContextMenuItem.d.ts +3 -3
- package/dist/overlay/context-menu/ContextMenuPanel.svelte +4 -4
- package/dist/overlay/context-menu/index.d.ts +2 -2
- package/dist/overlay/dialog/CommonDialog.svelte +17 -13
- package/dist/overlay/dialog/CommonDialog.svelte.d.ts +9 -5
- package/dist/overlay/dialog/Dialog.svelte +25 -19
- package/dist/overlay/dialog/Dialog.svelte.d.ts +11 -5
- package/dist/overlay/dialog/DialogActions.d.ts +1 -1
- package/dist/overlay/dialog/DialogCloseConfirm.d.ts +4 -1
- package/dist/overlay/dialog/DialogCloseConfirm.js +1 -1
- package/dist/overlay/dialog/DialogManager.svelte.js +2 -1
- package/dist/overlay/dialog/README.md +19 -17
- package/dist/overlay/dialog/README_CN.md +19 -17
- package/dist/overlay/dialog/index.d.ts +2 -2
- package/dist/overlay/message-box/IMessageBox.d.ts +4 -4
- package/dist/overlay/message-box/MessageBox.svelte.js +3 -3
- package/dist/ticatec-uniface-web.css +38 -12
- package/dist/types.d.ts +38 -46
- package/dist/unifaceContext.d.ts +2 -2
- package/dist/utils/prefixFilter.js +0 -1
- package/docs/NAMING.md +362 -0
- package/docs/NAMING_CN.md +362 -0
- package/docs/components/README.md +16 -14
- package/docs/components/accordion/README.md +13 -2
- package/docs/components/accordion/example.svelte +1 -0
- package/docs/components/action-bar/README.md +4 -4
- package/docs/components/attachment-editor/README.md +224 -0
- package/docs/components/attachment-editor/example.svelte +22 -0
- package/docs/components/box/README.md +1 -1
- package/docs/components/button/README.md +8 -1
- package/docs/components/button/example.svelte +1 -0
- package/docs/components/card/README.md +19 -5
- package/docs/components/cascade-options-select/README.md +11 -5
- package/docs/components/columns-layout/README.md +8 -4
- package/docs/components/columns-layout/example.svelte +4 -0
- package/docs/components/common-dialog/README.md +19 -10
- package/docs/components/common-dialog/example.svelte +2 -1
- package/docs/components/concise-data-table/README.md +18 -29
- package/docs/components/concise-data-table/example.svelte +1 -1
- package/docs/components/context-menu/README.md +5 -5
- package/docs/components/context-menu/example.svelte +1 -1
- package/docs/components/criteria-field/README.md +1 -0
- package/docs/components/criteria-field/example.svelte +1 -0
- package/docs/components/data-table/README.md +63 -40
- package/docs/components/data-table/example.svelte +2 -2
- package/docs/components/date-picker/README.md +1 -1
- package/docs/components/date-time-picker/README.md +1 -1
- package/docs/components/dialog/README.md +21 -14
- package/docs/components/dialog/example.svelte +1 -1
- package/docs/components/form-field/README.md +3 -3
- package/docs/components/grid-form/README.md +15 -5
- package/docs/components/grid-form/example.svelte +1 -1
- package/docs/components/group-check-box/README.md +3 -3
- package/docs/components/group-radio-box/README.md +3 -3
- package/docs/components/icon/README.md +6 -5
- package/docs/components/icon-button/README.md +10 -1
- package/docs/components/icon-button/example.svelte +1 -0
- package/docs/components/image-editor/README.md +262 -0
- package/docs/components/{image-files → image-editor}/example.svelte +5 -3
- package/docs/components/input-options-select/README.md +2 -2
- package/docs/components/list-box/README.md +12 -13
- package/docs/components/list-box/example.svelte +3 -3
- package/docs/components/lookup-editor/README.md +1 -1
- package/docs/components/navigator/README.md +2 -1
- package/docs/components/navigator/example.svelte +1 -0
- package/docs/components/navigator-menu/README.md +24 -21
- package/docs/components/navigator-menu/example.svelte +4 -2
- package/docs/components/options-multi-select/README.md +2 -2
- package/docs/components/options-select/README.md +4 -4
- package/docs/components/page/README.md +2 -2
- package/docs/components/page-stack/README.md +67 -0
- package/docs/components/page-stack/example.svelte +7 -0
- package/docs/components/pagination/README.md +24 -7
- package/docs/components/pagination/example.svelte +5 -2
- package/docs/components/pagination-panel/README.md +25 -10
- package/docs/components/pagination-panel/example.svelte +5 -4
- package/docs/components/password-editor/README.md +128 -0
- package/docs/components/{attachment-files → password-editor}/example.svelte +5 -5
- package/docs/components/progress-bar/README.md +14 -4
- package/docs/components/progress-bar/example.svelte +1 -1
- package/docs/components/progress-step-bar/README.md +16 -7
- package/docs/components/progress-step-bar/example.svelte +5 -1
- package/docs/components/prompts-text-editor/README.md +8 -6
- package/docs/components/prompts-text-editor/example.svelte +0 -1
- package/docs/components/rows-layout/README.md +8 -4
- package/docs/components/rows-layout/example.svelte +4 -0
- package/docs/components/switch/README.md +2 -2
- package/docs/components/tabs/README.md +24 -9
- package/docs/components/tag/README.md +13 -2
- package/docs/components/tag/example.svelte +1 -0
- package/docs/components/text-button/README.md +20 -1
- package/docs/components/text-button/example.svelte +2 -0
- package/docs/components/time-editor/README.md +1 -1
- package/docs/components/transfer/README.md +16 -9
- package/docs/components/tree-view/README.md +29 -13
- package/docs/components/tree-view/example.svelte +2 -1
- package/docs/components/unit-number-editor/README.md +11 -8
- package/docs/components/unit-number-editor/example.svelte +0 -1
- package/package.json +13 -7
- package/dist/data_table/lib/CompareFunction.d.ts +0 -3
- package/dist/data_table/lib/FormatCell.d.ts +0 -2
- package/dist/form/attachment_files/FileRender.svelte +0 -125
- package/dist/form/attachment_files/FileRender.svelte.d.ts +0 -9
- package/dist/form/attachment_files/FileUploadBar.svelte +0 -66
- package/dist/form/attachment_files/FileUploadBar.svelte.d.ts +0 -8
- package/dist/form/attachment_files/FileUploadPanel.svelte +0 -161
- package/dist/form/attachment_files/FileUploadPanel.svelte.d.ts +0 -14
- package/dist/form/attachment_files/UploadFile.d.ts +0 -43
- package/dist/form/attachment_files/UploadFile.js +0 -80
- package/dist/form/cascade_options_select/CascadePanel.svelte +0 -52
- package/dist/form/cascade_options_select/CascadePanel.svelte.d.ts +0 -26
- package/dist/form/cascade_options_select/isLeafDetermine.d.ts +0 -4
- package/dist/form/common_editor/EditorEvents.d.ts +0 -14
- package/dist/form/common_editor/EditorEvents.js +0 -2
- package/dist/form/image-files/ImageFile.d.ts +0 -12
- package/dist/form/image-files/ImageFilesField.svelte +0 -128
- package/dist/form/image-files/ImageFilesField.svelte.d.ts +0 -18
- package/dist/form/image-files/ImageRender.svelte +0 -95
- package/dist/form/image-files/ImageRender.svelte.d.ts +0 -10
- package/dist/form/image-files/README.md +0 -468
- package/dist/form/image-files/README_CN.md +0 -468
- package/dist/form/image-files/index.d.ts +0 -10
- package/dist/form/image-files/index.js +0 -2
- package/dist/layout/flex/FlexBlock.svelte +0 -17
- package/dist/layout/flex/FlexBlock.svelte.d.ts +0 -38
- package/dist/layout/flex/README.md +0 -148
- package/dist/layout/flex/README_CN.md +0 -148
- package/dist/layout/flex/index.d.ts +0 -2
- package/dist/layout/flex/index.js +0 -2
- package/dist/layout/index.d.ts +0 -0
- package/dist/layout/index.js +0 -1
- package/docs/components/attachment-files/README.md +0 -332
- package/docs/components/image-files/README.md +0 -174
- /package/dist/data_table/lib/{FormatCell.js → CellAction.js} +0 -0
- /package/dist/data_table/lib/{CompareFunction.js → CompareFn.js} +0 -0
- /package/dist/{form/cascade_options_select/isLeafDetermine.js → data_table/lib/FormatCellFn.js} +0 -0
- /package/dist/form/{image-files/ImageFile.js → attachment_files/UploadTask.js} +0 -0
- /package/dist/form/{image-files → image_editor}/ImagePreview.svelte.d.ts +0 -0
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
- **固定 48px header**:标题、可选注释(副标题,截断)、可选 back 或 reload 图标
|
|
8
8
|
- **弹性内容区**:占满剩余高度,裁剪溢出
|
|
9
9
|
- **可选圆角和阴影**(`round` / `shadow`,默认都开)
|
|
10
|
-
- **三种 header 定制钩子**:文本 props(`title` / `comment`)、`
|
|
10
|
+
- **三种 header 定制钩子**:文本 props(`title` / `comment`)、`headerExtra` snippet 加额外 header 内容、完整 `header` snippet 完全替换
|
|
11
11
|
- **异步感知的导航动作**:`goBack` / `reload` 是 `() => any`(可为 async) —— 透传给 Icon 的防抖点击处理器
|
|
12
12
|
- **主题钩子**:外层 wrapper 暴露 `data-theme="{theme}"`
|
|
13
13
|
|
|
@@ -23,7 +23,7 @@ npm install @ticatec/uniface-element
|
|
|
23
23
|
import Page, { PageHeader, type PageAction } from '@ticatec/uniface-element/Page';
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
`PageHeader` 是命名导出,需要单独用时可以导入(多数场景下用 `
|
|
26
|
+
`PageHeader` 是命名导出,需要单独用时可以导入(多数场景下用 `header` snippet 覆盖就够了)。
|
|
27
27
|
|
|
28
28
|
## 基本用法
|
|
29
29
|
|
|
@@ -52,8 +52,8 @@ import Page, { PageHeader, type PageAction } from '@ticatec/uniface-element/Page
|
|
|
52
52
|
| `content$style` | `string` | `''` | 内容区的内联 CSS(如 `padding: 16px;`) |
|
|
53
53
|
| `style` | `string` | `''` | 外层 wrapper 的内联 CSS |
|
|
54
54
|
| `theme` | `string \| undefined` | `undefined` | 设为外层 wrapper 的 `data-theme` |
|
|
55
|
-
| `
|
|
56
|
-
| `
|
|
55
|
+
| `header` | `Snippet<[string, string?, PageAction?, PageAction?]> \| undefined` | `undefined` | **替换**默认 PageHeader。Snippet 参数:`(title, comment, goBack, reload)` |
|
|
56
|
+
| `headerExtra` | `Snippet \| undefined` | `undefined` | 默认 PageHeader 右侧的额外内容。设置了 `header` snippet 时被忽略(那时布局你自己控) |
|
|
57
57
|
| `children` | `Snippet \| undefined` | `undefined` | body 内容 |
|
|
58
58
|
|
|
59
59
|
> **`goBack` 和 `reload` 互斥。** 两者都设 → 只渲染 `goBack`(back 图标)。`reload` 图标只在 `goBack` 缺席时出现。这是设计如此 —— 该槽位只装一个前置图标。
|
|
@@ -75,7 +75,7 @@ type PageAction = () => any;
|
|
|
75
75
|
│ │ .uniface-page (round + shadow) │ │
|
|
76
76
|
│ │ ┌──────────────────────────────────────────┐ │ │
|
|
77
77
|
│ │ │ .uniface-page-header (height: 48px) │ │ │
|
|
78
|
-
│ │ │ [← back] 标题 注释… [
|
|
78
|
+
│ │ │ [← back] 标题 注释… [headerExtra] │ │ │
|
|
79
79
|
│ │ ├──────────────────────────────────────────┤ │ │
|
|
80
80
|
│ │ │ .page-container (flex 1, overflow hidden)│ │ │
|
|
81
81
|
│ │ │ {children} │ │ │
|
|
@@ -135,13 +135,13 @@ type PageAction = () => any;
|
|
|
135
135
|
</Page>
|
|
136
136
|
```
|
|
137
137
|
|
|
138
|
-
### Header 扩展(
|
|
138
|
+
### Header 扩展(headerExtra snippet)
|
|
139
139
|
|
|
140
140
|
在默认 header 右侧加操作按钮:
|
|
141
141
|
|
|
142
142
|
```svelte
|
|
143
143
|
<Page title="设置">
|
|
144
|
-
{#snippet
|
|
144
|
+
{#snippet headerExtra()}
|
|
145
145
|
<button onclick={save}>保存</button>
|
|
146
146
|
<button onclick={reset}>重置</button>
|
|
147
147
|
{/snippet}
|
|
@@ -150,13 +150,13 @@ type PageAction = () => any;
|
|
|
150
150
|
</Page>
|
|
151
151
|
```
|
|
152
152
|
|
|
153
|
-
### 完全替换 header(
|
|
153
|
+
### 完全替换 header(header snippet)
|
|
154
154
|
|
|
155
155
|
替换整个 header。snippet 接收 `(title, comment, goBack, reload)`:
|
|
156
156
|
|
|
157
157
|
```svelte
|
|
158
158
|
<Page title="搜索结果" goBack={() => history.back()}>
|
|
159
|
-
{#snippet
|
|
159
|
+
{#snippet header(title, comment, goBack, reload)}
|
|
160
160
|
<div style="display: flex; align-items: center; gap: 12px; padding: 0 16px;">
|
|
161
161
|
{#if goBack}
|
|
162
162
|
<Icon name="icon_google_keyboard_backspace" onclick={goBack} />
|
|
@@ -172,7 +172,7 @@ type PageAction = () => any;
|
|
|
172
172
|
</Page>
|
|
173
173
|
```
|
|
174
174
|
|
|
175
|
-
> 用 `
|
|
175
|
+
> 用 `header` 覆盖时,`headerExtra` snippet **被忽略** —— 扩展内容由你在 snippet 里自己渲染
|
|
176
176
|
|
|
177
177
|
### 极简(无圆角、无阴影)
|
|
178
178
|
|
|
@@ -200,7 +200,7 @@ type PageAction = () => any;
|
|
|
200
200
|
<div class="uniface-page-wrapper" style="..." data-theme="...">
|
|
201
201
|
<div class="uniface-page" class:round class:shadow>
|
|
202
202
|
<div class="uniface-page-header">
|
|
203
|
-
<!--
|
|
203
|
+
<!-- header snippet 或默认 PageHeader -->
|
|
204
204
|
</div>
|
|
205
205
|
<div class="page-container" style="{content$style}">
|
|
206
206
|
<!-- children -->
|
|
@@ -209,7 +209,7 @@ type PageAction = () => any;
|
|
|
209
209
|
</div>
|
|
210
210
|
```
|
|
211
211
|
|
|
212
|
-
### 默认 PageHeader(未提供 `
|
|
212
|
+
### 默认 PageHeader(未提供 `header` snippet 时)
|
|
213
213
|
|
|
214
214
|
```html
|
|
215
215
|
<!-- goBack 或 reload 图标,只渲染一个 -->
|
|
@@ -220,7 +220,7 @@ type PageAction = () => any;
|
|
|
220
220
|
<div class="page-topic"><span>{title}</span></div>
|
|
221
221
|
<div class="page-comment"><span>{comment}</span></div> <!-- 仅 comment 非空时 -->
|
|
222
222
|
|
|
223
|
-
<!-- 提供了
|
|
223
|
+
<!-- 提供了 headerExtra snippet 时 -->
|
|
224
224
|
```
|
|
225
225
|
|
|
226
226
|
header 元素内置样式:
|
|
@@ -262,20 +262,20 @@ header 元素内置样式:
|
|
|
262
262
|
- **内容区裁剪溢出**(`overflow: hidden`)—— 不滚动。需要滚动自己包 `overflow: auto` 容器
|
|
263
263
|
- **Page 占满父容器**。外层 wrapper 是 `width: 100%`,内层 page 是 `width: 100%; height: 100%`。放在有尺寸的父容器里
|
|
264
264
|
- **点击防抖**:`goBack` / `reload` 走 [Icon](../../general/icon/README_CN.md) wrapper,会 await handler 后再加 200ms 冷却。快速连击不会重复触发
|
|
265
|
-
- **`
|
|
265
|
+
- **`header` snippet 参数**:`(title, comment, goBack, reload)` —— 跟你传的 props 同值。用不用由你
|
|
266
266
|
|
|
267
267
|
## 无障碍访问
|
|
268
268
|
|
|
269
|
-
- back / reload 图标是 `aria-hidden="true"`(装饰性)。动作仅鼠标触发 —— 没有键盘激活。需要键盘支持就在 `
|
|
270
|
-
- 标题和注释是普通 `<span>` 文字 —— 无 heading 语义。需要文档大纲在 `
|
|
269
|
+
- back / reload 图标是 `aria-hidden="true"`(装饰性)。动作仅鼠标触发 —— 没有键盘激活。需要键盘支持就在 `headerExtra` 里渲染自己的 `<button>`
|
|
270
|
+
- 标题和注释是普通 `<span>` 文字 —— 无 heading 语义。需要文档大纲在 `header` snippet 里用 `<h1>` 包标题
|
|
271
271
|
- 没有 `role="main"` 或 landmark —— 想让 page 被识别为主内容区,自己在外层元素加 `role="main"`
|
|
272
272
|
|
|
273
273
|
## 最佳实践
|
|
274
274
|
|
|
275
275
|
1. **嵌套路由传 `goBack`,实时数据页传 `reload`** —— 两者共用一个槽位,不要同时设
|
|
276
276
|
2. **`comment` 用于上下文** —— 页面用途、记录数、最后更新时间。保持简短,会被截断
|
|
277
|
-
3. **`
|
|
278
|
-
4. **只在需要根本性不同的 header 时才覆盖 `
|
|
277
|
+
3. **`headerExtra` 用于操作**(保存、编辑、筛选),别挤进内容区
|
|
278
|
+
4. **只在需要根本性不同的 header 时才覆盖 `header`**(比如 header 里放 tabs)。简单加东西用 `headerExtra` 就够
|
|
279
279
|
5. **可滚动内容自己包** —— Page 的内容区是 `overflow: hidden`,不是 `auto`
|
|
280
280
|
6. **配合 `Box` 在 page body 里分块** —— Page 给外壳,Box 给内部卡片
|
|
281
281
|
|
|
@@ -1,28 +1,30 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import {onMount} from "svelte";
|
|
3
|
+
import type {Direction} from "../../types";
|
|
3
4
|
import type MenuItem from "./MenuItem";
|
|
4
|
-
import type {MenuNode,
|
|
5
|
+
import type {MenuNode, OnMenuItemClick} from "./MenuItem";
|
|
5
6
|
import NavigatorMenuItem from "./NavigatorMenuItem.svelte";
|
|
6
7
|
|
|
7
8
|
type GetText<T> = (item: T) => string;
|
|
8
|
-
type Variant = 'vertical' | 'horizontal';
|
|
9
9
|
|
|
10
10
|
interface Props {
|
|
11
|
-
|
|
11
|
+
/** 菜单节点列表 */
|
|
12
|
+
items?: Array<MenuNode>;
|
|
12
13
|
style?: string;
|
|
13
14
|
textField: string | GetText<MenuItem>;
|
|
14
|
-
onItemClick:
|
|
15
|
-
|
|
15
|
+
onItemClick: OnMenuItemClick;
|
|
16
|
+
/** 菜单方向 */
|
|
17
|
+
direction?: Direction;
|
|
16
18
|
theme?: string;
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
let {
|
|
20
|
-
|
|
22
|
+
items = [],
|
|
21
23
|
style = '',
|
|
22
24
|
textField,
|
|
23
25
|
onItemClick,
|
|
24
|
-
|
|
25
|
-
theme
|
|
26
|
+
direction = 'vertical',
|
|
27
|
+
theme
|
|
26
28
|
}: Props = $props();
|
|
27
29
|
|
|
28
30
|
// 横向模式:当前展开的 root 索引(同时只开一个 dropdown)
|
|
@@ -101,11 +103,11 @@
|
|
|
101
103
|
});
|
|
102
104
|
</script>
|
|
103
105
|
|
|
104
|
-
{#if
|
|
106
|
+
{#if direction === 'vertical'}
|
|
105
107
|
<div class="uniface-navigator-menu vertical" {style} data-theme={theme || undefined}>
|
|
106
|
-
{#if
|
|
108
|
+
{#if items && items.length > 0}
|
|
107
109
|
<ul>
|
|
108
|
-
{#each
|
|
110
|
+
{#each items as menu}
|
|
109
111
|
<NavigatorMenuItem {menu} onMenuItemClick={onItemClick} {textField}/>
|
|
110
112
|
{/each}
|
|
111
113
|
</ul>
|
|
@@ -120,7 +122,7 @@
|
|
|
120
122
|
{/if}
|
|
121
123
|
<div bind:this={scrollViewport} class="scroll-viewport" onscroll={updateScrollState}>
|
|
122
124
|
<div bind:this={scrollTrack} class="scroll-track">
|
|
123
|
-
{#each
|
|
125
|
+
{#each items as root, idx (idx)}
|
|
124
126
|
<div
|
|
125
127
|
class="root-item"
|
|
126
128
|
class:open={openRootIdx === idx}
|
|
@@ -143,14 +145,14 @@
|
|
|
143
145
|
<i aria-hidden="true"></i>
|
|
144
146
|
</button>
|
|
145
147
|
{/if}
|
|
146
|
-
{#if openRootIdx !== null &&
|
|
148
|
+
{#if openRootIdx !== null && items[openRootIdx]?.children?.length}
|
|
147
149
|
<div
|
|
148
150
|
class="dropdown-panel"
|
|
149
151
|
style:left="{dropdownLeft}px"
|
|
150
152
|
use:outerClick={() => { openRootIdx = null; }}
|
|
151
153
|
>
|
|
152
154
|
<ul class="dropdown">
|
|
153
|
-
{#each
|
|
155
|
+
{#each items[openRootIdx].children ?? [] as child}
|
|
154
156
|
<NavigatorMenuItem menu={child} onMenuItemClick={handleLeafClickInDropdown} {textField} cascade={true}/>
|
|
155
157
|
{/each}
|
|
156
158
|
</ul>
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
import type { Direction } from "../../types";
|
|
1
2
|
import type MenuItem from "./MenuItem";
|
|
2
|
-
import type { MenuNode,
|
|
3
|
+
import type { MenuNode, OnMenuItemClick } from "./MenuItem";
|
|
3
4
|
type GetText<T> = (item: T) => string;
|
|
4
|
-
type Variant = 'vertical' | 'horizontal';
|
|
5
5
|
interface Props {
|
|
6
|
-
|
|
6
|
+
/** 菜单节点列表 */
|
|
7
|
+
items?: Array<MenuNode>;
|
|
7
8
|
style?: string;
|
|
8
9
|
textField: string | GetText<MenuItem>;
|
|
9
|
-
onItemClick:
|
|
10
|
-
|
|
10
|
+
onItemClick: OnMenuItemClick;
|
|
11
|
+
/** 菜单方向 */
|
|
12
|
+
direction?: Direction;
|
|
11
13
|
theme?: string;
|
|
12
14
|
}
|
|
13
15
|
declare const NavigatorMenu: import("svelte").Component<Props, {}, "">;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import {slide, fly} from "svelte/transition";
|
|
3
3
|
import type MenuItem from "./MenuItem";
|
|
4
|
-
import type {MenuNode,
|
|
4
|
+
import type {MenuNode, OnMenuItemClick} from "./MenuItem";
|
|
5
5
|
import NavigatorMenuItem from "./NavigatorMenuItem.svelte";
|
|
6
6
|
|
|
7
7
|
type GetText<T> = (item: T) => string;
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
interface Props {
|
|
10
10
|
menu: MenuNode;
|
|
11
11
|
textField: string | GetText<MenuItem>;
|
|
12
|
-
onMenuItemClick:
|
|
12
|
+
onMenuItemClick: OnMenuItemClick;
|
|
13
13
|
defaultExpand?: boolean;
|
|
14
14
|
/**
|
|
15
15
|
* 子菜单以级联方式展开(向右飞出,空间不够时向左)。
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type MenuItem from "./MenuItem";
|
|
2
|
-
import type { MenuNode,
|
|
2
|
+
import type { MenuNode, OnMenuItemClick } from "./MenuItem";
|
|
3
3
|
import NavigatorMenuItem from "./NavigatorMenuItem.svelte";
|
|
4
4
|
type GetText<T> = (item: T) => string;
|
|
5
5
|
interface Props {
|
|
6
6
|
menu: MenuNode;
|
|
7
7
|
textField: string | GetText<MenuItem>;
|
|
8
|
-
onMenuItemClick:
|
|
8
|
+
onMenuItemClick: OnMenuItemClick;
|
|
9
9
|
defaultExpand?: boolean;
|
|
10
10
|
/**
|
|
11
11
|
* 子菜单以级联方式展开(向右飞出,空间不够时向左)。
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# NavigatorMenu Component
|
|
2
2
|
|
|
3
|
+
> **Renamed in 5.1.0**: this document uses the names from the [API Naming Guide](../../../docs/NAMING.md); the old names `menuItems` were removed in 5.1.0 (no compatibility aliases are kept).
|
|
4
|
+
|
|
3
5
|
A hierarchical navigation menu component built with Svelte 5, supporting nested menu items with expand/collapse functionality.
|
|
4
6
|
|
|
5
7
|
## Features
|
|
@@ -35,7 +37,7 @@ import type MenuItem from '$lib/nav-menu/MenuItem';
|
|
|
35
37
|
<script>
|
|
36
38
|
import { NavigatorMenu } from '$lib/nav-menu';
|
|
37
39
|
|
|
38
|
-
let
|
|
40
|
+
let items = $state([
|
|
39
41
|
{
|
|
40
42
|
item: { label: 'Dashboard', path: '/dashboard' },
|
|
41
43
|
children: []
|
|
@@ -55,7 +57,7 @@ import type MenuItem from '$lib/nav-menu/MenuItem';
|
|
|
55
57
|
</script>
|
|
56
58
|
|
|
57
59
|
<NavigatorMenu
|
|
58
|
-
|
|
60
|
+
items={items}
|
|
59
61
|
textField="label"
|
|
60
62
|
onItemClick={handleMenuClick}
|
|
61
63
|
/>
|
|
@@ -65,7 +67,7 @@ import type MenuItem from '$lib/nav-menu/MenuItem';
|
|
|
65
67
|
|
|
66
68
|
| Prop | Type | Required | Description |
|
|
67
69
|
|------|------|----------|-------------|
|
|
68
|
-
| `
|
|
70
|
+
| `items` | `Array<MenuItem>` | Yes | Array of menu item objects |
|
|
69
71
|
| `textField` | `string \| GetText<MenuItem>` | Yes | Field name or function to get display text |
|
|
70
72
|
| `onItemClick` | `(item: MenuItem) => void` | Yes | Callback when a menu item is clicked |
|
|
71
73
|
| `style` | `string` | No | Custom inline styles |
|
|
@@ -99,7 +101,7 @@ interface MenuItem {
|
|
|
99
101
|
</script>
|
|
100
102
|
|
|
101
103
|
<NavigatorMenu
|
|
102
|
-
|
|
104
|
+
items={simpleMenu}
|
|
103
105
|
textField="name"
|
|
104
106
|
onItemClick={(item) => console.log(item)}
|
|
105
107
|
/>
|
|
@@ -138,7 +140,7 @@ interface MenuItem {
|
|
|
138
140
|
</script>
|
|
139
141
|
|
|
140
142
|
<NavigatorMenu
|
|
141
|
-
|
|
143
|
+
items={nestedMenu}
|
|
142
144
|
textField="title"
|
|
143
145
|
onItemClick={(item) => navigate(item.path)}
|
|
144
146
|
/>
|
|
@@ -163,7 +165,7 @@ interface MenuItem {
|
|
|
163
165
|
</script>
|
|
164
166
|
|
|
165
167
|
<NavigatorMenu
|
|
166
|
-
|
|
168
|
+
items={customMenu}
|
|
167
169
|
textField={getText}
|
|
168
170
|
onItemClick={(item) => console.log(item)}
|
|
169
171
|
/>
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# NavigatorMenu 导航菜单组件
|
|
2
2
|
|
|
3
|
+
> **5.1.0 重命名**:本文使用 [API 命名规范](../../../docs/NAMING_CN.md) 中的名字;旧名 `menuItems` 已在 5.1.0 移除(5.1.0 不保留兼容别名)。
|
|
4
|
+
|
|
3
5
|
基于 Svelte 5 构建的分层导航菜单组件,支持具有展开/折叠功能的嵌套菜单项。
|
|
4
6
|
|
|
5
7
|
## 特性
|
|
@@ -35,7 +37,7 @@ import type MenuItem from '$lib/nav-menu/MenuItem';
|
|
|
35
37
|
<script>
|
|
36
38
|
import { NavigatorMenu } from '$lib/nav-menu';
|
|
37
39
|
|
|
38
|
-
let
|
|
40
|
+
let items = $state([
|
|
39
41
|
{
|
|
40
42
|
item: { label: '仪表板', path: '/dashboard' },
|
|
41
43
|
children: []
|
|
@@ -55,7 +57,7 @@ import type MenuItem from '$lib/nav-menu/MenuItem';
|
|
|
55
57
|
</script>
|
|
56
58
|
|
|
57
59
|
<NavigatorMenu
|
|
58
|
-
|
|
60
|
+
items={items}
|
|
59
61
|
textField="label"
|
|
60
62
|
onItemClick={handleMenuClick}
|
|
61
63
|
/>
|
|
@@ -65,7 +67,7 @@ import type MenuItem from '$lib/nav-menu/MenuItem';
|
|
|
65
67
|
|
|
66
68
|
| 属性 | 类型 | 必填 | 描述 |
|
|
67
69
|
|------|------|------|-------------|
|
|
68
|
-
| `
|
|
70
|
+
| `items` | `Array<MenuItem>` | 是 | 菜单项对象数组 |
|
|
69
71
|
| `textField` | `string \| GetText<MenuItem>` | 是 | 字段名称或获取显示文本的函数 |
|
|
70
72
|
| `onItemClick` | `(item: MenuItem) => void` | 是 | 点击菜单项时的回调 |
|
|
71
73
|
| `style` | `string` | 否 | 自定义内联样式 |
|
|
@@ -99,7 +101,7 @@ interface MenuItem {
|
|
|
99
101
|
</script>
|
|
100
102
|
|
|
101
103
|
<NavigatorMenu
|
|
102
|
-
|
|
104
|
+
items={simpleMenu}
|
|
103
105
|
textField="name"
|
|
104
106
|
onItemClick={(item) => console.log(item)}
|
|
105
107
|
/>
|
|
@@ -138,7 +140,7 @@ interface MenuItem {
|
|
|
138
140
|
</script>
|
|
139
141
|
|
|
140
142
|
<NavigatorMenu
|
|
141
|
-
|
|
143
|
+
items={nestedMenu}
|
|
142
144
|
textField="title"
|
|
143
145
|
onItemClick={(item) => navigate(item.path)}
|
|
144
146
|
/>
|
|
@@ -163,7 +165,7 @@ interface MenuItem {
|
|
|
163
165
|
</script>
|
|
164
166
|
|
|
165
167
|
<NavigatorMenu
|
|
166
|
-
|
|
168
|
+
items={customMenu}
|
|
167
169
|
textField={getText}
|
|
168
170
|
onItemClick={(item) => console.log(item)}
|
|
169
171
|
/>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import NavigatorMenu from "./NavigatorMenu.svelte";
|
|
2
2
|
import type MenuItem from "./MenuItem";
|
|
3
3
|
import type { MenuNode } from "./MenuItem";
|
|
4
|
-
import type {
|
|
4
|
+
import type { OnMenuItemClick } from "./MenuItem";
|
|
5
5
|
import Menus from "./Menus";
|
|
6
6
|
export default NavigatorMenu;
|
|
7
|
-
export type { MenuItem, MenuNode,
|
|
7
|
+
export type { MenuItem, MenuNode, OnMenuItemClick };
|
|
8
8
|
export { Menus };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import {NavItemStatus} from "./NavItemStatus";
|
|
3
3
|
|
|
4
|
-
type
|
|
4
|
+
type OnItemClick = (item: any) => void;
|
|
5
5
|
type RetrieveItemStatus = (item: any) => NavItemStatus;
|
|
6
6
|
|
|
7
7
|
interface Props {
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
activeItem?: any;
|
|
10
10
|
style?: string;
|
|
11
11
|
highlights?: Array<any>;
|
|
12
|
-
|
|
12
|
+
/** 项点击回调 */
|
|
13
|
+
onItemClick?: OnItemClick;
|
|
13
14
|
retrieveStatus?: RetrieveItemStatus;
|
|
14
15
|
}
|
|
15
16
|
|
|
@@ -18,13 +19,13 @@
|
|
|
18
19
|
activeItem = $bindable(),
|
|
19
20
|
style = "",
|
|
20
21
|
highlights = [],
|
|
21
|
-
|
|
22
|
+
onItemClick,
|
|
22
23
|
retrieveStatus
|
|
23
24
|
}: Props = $props();
|
|
24
25
|
|
|
25
26
|
const handleClick = (item: any) => {
|
|
26
27
|
activeItem = item;
|
|
27
|
-
|
|
28
|
+
onItemClick?.(item);
|
|
28
29
|
};
|
|
29
30
|
|
|
30
31
|
const handleKeyDown = (item: any) => (e: KeyboardEvent) => {
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { NavItemStatus } from "./NavItemStatus";
|
|
2
|
-
type
|
|
2
|
+
type OnItemClick = (item: any) => void;
|
|
3
3
|
type RetrieveItemStatus = (item: any) => NavItemStatus;
|
|
4
4
|
interface Props {
|
|
5
5
|
items: Array<any>;
|
|
6
6
|
activeItem?: any;
|
|
7
7
|
style?: string;
|
|
8
8
|
highlights?: Array<any>;
|
|
9
|
-
|
|
9
|
+
/** 项点击回调 */
|
|
10
|
+
onItemClick?: OnItemClick;
|
|
10
11
|
retrieveStatus?: RetrieveItemStatus;
|
|
11
12
|
}
|
|
12
13
|
declare const Navigator: import("svelte").Component<Props, {}, "activeItem">;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Navigator Component
|
|
2
2
|
|
|
3
|
+
> **Renamed in 5.1.0**: this document uses the names from the [API Naming Guide](../../../docs/NAMING.md); the old names `itemClickHandler` were removed in 5.1.0 (no compatibility aliases are kept).
|
|
4
|
+
|
|
3
5
|
A vertical step / wizard navigator. Renders items as a clickable list with a connecting vertical line on the left, an active marker (filled circle), per-item status colors (completed / warning / not-start), and optional highlights. Designed for multi-step forms and guided workflows.
|
|
4
6
|
|
|
5
7
|
## Features
|
|
@@ -8,7 +10,7 @@ A vertical step / wizard navigator. Renders items as a clickable list with a con
|
|
|
8
10
|
- **Three status states**: `Completed`, `Warning` (red dot), `NotStart` (italic, dimmed) — drive them via a `retrieveStatus` callback
|
|
9
11
|
- **Active marker**: the active item shows a 15px bordered circle on the left
|
|
10
12
|
- **Highlights array**: extra "look at me" color for arbitrary items (e.g. items with errors)
|
|
11
|
-
- **Two-way bindable `activeItem`**: `bind:activeItem` updates on click without needing `
|
|
13
|
+
- **Two-way bindable `activeItem`**: `bind:activeItem` updates on click without needing `onItemClick`
|
|
12
14
|
- **Scrolls vertically** when items overflow
|
|
13
15
|
|
|
14
16
|
## Installation
|
|
@@ -53,16 +55,16 @@ import Navigator, { NavItemStatus } from '@ticatec/uniface-element/Navigator';
|
|
|
53
55
|
/>
|
|
54
56
|
```
|
|
55
57
|
|
|
56
|
-
With `bind:activeItem`, clicking an item updates `activeItem` directly. No `
|
|
58
|
+
With `bind:activeItem`, clicking an item updates `activeItem` directly. No `onItemClick` needed unless you want to run side effects (analytics, validation, route change).
|
|
57
59
|
|
|
58
60
|
## Props
|
|
59
61
|
|
|
60
62
|
| Prop | Type | Default | Description |
|
|
61
63
|
|------|------|---------|-------------|
|
|
62
64
|
| `items` | `Array<any>` | _(required)_ | Nav items. Each **must have a `text` property** for the label. Other fields are yours. |
|
|
63
|
-
| `activeItem` | `any` | `$bindable(undefined)` | Currently active item. **`bind:activeItem`** for two-way binding; on click, the component assigns the clicked item here before calling `
|
|
65
|
+
| `activeItem` | `any` | `$bindable(undefined)` | Currently active item. **`bind:activeItem`** for two-way binding; on click, the component assigns the clicked item here before calling `onItemClick`. |
|
|
64
66
|
| `highlights` | `Array<any>` | `[]` | Items to highlight (e.g. items with errors). Matched by reference equality. |
|
|
65
|
-
| `
|
|
67
|
+
| `onItemClick` | `((item: any) => void) \| undefined` | `undefined` | Called on every click, **after** `activeItem` is updated. Use for side effects; not needed for state updates if you `bind:activeItem`. |
|
|
66
68
|
| `retrieveStatus` | `((item: any) => NavItemStatus) \| undefined` | `undefined` | Returns the status for each item. **If omitted, all items default to `Completed`.** |
|
|
67
69
|
| `style` | `string` | `''` | Inline CSS on the outer wrapper |
|
|
68
70
|
|
|
@@ -207,7 +209,7 @@ Or globally:
|
|
|
207
209
|
bind:activeItem
|
|
208
210
|
highlights={highlights}
|
|
209
211
|
retrieveStatus={getStepStatus}
|
|
210
|
-
|
|
212
|
+
onItemClick={handleClick}
|
|
211
213
|
/>
|
|
212
214
|
|
|
213
215
|
<div style="margin-top: 32px; padding: 24px; border: 1px solid #ddd;">
|
|
@@ -265,14 +267,14 @@ If you want display-only (no click):
|
|
|
265
267
|
/>
|
|
266
268
|
```
|
|
267
269
|
|
|
268
|
-
Clicks will still update `activeItem` internally (if `bind:` or `
|
|
270
|
+
Clicks will still update `activeItem` internally (if `bind:` or `onItemClick` is set), but you can omit both and let the component be effectively display-only. Without `bind:` or `onItemClick`, internal state still updates but no one hears about it.
|
|
269
271
|
|
|
270
272
|
## Behavior Notes
|
|
271
273
|
|
|
272
274
|
- **Items matched by reference, not value.** Reconstructing the `items` array (e.g. via `.map`) on every render will lose `activeItem` / `highlights` matching. Keep `items` referentially stable.
|
|
273
275
|
- **`retrieveStatus` defaults to `Completed`** when omitted. If you forget to pass it, every item will look "done".
|
|
274
|
-
- **`activeItem` is updated internally on every click**, even if you don't `bind:` or pass `
|
|
275
|
-
- **`handleClick` runs `activeItem = item` first**, then `
|
|
276
|
+
- **`activeItem` is updated internally on every click**, even if you don't `bind:` or pass `onItemClick`. The component is internally consistent — but the parent won't know.
|
|
277
|
+
- **`handleClick` runs `activeItem = item` first**, then `onItemClick?.(item)`. If you want to **prevent** the active change (e.g. user hasn't completed prerequisites), you need to undo it inside `onItemClick` by setting `activeItem` back. There's no `canActivate` predicate.
|
|
276
278
|
- **`aria-hidden="true"` on every item** — despite being clickable divs, they're hidden from screen readers. This is an a11y issue; see below.
|
|
277
279
|
- **Long labels clip horizontally**, not wrap. The wrapper is single-line.
|
|
278
280
|
|
|
@@ -290,10 +292,10 @@ If you need keyboard-accessible step navigation, wrap each item in your own `<bu
|
|
|
290
292
|
## Best Practices
|
|
291
293
|
|
|
292
294
|
1. **Keep `items` referentially stable.** Define it once (module scope or `$state` that you don't reassign). Mapping on every render breaks active/highlight matching.
|
|
293
|
-
2. **Use `bind:activeItem`** instead of `
|
|
295
|
+
2. **Use `bind:activeItem`** instead of `onItemClick` for plain state sync. Add `onItemClick` only for side effects.
|
|
294
296
|
3. **Always provide `retrieveStatus`** unless you really want every item to look completed by default.
|
|
295
297
|
4. **Use `Warning` + `highlights` together** for error states — the red dot catches the eye, the highlight color reinforces it.
|
|
296
|
-
5. **For forward-only wizards**, undo the active change in `
|
|
298
|
+
5. **For forward-only wizards**, undo the active change in `onItemClick` if the user clicks ahead. There's no built-in guard.
|
|
297
299
|
6. **Don't rely on this for keyboard / screen-reader users.** See a11y note above.
|
|
298
300
|
|
|
299
301
|
## Related Components
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Navigator 步骤导航组件
|
|
2
2
|
|
|
3
|
+
> **5.1.0 重命名**:本文使用 [API 命名规范](../../../docs/NAMING_CN.md) 中的名字;旧名 `itemClickHandler` 已在 5.1.0 移除(5.1.0 不保留兼容别名)。
|
|
4
|
+
|
|
3
5
|
垂直的步骤 / 向导导航器。把项目渲染为可点击列表,左侧有连接的竖线,当前项有圆形标记,每项有状态颜色(完成 / 警告 / 未开始),还可以选择性高亮。专为多步表单和引导式流程设计。
|
|
4
6
|
|
|
5
7
|
## 功能特性
|
|
@@ -8,7 +10,7 @@
|
|
|
8
10
|
- **三种状态**:`Completed`、`Warning`(红点)、`NotStart`(斜体、变淡) —— 通过 `retrieveStatus` 回调驱动
|
|
9
11
|
- **当前项标记**:active 项左侧显示 15px 圆形边框
|
|
10
12
|
- **高亮数组**:给任意项加"看我"颜色(比如有错误的项)
|
|
11
|
-
- **`activeItem` 双向绑定**:`bind:activeItem` 在点击时自动更新,不需要 `
|
|
13
|
+
- **`activeItem` 双向绑定**:`bind:activeItem` 在点击时自动更新,不需要 `onItemClick`
|
|
12
14
|
- **纵向滚动**,内容溢出时
|
|
13
15
|
|
|
14
16
|
## 安装
|
|
@@ -53,16 +55,16 @@ import Navigator, { NavItemStatus } from '@ticatec/uniface-element/Navigator';
|
|
|
53
55
|
/>
|
|
54
56
|
```
|
|
55
57
|
|
|
56
|
-
用 `bind:activeItem` 后,点击项直接更新 `activeItem`。不需要 `
|
|
58
|
+
用 `bind:activeItem` 后,点击项直接更新 `activeItem`。不需要 `onItemClick` —— 除非要跑副作用(埋点、校验、路由切换)。
|
|
57
59
|
|
|
58
60
|
## 属性
|
|
59
61
|
|
|
60
62
|
| 属性 | 类型 | 默认值 | 描述 |
|
|
61
63
|
|------|------|---------|-------------|
|
|
62
64
|
| `items` | `Array<any>` | _(必填)_ | 导航项。每项**必须有 `text` 属性**作为标签。其他字段随你 |
|
|
63
|
-
| `activeItem` | `any` | `$bindable(undefined)` | 当前 active 项。**`bind:activeItem`** 双向绑定;点击时组件先把点击项赋给它,再调 `
|
|
65
|
+
| `activeItem` | `any` | `$bindable(undefined)` | 当前 active 项。**`bind:activeItem`** 双向绑定;点击时组件先把点击项赋给它,再调 `onItemClick` |
|
|
64
66
|
| `highlights` | `Array<any>` | `[]` | 要高亮的项(如出错的项)。按引用相等匹配 |
|
|
65
|
-
| `
|
|
67
|
+
| `onItemClick` | `((item: any) => void) \| undefined` | `undefined` | 每次点击调用,**在 `activeItem` 更新之后**。用于副作用;如果用了 `bind:activeItem` 就不需要它做状态更新 |
|
|
66
68
|
| `retrieveStatus` | `((item: any) => NavItemStatus) \| undefined` | `undefined` | 返回每项的状态。**不传时所有项默认 `Completed`** |
|
|
67
69
|
| `style` | `string` | `''` | 外层 wrapper 的内联 CSS |
|
|
68
70
|
|
|
@@ -207,7 +209,7 @@ CSS 类名就是枚举值(`NavItemStatus.Completed === 'nav-completed'`),
|
|
|
207
209
|
bind:activeItem
|
|
208
210
|
highlights={highlights}
|
|
209
211
|
retrieveStatus={getStepStatus}
|
|
210
|
-
|
|
212
|
+
onItemClick={handleClick}
|
|
211
213
|
/>
|
|
212
214
|
|
|
213
215
|
<div style="margin-top: 32px; padding: 24px; border: 1px solid #ddd;">
|
|
@@ -265,14 +267,14 @@ CSS 类名就是枚举值(`NavItemStatus.Completed === 'nav-completed'`),
|
|
|
265
267
|
/>
|
|
266
268
|
```
|
|
267
269
|
|
|
268
|
-
点击仍然会内部更新 `activeItem`(如果用了 `bind:` 或 `
|
|
270
|
+
点击仍然会内部更新 `activeItem`(如果用了 `bind:` 或 `onItemClick`),但你可以两个都不传,让组件事实上只展示。没有 `bind:` 或 `onItemClick` 时内部状态仍然更新,但没人能知道。
|
|
269
271
|
|
|
270
272
|
## 行为说明
|
|
271
273
|
|
|
272
274
|
- **项按引用匹配,不是值。** 渲染间重建 `items` 数组(如 `.map`)会丢失 `activeItem` / `highlights` 匹配。保持 `items` 引用稳定
|
|
273
275
|
- **`retrieveStatus` 不传时默认 `Completed`**。忘了传的话每项看起来都是"已完成"
|
|
274
|
-
- **每次点击内部都更新 `activeItem`**,即使不用 `bind:` 或不传 `
|
|
275
|
-
- **`handleClick` 先执行 `activeItem = item`**,再执行 `
|
|
276
|
+
- **每次点击内部都更新 `activeItem`**,即使不用 `bind:` 或不传 `onItemClick`。组件内部自洽 —— 但父组件不会知道
|
|
277
|
+
- **`handleClick` 先执行 `activeItem = item`**,再执行 `onItemClick?.(item)`。如果想**阻止** active 变更(比如用户没完成前置步骤),需要在 `onItemClick` 内部把 `activeItem` 设回去。没有 `canActivate` 谓词
|
|
276
278
|
- **每项都有 `aria-hidden="true"`** —— 尽管是可点击 div,但屏幕阅读器看不到。这是 a11y 问题 —— 见下
|
|
277
279
|
- **长标签横向裁剪**,不换行。wrapper 是单行
|
|
278
280
|
|
|
@@ -290,10 +292,10 @@ CSS 类名就是枚举值(`NavItemStatus.Completed === 'nav-completed'`),
|
|
|
290
292
|
## 最佳实践
|
|
291
293
|
|
|
292
294
|
1. **保持 `items` 引用稳定。** 定义一次(模块作用域或不重新赋值的 `$state`)。每次渲染 map 会破坏 active / 高亮匹配
|
|
293
|
-
2. **用 `bind:activeItem`** 而不是 `
|
|
295
|
+
2. **用 `bind:activeItem`** 而不是 `onItemClick` 做纯状态同步。`onItemClick` 只在需要副作用时加
|
|
294
296
|
3. **永远传 `retrieveStatus`**,除非你真的想每项默认看起来都是已完成
|
|
295
297
|
4. **`Warning` + `highlights` 一起用**做错误状态 —— 红点抓眼球,高亮色加强
|
|
296
|
-
5. **只能向后的向导**,在 `
|
|
298
|
+
5. **只能向后的向导**,在 `onItemClick` 里撤销越界点击的 active 变更。没有内置守卫
|
|
297
299
|
6. **不要给键盘 / 屏幕阅读器用户用这个。** 见上面 a11y 说明
|
|
298
300
|
|
|
299
301
|
## 相关组件
|