chuijs 4.0.2 → 4.0.4
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/CHANGELOG.md +597 -0
- package/README.md +43 -644
- package/framework/appLayout/default/chui_app_layout.js +602 -496
- package/framework/appLayout/default/global_style.css +288 -97
- package/framework/appLayout/default/main_theme_style.css +188 -101
- package/framework/components/chui_accordion/accordion.js +38 -35
- package/framework/components/chui_accordion/styles.css +13 -12
- package/framework/components/chui_action_sheet/action_sheet.js +93 -64
- package/framework/components/chui_action_sheet/styles.css +12 -5
- package/framework/components/chui_actions_bar/actions_bar.js +338 -0
- package/framework/components/chui_actions_bar/styles.css +139 -0
- package/framework/components/chui_affix/affix.js +16 -11
- package/framework/components/chui_affix/styles.css +5 -0
- package/framework/components/chui_alert/alert.js +34 -19
- package/framework/components/chui_alert/styles.css +7 -0
- package/framework/components/chui_avatar/avatar.js +36 -35
- package/framework/components/chui_avatar/styles.css +1 -1
- package/framework/components/chui_avatar_group/avatar_group.js +25 -23
- package/framework/components/chui_avatar_group/styles.css +1 -1
- package/framework/components/chui_backtop/backtop.js +60 -21
- package/framework/components/chui_backtop/styles.css +21 -0
- package/framework/components/chui_badge/badge.js +30 -28
- package/framework/components/chui_badge/styles.css +6 -6
- package/framework/components/chui_banner/banner.js +222 -0
- package/framework/components/chui_banner/styles.css +170 -0
- package/framework/components/chui_breadcrumb/breadcrumb.js +15 -13
- package/framework/components/chui_breadcrumb/styles.css +1 -1
- package/framework/components/chui_button/button.js +52 -36
- package/framework/components/chui_button/styles.css +7 -7
- package/framework/components/chui_calendar/calendar.js +18 -16
- package/framework/components/chui_card/card.js +52 -32
- package/framework/components/chui_card_scroll/card_scroll.js +169 -0
- package/framework/components/chui_card_scroll/styles.css +86 -0
- package/framework/components/chui_chat/chat.js +140 -79
- package/framework/components/chui_chat/styles.css +18 -7
- package/framework/components/chui_clipboard_history/clipboard_history.js +53 -39
- package/framework/components/chui_clipboard_history/styles.css +13 -9
- package/framework/components/chui_code/code.js +10 -10
- package/framework/components/chui_code/styles.css +4 -4
- package/framework/components/chui_code_editor/code_editor.js +73 -57
- package/framework/components/chui_code_editor/styles.css +6 -5
- package/framework/components/chui_command_palette/command_palette.js +87 -64
- package/framework/components/chui_command_palette/styles.css +5 -5
- package/framework/components/chui_console/console.js +13 -13
- package/framework/components/chui_console/styles.css +6 -3
- package/framework/components/chui_content_block/content_block.js +35 -21
- package/framework/components/chui_content_block/styles.css +2 -2
- package/framework/components/chui_context_menu/context_menu.js +171 -58
- package/framework/components/chui_context_menu/styles.css +82 -8
- package/framework/components/chui_custom_element/custom_element.js +25 -18
- package/framework/components/chui_data_grid/data_grid.js +633 -471
- package/framework/components/chui_data_grid/styles.css +24 -22
- package/framework/components/chui_descriptions/descriptions.js +34 -17
- package/framework/components/chui_descriptions/styles.css +1 -1
- package/framework/components/chui_details/details.js +42 -36
- package/framework/components/chui_details/styles.css +12 -11
- package/framework/components/chui_diff_viewer/diff_viewer.js +172 -147
- package/framework/components/chui_diff_viewer/styles.css +10 -10
- package/framework/components/chui_divider/divider.js +19 -17
- package/framework/components/chui_divider/styles.css +2 -2
- package/framework/components/chui_drawer/drawer.js +63 -38
- package/framework/components/chui_drawer/styles.css +18 -4
- package/framework/components/chui_drop_zone/drop_zone.js +37 -27
- package/framework/components/chui_drop_zone/styles.css +10 -6
- package/framework/components/chui_empty_state/empty_state.js +20 -15
- package/framework/components/chui_fieldset/fieldset.js +40 -23
- package/framework/components/chui_fieldset/styles.css +6 -6
- package/framework/components/chui_file_explorer/file_explorer.js +260 -189
- package/framework/components/chui_file_explorer/styles.css +8 -7
- package/framework/components/chui_form/form.js +40 -28
- package/framework/components/chui_form/styles.css +1 -1
- package/framework/components/chui_gantt/gantt.js +102 -78
- package/framework/components/chui_gantt/styles.css +5 -5
- package/framework/components/chui_graphs/graphs.js +376 -239
- package/framework/components/chui_graphs/styles.css +27 -6
- package/framework/components/chui_hero/hero.js +98 -37
- package/framework/components/chui_hero/styles.css +176 -7
- package/framework/components/chui_html_block/html_block.js +8 -8
- package/framework/components/chui_html_block/styles.css +3 -3
- package/framework/components/chui_hx/hx.js +3 -3
- package/framework/components/chui_hx/styles.css +13 -6
- package/framework/components/chui_icons/icons.js +2115 -2115
- package/framework/components/chui_icons/styles.css +4 -3
- package/framework/components/chui_inputs/chui_check_box/check_box.js +31 -19
- package/framework/components/chui_inputs/chui_check_box/styles.css +30 -21
- package/framework/components/chui_inputs/chui_chips/chips.js +141 -70
- package/framework/components/chui_inputs/chui_chips/styles.css +32 -7
- package/framework/components/chui_inputs/chui_color_picker/color_picker.js +55 -38
- package/framework/components/chui_inputs/chui_color_picker/styles.css +7 -7
- package/framework/components/chui_inputs/chui_combo_box/combo_box.js +127 -109
- package/framework/components/chui_inputs/chui_combo_box/styles.css +23 -21
- package/framework/components/chui_inputs/chui_date/date.js +161 -127
- package/framework/components/chui_inputs/chui_date/styles.css +20 -19
- package/framework/components/chui_inputs/chui_date_range/date_range.js +61 -50
- package/framework/components/chui_inputs/chui_date_range/styles.css +3 -3
- package/framework/components/chui_inputs/chui_datetime/datetime.js +47 -39
- package/framework/components/chui_inputs/chui_datetime/styles.css +3 -3
- package/framework/components/chui_inputs/chui_email/email.js +48 -36
- package/framework/components/chui_inputs/chui_email/styles.css +11 -11
- package/framework/components/chui_inputs/chui_file/file.js +71 -44
- package/framework/components/chui_inputs/chui_file/styles.css +23 -19
- package/framework/components/chui_inputs/chui_hotkey/hotkey.js +101 -76
- package/framework/components/chui_inputs/chui_hotkey/styles.css +6 -6
- package/framework/components/chui_inputs/chui_masked/masked.js +83 -72
- package/framework/components/chui_inputs/chui_masked/styles.css +5 -5
- package/framework/components/chui_inputs/chui_mention/mention.js +87 -40
- package/framework/components/chui_inputs/chui_mention/styles.css +14 -8
- package/framework/components/chui_inputs/chui_multi_combo_box/multi_combo_box.js +242 -212
- package/framework/components/chui_inputs/chui_multi_combo_box/styles.css +23 -15
- package/framework/components/chui_inputs/chui_number/number.js +84 -70
- package/framework/components/chui_inputs/chui_number/styles.css +13 -13
- package/framework/components/chui_inputs/chui_otp/otp.js +71 -62
- package/framework/components/chui_inputs/chui_otp/styles.css +5 -5
- package/framework/components/chui_inputs/chui_password/password.js +72 -56
- package/framework/components/chui_inputs/chui_password/styles.css +15 -15
- package/framework/components/chui_inputs/chui_radio_button/radio_button.js +37 -25
- package/framework/components/chui_inputs/chui_radio_button/styles.css +22 -22
- package/framework/components/chui_inputs/chui_rating/rating.js +54 -50
- package/framework/components/chui_inputs/chui_rating/styles.css +3 -3
- package/framework/components/chui_inputs/chui_select_box/select_box.js +132 -108
- package/framework/components/chui_inputs/chui_select_box/styles.css +21 -21
- package/framework/components/chui_inputs/chui_slider/slider.js +41 -38
- package/framework/components/chui_inputs/chui_slider/styles.css +7 -5
- package/framework/components/chui_inputs/chui_text/styles.css +14 -14
- package/framework/components/chui_inputs/chui_text/text.js +69 -52
- package/framework/components/chui_inputs/chui_text_area/styles.css +14 -14
- package/framework/components/chui_inputs/chui_text_area/text_area.js +59 -36
- package/framework/components/chui_inputs/chui_time/styles.css +18 -20
- package/framework/components/chui_inputs/chui_time/time.js +71 -49
- package/framework/components/chui_inputs/chui_toggle/styles.css +13 -6
- package/framework/components/chui_inputs/chui_toggle/toggle.js +27 -27
- package/framework/components/chui_json_editor/json_editor.js +137 -127
- package/framework/components/chui_json_editor/styles.css +5 -5
- package/framework/components/chui_json_viewer/json_viewer.js +133 -114
- package/framework/components/chui_json_viewer/styles.css +9 -8
- package/framework/components/chui_kanban/kanban.js +78 -60
- package/framework/components/chui_kanban/styles.css +8 -4
- package/framework/components/chui_kbd/kbd.js +12 -10
- package/framework/components/chui_kbd/styles.css +1 -1
- package/framework/components/chui_label/label.js +31 -29
- package/framework/components/chui_label/styles.css +3 -3
- package/framework/components/chui_link/link.js +36 -29
- package/framework/components/chui_link/styles.css +11 -4
- package/framework/components/chui_list/list.js +42 -38
- package/framework/components/chui_list/styles.css +4 -3
- package/framework/components/chui_markdown_editor/markdown_editor.js +125 -109
- package/framework/components/chui_markdown_editor/styles.css +5 -5
- package/framework/components/chui_media/audio.js +457 -364
- package/framework/components/chui_media/audio_styles.css +74 -37
- package/framework/components/chui_media/image.js +99 -64
- package/framework/components/chui_media/image_compare.js +86 -55
- package/framework/components/chui_media/image_compare_styles.css +5 -5
- package/framework/components/chui_media/image_styles.css +4 -4
- package/framework/components/chui_media/video.js +264 -171
- package/framework/components/chui_media/video_styles.css +57 -24
- package/framework/components/chui_menu_bar/menu_bar.js +67 -65
- package/framework/components/chui_menu_bar/styles.css +14 -12
- package/framework/components/chui_message_bar/message_bar.js +551 -0
- package/framework/components/chui_message_bar/styles.css +248 -0
- package/framework/components/chui_modal/modal.js +81 -56
- package/framework/components/chui_modal/styles.css +3 -2
- package/framework/components/chui_notification/notification.js +107 -69
- package/framework/components/chui_notification/notification_download.js +28 -77
- package/framework/components/chui_notification/notification_download_card.js +115 -0
- package/framework/components/chui_notification/notification_download_progress.css +5 -4
- package/framework/components/chui_notification/notification_download_progress.js +73 -105
- package/framework/components/chui_notification/notification_update.js +44 -37
- package/framework/components/chui_notification/status_plate.css +3 -3
- package/framework/components/chui_notification/status_plate.js +2 -2
- package/framework/components/chui_notification/styles.css +6 -1
- package/framework/components/chui_notification/styles_download.css +2 -2
- package/framework/components/chui_notification/styles_update.css +3 -3
- package/framework/components/chui_org_chart/org_chart.js +101 -62
- package/framework/components/chui_org_chart/styles.css +2 -2
- package/framework/components/chui_pagination/pagination.js +65 -30
- package/framework/components/chui_pagination/styles.css +1 -1
- package/framework/components/chui_paragraph/paragraph.js +2 -2
- package/framework/components/chui_paragraph/styles.css +3 -3
- package/framework/components/chui_popover/popover.js +77 -50
- package/framework/components/chui_popover/styles.css +1 -1
- package/framework/components/chui_popups/popups.js +210 -181
- package/framework/components/chui_popups/styles.css +7 -7
- package/framework/components/chui_print_button/print_button.js +48 -33
- package/framework/components/chui_progress_bar/progress_bar.js +49 -19
- package/framework/components/chui_progress_bar/styles.css +6 -6
- package/framework/components/chui_progress_ring/progress_ring.js +32 -30
- package/framework/components/chui_progress_ring/styles.css +1 -1
- package/framework/components/chui_qrcode/qrcode.js +85 -41
- package/framework/components/chui_query_builder/query_builder.js +263 -170
- package/framework/components/chui_query_builder/styles.css +4 -4
- package/framework/components/chui_radio_group/radio_group.js +36 -26
- package/framework/components/chui_radio_group/styles.css +2 -2
- package/framework/components/chui_result/result.js +41 -31
- package/framework/components/chui_result/styles.css +3 -3
- package/framework/components/chui_scheduler/scheduler.js +126 -104
- package/framework/components/chui_scheduler/styles.css +11 -7
- package/framework/components/chui_screen_spinner/screen_spinner.js +167 -0
- package/framework/components/chui_screen_spinner/styles.css +49 -0
- package/framework/components/chui_segmented_control/segmented_control.js +90 -27
- package/framework/components/chui_segmented_control/styles.css +32 -6
- package/framework/components/chui_settings/settings.js +160 -87
- package/framework/components/chui_settings/styles.css +4 -4
- package/framework/components/chui_shortcut_help/shortcut_help.js +82 -61
- package/framework/components/chui_sidebar_nav/sidebar_nav.js +132 -53
- package/framework/components/chui_sidebar_nav/styles.css +9 -3
- package/framework/components/chui_skeleton/skeleton.js +29 -24
- package/framework/components/chui_slideshow/slideshow.js +122 -103
- package/framework/components/chui_slideshow/styles.css +22 -16
- package/framework/components/chui_spinner/spinner.js +17 -17
- package/framework/components/chui_spinner/styles.css +0 -1
- package/framework/components/chui_split_button/split_button.js +53 -30
- package/framework/components/chui_split_button/styles.css +22 -6
- package/framework/components/chui_splitter/splitter.js +46 -39
- package/framework/components/chui_splitter/styles.css +2 -2
- package/framework/components/chui_statistic/statistic.js +111 -84
- package/framework/components/chui_status_bar/status_bar.js +11 -9
- package/framework/components/chui_status_bar/styles.css +2 -2
- package/framework/components/chui_stepper/stepper.js +230 -54
- package/framework/components/chui_stepper/styles.css +79 -14
- package/framework/components/chui_sticky_bar/sticky_bar.js +53 -17
- package/framework/components/chui_sticky_bar/styles.css +11 -7
- package/framework/components/chui_tabs/chui_tabs.js +100 -46
- package/framework/components/chui_tabs/styles.css +43 -15
- package/framework/components/chui_text_editor/styles.css +24 -23
- package/framework/components/chui_text_editor/text_editor.js +103 -79
- package/framework/components/chui_text_editor/text_editor_panel.js +428 -367
- package/framework/components/chui_theme_toggle/theme_toggle.js +46 -25
- package/framework/components/chui_timeline/styles.css +3 -1
- package/framework/components/chui_timeline/timeline.js +14 -12
- package/framework/components/chui_toast_queue/styles.css +11 -11
- package/framework/components/chui_toast_queue/toast_queue.js +82 -73
- package/framework/components/chui_toolbar/styles.css +2 -2
- package/framework/components/chui_toolbar/toolbar.js +20 -13
- package/framework/components/chui_tooltip/styles.css +2 -2
- package/framework/components/chui_tooltip/tooltip.js +40 -27
- package/framework/components/chui_tour/styles.css +12 -7
- package/framework/components/chui_tour/tour.js +132 -98
- package/framework/components/chui_transfer/styles.css +8 -7
- package/framework/components/chui_transfer/transfer.js +143 -123
- package/framework/components/chui_tree_table/styles.css +4 -4
- package/framework/components/chui_tree_table/tree_table.js +88 -74
- package/framework/components/chui_tree_view/styles.css +14 -10
- package/framework/components/chui_tree_view/tree_view.js +298 -253
- package/framework/components/chui_user_bar/styles.css +145 -0
- package/framework/components/chui_user_bar/user_bar.js +402 -0
- package/framework/components/chui_user_list_bar/styles.css +173 -0
- package/framework/components/chui_user_list_bar/user_list_bar.js +485 -0
- package/framework/components/chui_watermark/watermark.js +41 -33
- package/framework/components/chui_webview/styles.css +2 -2
- package/framework/components/chui_webview/webview.js +64 -52
- package/framework/components/chui_write_bar/styles.css +172 -0
- package/framework/components/chui_write_bar/write_bar.js +320 -0
- package/framework/main_window.js +1234 -0
- package/framework/modules/chui_a11y/chui_a11y.js +153 -123
- package/framework/modules/chui_animations/animations.js +105 -43
- package/framework/modules/chui_animations/motion.js +120 -0
- package/framework/modules/chui_animations/styles.css +37 -4
- package/framework/modules/chui_bridge/preload.js +36 -25
- package/framework/modules/chui_functions.js +69 -63
- package/framework/modules/chui_highlight/chui_highlight.js +25 -22
- package/framework/modules/chui_highlight/styles.css +13 -10
- package/framework/modules/chui_i18n/chui_i18n.js +12 -10
- package/framework/modules/chui_i18n/locales/a11y.js +5 -5
- package/framework/modules/chui_i18n/locales/app_layout.js +5 -5
- package/framework/modules/chui_i18n/locales/calendar.js +3 -3
- package/framework/modules/chui_i18n/locales/common.js +3 -3
- package/framework/modules/chui_i18n/locales/data.js +36 -26
- package/framework/modules/chui_i18n/locales/editors.js +40 -13
- package/framework/modules/chui_i18n/locales/feedback.js +65 -3
- package/framework/modules/chui_i18n/locales/forms.js +8 -8
- package/framework/modules/chui_i18n/locales/graphics.js +8 -8
- package/framework/modules/chui_i18n/locales/media.js +4 -4
- package/framework/modules/chui_i18n/locales/navigation.js +12 -8
- package/framework/modules/chui_i18n/locales/validate.js +3 -3
- package/framework/modules/chui_json/chui_json.js +11 -11
- package/framework/modules/chui_layout/chui_layout.js +12 -10
- package/framework/modules/chui_logger/chui_logger.js +47 -28
- package/framework/modules/chui_page/page.js +39 -33
- package/framework/modules/chui_palette/palette.js +61 -0
- package/framework/modules/chui_qr/chui_qr.js +179 -88
- package/framework/modules/chui_scrollbar/chui_scrollbar.js +79 -68
- package/framework/modules/chui_scrollbar/styles.css +4 -2
- package/framework/modules/chui_services/chui_channels.js +27 -13
- package/framework/modules/chui_services/chui_services.js +47 -39
- package/framework/modules/chui_services/desktop.js +108 -101
- package/framework/modules/chui_sortable/chui_sortable.js +33 -28
- package/framework/modules/chui_validate/chui_validate.js +10 -7
- package/framework/tray_bar/chui_menu_items.js +136 -46
- package/index.d.ts +5046 -0
- package/index.js +199 -1254
- package/package.json +81 -68
- package/framework/components/telegram_bot/chui_telegram_bot.js +0 -184
|
@@ -11,11 +11,11 @@ chui_vp_main {
|
|
|
11
11
|
display: block;
|
|
12
12
|
width: 100%;
|
|
13
13
|
border-radius: var(--radius_md);
|
|
14
|
-
background: var(--
|
|
14
|
+
background: var(--player_background);
|
|
15
15
|
border: 1px solid var(--border_color);
|
|
16
16
|
overflow: hidden;
|
|
17
|
-
--
|
|
18
|
-
--
|
|
17
|
+
--seek_before_width: 0%;
|
|
18
|
+
--volume_before_width: 0%;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
/* Кадр занимает всю ширину, а высоту считает соотношение сторон: прежде элемент показывал
|
|
@@ -50,7 +50,7 @@ chui_vp_panel {
|
|
|
50
50
|
`pointer-events` гасим вместе с прозрачностью — иначе невидимая полоса ловит щелчки */
|
|
51
51
|
opacity: 0;
|
|
52
52
|
pointer-events: none;
|
|
53
|
-
transition: opacity var(--
|
|
53
|
+
transition: opacity var(--motion_fast) var(--motion_ease);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
chui_vp_main.vp_panel_open chui_vp_panel {
|
|
@@ -64,7 +64,9 @@ chui_vp_main.vp_controls_off chui_vp_panel {
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
/* КНОПКИ: площадка 32px с глифом 18px */
|
|
67
|
-
chui_vp_play_pause,
|
|
67
|
+
chui_vp_play_pause,
|
|
68
|
+
chui_vp_volume_icon,
|
|
69
|
+
chui_vp_full_mode {
|
|
68
70
|
display: flex;
|
|
69
71
|
align-items: center;
|
|
70
72
|
justify-content: center;
|
|
@@ -76,6 +78,14 @@ chui_vp_play_pause, chui_vp_volume_icon, chui_vp_full_mode {
|
|
|
76
78
|
border-radius: var(--radius_sm);
|
|
77
79
|
}
|
|
78
80
|
|
|
81
|
+
/* Кегль глифа — ключом плеера: у `chui_icon` есть своё правило (размер шапки),
|
|
82
|
+
поэтому размер задаётся значку, а не кнопке. Прежде число стояло в коде */
|
|
83
|
+
chui_vp_play_pause chui_icon,
|
|
84
|
+
chui_vp_volume_icon chui_icon,
|
|
85
|
+
chui_vp_full_mode chui_icon {
|
|
86
|
+
font-size: var(--player_icon_size);
|
|
87
|
+
}
|
|
88
|
+
|
|
79
89
|
/* Главная кнопка — светлый круг с глифом цвета подложки, как у Audio: он адаптивен к схеме
|
|
80
90
|
и не спорит с акцентом полосы прогресса */
|
|
81
91
|
chui_vp_play_pause {
|
|
@@ -97,12 +107,13 @@ chui_vp_play_pause:hover {
|
|
|
97
107
|
}
|
|
98
108
|
|
|
99
109
|
chui_vp_play_pause:active {
|
|
100
|
-
transform: scale(.96);
|
|
110
|
+
transform: scale(0.96);
|
|
101
111
|
}
|
|
102
112
|
|
|
103
113
|
/* Глифы отвечают на курсор акцентом — у всех, кроме главной кнопки: она сама светлая,
|
|
104
114
|
и её глиф должен остаться читаемым */
|
|
105
|
-
chui_vp_volume_icon:hover chui_icon,
|
|
115
|
+
chui_vp_volume_icon:hover chui_icon,
|
|
116
|
+
chui_vp_full_mode:hover chui_icon {
|
|
106
117
|
color: var(--blue_prime_background);
|
|
107
118
|
}
|
|
108
119
|
|
|
@@ -113,7 +124,7 @@ chui_vp_play_pause:active chui_icon {
|
|
|
113
124
|
|
|
114
125
|
chui_vp_volume_icon:active,
|
|
115
126
|
chui_vp_full_mode:active {
|
|
116
|
-
transform: scale(.94);
|
|
127
|
+
transform: scale(0.94);
|
|
117
128
|
}
|
|
118
129
|
|
|
119
130
|
chui_vp_volume_icon:active chui_icon,
|
|
@@ -123,8 +134,11 @@ chui_vp_full_mode:active chui_icon {
|
|
|
123
134
|
|
|
124
135
|
/* Кнопки полосы — кастомные теги, поэтому обводку фокуса рисуем сами.
|
|
125
136
|
`outline` не сдвигает вёрстку */
|
|
126
|
-
chui_vp_play_pause:focus-visible,
|
|
127
|
-
|
|
137
|
+
chui_vp_play_pause:focus-visible,
|
|
138
|
+
chui_vp_volume_icon:focus-visible,
|
|
139
|
+
chui_vp_full_mode:focus-visible,
|
|
140
|
+
#chui_vp_seek:focus-visible,
|
|
141
|
+
#chui_vp_volume:focus-visible {
|
|
128
142
|
outline: var(--focus_outline);
|
|
129
143
|
outline-offset: var(--focus_outline_offset);
|
|
130
144
|
}
|
|
@@ -152,7 +166,7 @@ chui_vp_seek_buf {
|
|
|
152
166
|
width: 0;
|
|
153
167
|
height: var(--player_track_height);
|
|
154
168
|
border-radius: var(--radius_pill);
|
|
155
|
-
background: var(--
|
|
169
|
+
background: var(--player_slider_buffer_background);
|
|
156
170
|
position: absolute;
|
|
157
171
|
/* На те же полголовки ползунка, что и дорожка: иначе буфер выступал бы слева */
|
|
158
172
|
inset-inline-start: 6px;
|
|
@@ -162,7 +176,8 @@ chui_vp_seek_buf {
|
|
|
162
176
|
/* Прогресс и громкость — та же шкала, что у Audio: дорожка `--player_track_height`,
|
|
163
177
|
заливка градиентом по доле, ползунок виден и в покое и не выезжает за дорожку
|
|
164
178
|
(`padding-inline` на половину кружка) */
|
|
165
|
-
#chui_vp_seek,
|
|
179
|
+
#chui_vp_seek,
|
|
180
|
+
#chui_vp_volume {
|
|
166
181
|
margin: 0;
|
|
167
182
|
-webkit-appearance: none;
|
|
168
183
|
border-radius: var(--radius_pill);
|
|
@@ -194,24 +209,30 @@ chui_vp_seek_buf {
|
|
|
194
209
|
}
|
|
195
210
|
|
|
196
211
|
#chui_vp_seek {
|
|
197
|
-
background-image: linear-gradient(
|
|
198
|
-
|
|
199
|
-
var(--
|
|
212
|
+
background-image: linear-gradient(
|
|
213
|
+
to right,
|
|
214
|
+
var(--blue_prime_background) 0 var(--seek_before_width, 0%),
|
|
215
|
+
var(--player_slider_background) var(--seek_before_width, 0%) 100%
|
|
216
|
+
);
|
|
200
217
|
}
|
|
201
218
|
|
|
202
219
|
/* Громкость — ступень звука, а не время: заливка нейтральная, чтобы не читалась второй
|
|
203
220
|
полосой прогресса */
|
|
204
221
|
#chui_vp_volume {
|
|
205
|
-
background-image: linear-gradient(
|
|
206
|
-
|
|
207
|
-
var(--
|
|
222
|
+
background-image: linear-gradient(
|
|
223
|
+
to right,
|
|
224
|
+
var(--text_color) 0 var(--volume_before_width, 0%),
|
|
225
|
+
var(--player_slider_background) var(--volume_before_width, 0%) 100%
|
|
226
|
+
);
|
|
208
227
|
}
|
|
209
228
|
|
|
210
229
|
/* Выключенная громкость (нет звука) — заливка ступени приглушается, как у Audio */
|
|
211
230
|
#chui_vp_volume:disabled {
|
|
212
|
-
background-image: linear-gradient(
|
|
213
|
-
|
|
214
|
-
var(--
|
|
231
|
+
background-image: linear-gradient(
|
|
232
|
+
to right,
|
|
233
|
+
var(--player_slider_buffer_background) 0 var(--volume_before_width, 0%),
|
|
234
|
+
var(--player_slider_background) var(--volume_before_width, 0%) 100%
|
|
235
|
+
);
|
|
215
236
|
}
|
|
216
237
|
|
|
217
238
|
#chui_vp_seek::-webkit-slider-runnable-track,
|
|
@@ -224,7 +245,8 @@ chui_vp_seek_buf {
|
|
|
224
245
|
|
|
225
246
|
/* Ползунок виден всегда, но в покое он меньше — как у Audio. Ободок цвета полосы
|
|
226
247
|
управления нужен там, где заливка белая */
|
|
227
|
-
#chui_vp_seek::-webkit-slider-thumb,
|
|
248
|
+
#chui_vp_seek::-webkit-slider-thumb,
|
|
249
|
+
#chui_vp_volume::-webkit-slider-thumb {
|
|
228
250
|
-webkit-appearance: none;
|
|
229
251
|
border: none;
|
|
230
252
|
height: 9px;
|
|
@@ -234,6 +256,14 @@ chui_vp_seek_buf {
|
|
|
234
256
|
box-shadow: 0 0 0 2px var(--header_background);
|
|
235
257
|
cursor: pointer;
|
|
236
258
|
margin-top: calc((var(--player_track_height) - 9px) / 2);
|
|
259
|
+
/* Рост под курсором — тот же переход: своё время у ручки есть только здесь,
|
|
260
|
+
общее правило до псевдоэлемента бегунка не достаёт */
|
|
261
|
+
transition:
|
|
262
|
+
height var(--motion_fast) var(--motion_ease),
|
|
263
|
+
width var(--motion_fast) var(--motion_ease),
|
|
264
|
+
margin-top var(--motion_fast) var(--motion_ease),
|
|
265
|
+
background-color var(--motion_fast) var(--motion_ease),
|
|
266
|
+
box-shadow var(--motion_fast) var(--motion_ease);
|
|
237
267
|
}
|
|
238
268
|
|
|
239
269
|
/* У выключенной полосы ползунка нет: она и так приглушена заливкой */
|
|
@@ -254,10 +284,13 @@ chui_vp_main:hover #chui_vp_volume:not(:disabled)::-webkit-slider-thumb,
|
|
|
254
284
|
width: 12px;
|
|
255
285
|
margin-top: calc((var(--player_track_height) - 12px) / 2);
|
|
256
286
|
background-color: var(--player_thumb_background);
|
|
257
|
-
box-shadow:
|
|
287
|
+
box-shadow:
|
|
288
|
+
0 0 0 2px var(--header_background),
|
|
289
|
+
var(--box_shadow_main);
|
|
258
290
|
}
|
|
259
291
|
|
|
260
|
-
#chui_vp_seek:focus,
|
|
292
|
+
#chui_vp_seek:focus,
|
|
293
|
+
#chui_vp_volume:focus,
|
|
261
294
|
#chui_vp_seek:focus::-webkit-slider-runnable-track,
|
|
262
295
|
#chui_vp_volume:focus::-webkit-slider-runnable-track {
|
|
263
296
|
outline: none;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const {Animation} = require("../../modules/chui_animations/animations");
|
|
2
|
-
const {MenuKeyboard, makeKeyboardButton} = require("../../modules/chui_a11y/chui_a11y");
|
|
1
|
+
const { Animation } = require("../../modules/chui_animations/animations");
|
|
2
|
+
const { MenuKeyboard, makeKeyboardButton } = require("../../modules/chui_a11y/chui_a11y");
|
|
3
3
|
|
|
4
4
|
const MENU_BAR_DROP_DOWN_ACTIVE_CLASS = "menu_bar_drop_down_button";
|
|
5
5
|
// Панель открывается под кнопкой с зазором и не подходит к краю окна ближе этого отступа
|
|
@@ -10,13 +10,13 @@ class MenuBar {
|
|
|
10
10
|
// Панели выпадающих списков лежат в body, а не в полосе (см. MenuBarDropDown), поэтому
|
|
11
11
|
// снятие полосы обязано убирать и их: экземпляр находится по узлу полосы
|
|
12
12
|
static #instances = new WeakMap();
|
|
13
|
-
#
|
|
13
|
+
#chuiMenuBarMain = document.createElement("chui_menu_bar_main");
|
|
14
14
|
#dropdowns = [];
|
|
15
15
|
constructor(options = { test: Boolean() }) {
|
|
16
|
-
require(
|
|
17
|
-
MenuBar.#instances.set(this.#
|
|
18
|
-
if (options.test !== undefined) this.#
|
|
19
|
-
this.#
|
|
16
|
+
require("../../modules/chui_functions").setStyles(__dirname + "/styles.css", "chUiJS_MenuBar");
|
|
17
|
+
MenuBar.#instances.set(this.#chuiMenuBarMain, this);
|
|
18
|
+
if (options.test !== undefined) this.#chuiMenuBarMain.setAttribute("test", options.test);
|
|
19
|
+
this.#chuiMenuBarMain.addEventListener("wheel", this.#wheelEvent, { passive: true });
|
|
20
20
|
}
|
|
21
21
|
/*
|
|
22
22
|
* Колесо мыши прокручивает полосу вбок.
|
|
@@ -26,16 +26,16 @@ class MenuBar {
|
|
|
26
26
|
* (для этого нужен сдвиг или тачпад), поэтому переводим дельту сами — иначе до правых
|
|
27
27
|
* пунктов полосы мышью было бы не добраться.
|
|
28
28
|
*/
|
|
29
|
-
#
|
|
30
|
-
const bar = this.#
|
|
29
|
+
#wheelEvent = (event) => {
|
|
30
|
+
const bar = this.#chuiMenuBarMain;
|
|
31
31
|
if (bar.scrollWidth <= bar.clientWidth) return;
|
|
32
32
|
bar.scrollLeft += event.deltaY;
|
|
33
33
|
};
|
|
34
34
|
addMenuItems(...components) {
|
|
35
|
-
for (
|
|
36
|
-
|
|
37
|
-
new Animation(element).fadeIn()
|
|
38
|
-
this.#
|
|
35
|
+
for (const component of components) {
|
|
36
|
+
const element = component.set();
|
|
37
|
+
new Animation(element).fadeIn();
|
|
38
|
+
this.#chuiMenuBarMain.appendChild(element);
|
|
39
39
|
if (component instanceof MenuBarDropDown) this.#dropdowns.push(component);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
@@ -43,8 +43,8 @@ class MenuBar {
|
|
|
43
43
|
destroy() {
|
|
44
44
|
for (const dropdown of this.#dropdowns) dropdown.unmount();
|
|
45
45
|
this.#dropdowns = [];
|
|
46
|
-
this.#
|
|
47
|
-
MenuBar.#instances.delete(this.#
|
|
46
|
+
this.#chuiMenuBarMain.removeEventListener("wheel", this.#wheelEvent);
|
|
47
|
+
MenuBar.#instances.delete(this.#chuiMenuBarMain);
|
|
48
48
|
return this;
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
@@ -57,45 +57,46 @@ class MenuBar {
|
|
|
57
57
|
return node;
|
|
58
58
|
}
|
|
59
59
|
set() {
|
|
60
|
-
return this.#
|
|
60
|
+
return this.#chuiMenuBarMain;
|
|
61
61
|
}
|
|
62
|
-
static DROPDOWN(options = {title: String(), items: []}) {
|
|
63
|
-
return new MenuBarDropDown(options)
|
|
62
|
+
static DROPDOWN(options = { title: String(), items: [] }) {
|
|
63
|
+
return new MenuBarDropDown(options);
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
class MenuBarDropDown {
|
|
68
|
-
#
|
|
69
|
-
#
|
|
70
|
-
#
|
|
71
|
-
#
|
|
68
|
+
#mbDdMain = document.createElement("menu_bar_drop_down_main");
|
|
69
|
+
#mbDdButton = document.createElement("menu_bar_drop_down_button");
|
|
70
|
+
#mbDdDropdown = document.createElement("menu_bar_dropdown");
|
|
71
|
+
#isOpen = false;
|
|
72
72
|
#keyboard = undefined;
|
|
73
|
-
constructor(options = {title: String(), items: []}) {
|
|
73
|
+
constructor(options = { title: String(), items: [] }) {
|
|
74
74
|
// Панель собирают и отдельно от полосы (`MenuBar.DROPDOWN`) — свои стили нужны здесь же
|
|
75
|
-
require(
|
|
75
|
+
require("../../modules/chui_functions").setStyles(__dirname + "/styles.css", "chUiJS_MenuBar");
|
|
76
76
|
// Пустой заголовок остаётся пустым: подстановка заготовки опции рисовала слово «undefined»
|
|
77
|
-
this.#
|
|
78
|
-
this.#
|
|
79
|
-
this.#
|
|
80
|
-
for (
|
|
77
|
+
this.#mbDdButton.innerText = options.title === undefined || options.title === null ? "" : options.title;
|
|
78
|
+
this.#mbDdDropdown.id = require("randomstring").generate();
|
|
79
|
+
this.#mbDdMain.appendChild(this.#mbDdButton);
|
|
80
|
+
for (const item of Array.isArray(options.items) ? options.items : [])
|
|
81
|
+
this.#mbDdDropdown.appendChild(item.set());
|
|
81
82
|
// Панель лежит в document.body, а не рядом с кнопкой: шапка — сама с backdrop-filter,
|
|
82
83
|
// а элемент с backdrop-filter становится «backdrop root» — вложенная панель тогда не
|
|
83
84
|
// блюрит содержимое под собой (замер: детальность 33.4 и с блюром, и без него; вне шапки
|
|
84
85
|
// 20.1 против 31.5). Там же, в body, панель свободна и от контекста наложения шапки:
|
|
85
86
|
// с z-index 1 внутри шапки её перекрывали выдвижные слои (app_menu, ящик уведомлений).
|
|
86
|
-
document.body.appendChild(this.#
|
|
87
|
+
document.body.appendChild(this.#mbDdDropdown);
|
|
87
88
|
|
|
88
89
|
// Клавиатура и aria: кнопка открывает меню, стрелки ходят по пунктам, Escape закрывает
|
|
89
|
-
this.#keyboard = new MenuKeyboard(this.#
|
|
90
|
+
this.#keyboard = new MenuKeyboard(this.#mbDdDropdown, {
|
|
90
91
|
itemSelector: "button",
|
|
91
92
|
onEscape: () => this.#close(),
|
|
92
|
-
trigger: this.#
|
|
93
|
+
trigger: this.#mbDdButton,
|
|
93
94
|
});
|
|
94
|
-
makeKeyboardButton(this.#
|
|
95
|
+
makeKeyboardButton(this.#mbDdButton);
|
|
95
96
|
// Закрытый список тоже должен быть объявлен как закрытый: без этого у кнопки,
|
|
96
97
|
// которую ни разу не открывали, не было бы aria-expanded
|
|
97
98
|
this.#keyboard.setExpanded(false);
|
|
98
|
-
this.#
|
|
99
|
+
this.#mbDdButton.addEventListener("keydown", (event) => {
|
|
99
100
|
if (event.key === "ArrowDown" || event.key === "ArrowUp") {
|
|
100
101
|
event.preventDefault();
|
|
101
102
|
this.#open();
|
|
@@ -104,56 +105,57 @@ class MenuBarDropDown {
|
|
|
104
105
|
});
|
|
105
106
|
|
|
106
107
|
// Слушатели
|
|
107
|
-
this.#
|
|
108
|
-
this.#
|
|
108
|
+
this.#mbDdButton.addEventListener("click", this.#mbDdButtonClickEvent);
|
|
109
|
+
this.#mbDdDropdown.addEventListener("click", this.#mbDdDropdownClickEvent);
|
|
109
110
|
}
|
|
110
111
|
#open() {
|
|
111
|
-
this.#
|
|
112
|
+
this.#isOpen = true;
|
|
112
113
|
// Панель живёт в body: если её снимали вместе с полосой (`unmount`), возвращаем на место
|
|
113
|
-
if (document.body.contains(this.#
|
|
114
|
-
this.#
|
|
115
|
-
//
|
|
116
|
-
new Animation(this.#
|
|
114
|
+
if (document.body.contains(this.#mbDdDropdown) === false) document.body.appendChild(this.#mbDdDropdown);
|
|
115
|
+
this.#mbDdButton.classList.add(MENU_BAR_DROP_DOWN_ACTIVE_CLASS);
|
|
116
|
+
// panelIn показывает панель (display: flex), и только после этого её можно измерить
|
|
117
|
+
new Animation(this.#mbDdDropdown).panelIn();
|
|
117
118
|
this.#positionDropdown();
|
|
118
|
-
window.addEventListener(
|
|
119
|
-
window.addEventListener(
|
|
119
|
+
window.addEventListener("click", this.#windowClickEvent);
|
|
120
|
+
window.addEventListener("resize", this.#positionDropdownEvent);
|
|
120
121
|
this.#keyboard.setExpanded(true);
|
|
121
122
|
}
|
|
122
123
|
#close() {
|
|
123
|
-
if (!this.#
|
|
124
|
-
this.#
|
|
125
|
-
this.#
|
|
126
|
-
new Animation(this.#
|
|
127
|
-
window.removeEventListener(
|
|
128
|
-
window.removeEventListener(
|
|
124
|
+
if (!this.#isOpen) return;
|
|
125
|
+
this.#isOpen = false;
|
|
126
|
+
this.#mbDdButton.classList.remove(MENU_BAR_DROP_DOWN_ACTIVE_CLASS);
|
|
127
|
+
new Animation(this.#mbDdDropdown).fadeOut();
|
|
128
|
+
window.removeEventListener("click", this.#windowClickEvent);
|
|
129
|
+
window.removeEventListener("resize", this.#positionDropdownEvent);
|
|
129
130
|
this.#keyboard.setExpanded(false);
|
|
130
131
|
}
|
|
131
132
|
// position: fixed — координаты считаются от окна, поэтому панель пересчитывается и на resize
|
|
132
133
|
#positionDropdown() {
|
|
133
|
-
const button = this.#
|
|
134
|
-
const dropdown = this.#
|
|
134
|
+
const button = this.#mbDdButton.getBoundingClientRect();
|
|
135
|
+
const dropdown = this.#mbDdDropdown.getBoundingClientRect();
|
|
135
136
|
let left = button.left;
|
|
136
137
|
// Панель у последнего пункта меню-бара уезжала бы за правый край окна
|
|
137
138
|
if (left + dropdown.width > window.innerWidth - MENU_BAR_DROPDOWN_EDGE) {
|
|
138
139
|
left = window.innerWidth - MENU_BAR_DROPDOWN_EDGE - dropdown.width;
|
|
139
140
|
}
|
|
140
141
|
if (left < MENU_BAR_DROPDOWN_EDGE) left = MENU_BAR_DROPDOWN_EDGE;
|
|
141
|
-
this.#
|
|
142
|
-
this.#
|
|
142
|
+
this.#mbDdDropdown.style.left = `${Math.round(left)}px`;
|
|
143
|
+
this.#mbDdDropdown.style.top = `${Math.round(button.bottom + MENU_BAR_DROPDOWN_GAP)}px`;
|
|
143
144
|
}
|
|
144
|
-
#
|
|
145
|
-
if (this.#
|
|
146
|
-
|
|
147
|
-
|
|
145
|
+
#mbDdButtonClickEvent = () => {
|
|
146
|
+
if (this.#isOpen) this.#close();
|
|
147
|
+
else this.#open();
|
|
148
|
+
};
|
|
149
|
+
#mbDdDropdownClickEvent = () => {
|
|
148
150
|
this.#close();
|
|
149
|
-
}
|
|
151
|
+
};
|
|
150
152
|
// «Снаружи» — это и кнопка с обёрткой, и сама панель: она теперь не их потомок
|
|
151
|
-
#
|
|
152
|
-
if (!this.#
|
|
153
|
-
if (this.#
|
|
153
|
+
#windowClickEvent = (event) => {
|
|
154
|
+
if (!this.#isOpen) return;
|
|
155
|
+
if (this.#mbDdMain.contains(event.target) || this.#mbDdDropdown.contains(event.target)) return;
|
|
154
156
|
this.#close();
|
|
155
|
-
}
|
|
156
|
-
#
|
|
157
|
+
};
|
|
158
|
+
#positionDropdownEvent = () => this.#positionDropdown();
|
|
157
159
|
/**
|
|
158
160
|
* Убрать панель из body, не трогая клавиатурный слой: панель живёт в body, а не в полосе,
|
|
159
161
|
* и её снимает тот, кто уводит полосу из шапки. Вернувшаяся полоса вернёт панель в body
|
|
@@ -161,7 +163,7 @@ class MenuBarDropDown {
|
|
|
161
163
|
*/
|
|
162
164
|
unmount() {
|
|
163
165
|
this.#close();
|
|
164
|
-
this.#
|
|
166
|
+
this.#mbDdDropdown.remove();
|
|
165
167
|
return this;
|
|
166
168
|
}
|
|
167
169
|
/** Полное удаление: панель больше не нужна — снять клавиатуру и убрать панель из body */
|
|
@@ -171,8 +173,8 @@ class MenuBarDropDown {
|
|
|
171
173
|
return this;
|
|
172
174
|
}
|
|
173
175
|
set() {
|
|
174
|
-
return this.#
|
|
176
|
+
return this.#mbDdMain;
|
|
175
177
|
}
|
|
176
178
|
}
|
|
177
179
|
|
|
178
|
-
exports.MenuBar = MenuBar
|
|
180
|
+
exports.MenuBar = MenuBar;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
chui_menu_bar_main {
|
|
2
2
|
/* Компактный режим. В шапке меню-бар — служебная полоса, а не контрол страницы, поэтому
|
|
3
|
-
общесистемные отступы (--
|
|
3
|
+
общесистемные отступы (--block_padding 8px 13px, --control_padding 8px, --block_margin 6px)
|
|
4
4
|
уменьшены здесь локально. Токены переопределяются на корне полосы: Button пишет
|
|
5
5
|
padding: var(--control_padding) инлайном, стилями его иначе не перебить.
|
|
6
6
|
При полосе шапки 46px кнопки меню выходят ≈27px — они ниже кнопок шапки (30px),
|
|
7
7
|
но не теряются в строке. */
|
|
8
|
-
--
|
|
8
|
+
--block_padding: 5px 10px;
|
|
9
9
|
--control_padding: 5px;
|
|
10
10
|
display: flex;
|
|
11
11
|
align-items: center;
|
|
@@ -15,7 +15,7 @@ chui_menu_bar_main {
|
|
|
15
15
|
gap: 2px;
|
|
16
16
|
/* Полоса идёт за кнопкой меню маршрутов; без этой кнопки (`disableAppMenu`)
|
|
17
17
|
она упиралась бы в край окна */
|
|
18
|
-
margin-inline-start: var(--
|
|
18
|
+
margin-inline-start: var(--block_margin);
|
|
19
19
|
/* Тесная шапка: полоса с вкладками, кнопкой меню и названием занимает больше, чем окно
|
|
20
20
|
минимальной ширины (960px), и раньше лишние пункты просто исчезали — левый бокс шапки
|
|
21
21
|
их обрезал. Теперь полоса прокручивается вбок (ось X), поэтому пункты остаются
|
|
@@ -33,7 +33,7 @@ chui_menu_bar_main {
|
|
|
33
33
|
-webkit-app-region: no-drag;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
/* Button и MenuBar.DROPDOWN несут свои внешние отступы (--
|
|
36
|
+
/* Button и MenuBar.DROPDOWN несут свои внешние отступы (--block_margin и auto 6px) —
|
|
37
37
|
внутри полосы их заменяет gap, иначе полоса распухает по вертикали. */
|
|
38
38
|
chui_menu_bar_main > chui_button,
|
|
39
39
|
menu_bar_drop_down_main {
|
|
@@ -48,7 +48,7 @@ chui_menu_bar_main .chui_button {
|
|
|
48
48
|
background: transparent;
|
|
49
49
|
border: none;
|
|
50
50
|
border-radius: var(--radius_sm);
|
|
51
|
-
padding: var(--
|
|
51
|
+
padding: var(--block_padding);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
chui_menu_bar_main .chui_button:hover {
|
|
@@ -57,7 +57,8 @@ chui_menu_bar_main .chui_button:hover {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
chui_menu_bar_main .chui_button:active:not(:disabled) {
|
|
60
|
-
background: var(--element_background_prime);
|
|
60
|
+
background: var(--element_background_prime);
|
|
61
|
+
color: var(--text_color_hover);
|
|
61
62
|
border: none;
|
|
62
63
|
}
|
|
63
64
|
|
|
@@ -114,8 +115,8 @@ menu_bar_drop_down_button {
|
|
|
114
115
|
cursor: pointer;
|
|
115
116
|
height: max-content;
|
|
116
117
|
width: max-content;
|
|
117
|
-
border-radius: var(--
|
|
118
|
-
padding: var(--
|
|
118
|
+
border-radius: var(--radius_sm);
|
|
119
|
+
padding: var(--block_padding);
|
|
119
120
|
font-size: var(--font_default_size);
|
|
120
121
|
font-weight: 400;
|
|
121
122
|
border: none;
|
|
@@ -139,7 +140,7 @@ menu_bar_dropdown {
|
|
|
139
140
|
display: none;
|
|
140
141
|
flex-direction: column;
|
|
141
142
|
min-width: max-content;
|
|
142
|
-
padding: var(--
|
|
143
|
+
padding: var(--block_margin);
|
|
143
144
|
background: var(--header_background);
|
|
144
145
|
color: var(--text_color);
|
|
145
146
|
border: 1px solid var(--border_color);
|
|
@@ -152,7 +153,7 @@ menu_bar_dropdown {
|
|
|
152
153
|
/* Пункты панели — плоские строки в стиле context_menu_item / user_item: синяя заливка ховера
|
|
153
154
|
одна на всю семью меню (у `chui_button` ховер красит и текст, и глиф). Панель лежит в body,
|
|
154
155
|
поэтому обёртка пункта больше не потомок полосы — её внешние отступы снимаются здесь
|
|
155
|
-
(иначе между строками появлялись бы поля --
|
|
156
|
+
(иначе между строками появлялись бы поля --block_margin). */
|
|
156
157
|
menu_bar_dropdown chui_button {
|
|
157
158
|
margin: 0;
|
|
158
159
|
width: -webkit-fill-available;
|
|
@@ -161,7 +162,7 @@ menu_bar_dropdown chui_button {
|
|
|
161
162
|
menu_bar_dropdown .chui_button {
|
|
162
163
|
width: -webkit-fill-available;
|
|
163
164
|
justify-content: flex-start;
|
|
164
|
-
padding: var(--
|
|
165
|
+
padding: var(--block_padding);
|
|
165
166
|
background: transparent;
|
|
166
167
|
border: none;
|
|
167
168
|
border-radius: var(--radius_sm);
|
|
@@ -173,7 +174,8 @@ menu_bar_dropdown .chui_button:hover {
|
|
|
173
174
|
}
|
|
174
175
|
|
|
175
176
|
menu_bar_dropdown .chui_button:active:not(:disabled) {
|
|
176
|
-
background: var(--element_background_prime);
|
|
177
|
+
background: var(--element_background_prime);
|
|
178
|
+
color: var(--text_color_hover);
|
|
177
179
|
border: none;
|
|
178
180
|
}
|
|
179
181
|
|