@ticatec/uniface-element 5.0.0 → 5.0.2
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 +29 -54
- package/README_CN.md +37 -57
- package/dist/app_layout/ClassicLayout.svelte +8 -40
- package/dist/app_layout/ColumnsLayout.svelte +3 -3
- package/dist/app_layout/HeaderLayout.svelte +4 -20
- package/dist/app_layout/RowsLayout.svelte +3 -3
- package/dist/app_layout/SidebarLayout.svelte +4 -20
- package/dist/base-calendar/CalendarBase.svelte +29 -6
- package/dist/base-calendar/CalendarBase.svelte.d.ts +4 -0
- package/dist/base-calendar/MonthPickupPanel.svelte +19 -6
- package/dist/base-calendar/MonthPickupPanel.svelte.d.ts +1 -1
- package/dist/base-calendar/MonthlyCalendar.svelte +18 -2
- package/dist/base-calendar/YearPickupPanel.svelte +24 -6
- package/dist/base-calendar/YearPickupPanel.svelte.d.ts +1 -1
- package/dist/composite/pagination_panel/PaginationPanel.svelte +2 -0
- package/dist/composite/transfer/Transfer.svelte +12 -6
- package/dist/data_display/accordion/Accordion.svelte +1 -4
- package/dist/data_display/card/CommonCardActionBar.svelte +31 -37
- package/dist/data_display/concise_data_table/Column.d.ts +6 -0
- package/dist/data_display/concise_data_table/ConciseListTable.svelte +4 -3
- package/dist/data_display/concise_data_table/DataCell.svelte +3 -3
- package/dist/data_display/list_box/ListBox.svelte +96 -23
- package/dist/data_display/list_box/ListBox.svelte.d.ts +4 -0
- package/dist/data_display/tree_view/TreeNodeView.svelte +25 -4
- package/dist/data_table/DataTable.svelte +5 -5
- package/dist/data_table/DataTable.svelte.d.ts +36 -16
- package/dist/data_table/lib/ActionsColumn.d.ts +2 -2
- package/dist/data_table/lib/DataColumn.d.ts +7 -1
- package/dist/data_table/lib/RowAction.d.ts +5 -5
- package/dist/data_table/lib/clickOutSide.js +6 -5
- package/dist/data_table/parts/FixedHeaderPanel.svelte +18 -3
- package/dist/data_table/parts/FixedRow.svelte +10 -1
- package/dist/data_table/parts/HrefCell.svelte +1 -1
- package/dist/data_table/parts/TableHeaderPanel.svelte +18 -2
- package/dist/data_table/parts/TextCell.svelte +2 -2
- package/dist/form/attachment_files/AttachmentEditor.svelte +20 -15
- package/dist/form/attachment_files/FileRender.svelte +1 -1
- package/dist/form/attachment_files/FileUploadBar.svelte +5 -2
- package/dist/form/attachment_files/FileUploadPanel.svelte +11 -73
- package/dist/form/cascade_options_select/CascadeOptionSelect.svelte +10 -2
- package/dist/form/cascade_options_select/OptionsBox.svelte +48 -2
- package/dist/form/checkbox/CheckBox.svelte +2 -7
- package/dist/form/color_picker/ColorPicker.svelte +150 -35
- package/dist/form/color_picker/ColorPicker.svelte.d.ts +7 -25
- package/dist/form/color_picker/ColorPickerPanel.svelte +23 -20
- package/dist/form/color_picker/ColorPickerPanel.svelte.d.ts +5 -18
- package/dist/form/color_picker/README.md +14 -7
- package/dist/form/color_picker/README_CN.md +14 -7
- package/dist/form/common_editor/CommonEditor.svelte +18 -4
- package/dist/form/common_editor/CommonPicker.svelte +14 -10
- package/dist/form/common_editor/CommonPopupEditor.svelte +8 -1
- package/dist/form/common_range_editor/CommonRangeEditor.svelte +11 -2
- package/dist/form/date_picker/DatePicker.svelte +1 -1
- package/dist/form/date_picker/DateTimePicker.svelte +1 -1
- package/dist/form/date_picker/ScrollBar.svelte +20 -12
- package/dist/form/date_picker/ScrollBar.svelte.d.ts +4 -18
- package/dist/form/date_range/DateRangeEditor.svelte +11 -3
- package/dist/form/group_box/group-check-box/GroupCheckBox.svelte +6 -1
- package/dist/form/group_box/group-radio-box/GroupRadioBox.svelte +6 -1
- package/dist/form/image-files/ImageFilesField.svelte +51 -7
- package/dist/form/image-files/ImagePreview.svelte +23 -9
- package/dist/form/image-files/ImageRender.svelte +69 -11
- package/dist/form/input_options_select/InputOptionsSelect.svelte +10 -2
- package/dist/form/lookup_editor/LookupEditor.svelte +9 -2
- package/dist/form/memo_editor/MemoEditor.svelte +2 -2
- package/dist/form/number_editor/NumberEditor.svelte +2 -2
- package/dist/form/options_multi_select/OptionsMultiSelect.svelte +20 -12
- package/dist/form/options_select/OptionsSelect.svelte +15 -6
- package/dist/form/options_select/OptionsSelect.svelte.d.ts +39 -17
- package/dist/form/prompts_text_editor/PromptsTextEditor.svelte +10 -2
- package/dist/form/radio_button/RadioButton.svelte +2 -8
- package/dist/form/switch/Switch.svelte +4 -4
- package/dist/form/text_editor/TextEditor.svelte +2 -2
- package/dist/form/unit-number-editor/UnitNumberEditor.svelte +10 -2
- package/dist/general/button/Button.svelte +5 -0
- package/dist/general/button/Button.svelte.d.ts +1 -0
- package/dist/general/button/IconButton.svelte +3 -1
- package/dist/general/button/IconButton.svelte.d.ts +1 -0
- package/dist/general/button/TextButton.svelte +3 -0
- package/dist/general/button/TextButton.svelte.d.ts +1 -0
- package/dist/general/icon/Icon.svelte +18 -1
- package/dist/general/split/Split.svelte +24 -4
- package/dist/general/tag/Tag.svelte +9 -1
- package/dist/navigation/nav_menu/MenuItem.d.ts +4 -2
- package/dist/navigation/nav_menu/NavigatorMenu.svelte +157 -34
- package/dist/navigation/nav_menu/NavigatorMenu.svelte.d.ts +2 -3
- package/dist/navigation/nav_menu/NavigatorMenuItem.svelte +25 -13
- package/dist/navigation/nav_menu/NavigatorMenuItem.svelte.d.ts +3 -3
- package/dist/navigation/navigator/Navigator.svelte +17 -17
- package/dist/navigation/page-stack/PageStack.svelte +160 -0
- package/dist/navigation/page-stack/PageStack.svelte.d.ts +24 -0
- package/dist/navigation/page-stack/PageStackContext.d.ts +25 -0
- package/dist/navigation/page-stack/PageStackContext.js +12 -0
- package/dist/navigation/page-stack/PageStackFrame.svelte +24 -0
- package/dist/navigation/page-stack/PageStackFrame.svelte.d.ts +11 -0
- package/dist/navigation/page-stack/README.md +154 -0
- package/dist/navigation/page-stack/README_CN.md +154 -0
- package/dist/navigation/page-stack/index.d.ts +6 -0
- package/dist/navigation/page-stack/index.js +4 -0
- package/dist/navigation/pagination/Pagination.svelte +114 -14
- package/dist/navigation/progress_step_bar/ProgressStepBlock.svelte +1 -5
- package/dist/navigation/tabs/Tabs.svelte +42 -10
- package/dist/navigation/tabs/Tabs.svelte.d.ts +2 -2
- package/dist/overlay/common/FloatingPanel.svelte +3 -17
- package/dist/overlay/common/FullscreenOverlay.svelte +27 -3
- package/dist/overlay/common/FullscreenOverlay.svelte.d.ts +6 -27
- package/dist/overlay/common/ModalPopover.svelte +18 -2
- package/dist/overlay/common/Popover.svelte +61 -57
- package/dist/overlay/common/Popover.svelte.d.ts +1 -5
- package/dist/overlay/common/escapeClose.d.ts +28 -0
- package/dist/overlay/common/escapeClose.js +47 -0
- package/dist/overlay/common/focusTrap.d.ts +8 -0
- package/dist/overlay/common/focusTrap.js +83 -0
- package/dist/overlay/common/mountSingleton.d.ts +27 -0
- package/dist/overlay/common/mountSingleton.js +45 -0
- package/dist/overlay/common/outsideClick.d.ts +28 -0
- package/dist/overlay/common/outsideClick.js +20 -0
- package/dist/overlay/common/scrollLock.d.ts +8 -0
- package/dist/overlay/common/scrollLock.js +49 -0
- package/dist/overlay/common/uniface-utils.js +0 -1
- package/dist/overlay/context-menu/ContextMenu.svelte.js +2 -15
- package/dist/overlay/context-menu/ContextMenuPanel.svelte +27 -3
- package/dist/overlay/dialog/Dialog.svelte +48 -32
- package/dist/overlay/dialog/DialogManager.svelte.js +7 -9
- package/dist/overlay/dialog/DialogWrapper.svelte +5 -2
- package/dist/overlay/drawer/Drawer.svelte +30 -3
- package/dist/overlay/indicator/Indicator.svelte.js +2 -15
- package/dist/overlay/indicator/IndicatorPanel.svelte +4 -1
- package/dist/overlay/message-box/MessageBox.svelte.js +2 -15
- package/dist/overlay/message-box/MessageBoxPanel.svelte +19 -3
- package/dist/overlay/toast/Toast.svelte.js +2 -15
- package/dist/overlay/toast/ToastPanel.svelte +1 -1
- package/dist/overlay/tooltip/Tooltip.svelte +1 -1
- package/dist/ticatec-uniface-web.css +128 -13
- package/dist/types.d.ts +4 -3
- package/dist/utils/prefixFilter.d.ts +3 -3
- package/dist/utils/prefixFilter.js +3 -5
- package/docs/components/README.md +133 -0
- package/docs/components/accordion/README.md +60 -0
- package/docs/components/accordion/example.svelte +7 -0
- package/docs/components/action-bar/README.md +114 -0
- package/docs/components/action-bar/example.svelte +7 -0
- package/docs/components/app-top-bar/README.md +60 -0
- package/docs/components/app-top-bar/example.svelte +9 -0
- package/docs/components/attachment-files/README.md +332 -0
- package/docs/components/attachment-files/example.svelte +16 -0
- package/docs/components/box/README.md +63 -0
- package/docs/components/box/example.svelte +10 -0
- package/docs/components/breadcrumbs/README.md +86 -0
- package/docs/components/breadcrumbs/example.svelte +11 -0
- package/docs/components/button/README.md +103 -0
- package/docs/components/button/example.svelte +10 -0
- package/docs/components/card/README.md +113 -0
- package/docs/components/card/example.svelte +10 -0
- package/docs/components/cascade-options-select/README.md +162 -0
- package/docs/components/cascade-options-select/example.svelte +18 -0
- package/docs/components/checkbox/README.md +103 -0
- package/docs/components/checkbox/example.svelte +15 -0
- package/docs/components/classic-layout/README.md +76 -0
- package/docs/components/classic-layout/example.svelte +16 -0
- package/docs/components/color-picker/README.md +132 -0
- package/docs/components/color-picker/example.svelte +16 -0
- package/docs/components/columns-layout/README.md +70 -0
- package/docs/components/columns-layout/example.svelte +12 -0
- package/docs/components/common-dialog/README.md +109 -0
- package/docs/components/common-dialog/example.svelte +12 -0
- package/docs/components/concise-data-table/README.md +307 -0
- package/docs/components/concise-data-table/example.svelte +16 -0
- package/docs/components/context-menu/README.md +99 -0
- package/docs/components/context-menu/example.svelte +10 -0
- package/docs/components/criteria-field/README.md +69 -0
- package/docs/components/criteria-field/example.svelte +9 -0
- package/docs/components/data-table/README.md +365 -0
- package/docs/components/data-table/example.svelte +23 -0
- package/docs/components/date-picker/README.md +136 -0
- package/docs/components/date-picker/example.svelte +16 -0
- package/docs/components/date-range/README.md +122 -0
- package/docs/components/date-range/example.svelte +15 -0
- package/docs/components/date-time-picker/README.md +142 -0
- package/docs/components/date-time-picker/example.svelte +16 -0
- package/docs/components/dialog/README.md +174 -0
- package/docs/components/dialog/example.svelte +13 -0
- package/docs/components/dialog-board/README.md +41 -0
- package/docs/components/dialog-board/example.svelte +5 -0
- package/docs/components/drawer/README.md +70 -0
- package/docs/components/drawer/example.svelte +12 -0
- package/docs/components/flex-form/README.md +55 -0
- package/docs/components/flex-form/example.svelte +7 -0
- package/docs/components/flex-row-form/README.md +56 -0
- package/docs/components/flex-row-form/example.svelte +7 -0
- package/docs/components/form-field/README.md +84 -0
- package/docs/components/form-field/example.svelte +10 -0
- package/docs/components/full-screen-overlay/README.md +66 -0
- package/docs/components/full-screen-overlay/example.svelte +11 -0
- package/docs/components/grid-form/README.md +75 -0
- package/docs/components/grid-form/example.svelte +9 -0
- package/docs/components/group-check-box/README.md +147 -0
- package/docs/components/group-check-box/example.svelte +21 -0
- package/docs/components/group-radio-box/README.md +144 -0
- package/docs/components/group-radio-box/example.svelte +21 -0
- package/docs/components/header-layout/README.md +65 -0
- package/docs/components/header-layout/example.svelte +12 -0
- package/docs/components/icon/README.md +87 -0
- package/docs/components/icon/example.svelte +9 -0
- package/docs/components/icon-button/README.md +91 -0
- package/docs/components/icon-button/example.svelte +10 -0
- package/docs/components/image-files/README.md +174 -0
- package/docs/components/image-files/example.svelte +19 -0
- package/docs/components/indicator/README.md +53 -0
- package/docs/components/indicator/example.svelte +14 -0
- package/docs/components/input-options-select/README.md +163 -0
- package/docs/components/input-options-select/example.svelte +16 -0
- package/docs/components/list-box/ListItem.svelte +14 -0
- package/docs/components/list-box/README.md +221 -0
- package/docs/components/list-box/example.svelte +61 -0
- package/docs/components/lookup-editor/README.md +137 -0
- package/docs/components/lookup-editor/example.svelte +16 -0
- package/docs/components/memo-editor/README.md +143 -0
- package/docs/components/memo-editor/example.svelte +16 -0
- package/docs/components/message-box/README.md +68 -0
- package/docs/components/message-box/example.svelte +10 -0
- package/docs/components/navigator/README.md +75 -0
- package/docs/components/navigator/example.svelte +13 -0
- package/docs/components/navigator-menu/README.md +113 -0
- package/docs/components/navigator-menu/example.svelte +10 -0
- package/docs/components/number-editor/README.md +144 -0
- package/docs/components/number-editor/example.svelte +16 -0
- package/docs/components/number-range/README.md +116 -0
- package/docs/components/number-range/example.svelte +15 -0
- package/docs/components/options-multi-select/README.md +161 -0
- package/docs/components/options-multi-select/example.svelte +20 -0
- package/docs/components/options-select/README.md +160 -0
- package/docs/components/options-select/example.svelte +21 -0
- package/docs/components/page/README.md +77 -0
- package/docs/components/page/example.svelte +10 -0
- package/docs/components/pagination/README.md +88 -0
- package/docs/components/pagination/example.svelte +10 -0
- package/docs/components/pagination-panel/README.md +120 -0
- package/docs/components/pagination-panel/example.svelte +16 -0
- package/docs/components/popup-hint/README.md +44 -0
- package/docs/components/popup-hint/example.svelte +5 -0
- package/docs/components/progress-bar/README.md +64 -0
- package/docs/components/progress-bar/example.svelte +8 -0
- package/docs/components/progress-step-bar/README.md +93 -0
- package/docs/components/progress-step-bar/example.svelte +7 -0
- package/docs/components/prompts-text-editor/README.md +146 -0
- package/docs/components/prompts-text-editor/example.svelte +17 -0
- package/docs/components/radio-button/README.md +121 -0
- package/docs/components/radio-button/example.svelte +18 -0
- package/docs/components/rows-layout/README.md +70 -0
- package/docs/components/rows-layout/example.svelte +12 -0
- package/docs/components/search-box/README.md +136 -0
- package/docs/components/search-box/example.svelte +16 -0
- package/docs/components/separator/README.md +44 -0
- package/docs/components/separator/example.svelte +7 -0
- package/docs/components/sidebar-layout/README.md +65 -0
- package/docs/components/sidebar-layout/example.svelte +12 -0
- package/docs/components/split/README.md +48 -0
- package/docs/components/split/example.svelte +8 -0
- package/docs/components/switch/README.md +77 -0
- package/docs/components/switch/example.svelte +11 -0
- package/docs/components/tabs/README.md +127 -0
- package/docs/components/tabs/example.svelte +22 -0
- package/docs/components/tag/README.md +63 -0
- package/docs/components/tag/example.svelte +8 -0
- package/docs/components/text-button/README.md +90 -0
- package/docs/components/text-button/example.svelte +9 -0
- package/docs/components/text-editor/README.md +147 -0
- package/docs/components/text-editor/example.svelte +16 -0
- package/docs/components/time-editor/README.md +130 -0
- package/docs/components/time-editor/example.svelte +16 -0
- package/docs/components/toast/README.md +52 -0
- package/docs/components/toast/example.svelte +9 -0
- package/docs/components/tooltip/README.md +44 -0
- package/docs/components/tooltip/example.svelte +5 -0
- package/docs/components/transfer/README.md +109 -0
- package/docs/components/transfer/example.svelte +13 -0
- package/docs/components/tree-view/README.md +163 -0
- package/docs/components/tree-view/example.svelte +26 -0
- package/docs/components/unit-number-editor/README.md +192 -0
- package/docs/components/unit-number-editor/example.svelte +18 -0
- package/package.json +15 -7
|
@@ -1,20 +1,42 @@
|
|
|
1
1
|
import type CommonPickerProps from "../common_editor/CommonPickerProps";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
2
|
+
declare function $$render<Option extends Record<string, any> = any>(): {
|
|
3
|
+
props: CommonPickerProps & {
|
|
4
|
+
emptyText?: string;
|
|
5
|
+
value: any;
|
|
6
|
+
options: Array<Option>;
|
|
7
|
+
keyField?: string;
|
|
8
|
+
textField?: string;
|
|
9
|
+
menu$height?: number;
|
|
10
|
+
disableOptions?: Array<string>;
|
|
11
|
+
hideOptions?: Array<string>;
|
|
12
|
+
itemRender?: any;
|
|
13
|
+
filterPlaceholder?: string;
|
|
14
|
+
filterFunction?: (option: Option, keyword: string) => boolean;
|
|
15
|
+
noResultsText?: string;
|
|
16
|
+
};
|
|
17
|
+
exports: {
|
|
18
|
+
focus: () => void;
|
|
19
|
+
};
|
|
20
|
+
bindings: "value";
|
|
21
|
+
slots: {};
|
|
22
|
+
events: {};
|
|
23
|
+
};
|
|
24
|
+
declare class __sveltets_Render<Option extends Record<string, any> = any> {
|
|
25
|
+
props(): ReturnType<typeof $$render<Option>>['props'];
|
|
26
|
+
events(): ReturnType<typeof $$render<Option>>['events'];
|
|
27
|
+
slots(): ReturnType<typeof $$render<Option>>['slots'];
|
|
28
|
+
bindings(): "value";
|
|
29
|
+
exports(): {
|
|
30
|
+
focus: () => void;
|
|
31
|
+
};
|
|
15
32
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
33
|
+
interface $$IsomorphicComponent {
|
|
34
|
+
new <Option extends Record<string, any> = any>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Option>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Option>['props']>, ReturnType<__sveltets_Render<Option>['events']>, ReturnType<__sveltets_Render<Option>['slots']>> & {
|
|
35
|
+
$$bindings?: ReturnType<__sveltets_Render<Option>['bindings']>;
|
|
36
|
+
} & ReturnType<__sveltets_Render<Option>['exports']>;
|
|
37
|
+
<Option extends Record<string, any> = any>(internal: unknown, props: ReturnType<__sveltets_Render<Option>['props']> & {}): ReturnType<__sveltets_Render<Option>['exports']>;
|
|
38
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
39
|
+
}
|
|
40
|
+
declare const OptionsSelect: $$IsomorphicComponent;
|
|
41
|
+
type OptionsSelect<Option extends Record<string, any> = any> = InstanceType<typeof OptionsSelect<Option>>;
|
|
20
42
|
export default OptionsSelect;
|
|
@@ -50,6 +50,13 @@
|
|
|
50
50
|
e.preventDefault();
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
+
const handleHintKeyDown = (item: string) => (e: KeyboardEvent) => {
|
|
54
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
55
|
+
e.preventDefault();
|
|
56
|
+
handleHintClick(item)(e as unknown as MouseEvent);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
53
60
|
|
|
54
61
|
|
|
55
62
|
const clear = () => {
|
|
@@ -67,13 +74,14 @@
|
|
|
67
74
|
<input bind:this={editor} bind:value {disabled} {readonly} {placeholder} {...eventHandlers}/>
|
|
68
75
|
|
|
69
76
|
{#snippet popupLayer()}
|
|
70
|
-
<div class="options-popover" style={mh}>
|
|
77
|
+
<div class="options-popover" style={mh} role="listbox">
|
|
71
78
|
{#each words as word}
|
|
72
79
|
<div
|
|
73
80
|
class="option-item"
|
|
74
81
|
style="padding-left: 12px; padding-right: 12px"
|
|
75
82
|
onclick={handleHintClick(word)}
|
|
76
|
-
|
|
83
|
+
onkeydown={handleHintKeyDown(word)}
|
|
84
|
+
role="option" tabindex="0" aria-selected={word === value}
|
|
77
85
|
>
|
|
78
86
|
<span>{word}</span>
|
|
79
87
|
</div>
|
|
@@ -72,13 +72,6 @@
|
|
|
72
72
|
text-overflow: ellipsis;
|
|
73
73
|
color: var(--uniface-checkbox-text-color);
|
|
74
74
|
}
|
|
75
|
-
.uniface-radio-button label {
|
|
76
|
-
display: inline-block;
|
|
77
|
-
width: 100%;
|
|
78
|
-
text-overflow: ellipsis;
|
|
79
|
-
overflow: hidden;
|
|
80
|
-
cursor: pointer;
|
|
81
|
-
}
|
|
82
75
|
.uniface-radio-button > span {
|
|
83
76
|
line-height: var(--uniface-checkbox-size);
|
|
84
77
|
padding-left: var(--uniface-checkbox-label-padding-left);
|
|
@@ -107,6 +100,7 @@
|
|
|
107
100
|
--disabled-inner: var(--uniface-checkbox-checkmark-color-disabled);
|
|
108
101
|
-webkit-appearance: none;
|
|
109
102
|
-moz-appearance: none;
|
|
103
|
+
appearance: none;
|
|
110
104
|
height: var(--uniface-checkbox-size);
|
|
111
105
|
width: var(--uniface-checkbox-size);
|
|
112
106
|
outline: none;
|
|
@@ -180,4 +174,4 @@
|
|
|
180
174
|
.uniface-radio-button *::before,
|
|
181
175
|
.uniface-radio-button *::after {
|
|
182
176
|
box-sizing: inherit;
|
|
183
|
-
}</style>
|
|
177
|
+
}</style>
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
</script>
|
|
25
25
|
|
|
26
26
|
<div class="switch-box">
|
|
27
|
-
<label class="switch" class:readonly class:disabled
|
|
28
|
-
<input type="checkbox" bind:checked={value}>
|
|
29
|
-
<span class="slider"></span>
|
|
30
|
-
<span class="text">{value ? uncheckLabel : checkLabel}</span>
|
|
27
|
+
<label class="switch" class:readonly class:disabled>
|
|
28
|
+
<input type="checkbox" bind:checked={value} disabled={disabled} aria-readonly={readonly} onclick={toggleSwitch}>
|
|
29
|
+
<span class="slider" aria-hidden="true"></span>
|
|
30
|
+
<span class="text" aria-hidden="true">{value ? uncheckLabel : checkLabel}</span>
|
|
31
31
|
</label>
|
|
32
32
|
</div>
|
|
33
33
|
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
let input$ = $derived(prefixFilter(restProps, 'input$', excludeAttrs));
|
|
72
|
-
let eventHandlers = filterProps(restProps, keyboardAttrs);
|
|
72
|
+
let eventHandlers = $derived(filterProps(restProps, keyboardAttrs));
|
|
73
73
|
|
|
74
74
|
const clear = () => {
|
|
75
75
|
value = undefined;
|
|
@@ -83,4 +83,4 @@
|
|
|
83
83
|
{error}>
|
|
84
84
|
<input bind:this={editor} {...input$} {placeholder} {...eventHandlers}
|
|
85
85
|
oninput={handleInput} onchange={handleChange} bind:value/>
|
|
86
|
-
</CommonEditor>
|
|
86
|
+
</CommonEditor>
|
|
@@ -100,6 +100,13 @@
|
|
|
100
100
|
e.preventDefault();
|
|
101
101
|
};
|
|
102
102
|
|
|
103
|
+
const handleUnitKeyDown = (item: UnitOption) => (e: KeyboardEvent) => {
|
|
104
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
105
|
+
e.preventDefault();
|
|
106
|
+
handleUnitClick(item)(e as unknown as MouseEvent);
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
|
|
103
110
|
//
|
|
104
111
|
// const handlePopupClose = () => {
|
|
105
112
|
// showPopup = false;
|
|
@@ -180,10 +187,11 @@
|
|
|
180
187
|
/>
|
|
181
188
|
|
|
182
189
|
{#snippet popupLayer()}
|
|
183
|
-
<div class="options-popover" style={mh}>
|
|
190
|
+
<div class="options-popover" style={mh} role="listbox">
|
|
184
191
|
{#each units as op}
|
|
185
192
|
<div class="option-item"
|
|
186
|
-
onclick={handleUnitClick(op)}
|
|
193
|
+
onclick={handleUnitClick(op)} onkeydown={handleUnitKeyDown(op)}
|
|
194
|
+
role="option" tabindex="0" aria-selected={op.code === unitCode}>
|
|
187
195
|
<span>{op.text ?? op.code}</span>
|
|
188
196
|
</div>
|
|
189
197
|
{/each}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
interface Props {
|
|
6
6
|
type?: ButtonType;
|
|
7
|
+
htmlType?: 'button' | 'submit' | 'reset';
|
|
7
8
|
label?: string;
|
|
8
9
|
variant?: 'plain' | 'round' | '';
|
|
9
10
|
disabled?: boolean;
|
|
@@ -20,6 +21,7 @@
|
|
|
20
21
|
|
|
21
22
|
let {
|
|
22
23
|
type = 'default',
|
|
24
|
+
htmlType = 'button',
|
|
23
25
|
label = '',
|
|
24
26
|
variant = '',
|
|
25
27
|
disabled = false,
|
|
@@ -44,7 +46,10 @@
|
|
|
44
46
|
|
|
45
47
|
</script>
|
|
46
48
|
|
|
49
|
+
<!-- autofocus is an explicit opt-in component API; consumers decide when initial focus is appropriate. -->
|
|
50
|
+
<!-- svelte-ignore a11y_autofocus -->
|
|
47
51
|
<button
|
|
52
|
+
type={htmlType}
|
|
48
53
|
{style}
|
|
49
54
|
class="uniface-button common-button {variant} {size} {type} {theme}"
|
|
50
55
|
class:disabled={disabled}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
interface Props {
|
|
8
8
|
type?: ButtonType;
|
|
9
|
+
htmlType?: 'button' | 'submit' | 'reset';
|
|
9
10
|
disabled?: boolean;
|
|
10
11
|
size?: ButtonSize;
|
|
11
12
|
style?: string;
|
|
@@ -18,6 +19,7 @@
|
|
|
18
19
|
|
|
19
20
|
let {
|
|
20
21
|
type = 'default',
|
|
22
|
+
htmlType = 'button',
|
|
21
23
|
disabled = false,
|
|
22
24
|
size = 'medium',
|
|
23
25
|
style,
|
|
@@ -40,7 +42,7 @@
|
|
|
40
42
|
|
|
41
43
|
</script>
|
|
42
44
|
|
|
43
|
-
<button class="uniface-button icon-button {size} {type} {theme}" {style} class:disabled {disabled}
|
|
45
|
+
<button type={htmlType} class="uniface-button icon-button {size} {type} {theme}" {style} class:disabled {disabled}
|
|
44
46
|
tabindex={disabled ? -1 : 0} data-tip={disabled ? null : tooltip} onclick={handleClick}>
|
|
45
47
|
{#if children}
|
|
46
48
|
{@render children()}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
size?: ButtonSize;
|
|
10
10
|
label?: string;
|
|
11
11
|
type?: ButtonType;
|
|
12
|
+
htmlType?: 'button' | 'submit' | 'reset';
|
|
12
13
|
onclick?: (event: MouseEvent) => void;
|
|
13
14
|
style?: string;
|
|
14
15
|
theme?: string;
|
|
@@ -21,6 +22,7 @@
|
|
|
21
22
|
size = 'medium',
|
|
22
23
|
label = '',
|
|
23
24
|
type = 'default',
|
|
25
|
+
htmlType = 'button',
|
|
24
26
|
onclick = undefined,
|
|
25
27
|
style = '',
|
|
26
28
|
theme,
|
|
@@ -45,6 +47,7 @@
|
|
|
45
47
|
</script>
|
|
46
48
|
|
|
47
49
|
<button
|
|
50
|
+
type={htmlType}
|
|
48
51
|
class="uniface-button text-button {size} {type} {theme}"
|
|
49
52
|
{style}
|
|
50
53
|
class:disabled
|
|
@@ -32,17 +32,34 @@
|
|
|
32
32
|
respClick = true;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
+
|
|
36
|
+
const isInteractive = $derived(onclick != null);
|
|
37
|
+
|
|
38
|
+
function handleKeyDown(e: KeyboardEvent) {
|
|
39
|
+
if (isInteractive && !disabled && (e.key === 'Enter' || e.key === ' ')) {
|
|
40
|
+
e.preventDefault();
|
|
41
|
+
handleClickEvent(e as unknown as MouseEvent);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
35
44
|
</script>
|
|
36
45
|
|
|
46
|
+
<!-- role/tabindex are only ever both set together when onclick is provided
|
|
47
|
+
(isInteractive); svelte-check can't verify that pairing statically. -->
|
|
48
|
+
<!-- svelte-ignore a11y_no_noninteractive_tabindex -->
|
|
37
49
|
<div
|
|
38
50
|
class="uniface-icon {theme} {className}"
|
|
39
51
|
class:clickable={onclick!=null && !disabled}
|
|
40
52
|
class:disabled={disabled}
|
|
41
53
|
onmousedown={(event: MouseEvent) => {event.preventDefault();}}
|
|
42
54
|
{style}
|
|
43
|
-
|
|
55
|
+
role={isInteractive ? 'button' : undefined}
|
|
56
|
+
tabindex={isInteractive && !disabled ? 0 : undefined}
|
|
57
|
+
aria-disabled={isInteractive ? disabled : undefined}
|
|
58
|
+
aria-hidden={isInteractive ? undefined : true}
|
|
59
|
+
aria-label={isInteractive ? (tooltip || undefined) : undefined}
|
|
44
60
|
data-tip={disabled ? null : tooltip || null}
|
|
45
61
|
onclick={handleClickEvent}
|
|
62
|
+
onkeydown={handleKeyDown}
|
|
46
63
|
>
|
|
47
64
|
<i class={name}></i>
|
|
48
65
|
</div>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import {
|
|
2
|
+
import {onDestroy} from 'svelte';
|
|
3
3
|
|
|
4
4
|
interface Props {
|
|
5
5
|
direction?: "horizontal" | "vertical";
|
|
@@ -76,6 +76,22 @@
|
|
|
76
76
|
}
|
|
77
77
|
};
|
|
78
78
|
|
|
79
|
+
const resizeWithKeyboard = (event: KeyboardEvent) => {
|
|
80
|
+
if (fixed || !bindingPanel) return;
|
|
81
|
+
const decreaseKey = direction === 'horizontal' ? 'ArrowUp' : 'ArrowLeft';
|
|
82
|
+
const increaseKey = direction === 'horizontal' ? 'ArrowDown' : 'ArrowRight';
|
|
83
|
+
if (event.key !== decreaseKey && event.key !== increaseKey) return;
|
|
84
|
+
|
|
85
|
+
event.preventDefault();
|
|
86
|
+
const directionFactor = event.key === increaseKey ? 1 : -1;
|
|
87
|
+
const delta = directionFactor * (reverse ? -10 : 10);
|
|
88
|
+
const currentSize = direction === 'horizontal' ? bindingPanel.clientHeight : bindingPanel.clientWidth;
|
|
89
|
+
const newSize = Math.max(5, currentSize + delta);
|
|
90
|
+
if (direction === 'horizontal') bindingPanel.style.height = `${newSize}px`;
|
|
91
|
+
else bindingPanel.style.width = `${newSize}px`;
|
|
92
|
+
onResizeEnd?.(newSize);
|
|
93
|
+
};
|
|
94
|
+
|
|
79
95
|
// 组件销毁时清理
|
|
80
96
|
onDestroy(() => {
|
|
81
97
|
if (isDragging) {
|
|
@@ -85,6 +101,9 @@
|
|
|
85
101
|
|
|
86
102
|
</script>
|
|
87
103
|
|
|
104
|
+
<!-- The separator is intentionally focusable because its arrow-key handler resizes the bound panel. -->
|
|
105
|
+
<!-- svelte-ignore a11y_no_noninteractive_tabindex -->
|
|
106
|
+
<!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
|
|
88
107
|
<div
|
|
89
108
|
class="uniface-divider {direction}"
|
|
90
109
|
class:fixed
|
|
@@ -92,9 +111,10 @@
|
|
|
92
111
|
role="separator"
|
|
93
112
|
aria-orientation={direction}
|
|
94
113
|
aria-label="Resize handle"
|
|
95
|
-
tabindex=
|
|
114
|
+
tabindex={fixed ? -1 : 0}
|
|
96
115
|
onmousedown={startDrag}
|
|
97
|
-
|
|
116
|
+
onkeydown={resizeWithKeyboard}
|
|
117
|
+
></div>
|
|
98
118
|
|
|
99
119
|
<style>
|
|
100
120
|
.uniface-divider {
|
|
@@ -127,4 +147,4 @@
|
|
|
127
147
|
.uniface-divider:active {
|
|
128
148
|
transition: none;
|
|
129
149
|
}
|
|
130
|
-
</style>
|
|
150
|
+
</style>
|
|
@@ -34,13 +34,21 @@
|
|
|
34
34
|
event.stopPropagation();
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
const handleTagKeyDown = (event: KeyboardEvent) => {
|
|
38
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
39
|
+
event.preventDefault();
|
|
40
|
+
ondelete?.(data?.id);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
37
44
|
</script>
|
|
38
45
|
|
|
39
46
|
<div class="uniface-tag" {style} data-theme="{theme}">
|
|
40
47
|
<div class="{size} {variant} {colorClass}" class:removable={removable}>
|
|
41
48
|
<span>{text}</span>
|
|
42
49
|
{#if removable}
|
|
43
|
-
<i class="icon_google_clear uniface-remove-icon" aria-
|
|
50
|
+
<i class="icon_google_clear uniface-remove-icon" role="button" tabindex="0" aria-label="Remove {text}"
|
|
51
|
+
onclick={handleTagClick} onkeydown={handleTagKeyDown}></i>
|
|
44
52
|
{/if}
|
|
45
53
|
</div>
|
|
46
54
|
</div>
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import type { IHierarchyData } from "../../lib";
|
|
2
1
|
export default interface MenuItem {
|
|
3
2
|
[key: string]: any;
|
|
4
3
|
}
|
|
5
|
-
export interface MenuNode
|
|
4
|
+
export interface MenuNode {
|
|
5
|
+
item: MenuItem;
|
|
6
|
+
children?: MenuNode[];
|
|
7
|
+
expand?: boolean;
|
|
6
8
|
}
|
|
7
9
|
export type OnMenuClick = (item: MenuItem) => void;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import {onMount} from "svelte";
|
|
2
3
|
import type MenuItem from "./MenuItem";
|
|
3
|
-
import type {OnMenuClick} from "./MenuItem";
|
|
4
|
-
import type {IHierarchyData} from "../../lib";
|
|
4
|
+
import type {MenuNode, OnMenuClick} from "./MenuItem";
|
|
5
5
|
import NavigatorMenuItem from "./NavigatorMenuItem.svelte";
|
|
6
6
|
|
|
7
7
|
type GetText<T> = (item: T) => string;
|
|
8
8
|
type Variant = 'vertical' | 'horizontal';
|
|
9
9
|
|
|
10
10
|
interface Props {
|
|
11
|
-
menuItems: Array<
|
|
11
|
+
menuItems: Array<MenuNode>;
|
|
12
12
|
style?: string;
|
|
13
13
|
textField: string | GetText<MenuItem>;
|
|
14
14
|
onItemClick: OnMenuClick;
|
|
@@ -27,15 +27,46 @@
|
|
|
27
27
|
|
|
28
28
|
// 横向模式:当前展开的 root 索引(同时只开一个 dropdown)
|
|
29
29
|
let openRootIdx = $state<number | null>(null);
|
|
30
|
+
let scrollViewport = $state<HTMLDivElement>();
|
|
31
|
+
let scrollTrack = $state<HTMLDivElement>();
|
|
32
|
+
let horizontalMenu = $state<HTMLElement>();
|
|
33
|
+
let hasOverflow = $state(false);
|
|
34
|
+
let canScrollLeft = $state(false);
|
|
35
|
+
let canScrollRight = $state(false);
|
|
36
|
+
let dropdownLeft = $state(0);
|
|
30
37
|
|
|
31
|
-
const rootText = (root:
|
|
38
|
+
const rootText = (root: MenuNode): string => {
|
|
32
39
|
return typeof textField === 'string'
|
|
33
|
-
? root.
|
|
34
|
-
: textField(root.
|
|
40
|
+
? root.item?.[textField] ?? ''
|
|
41
|
+
: textField(root.item);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const updateDropdownPosition = () => {
|
|
45
|
+
if (openRootIdx === null || !horizontalMenu || !scrollTrack) return;
|
|
46
|
+
const item = scrollTrack.children[openRootIdx] as HTMLElement | undefined;
|
|
47
|
+
if (!item) return;
|
|
48
|
+
dropdownLeft = item.getBoundingClientRect().left - horizontalMenu.getBoundingClientRect().left;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const updateScrollState = () => {
|
|
52
|
+
if (!scrollViewport) return;
|
|
53
|
+
const maxScrollLeft = scrollViewport.scrollWidth - scrollViewport.clientWidth;
|
|
54
|
+
hasOverflow = maxScrollLeft > 1;
|
|
55
|
+
canScrollLeft = scrollViewport.scrollLeft > 1;
|
|
56
|
+
canScrollRight = scrollViewport.scrollLeft < maxScrollLeft - 1;
|
|
57
|
+
updateDropdownPosition();
|
|
35
58
|
};
|
|
36
59
|
|
|
37
60
|
const handleRootClick = (idx: number) => {
|
|
38
61
|
openRootIdx = openRootIdx === idx ? null : idx;
|
|
62
|
+
requestAnimationFrame(updateDropdownPosition);
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const scrollMenu = (direction: -1 | 1) => {
|
|
66
|
+
scrollViewport?.scrollBy({
|
|
67
|
+
left: direction * Math.max(scrollViewport.clientWidth * 0.7, 160),
|
|
68
|
+
behavior: 'smooth'
|
|
69
|
+
});
|
|
39
70
|
};
|
|
40
71
|
|
|
41
72
|
// 横向模式下点叶子:触发 onItemClick + 关闭 dropdown
|
|
@@ -59,6 +90,15 @@
|
|
|
59
90
|
}
|
|
60
91
|
};
|
|
61
92
|
};
|
|
93
|
+
|
|
94
|
+
onMount(() => {
|
|
95
|
+
if (!scrollViewport || !scrollTrack) return;
|
|
96
|
+
const resizeObserver = new ResizeObserver(updateScrollState);
|
|
97
|
+
resizeObserver.observe(scrollViewport);
|
|
98
|
+
resizeObserver.observe(scrollTrack);
|
|
99
|
+
updateScrollState();
|
|
100
|
+
return () => resizeObserver.disconnect();
|
|
101
|
+
});
|
|
62
102
|
</script>
|
|
63
103
|
|
|
64
104
|
{#if variant === 'vertical'}
|
|
@@ -72,36 +112,50 @@
|
|
|
72
112
|
{/if}
|
|
73
113
|
</div>
|
|
74
114
|
{:else}
|
|
75
|
-
<nav class="uniface-navigator-menu horizontal" {style} data-theme={theme || undefined}>
|
|
76
|
-
{#
|
|
77
|
-
<
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
tabindex="0"
|
|
85
|
-
>
|
|
86
|
-
<span class="label">{rootText(root)}</span>
|
|
87
|
-
{#if root.children.length > 0}
|
|
88
|
-
<i class="caret" aria-hidden="true"></i>
|
|
89
|
-
{/if}
|
|
90
|
-
{#if openRootIdx === idx && root.children.length > 0}
|
|
115
|
+
<nav bind:this={horizontalMenu} class="uniface-navigator-menu horizontal" {style} data-theme={theme || undefined}>
|
|
116
|
+
{#if hasOverflow}
|
|
117
|
+
<button type="button" class="scroll-button previous" aria-label="向左滚动菜单" disabled={!canScrollLeft} onclick={() => scrollMenu(-1)}>
|
|
118
|
+
<i aria-hidden="true"></i>
|
|
119
|
+
</button>
|
|
120
|
+
{/if}
|
|
121
|
+
<div bind:this={scrollViewport} class="scroll-viewport" onscroll={updateScrollState}>
|
|
122
|
+
<div bind:this={scrollTrack} class="scroll-track">
|
|
123
|
+
{#each menuItems as root, idx (idx)}
|
|
91
124
|
<div
|
|
92
|
-
class="
|
|
93
|
-
|
|
94
|
-
|
|
125
|
+
class="root-item"
|
|
126
|
+
class:open={openRootIdx === idx}
|
|
127
|
+
class:leaf={!root.children?.length}
|
|
128
|
+
onclick={(e) => { e.stopPropagation(); handleRootClick(idx); }}
|
|
129
|
+
onkeydown={(e) => { if (e.key === 'Enter' || e.key === ' ') handleRootClick(idx); }}
|
|
130
|
+
role="button"
|
|
131
|
+
tabindex="0"
|
|
95
132
|
>
|
|
96
|
-
<
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
</ul>
|
|
133
|
+
<span class="label">{rootText(root)}</span>
|
|
134
|
+
{#if root.children?.length}
|
|
135
|
+
<i class="caret" aria-hidden="true"></i>
|
|
136
|
+
{/if}
|
|
101
137
|
</div>
|
|
102
|
-
{/
|
|
138
|
+
{/each}
|
|
103
139
|
</div>
|
|
104
|
-
|
|
140
|
+
</div>
|
|
141
|
+
{#if hasOverflow}
|
|
142
|
+
<button type="button" class="scroll-button next" aria-label="向右滚动菜单" disabled={!canScrollRight} onclick={() => scrollMenu(1)}>
|
|
143
|
+
<i aria-hidden="true"></i>
|
|
144
|
+
</button>
|
|
145
|
+
{/if}
|
|
146
|
+
{#if openRootIdx !== null && menuItems[openRootIdx]?.children?.length}
|
|
147
|
+
<div
|
|
148
|
+
class="dropdown-panel"
|
|
149
|
+
style:left="{dropdownLeft}px"
|
|
150
|
+
use:outerClick={() => { openRootIdx = null; }}
|
|
151
|
+
>
|
|
152
|
+
<ul class="dropdown">
|
|
153
|
+
{#each menuItems[openRootIdx].children ?? [] as child}
|
|
154
|
+
<NavigatorMenuItem menu={child} onMenuItemClick={handleLeafClickInDropdown} {textField} cascade={true}/>
|
|
155
|
+
{/each}
|
|
156
|
+
</ul>
|
|
157
|
+
</div>
|
|
158
|
+
{/if}
|
|
105
159
|
</nav>
|
|
106
160
|
{/if}
|
|
107
161
|
|
|
@@ -143,6 +197,76 @@
|
|
|
143
197
|
height: 48px;
|
|
144
198
|
}
|
|
145
199
|
|
|
200
|
+
.scroll-viewport {
|
|
201
|
+
flex: 1 1 auto;
|
|
202
|
+
min-width: 0;
|
|
203
|
+
height: 100%;
|
|
204
|
+
overflow-x: auto;
|
|
205
|
+
overflow-y: hidden;
|
|
206
|
+
scrollbar-width: none;
|
|
207
|
+
scroll-behavior: smooth;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.scroll-viewport::-webkit-scrollbar {
|
|
211
|
+
display: none;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.scroll-track {
|
|
215
|
+
display: flex;
|
|
216
|
+
align-items: center;
|
|
217
|
+
width: max-content;
|
|
218
|
+
min-width: 100%;
|
|
219
|
+
height: 100%;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.scroll-button {
|
|
223
|
+
flex: 0 0 32px;
|
|
224
|
+
width: 32px;
|
|
225
|
+
height: 100%;
|
|
226
|
+
padding: 0;
|
|
227
|
+
border: 0;
|
|
228
|
+
background: var(--uniface-nav-menu-bg);
|
|
229
|
+
color: inherit;
|
|
230
|
+
cursor: pointer;
|
|
231
|
+
opacity: 0;
|
|
232
|
+
visibility: hidden;
|
|
233
|
+
pointer-events: none;
|
|
234
|
+
transition: opacity 0.15s ease, visibility 0.15s ease;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.uniface-navigator-menu.horizontal:hover .scroll-button,
|
|
238
|
+
.uniface-navigator-menu.horizontal:focus-within .scroll-button {
|
|
239
|
+
opacity: 1;
|
|
240
|
+
visibility: visible;
|
|
241
|
+
pointer-events: auto;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.scroll-button:hover:not(:disabled) {
|
|
245
|
+
background-color: var(--uniface-nav-menu-hover-bg);
|
|
246
|
+
color: var(--uniface-nav-menu-hover-color);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.scroll-button:disabled {
|
|
250
|
+
cursor: default;
|
|
251
|
+
opacity: 0.35;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.scroll-button i {
|
|
255
|
+
display: inline-block;
|
|
256
|
+
width: 8px;
|
|
257
|
+
height: 8px;
|
|
258
|
+
border-top: 2px solid currentColor;
|
|
259
|
+
border-left: 2px solid currentColor;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
.scroll-button.previous i {
|
|
263
|
+
transform: rotate(-45deg);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.scroll-button.next i {
|
|
267
|
+
transform: rotate(135deg);
|
|
268
|
+
}
|
|
269
|
+
|
|
146
270
|
.uniface-navigator-menu.horizontal .root-item {
|
|
147
271
|
position: relative;
|
|
148
272
|
padding: 0 16px;
|
|
@@ -176,7 +300,6 @@
|
|
|
176
300
|
.dropdown-panel {
|
|
177
301
|
position: absolute;
|
|
178
302
|
top: 100%;
|
|
179
|
-
left: 0;
|
|
180
303
|
z-index: 1000;
|
|
181
304
|
}
|
|
182
305
|
|
|
@@ -190,4 +313,4 @@
|
|
|
190
313
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
191
314
|
min-width: 180px;
|
|
192
315
|
}
|
|
193
|
-
</style>
|
|
316
|
+
</style>
|