@ticatec/uniface-element 5.0.5 → 5.1.1
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 +4 -3
- package/README_CN.md +4 -3
- 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/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 +15 -12
- 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 -15
- 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 +15 -14
- package/dist/data_table/DataTable.svelte.d.ts +2 -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/parts/ActionCell.svelte +3 -3
- package/dist/data_table/parts/ActionCell.svelte.d.ts +1 -1
- package/dist/data_table/parts/ActionsRow.svelte +7 -5
- package/dist/data_table/parts/ContentPanel.svelte +14 -14
- package/dist/data_table/parts/ContentPanel.svelte.d.ts +5 -5
- package/dist/data_table/parts/FixedColumnsPanel.svelte +15 -15
- package/dist/data_table/parts/FixedColumnsPanel.svelte.d.ts +4 -4
- package/dist/data_table/parts/FixedHeaderPanel.svelte +13 -13
- 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/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 +15 -5
- 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 +17 -13
- 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 +5 -1
- package/dist/i18nRes/i18nRes.js +5 -1
- 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/BeforeClose.d.ts +4 -0
- package/dist/overlay/dialog/BeforeClose.js +1 -0
- package/dist/overlay/dialog/CommonDialog.svelte +16 -12
- 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/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/tooltip/README.md +16 -1
- package/dist/overlay/tooltip/README_CN.md +16 -1
- package/dist/overlay/tooltip/Tooltip.svelte +94 -19
- 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 +364 -0
- package/docs/NAMING_CN.md +364 -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/overlay/dialog/DialogActions.d.ts +0 -16
- package/dist/overlay/dialog/DialogActions.js +0 -1
- package/dist/overlay/dialog/DialogCloseConfirm.d.ts +0 -1
- package/dist/overlay/dialog/DialogCloseConfirm.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
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import type ImageFile from "./ImageFile";
|
|
3
|
-
|
|
4
|
-
let {
|
|
5
|
-
file,
|
|
6
|
-
readonly = false,
|
|
7
|
-
onRemove,
|
|
8
|
-
onPreview
|
|
9
|
-
}: {
|
|
10
|
-
file: ImageFile;
|
|
11
|
-
readonly?: boolean;
|
|
12
|
-
onRemove?: (file: ImageFile) => Promise<void>;
|
|
13
|
-
onPreview?: (file: ImageFile) => void;
|
|
14
|
-
} = $props();
|
|
15
|
-
|
|
16
|
-
const removeFile = () => {
|
|
17
|
-
onRemove?.(file);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const handleActionKeyDown = (handler: () => void) => (e: KeyboardEvent) => {
|
|
21
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
|
22
|
-
e.preventDefault();
|
|
23
|
-
handler();
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
</script>
|
|
27
|
-
|
|
28
|
-
<div class="uniface-image-render">
|
|
29
|
-
<div class="file-icon">
|
|
30
|
-
<img src={file.thumbnail ?? file.uri} alt="" width="40px" height="40px"/>
|
|
31
|
-
<div class="img-overlay">
|
|
32
|
-
<div class="action-icon">
|
|
33
|
-
<i class="icon_google_remove_red_eye" role="button" tabindex="0" aria-label="Preview image"
|
|
34
|
-
onclick={() => onPreview?.(file)} onkeydown={handleActionKeyDown(() => onPreview?.(file))}></i>
|
|
35
|
-
</div>
|
|
36
|
-
{#if !readonly}
|
|
37
|
-
<div class="action-icon">
|
|
38
|
-
<i class="icon_google_delete" role="button" tabindex="0" aria-label="Remove image"
|
|
39
|
-
onclick={removeFile} onkeydown={handleActionKeyDown(removeFile)}></i>
|
|
40
|
-
</div>
|
|
41
|
-
{/if}
|
|
42
|
-
</div>
|
|
43
|
-
</div>
|
|
44
|
-
</div>
|
|
45
|
-
|
|
46
|
-
<style>
|
|
47
|
-
.uniface-image-render {
|
|
48
|
-
width: 80px;
|
|
49
|
-
box-sizing: border-box;
|
|
50
|
-
padding: 6px 8px;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
.file-icon {
|
|
54
|
-
position: relative;
|
|
55
|
-
width: 40px;
|
|
56
|
-
height: 40px;
|
|
57
|
-
border-radius: 4px;
|
|
58
|
-
overflow: hidden;
|
|
59
|
-
background-color: rgba(0, 0, 0, 0.04);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
.file-icon img {
|
|
63
|
-
display: block;
|
|
64
|
-
width: 100%;
|
|
65
|
-
height: 100%;
|
|
66
|
-
object-fit: cover;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
.img-overlay {
|
|
70
|
-
position: absolute;
|
|
71
|
-
inset: 0;
|
|
72
|
-
display: flex;
|
|
73
|
-
align-items: center;
|
|
74
|
-
justify-content: center;
|
|
75
|
-
gap: 6px;
|
|
76
|
-
background-color: rgba(0, 0, 0, 0.45);
|
|
77
|
-
opacity: 0;
|
|
78
|
-
transition: opacity 0.15s ease;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
.file-icon:hover .img-overlay,
|
|
82
|
-
.file-icon:focus-within .img-overlay {
|
|
83
|
-
opacity: 1;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
.action-icon {
|
|
87
|
-
display: flex;
|
|
88
|
-
cursor: pointer;
|
|
89
|
-
color: #fff;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
.action-icon i {
|
|
93
|
-
font-size: 16px;
|
|
94
|
-
}
|
|
95
|
-
</style>
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type ImageFile from "./ImageFile";
|
|
2
|
-
type $$ComponentProps = {
|
|
3
|
-
file: ImageFile;
|
|
4
|
-
readonly?: boolean;
|
|
5
|
-
onRemove?: (file: ImageFile) => Promise<void>;
|
|
6
|
-
onPreview?: (file: ImageFile) => void;
|
|
7
|
-
};
|
|
8
|
-
declare const ImageRender: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
9
|
-
type ImageRender = ReturnType<typeof ImageRender>;
|
|
10
|
-
export default ImageRender;
|
|
@@ -1,468 +0,0 @@
|
|
|
1
|
-
# ImageFilesField
|
|
2
|
-
|
|
3
|
-
An image upload and management component. Users can drag-and-drop or click to browse for images. Uploaded images are displayed in a grid with thumbnails, full-size previews, and action buttons (delete, preview). Supports multiple images, aspect ratio preservation, and optional confirmation before deletion.
|
|
4
|
-
|
|
5
|
-
> Think of it as a photo gallery manager for your form. Upload, preview, and manage images with a consistent UI.
|
|
6
|
-
|
|
7
|
-
## Features
|
|
8
|
-
|
|
9
|
-
- **Image upload** — supports drag-and-drop and click-to-browse.
|
|
10
|
-
- **Image preview** — click an image to view it in full size.
|
|
11
|
-
- **Thumbnail generation** — automatically generates thumbnails for uploaded images.
|
|
12
|
-
- **Image grid display** — shows uploaded images in a responsive grid.
|
|
13
|
-
- **Delete with confirmation** — optional `removeFileConfirm` callback for deletion confirmation.
|
|
14
|
-
- **Multiple images** — supports uploading multiple images at once.
|
|
15
|
-
- **Aspect ratio preservation** — images maintain their original aspect ratio.
|
|
16
|
-
- **Disabled / readonly** modes.
|
|
17
|
-
- **Compact mode** for dense UIs.
|
|
18
|
-
|
|
19
|
-
## Installation
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
npm install @ticatec/uniface-element
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Import
|
|
26
|
-
|
|
27
|
-
```typescript
|
|
28
|
-
import ImageFilesField from "@ticatec/uniface-element/ImageFilesField";
|
|
29
|
-
import type { ImageFile, RemoveConfirm, FileUpload } from "@ticatec/uniface-element/ImageFilesField";
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## Basic Usage
|
|
33
|
-
|
|
34
|
-
```svelte
|
|
35
|
-
<script lang="ts">
|
|
36
|
-
import ImageFilesField from "@ticatec/uniface-element/ImageFilesField";
|
|
37
|
-
import type { ImageFile, FileUpload } from "@ticatec/uniface-element/ImageFilesField";
|
|
38
|
-
|
|
39
|
-
let images = $state<ImageFile[]>([]);
|
|
40
|
-
|
|
41
|
-
// Simulated upload function
|
|
42
|
-
const uploadImage: FileUpload = (file, progressUpdate, onUploaded, errorHandler) => {
|
|
43
|
-
// Simulate upload progress
|
|
44
|
-
let progress = 0;
|
|
45
|
-
const interval = setInterval(() => {
|
|
46
|
-
progress += 10;
|
|
47
|
-
progressUpdate(Math.floor(file.size * (progress / 100)));
|
|
48
|
-
|
|
49
|
-
if (progress >= 100) {
|
|
50
|
-
clearInterval(interval);
|
|
51
|
-
// Simulate successful upload
|
|
52
|
-
const fakeUrl = `/uploads/${file.name}`;
|
|
53
|
-
const fakeThumbnail = `/thumbnails/${file.name}`;
|
|
54
|
-
onUploaded(fakeUrl, fakeThumbnail);
|
|
55
|
-
}
|
|
56
|
-
}, 100);
|
|
57
|
-
|
|
58
|
-
return {
|
|
59
|
-
cancel: async () => {
|
|
60
|
-
clearInterval(interval);
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
};
|
|
65
|
-
</script>
|
|
66
|
-
|
|
67
|
-
<ImageFilesField
|
|
68
|
-
bind:images={images}
|
|
69
|
-
uploadFile={uploadImage}
|
|
70
|
-
maxImages={5}
|
|
71
|
-
/>
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
## Props
|
|
75
|
-
|
|
76
|
-
`ImageFilesField` extends `CommonFieldProps`, so it inherits `variant`, `compact`, `disabled`, `readonly`, `style`, `error`, `tooltip`, `theme`, `placeholder`.
|
|
77
|
-
|
|
78
|
-
| Prop | Type | Default | Description |
|
|
79
|
-
|------|------|---------|-------------|
|
|
80
|
-
| `images` | `Array<ImageFile>` (bindable) | `[]` | Array of uploaded images. Each image has `name`, `uri`, and `thumbnail` properties. |
|
|
81
|
-
| `uploadFile` | `FileUpload` | — | **Required.** Function that handles image upload. Receives `(file, progressUpdate, onUploaded, errorHandler)` and returns an `UploadProgress` object with a `cancel()` method. |
|
|
82
|
-
| `maxImages` | `number` | `10` | Maximum number of images allowed. |
|
|
83
|
-
| `removeFileConfirm` | `RemoveConfirm` | — | Optional callback for deletion confirmation. Receives the image to be deleted and returns a Promise<boolean>. |
|
|
84
|
-
| `variant` | `'' \| 'plain' \| 'outlined' \| 'filled'` | `''` | Visual style variant. |
|
|
85
|
-
| `compact` | `boolean` | `false` | Dense layout for table cells and inline forms. |
|
|
86
|
-
| `disabled` | `boolean` | `false` | Fully disabled — no upload or delete actions. |
|
|
87
|
-
| `readonly` | `boolean` | `false` | Read-only — no upload or delete actions, but images are visible. |
|
|
88
|
-
| `style` | `string` | — | Inline CSS on the editor root. |
|
|
89
|
-
| `error` | `string` | — | Validation error text — triggers the editor's error state. |
|
|
90
|
-
| `tooltip` | `string` | — | Hover tooltip on the editor. |
|
|
91
|
-
| `theme` | `string` | — | Rendered as `data-theme` on the editor for scoped styling. |
|
|
92
|
-
| `onchange` | `(images: Array<ImageFile>) => void` | — | Fires when the images array changes (upload or delete). Receives the updated images array. |
|
|
93
|
-
| `onfocus` | `(event: FocusEvent) => void` | — | Editor focus. |
|
|
94
|
-
| `onblur` | `(event: FocusEvent) => void` | — | Editor blur. |
|
|
95
|
-
|
|
96
|
-
## Events
|
|
97
|
-
|
|
98
|
-
| Event | Signature | Description |
|
|
99
|
-
|-------|-----------|-------------|
|
|
100
|
-
| `onchange` | `(images: Array<ImageFile>) => void` | Fires when the images array changes (upload or delete). Receives the updated images array. |
|
|
101
|
-
| `onfocus` | `(event: FocusEvent) => void` | Editor focus. |
|
|
102
|
-
| `onblur` | `(event: FocusEvent) => void` | Editor blur. |
|
|
103
|
-
|
|
104
|
-
## Methods
|
|
105
|
-
|
|
106
|
-
| Method | Signature | Description |
|
|
107
|
-
|--------|-----------|-------------|
|
|
108
|
-
| `focus()` | `() => void` | Moves focus to the editor. |
|
|
109
|
-
|
|
110
|
-
```svelte
|
|
111
|
-
<script lang="ts">
|
|
112
|
-
import ImageFilesField from "@ticatec/uniface-element/ImageFilesField";
|
|
113
|
-
|
|
114
|
-
let editorRef;
|
|
115
|
-
|
|
116
|
-
function focusEditor() {
|
|
117
|
-
editorRef.focus();
|
|
118
|
-
}
|
|
119
|
-
</script>
|
|
120
|
-
|
|
121
|
-
<ImageFilesField bind:this={editorRef} bind:images={images} uploadFile={uploadImage} />
|
|
122
|
-
<button onclick={focusEditor}>Focus</button>
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
## `FileUpload` — upload function
|
|
126
|
-
|
|
127
|
-
The `uploadFile` callback is required. It receives:
|
|
128
|
-
|
|
129
|
-
| Parameter | Type | Description |
|
|
130
|
-
|-----------|------|-------------|
|
|
131
|
-
| `file` | `File` | The file to upload. |
|
|
132
|
-
| `progressUpdate` | `(bytesUploaded: number) => void` | Call this to report upload progress. |
|
|
133
|
-
| `onUploaded` | `(url: string, thumbnail: string) => void` | Call this when upload is complete. Pass the full-size URL and thumbnail URL. |
|
|
134
|
-
| `errorHandler` | `(error: Error) => void` | Call this if upload fails. Pass an Error object. |
|
|
135
|
-
|
|
136
|
-
It must return an `UploadProgress` object:
|
|
137
|
-
|
|
138
|
-
```typescript
|
|
139
|
-
interface UploadProgress {
|
|
140
|
-
cancel: () => Promise<boolean>;
|
|
141
|
-
}
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
The `cancel()` method allows the user to cancel an in-progress upload.
|
|
145
|
-
|
|
146
|
-
```svelte
|
|
147
|
-
<script lang="ts">
|
|
148
|
-
import ImageFilesField from "@ticatec/uniface-element/ImageFilesField";
|
|
149
|
-
import type { FileUpload } from "@ticatec/uniface-element/ImageFilesField";
|
|
150
|
-
|
|
151
|
-
let images = $state([]);
|
|
152
|
-
|
|
153
|
-
const uploadImage: FileUpload = (file, progressUpdate, onUploaded, errorHandler) => {
|
|
154
|
-
// Simulate upload with progress
|
|
155
|
-
let bytesUploaded = 0;
|
|
156
|
-
const totalBytes = file.size;
|
|
157
|
-
const interval = setInterval(() => {
|
|
158
|
-
bytesUploaded += 1024; // 1KB per tick
|
|
159
|
-
if (bytesUploaded >= totalBytes) {
|
|
160
|
-
clearInterval(interval);
|
|
161
|
-
onUploaded(`/uploads/${file.name}`, `/thumbnails/${file.name}`);
|
|
162
|
-
} else {
|
|
163
|
-
progressUpdate(bytesUploaded);
|
|
164
|
-
}
|
|
165
|
-
}, 100);
|
|
166
|
-
|
|
167
|
-
return {
|
|
168
|
-
cancel: async () => {
|
|
169
|
-
clearInterval(interval);
|
|
170
|
-
return true; // upload was cancelled
|
|
171
|
-
}
|
|
172
|
-
};
|
|
173
|
-
};
|
|
174
|
-
</script>
|
|
175
|
-
|
|
176
|
-
<ImageFilesField bind:images={images} uploadFile={uploadImage} />
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
## `ImageFile` — image object
|
|
180
|
-
|
|
181
|
-
Each image in the `images` array is an `ImageFile` object:
|
|
182
|
-
|
|
183
|
-
```typescript
|
|
184
|
-
interface ImageFile {
|
|
185
|
-
name: string; // Image name
|
|
186
|
-
uri: string; // Full-size image URL (after upload)
|
|
187
|
-
thumbnail: string; // Thumbnail URL (after upload)
|
|
188
|
-
}
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
## Examples
|
|
192
|
-
|
|
193
|
-
### Image upload with confirmation
|
|
194
|
-
|
|
195
|
-
```svelte
|
|
196
|
-
<script lang="ts">
|
|
197
|
-
import ImageFilesField from "@ticatec/uniface-element/ImageFilesField";
|
|
198
|
-
import type { ImageFile, FileUpload, RemoveConfirm } from "@ticatec/uniface-element/ImageFilesField";
|
|
199
|
-
|
|
200
|
-
let images = $state<ImageFile[]>([]);
|
|
201
|
-
|
|
202
|
-
const uploadImage: FileUpload = (file, progressUpdate, onUploaded, errorHandler) => {
|
|
203
|
-
let bytesUploaded = 0;
|
|
204
|
-
const totalBytes = file.size;
|
|
205
|
-
const interval = setInterval(() => {
|
|
206
|
-
bytesUploaded += 1024;
|
|
207
|
-
if (bytesUploaded >= totalBytes) {
|
|
208
|
-
clearInterval(interval);
|
|
209
|
-
onUploaded(`/uploads/${file.name}`, `/thumbnails/${file.name}`);
|
|
210
|
-
} else {
|
|
211
|
-
progressUpdate(bytesUploaded);
|
|
212
|
-
}
|
|
213
|
-
}, 100);
|
|
214
|
-
|
|
215
|
-
return {
|
|
216
|
-
cancel: async () => {
|
|
217
|
-
clearInterval(interval);
|
|
218
|
-
return true;
|
|
219
|
-
}
|
|
220
|
-
};
|
|
221
|
-
};
|
|
222
|
-
|
|
223
|
-
const removeImageConfirm: RemoveConfirm = async (image) => {
|
|
224
|
-
return confirm(`Are you sure you want to delete ${image.name}?`);
|
|
225
|
-
};
|
|
226
|
-
</script>
|
|
227
|
-
|
|
228
|
-
<ImageFilesField
|
|
229
|
-
bind:images={images}
|
|
230
|
-
uploadFile={uploadImage}
|
|
231
|
-
removeFileConfirm={removeImageConfirm}
|
|
232
|
-
maxImages={5}
|
|
233
|
-
/>
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
### Multiple images gallery
|
|
237
|
-
|
|
238
|
-
```svelte
|
|
239
|
-
<script lang="ts">
|
|
240
|
-
import ImageFilesField from "@ticatec/uniface-element/ImageFilesField";
|
|
241
|
-
import type { ImageFile, FileUpload } from "@ticatec/uniface-element/ImageFilesField";
|
|
242
|
-
|
|
243
|
-
let images = $state<ImageFile[]>([]);
|
|
244
|
-
|
|
245
|
-
const uploadImage: FileUpload = (file, progressUpdate, onUploaded, errorHandler) => {
|
|
246
|
-
let progress = 0;
|
|
247
|
-
const interval = setInterval(() => {
|
|
248
|
-
progress += 10;
|
|
249
|
-
progressUpdate(Math.floor(file.size * (progress / 100)));
|
|
250
|
-
|
|
251
|
-
if (progress >= 100) {
|
|
252
|
-
clearInterval(interval);
|
|
253
|
-
onUploaded(`/uploads/${file.name}`, `/thumbnails/${file.name}`);
|
|
254
|
-
}
|
|
255
|
-
}, 100);
|
|
256
|
-
|
|
257
|
-
return {
|
|
258
|
-
cancel: async () => {
|
|
259
|
-
clearInterval(interval);
|
|
260
|
-
return true;
|
|
261
|
-
}
|
|
262
|
-
};
|
|
263
|
-
};
|
|
264
|
-
</script>
|
|
265
|
-
|
|
266
|
-
<div class="image-gallery">
|
|
267
|
-
<h3>Upload Images</h3>
|
|
268
|
-
<ImageFilesField
|
|
269
|
-
bind:images={images}
|
|
270
|
-
uploadFile={uploadImage}
|
|
271
|
-
maxImages={10}
|
|
272
|
-
/>
|
|
273
|
-
<div class="image-grid">
|
|
274
|
-
{#each images as image}
|
|
275
|
-
<div class="image-item">
|
|
276
|
-
<img src={image.thumbnail} alt={image.name} />
|
|
277
|
-
<div class="image-info">
|
|
278
|
-
<p>{image.name}</p>
|
|
279
|
-
<a href={image.uri} download>Download</a>
|
|
280
|
-
</div>
|
|
281
|
-
</div>
|
|
282
|
-
{/each}
|
|
283
|
-
</div>
|
|
284
|
-
</div>
|
|
285
|
-
|
|
286
|
-
<style>
|
|
287
|
-
.image-gallery {
|
|
288
|
-
max-width: 800px;
|
|
289
|
-
margin: 20px;
|
|
290
|
-
}
|
|
291
|
-
.image-grid {
|
|
292
|
-
display: grid;
|
|
293
|
-
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
|
294
|
-
gap: 16px;
|
|
295
|
-
margin-top: 16px;
|
|
296
|
-
}
|
|
297
|
-
.image-item {
|
|
298
|
-
border: 1px solid #e5e7eb;
|
|
299
|
-
border-radius: 8px;
|
|
300
|
-
overflow: hidden;
|
|
301
|
-
}
|
|
302
|
-
.image-item img {
|
|
303
|
-
width: 100%;
|
|
304
|
-
height: 200px;
|
|
305
|
-
object-fit: cover;
|
|
306
|
-
}
|
|
307
|
-
.image-info {
|
|
308
|
-
padding: 12px;
|
|
309
|
-
}
|
|
310
|
-
.image-info p {
|
|
311
|
-
margin: 0 0 8px 0;
|
|
312
|
-
font-size: 14px;
|
|
313
|
-
}
|
|
314
|
-
.image-info a {
|
|
315
|
-
color: #3b82f6;
|
|
316
|
-
text-decoration: none;
|
|
317
|
-
}
|
|
318
|
-
.image-info a:hover {
|
|
319
|
-
text-decoration: underline;
|
|
320
|
-
}
|
|
321
|
-
</style>
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
### Disabled and readonly modes
|
|
325
|
-
|
|
326
|
-
```svelte
|
|
327
|
-
<script lang="ts">
|
|
328
|
-
import ImageFilesField from "@ticatec/uniface-element/ImageFilesField";
|
|
329
|
-
import type { ImageFile, FileUpload } from "@ticatec/uniface-element/ImageFilesField";
|
|
330
|
-
|
|
331
|
-
let disabledImages: ImageFile[] = [
|
|
332
|
-
{ name: "disabled-image.jpg", uri: "/uploads/disabled-image.jpg", thumbnail: "/thumbnails/disabled-image.jpg" }
|
|
333
|
-
];
|
|
334
|
-
let readonlyImages: ImageFile[] = [
|
|
335
|
-
{ name: "readonly-image.png", uri: "/uploads/readonly-image.png", thumbnail: "/thumbnails/readonly-image.png" }
|
|
336
|
-
];
|
|
337
|
-
let normalImages: ImageFile[] = [];
|
|
338
|
-
|
|
339
|
-
const uploadImage: FileUpload = (file, progressUpdate, onUploaded, errorHandler) => {
|
|
340
|
-
let progress = 0;
|
|
341
|
-
const interval = setInterval(() => {
|
|
342
|
-
progress += 10;
|
|
343
|
-
progressUpdate(Math.floor(file.size * (progress / 100)));
|
|
344
|
-
|
|
345
|
-
if (progress >= 100) {
|
|
346
|
-
clearInterval(interval);
|
|
347
|
-
onUploaded(`/uploads/${file.name}`, `/thumbnails/${file.name}`);
|
|
348
|
-
}
|
|
349
|
-
}, 100);
|
|
350
|
-
|
|
351
|
-
return {
|
|
352
|
-
cancel: async () => {
|
|
353
|
-
clearInterval(interval);
|
|
354
|
-
return true;
|
|
355
|
-
}
|
|
356
|
-
};
|
|
357
|
-
};
|
|
358
|
-
</script>
|
|
359
|
-
|
|
360
|
-
<div style="display: flex; flex-direction: column; gap: 16px;">
|
|
361
|
-
<ImageFilesField
|
|
362
|
-
bind:images={disabledImages}
|
|
363
|
-
uploadFile={uploadImage}
|
|
364
|
-
disabled
|
|
365
|
-
/>
|
|
366
|
-
<ImageFilesField
|
|
367
|
-
bind:images={readonlyImages}
|
|
368
|
-
uploadFile={uploadImage}
|
|
369
|
-
readonly
|
|
370
|
-
/>
|
|
371
|
-
<ImageFilesField
|
|
372
|
-
bind:images={normalImages}
|
|
373
|
-
uploadFile={uploadImage}
|
|
374
|
-
/>
|
|
375
|
-
</div>
|
|
376
|
-
```
|
|
377
|
-
|
|
378
|
-
### Compact mode
|
|
379
|
-
|
|
380
|
-
```svelte
|
|
381
|
-
<script lang="ts">
|
|
382
|
-
import ImageFilesField from "@ticatec/uniface-element/ImageFilesField";
|
|
383
|
-
import type { ImageFile, FileUpload } from "@ticatec/uniface-element/ImageFilesField";
|
|
384
|
-
|
|
385
|
-
let images = $state<ImageFile[]>([]);
|
|
386
|
-
|
|
387
|
-
const uploadImage: FileUpload = (file, progressUpdate, onUploaded, errorHandler) => {
|
|
388
|
-
let progress = 0;
|
|
389
|
-
const interval = setInterval(() => {
|
|
390
|
-
progress += 10;
|
|
391
|
-
progressUpdate(Math.floor(file.size * (progress / 100)));
|
|
392
|
-
|
|
393
|
-
if (progress >= 100) {
|
|
394
|
-
clearInterval(interval);
|
|
395
|
-
onUploaded(`/uploads/${file.name}`, `/thumbnails/${file.name}`);
|
|
396
|
-
}
|
|
397
|
-
}, 100);
|
|
398
|
-
|
|
399
|
-
return {
|
|
400
|
-
cancel: async () => {
|
|
401
|
-
clearInterval(interval);
|
|
402
|
-
return true;
|
|
403
|
-
}
|
|
404
|
-
};
|
|
405
|
-
};
|
|
406
|
-
</script>
|
|
407
|
-
|
|
408
|
-
<table>
|
|
409
|
-
<thead>
|
|
410
|
-
<tr>
|
|
411
|
-
<th>Name</th>
|
|
412
|
-
<th>Images</th>
|
|
413
|
-
</tr>
|
|
414
|
-
</thead>
|
|
415
|
-
<tbody>
|
|
416
|
-
<tr>
|
|
417
|
-
<td>Row 1</td>
|
|
418
|
-
<td>
|
|
419
|
-
<ImageFilesField
|
|
420
|
-
bind:images={images}
|
|
421
|
-
uploadFile={uploadImage}
|
|
422
|
-
compact
|
|
423
|
-
/>
|
|
424
|
-
</td>
|
|
425
|
-
</tr>
|
|
426
|
-
</tbody>
|
|
427
|
-
</table>
|
|
428
|
-
```
|
|
429
|
-
|
|
430
|
-
## Behavior Notes
|
|
431
|
-
|
|
432
|
-
### Upload flow
|
|
433
|
-
|
|
434
|
-
1. User clicks the upload icon or drags and drops images.
|
|
435
|
-
2. The `FileUploadPanel` opens, showing a file picker.
|
|
436
|
-
3. When an image is selected, `uploadFile` is called with the file and progress callbacks.
|
|
437
|
-
4. `uploadFile` calls `progressUpdate(bytesUploaded)` to report progress.
|
|
438
|
-
5. When upload is complete, `uploadFile` calls `onUploaded(url, thumbnail)` with the full-size URL and thumbnail URL.
|
|
439
|
-
6. The image is added to the `images` array and displayed in the grid.
|
|
440
|
-
|
|
441
|
-
### Delete flow
|
|
442
|
-
|
|
443
|
-
1. User clicks the delete icon on an image.
|
|
444
|
-
2. If `removeFileConfirm` is provided, the callback is called with the image.
|
|
445
|
-
3. If the callback returns `true`, the image is removed from the `images` array.
|
|
446
|
-
4. The `onchange` event fires with the updated images array.
|
|
447
|
-
|
|
448
|
-
### Preview flow
|
|
449
|
-
|
|
450
|
-
1. User clicks on an image in the grid.
|
|
451
|
-
2. The `ImagePreview` component opens, showing the full-size image.
|
|
452
|
-
3. User can close the preview by clicking the close button or clicking outside.
|
|
453
|
-
|
|
454
|
-
### Read-only / disabled rendering
|
|
455
|
-
|
|
456
|
-
Both modes hide the upload icon and delete icons. Images are displayed but cannot be modified.
|
|
457
|
-
|
|
458
|
-
## Accessibility
|
|
459
|
-
|
|
460
|
-
- The upload icon has `aria-hidden="true"` (decorative).
|
|
461
|
-
- Image names are displayed as alt text.
|
|
462
|
-
- For full ARIA, wrap with `<label>` or use `aria-label`.
|
|
463
|
-
|
|
464
|
-
## Related Components
|
|
465
|
-
|
|
466
|
-
- [AttachmentFilesField](../attachment-files/README.md) — general file upload component.
|
|
467
|
-
- [TextEditor](../text_editor/README.md) — multi-line text area.
|
|
468
|
-
- [NumberEditor](../number_editor/README.md) — numeric input.
|