chuijs 4.0.3 → 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.
Files changed (258) hide show
  1. package/CHANGELOG.md +536 -0
  2. package/framework/appLayout/default/chui_app_layout.js +361 -303
  3. package/framework/appLayout/default/global_style.css +243 -89
  4. package/framework/appLayout/default/main_theme_style.css +188 -101
  5. package/framework/components/chui_accordion/accordion.js +17 -17
  6. package/framework/components/chui_accordion/styles.css +7 -7
  7. package/framework/components/chui_action_sheet/action_sheet.js +35 -32
  8. package/framework/components/chui_action_sheet/styles.css +10 -4
  9. package/framework/components/chui_actions_bar/actions_bar.js +338 -0
  10. package/framework/components/chui_actions_bar/styles.css +139 -0
  11. package/framework/components/chui_affix/affix.js +4 -4
  12. package/framework/components/chui_affix/styles.css +5 -0
  13. package/framework/components/chui_alert/alert.js +11 -5
  14. package/framework/components/chui_alert/styles.css +7 -0
  15. package/framework/components/chui_avatar/avatar.js +13 -13
  16. package/framework/components/chui_avatar/styles.css +1 -1
  17. package/framework/components/chui_avatar_group/avatar_group.js +4 -4
  18. package/framework/components/chui_avatar_group/styles.css +1 -1
  19. package/framework/components/chui_backtop/backtop.js +25 -2
  20. package/framework/components/chui_backtop/styles.css +21 -0
  21. package/framework/components/chui_badge/badge.js +15 -15
  22. package/framework/components/chui_badge/styles.css +6 -6
  23. package/framework/components/chui_banner/banner.js +222 -0
  24. package/framework/components/chui_banner/styles.css +170 -0
  25. package/framework/components/chui_breadcrumb/styles.css +1 -1
  26. package/framework/components/chui_button/button.js +24 -28
  27. package/framework/components/chui_button/styles.css +5 -5
  28. package/framework/components/chui_calendar/calendar.js +6 -6
  29. package/framework/components/chui_card/card.js +14 -14
  30. package/framework/components/chui_card_scroll/card_scroll.js +169 -0
  31. package/framework/components/chui_card_scroll/styles.css +86 -0
  32. package/framework/components/chui_chat/chat.js +73 -51
  33. package/framework/components/chui_chat/styles.css +18 -7
  34. package/framework/components/chui_clipboard_history/clipboard_history.js +25 -20
  35. package/framework/components/chui_clipboard_history/styles.css +10 -8
  36. package/framework/components/chui_code/code.js +8 -8
  37. package/framework/components/chui_code/styles.css +2 -2
  38. package/framework/components/chui_code_editor/code_editor.js +26 -26
  39. package/framework/components/chui_code_editor/styles.css +3 -3
  40. package/framework/components/chui_command_palette/command_palette.js +29 -29
  41. package/framework/components/chui_command_palette/styles.css +5 -5
  42. package/framework/components/chui_console/console.js +9 -9
  43. package/framework/components/chui_console/styles.css +5 -2
  44. package/framework/components/chui_content_block/content_block.js +2 -2
  45. package/framework/components/chui_context_menu/context_menu.js +162 -54
  46. package/framework/components/chui_context_menu/styles.css +82 -8
  47. package/framework/components/chui_custom_element/custom_element.js +11 -11
  48. package/framework/components/chui_data_grid/data_grid.js +268 -268
  49. package/framework/components/chui_data_grid/styles.css +14 -14
  50. package/framework/components/chui_descriptions/styles.css +1 -1
  51. package/framework/components/chui_details/details.js +12 -12
  52. package/framework/components/chui_details/styles.css +7 -7
  53. package/framework/components/chui_diff_viewer/diff_viewer.js +88 -88
  54. package/framework/components/chui_diff_viewer/styles.css +9 -9
  55. package/framework/components/chui_divider/divider.js +6 -6
  56. package/framework/components/chui_divider/styles.css +2 -2
  57. package/framework/components/chui_drawer/drawer.js +37 -14
  58. package/framework/components/chui_drawer/styles.css +18 -4
  59. package/framework/components/chui_drop_zone/drop_zone.js +6 -6
  60. package/framework/components/chui_drop_zone/styles.css +10 -6
  61. package/framework/components/chui_fieldset/fieldset.js +6 -6
  62. package/framework/components/chui_fieldset/styles.css +5 -5
  63. package/framework/components/chui_file_explorer/file_explorer.js +115 -115
  64. package/framework/components/chui_file_explorer/styles.css +6 -6
  65. package/framework/components/chui_form/form.js +11 -11
  66. package/framework/components/chui_gantt/gantt.js +41 -41
  67. package/framework/components/chui_gantt/styles.css +5 -5
  68. package/framework/components/chui_graphs/graphs.js +82 -46
  69. package/framework/components/chui_graphs/styles.css +26 -5
  70. package/framework/components/chui_hero/hero.js +63 -20
  71. package/framework/components/chui_hero/styles.css +176 -7
  72. package/framework/components/chui_html_block/html_block.js +5 -5
  73. package/framework/components/chui_html_block/styles.css +1 -1
  74. package/framework/components/chui_hx/styles.css +2 -2
  75. package/framework/components/chui_icons/icons.js +7 -7
  76. package/framework/components/chui_icons/styles.css +2 -1
  77. package/framework/components/chui_inputs/chui_check_box/styles.css +12 -3
  78. package/framework/components/chui_inputs/chui_chips/chips.js +92 -31
  79. package/framework/components/chui_inputs/chui_chips/styles.css +28 -5
  80. package/framework/components/chui_inputs/chui_color_picker/color_picker.js +20 -15
  81. package/framework/components/chui_inputs/chui_color_picker/styles.css +7 -7
  82. package/framework/components/chui_inputs/chui_combo_box/combo_box.js +58 -58
  83. package/framework/components/chui_inputs/chui_combo_box/styles.css +9 -9
  84. package/framework/components/chui_inputs/chui_date/date.js +93 -95
  85. package/framework/components/chui_inputs/chui_date/styles.css +8 -8
  86. package/framework/components/chui_inputs/chui_date_range/date_range.js +22 -22
  87. package/framework/components/chui_inputs/chui_date_range/styles.css +3 -3
  88. package/framework/components/chui_inputs/chui_datetime/datetime.js +12 -12
  89. package/framework/components/chui_inputs/chui_datetime/styles.css +3 -3
  90. package/framework/components/chui_inputs/chui_email/email.js +10 -10
  91. package/framework/components/chui_inputs/chui_email/styles.css +6 -6
  92. package/framework/components/chui_inputs/chui_file/file.js +8 -8
  93. package/framework/components/chui_inputs/chui_file/styles.css +12 -9
  94. package/framework/components/chui_inputs/chui_hotkey/hotkey.js +39 -39
  95. package/framework/components/chui_inputs/chui_hotkey/styles.css +6 -6
  96. package/framework/components/chui_inputs/chui_masked/masked.js +44 -44
  97. package/framework/components/chui_inputs/chui_masked/styles.css +5 -5
  98. package/framework/components/chui_inputs/chui_mention/mention.js +13 -13
  99. package/framework/components/chui_inputs/chui_mention/styles.css +14 -8
  100. package/framework/components/chui_inputs/chui_multi_combo_box/multi_combo_box.js +147 -137
  101. package/framework/components/chui_inputs/chui_multi_combo_box/styles.css +14 -8
  102. package/framework/components/chui_inputs/chui_number/number.js +42 -45
  103. package/framework/components/chui_inputs/chui_number/styles.css +6 -6
  104. package/framework/components/chui_inputs/chui_otp/otp.js +32 -32
  105. package/framework/components/chui_inputs/chui_otp/styles.css +5 -5
  106. package/framework/components/chui_inputs/chui_password/password.js +30 -36
  107. package/framework/components/chui_inputs/chui_password/styles.css +7 -7
  108. package/framework/components/chui_inputs/chui_radio_button/styles.css +2 -2
  109. package/framework/components/chui_inputs/chui_rating/rating.js +28 -28
  110. package/framework/components/chui_inputs/chui_rating/styles.css +3 -3
  111. package/framework/components/chui_inputs/chui_select_box/select_box.js +54 -54
  112. package/framework/components/chui_inputs/chui_select_box/styles.css +10 -10
  113. package/framework/components/chui_inputs/chui_slider/slider.js +14 -14
  114. package/framework/components/chui_inputs/chui_slider/styles.css +5 -4
  115. package/framework/components/chui_inputs/chui_text/styles.css +7 -7
  116. package/framework/components/chui_inputs/chui_text/text.js +13 -17
  117. package/framework/components/chui_inputs/chui_text_area/styles.css +8 -8
  118. package/framework/components/chui_inputs/chui_text_area/text_area.js +23 -23
  119. package/framework/components/chui_inputs/chui_time/styles.css +13 -17
  120. package/framework/components/chui_inputs/chui_time/time.js +35 -24
  121. package/framework/components/chui_inputs/chui_toggle/styles.css +10 -3
  122. package/framework/components/chui_inputs/chui_toggle/toggle.js +16 -16
  123. package/framework/components/chui_json_editor/json_editor.js +87 -87
  124. package/framework/components/chui_json_editor/styles.css +5 -5
  125. package/framework/components/chui_json_viewer/json_viewer.js +80 -80
  126. package/framework/components/chui_json_viewer/styles.css +6 -6
  127. package/framework/components/chui_kanban/kanban.js +27 -27
  128. package/framework/components/chui_kanban/styles.css +8 -4
  129. package/framework/components/chui_kbd/styles.css +1 -1
  130. package/framework/components/chui_label/label.js +17 -17
  131. package/framework/components/chui_label/styles.css +1 -1
  132. package/framework/components/chui_link/link.js +9 -9
  133. package/framework/components/chui_link/styles.css +11 -4
  134. package/framework/components/chui_list/list.js +11 -11
  135. package/framework/components/chui_list/styles.css +2 -2
  136. package/framework/components/chui_markdown_editor/markdown_editor.js +66 -66
  137. package/framework/components/chui_markdown_editor/styles.css +5 -5
  138. package/framework/components/chui_media/audio.js +240 -246
  139. package/framework/components/chui_media/audio_styles.css +41 -23
  140. package/framework/components/chui_media/image.js +49 -46
  141. package/framework/components/chui_media/image_compare.js +35 -35
  142. package/framework/components/chui_media/image_compare_styles.css +5 -5
  143. package/framework/components/chui_media/image_styles.css +1 -1
  144. package/framework/components/chui_media/video.js +148 -148
  145. package/framework/components/chui_media/video_styles.css +27 -11
  146. package/framework/components/chui_menu_bar/menu_bar.js +54 -54
  147. package/framework/components/chui_menu_bar/styles.css +10 -10
  148. package/framework/components/chui_message_bar/message_bar.js +551 -0
  149. package/framework/components/chui_message_bar/styles.css +248 -0
  150. package/framework/components/chui_modal/modal.js +37 -13
  151. package/framework/components/chui_notification/notification.js +76 -54
  152. package/framework/components/chui_notification/notification_download.js +26 -81
  153. package/framework/components/chui_notification/notification_download_card.js +115 -0
  154. package/framework/components/chui_notification/notification_download_progress.css +2 -2
  155. package/framework/components/chui_notification/notification_download_progress.js +70 -108
  156. package/framework/components/chui_notification/notification_update.js +31 -31
  157. package/framework/components/chui_notification/status_plate.css +3 -3
  158. package/framework/components/chui_notification/styles.css +6 -1
  159. package/framework/components/chui_notification/styles_download.css +1 -1
  160. package/framework/components/chui_notification/styles_update.css +2 -2
  161. package/framework/components/chui_org_chart/org_chart.js +29 -29
  162. package/framework/components/chui_org_chart/styles.css +2 -2
  163. package/framework/components/chui_pagination/pagination.js +3 -3
  164. package/framework/components/chui_pagination/styles.css +1 -1
  165. package/framework/components/chui_paragraph/styles.css +2 -2
  166. package/framework/components/chui_popover/popover.js +29 -23
  167. package/framework/components/chui_popover/styles.css +1 -1
  168. package/framework/components/chui_popups/popups.js +124 -124
  169. package/framework/components/chui_popups/styles.css +5 -5
  170. package/framework/components/chui_print_button/print_button.js +15 -10
  171. package/framework/components/chui_progress_bar/progress_bar.js +34 -12
  172. package/framework/components/chui_progress_bar/styles.css +4 -4
  173. package/framework/components/chui_progress_ring/progress_ring.js +15 -15
  174. package/framework/components/chui_progress_ring/styles.css +1 -1
  175. package/framework/components/chui_qrcode/qrcode.js +12 -12
  176. package/framework/components/chui_query_builder/query_builder.js +46 -46
  177. package/framework/components/chui_query_builder/styles.css +4 -4
  178. package/framework/components/chui_radio_group/styles.css +1 -1
  179. package/framework/components/chui_result/result.js +15 -15
  180. package/framework/components/chui_result/styles.css +3 -3
  181. package/framework/components/chui_scheduler/scheduler.js +74 -74
  182. package/framework/components/chui_scheduler/styles.css +5 -5
  183. package/framework/components/chui_screen_spinner/screen_spinner.js +167 -0
  184. package/framework/components/chui_screen_spinner/styles.css +49 -0
  185. package/framework/components/chui_segmented_control/segmented_control.js +63 -6
  186. package/framework/components/chui_segmented_control/styles.css +32 -6
  187. package/framework/components/chui_settings/settings.js +45 -46
  188. package/framework/components/chui_settings/styles.css +4 -4
  189. package/framework/components/chui_shortcut_help/shortcut_help.js +32 -34
  190. package/framework/components/chui_sidebar_nav/sidebar_nav.js +98 -29
  191. package/framework/components/chui_sidebar_nav/styles.css +9 -3
  192. package/framework/components/chui_slideshow/slideshow.js +85 -85
  193. package/framework/components/chui_slideshow/styles.css +6 -6
  194. package/framework/components/chui_spinner/spinner.js +10 -10
  195. package/framework/components/chui_split_button/split_button.js +30 -12
  196. package/framework/components/chui_split_button/styles.css +21 -5
  197. package/framework/components/chui_splitter/splitter.js +11 -11
  198. package/framework/components/chui_splitter/styles.css +2 -2
  199. package/framework/components/chui_statistic/statistic.js +47 -47
  200. package/framework/components/chui_status_bar/styles.css +2 -2
  201. package/framework/components/chui_stepper/stepper.js +202 -31
  202. package/framework/components/chui_stepper/styles.css +79 -14
  203. package/framework/components/chui_sticky_bar/sticky_bar.js +44 -13
  204. package/framework/components/chui_sticky_bar/styles.css +10 -8
  205. package/framework/components/chui_tabs/chui_tabs.js +74 -26
  206. package/framework/components/chui_tabs/styles.css +40 -12
  207. package/framework/components/chui_text_editor/styles.css +7 -7
  208. package/framework/components/chui_text_editor/text_editor.js +56 -56
  209. package/framework/components/chui_text_editor/text_editor_panel.js +173 -174
  210. package/framework/components/chui_theme_toggle/theme_toggle.js +21 -5
  211. package/framework/components/chui_timeline/styles.css +3 -1
  212. package/framework/components/chui_toast_queue/styles.css +11 -11
  213. package/framework/components/chui_toast_queue/toast_queue.js +30 -27
  214. package/framework/components/chui_toolbar/styles.css +2 -2
  215. package/framework/components/chui_tooltip/styles.css +2 -2
  216. package/framework/components/chui_tooltip/tooltip.js +3 -3
  217. package/framework/components/chui_tour/styles.css +8 -8
  218. package/framework/components/chui_tour/tour.js +72 -72
  219. package/framework/components/chui_transfer/styles.css +6 -6
  220. package/framework/components/chui_transfer/transfer.js +93 -106
  221. package/framework/components/chui_tree_table/styles.css +4 -4
  222. package/framework/components/chui_tree_table/tree_table.js +45 -45
  223. package/framework/components/chui_tree_view/styles.css +10 -8
  224. package/framework/components/chui_tree_view/tree_view.js +185 -183
  225. package/framework/components/chui_user_bar/styles.css +145 -0
  226. package/framework/components/chui_user_bar/user_bar.js +402 -0
  227. package/framework/components/chui_user_list_bar/styles.css +173 -0
  228. package/framework/components/chui_user_list_bar/user_list_bar.js +485 -0
  229. package/framework/components/chui_watermark/watermark.js +17 -17
  230. package/framework/components/chui_webview/webview.js +9 -9
  231. package/framework/components/chui_write_bar/styles.css +172 -0
  232. package/framework/components/chui_write_bar/write_bar.js +320 -0
  233. package/framework/main_window.js +1234 -0
  234. package/framework/modules/chui_a11y/chui_a11y.js +78 -79
  235. package/framework/modules/chui_animations/animations.js +77 -15
  236. package/framework/modules/chui_animations/motion.js +120 -0
  237. package/framework/modules/chui_animations/styles.css +36 -3
  238. package/framework/modules/chui_functions.js +31 -27
  239. package/framework/modules/chui_highlight/styles.css +13 -10
  240. package/framework/modules/chui_i18n/chui_i18n.js +3 -3
  241. package/framework/modules/chui_i18n/locales/feedback.js +62 -0
  242. package/framework/modules/chui_i18n/locales/navigation.js +4 -0
  243. package/framework/modules/chui_json/chui_json.js +2 -2
  244. package/framework/modules/chui_logger/chui_logger.js +23 -8
  245. package/framework/modules/chui_page/page.js +10 -10
  246. package/framework/modules/chui_palette/palette.js +61 -0
  247. package/framework/modules/chui_qr/chui_qr.js +23 -23
  248. package/framework/modules/chui_scrollbar/chui_scrollbar.js +45 -45
  249. package/framework/modules/chui_scrollbar/styles.css +3 -3
  250. package/framework/modules/chui_services/chui_services.js +8 -8
  251. package/framework/modules/chui_services/desktop.js +77 -71
  252. package/framework/modules/chui_sortable/chui_sortable.js +17 -17
  253. package/framework/modules/chui_validate/chui_validate.js +3 -3
  254. package/framework/tray_bar/chui_menu_items.js +2 -2
  255. package/index.d.ts +266 -34
  256. package/index.js +20 -1168
  257. package/package.json +6 -4
  258. package/framework/components/telegram_bot/chui_telegram_bot.js +0 -191
@@ -50,13 +50,13 @@ const SERVICE_KEYS = ["id", "children", "expanded", "disabled", "selected"];
50
50
  */
51
51
  class TreeTable {
52
52
  static #counter = 0;
53
- static #row_counter = 0;
53
+ static #rowCounter = 0;
54
54
 
55
55
  #root = document.createElement("chui_tree_table");
56
56
  #label = document.createElement("tree_table_label");
57
57
  #grid = document.createElement("tree_table_grid");
58
58
  #head = document.createElement("tree_table_head");
59
- #head_row = document.createElement("tree_table_head_row");
59
+ #headRow = document.createElement("tree_table_head_row");
60
60
  #body = document.createElement("tree_table_body");
61
61
  #empty = document.createElement("tree_table_empty");
62
62
  #status = document.createElement("tree_table_status");
@@ -68,17 +68,17 @@ class TreeTable {
68
68
  #filter = "";
69
69
  #selectable = false;
70
70
  #id = undefined;
71
- #title_text = undefined;
72
- #label_text = undefined;
71
+ #titleText = undefined;
72
+ #labelText = undefined;
73
73
  #indent = 18;
74
- #empty_text = undefined;
75
- #on_select = undefined;
76
- #on_toggle = undefined;
74
+ #emptyText = undefined;
75
+ #onSelect = undefined;
76
+ #onToggle = undefined;
77
77
  #listeners = [];
78
78
  // Строка, которая держит остановку обхода, и строка под фокусом до перерисовки
79
- #active_id = undefined;
80
- #focus_id = undefined;
81
- #visible_count = 0;
79
+ #activeId = undefined;
80
+ #focusId = undefined;
81
+ #visibleCount = 0;
82
82
 
83
83
  constructor(
84
84
  options = {
@@ -101,8 +101,8 @@ class TreeTable {
101
101
  TreeTable.#counter += 1;
102
102
  this.#id = options.id === undefined ? `chui_tree_table_${TreeTable.#counter}` : options.id;
103
103
  this.#root.id = this.#id;
104
- this.#on_select = options.onSelect;
105
- this.#on_toggle = options.onToggle;
104
+ this.#onSelect = options.onSelect;
105
+ this.#onToggle = options.onToggle;
106
106
  this.#selectable = options.selectable === true;
107
107
  if (options.changeEvent !== undefined) this.addChangeListener(options.changeEvent);
108
108
  this.#label.className = "tree_table_label";
@@ -111,23 +111,23 @@ class TreeTable {
111
111
  this.#grid.setAttribute("role", "treegrid");
112
112
  this.#head.className = "tree_table_head";
113
113
  this.#head.setAttribute("role", "rowgroup");
114
- this.#head_row.className = "tree_table_head_row";
115
- this.#head_row.setAttribute("role", "row");
114
+ this.#headRow.className = "tree_table_head_row";
115
+ this.#headRow.setAttribute("role", "row");
116
116
  this.#body.className = "tree_table_body";
117
117
  this.#body.setAttribute("role", "rowgroup");
118
118
  this.#empty.className = "tree_table_empty";
119
119
  this.#status.className = "tree_table_status chui_visually_hidden";
120
120
  this.#status.setAttribute("role", "status");
121
121
  this.#status.setAttribute("aria-live", "polite");
122
- this.#head.appendChild(this.#head_row);
122
+ this.#head.appendChild(this.#headRow);
123
123
  this.#grid.appendChild(this.#head);
124
124
  this.#grid.appendChild(this.#body);
125
125
  this.#root.appendChild(this.#label);
126
126
  this.#root.appendChild(this.#grid);
127
127
  this.#root.appendChild(this.#empty);
128
128
  this.#root.appendChild(this.#status);
129
- if (options.emptyText !== undefined) this.#empty_text = String(options.emptyText);
130
- else this.#empty_text = I18n.t("common.nothingFound");
129
+ if (options.emptyText !== undefined) this.#emptyText = String(options.emptyText);
130
+ else this.#emptyText = I18n.t("common.nothingFound");
131
131
  if (options.title !== undefined) this.setTitle(options.title);
132
132
  else this.#label.hidden = true;
133
133
  this.setLabel(optionOr(options.label, I18n.t("treeTable.label")));
@@ -150,12 +150,12 @@ class TreeTable {
150
150
  }
151
151
 
152
152
  getTitle() {
153
- return this.#title_text;
153
+ return this.#titleText;
154
154
  }
155
155
 
156
156
  /** Доступное имя таблицы, заданное в `label` */
157
157
  getLabel() {
158
- return this.#label_text;
158
+ return this.#labelText;
159
159
  }
160
160
 
161
161
  /** Колонки: копии описаний */
@@ -217,7 +217,7 @@ class TreeTable {
217
217
 
218
218
  /** Подпись над таблицей; `undefined` её убирает (имя тогда даёт `label`) */
219
219
  setTitle(text = undefined) {
220
- this.#title_text = text;
220
+ this.#titleText = text;
221
221
  if (text === undefined || text === "") {
222
222
  this.#label.hidden = true;
223
223
  this.#label.innerText = "";
@@ -232,7 +232,7 @@ class TreeTable {
232
232
 
233
233
  /** Имя таблицы, когда подписи в разметке нет */
234
234
  setLabel(text = undefined) {
235
- this.#label_text = text;
235
+ this.#labelText = text;
236
236
  this.#syncLabel();
237
237
  return this;
238
238
  }
@@ -338,7 +338,7 @@ class TreeTable {
338
338
  this.#filter = text === undefined ? "" : String(text);
339
339
  this.#render();
340
340
  if (this.#filter !== "")
341
- this.#announce(I18n.t("treeTable.shownRows", { shown: this.#visible_count, total: this.#index.size }));
341
+ this.#announce(I18n.t("treeTable.shownRows", { shown: this.#visibleCount, total: this.#index.size }));
342
342
  return this;
343
343
  }
344
344
 
@@ -391,9 +391,9 @@ class TreeTable {
391
391
  const source = row === undefined || row === null ? {} : row;
392
392
  const values = {};
393
393
  for (const key of Object.keys(source)) if (!SERVICE_KEYS.includes(key)) values[key] = source[key];
394
- TreeTable.#row_counter += 1;
394
+ TreeTable.#rowCounter += 1;
395
395
  return {
396
- id: source.id === undefined ? `tree_table_row_${TreeTable.#row_counter}` : String(source.id),
396
+ id: source.id === undefined ? `tree_table_row_${TreeTable.#rowCounter}` : String(source.id),
397
397
  values: values,
398
398
  disabled: source.disabled === true,
399
399
  default_expanded: source.expanded === true,
@@ -446,14 +446,14 @@ class TreeTable {
446
446
  }
447
447
 
448
448
  #accessibleName() {
449
- if (this.#title_text !== undefined && this.#title_text !== "") return this.#title_text;
450
- if (this.#label_text !== undefined && this.#label_text !== "") return this.#label_text;
449
+ if (this.#titleText !== undefined && this.#titleText !== "") return this.#titleText;
450
+ if (this.#labelText !== undefined && this.#labelText !== "") return this.#labelText;
451
451
  return I18n.t("treeTable.label");
452
452
  }
453
453
 
454
454
  // Имя сетки: видимая подпись — через aria-labelledby, скрытая — через aria-label
455
455
  #syncLabel() {
456
- if (this.#title_text !== undefined && this.#title_text !== "") {
456
+ if (this.#titleText !== undefined && this.#titleText !== "") {
457
457
  this.#grid.setAttribute("aria-labelledby", this.#label.id);
458
458
  this.#grid.removeAttribute("aria-label");
459
459
  return;
@@ -502,8 +502,8 @@ class TreeTable {
502
502
  // Строки пересобираются, а фокус живёт на строке: запоминаем её до перерисовки
503
503
  const active = document.activeElement;
504
504
  const focused = active === null || !this.#grid.contains(active) ? null : active.closest("tree_table_row");
505
- if (focused !== null) this.#focus_id = focused.dataset.id;
506
- this.#head_row.innerHTML = "";
505
+ if (focused !== null) this.#focusId = focused.dataset.id;
506
+ this.#headRow.innerHTML = "";
507
507
  this.#body.innerHTML = "";
508
508
  for (const column of this.#columns) {
509
509
  const cell = document.createElement("tree_table_head_cell");
@@ -511,14 +511,14 @@ class TreeTable {
511
511
  if (column.align === "end") cell.classList.add("tree_table_cell_end");
512
512
  cell.setAttribute("role", "columnheader");
513
513
  cell.innerText = column.title;
514
- this.#head_row.appendChild(cell);
514
+ this.#headRow.appendChild(cell);
515
515
  }
516
516
  this.#head.hidden = this.#columns.length === 0;
517
517
  const visible = this.#flatten();
518
- this.#visible_count = visible.length;
518
+ this.#visibleCount = visible.length;
519
519
  for (const entry of visible) this.#body.appendChild(this.#rowNode(entry));
520
520
  this.#empty.hidden = visible.length > 0;
521
- this.#empty.innerText = this.#empty_text;
521
+ this.#empty.innerText = this.#emptyText;
522
522
  this.#applyStop();
523
523
  return this;
524
524
  }
@@ -594,14 +594,14 @@ class TreeTable {
594
594
  const list = [...this.#body.querySelectorAll("tree_table_row")];
595
595
  if (list.length === 0) return;
596
596
  const stop =
597
- list.find((row) => row.dataset.id === this.#active_id) ??
598
- list.find((row) => row.dataset.id === this.#focus_id) ??
597
+ list.find((row) => row.dataset.id === this.#activeId) ??
598
+ list.find((row) => row.dataset.id === this.#focusId) ??
599
599
  list[0];
600
- this.#active_id = stop.dataset.id;
600
+ this.#activeId = stop.dataset.id;
601
601
  for (const row of list) row.setAttribute("tabindex", row === stop ? "0" : "-1");
602
602
  // Фокус возвращаем только если он был в таблице: иначе перерисовка его бы украла
603
- if (this.#focus_id !== undefined && stop.dataset.id === this.#focus_id) {
604
- this.#focus_id = undefined;
603
+ if (this.#focusId !== undefined && stop.dataset.id === this.#focusId) {
604
+ this.#focusId = undefined;
605
605
  stop.focus();
606
606
  }
607
607
  }
@@ -609,7 +609,7 @@ class TreeTable {
609
609
  #focusRow(id = String()) {
610
610
  const row = this.#body.querySelector(`tree_table_row[data-id="${CSS.escape(id)}"]`);
611
611
  if (row === null) return;
612
- this.#active_id = id;
612
+ this.#activeId = id;
613
613
  for (const other of this.#body.querySelectorAll("tree_table_row")) {
614
614
  other.setAttribute("tabindex", other === row ? "0" : "-1");
615
615
  }
@@ -629,7 +629,7 @@ class TreeTable {
629
629
  ? I18n.t("treeTable.expanded", { name: this.#titleOf(node), count: node.children.length })
630
630
  : I18n.t("treeTable.collapsed", { name: this.#titleOf(node) })
631
631
  );
632
- if (this.#on_toggle !== undefined) this.#on_toggle(this.#describe(node), value, this);
632
+ if (this.#onToggle !== undefined) this.#onToggle(this.#describe(node), value, this);
633
633
  return this;
634
634
  }
635
635
 
@@ -648,7 +648,7 @@ class TreeTable {
648
648
  const node = this.#selected === undefined ? undefined : this.#index.get(this.#selected);
649
649
  const row = node === undefined ? undefined : this.#describe(node);
650
650
  for (const listener of [...this.#listeners]) listener(row, this);
651
- if (this.#on_select !== undefined) this.#on_select(row, this);
651
+ if (this.#onSelect !== undefined) this.#onSelect(row, this);
652
652
  }
653
653
 
654
654
  #announce(text = String()) {
@@ -703,7 +703,7 @@ class TreeTable {
703
703
  const list = this.#body.querySelectorAll("tree_table_row");
704
704
  if (list.length === 0) return;
705
705
  // Нажатия на самой стрелке (настоящая кнопка) не перехватываем
706
- const from_button = event.target instanceof Element && event.target.closest("button") !== null;
706
+ const fromButton = event.target instanceof Element && event.target.closest("button") !== null;
707
707
  const row = this.#currentRow(event.target instanceof Element ? event.target : undefined);
708
708
  const id = row === null ? undefined : row.dataset.id;
709
709
  const node = id === undefined ? undefined : this.#index.get(id);
@@ -725,14 +725,14 @@ class TreeTable {
725
725
  this.#focusRow(list[list.length - 1].dataset.id);
726
726
  return;
727
727
  case "ArrowRight": {
728
- if (from_button || node === undefined || node.children.length === 0) return;
728
+ if (fromButton || node === undefined || node.children.length === 0) return;
729
729
  event.preventDefault();
730
730
  if (!this.#expanded.has(id) && this.#filter === "") this.expand(id);
731
731
  else this.#step(row, 1);
732
732
  return;
733
733
  }
734
734
  case "ArrowLeft": {
735
- if (from_button || node === undefined) return;
735
+ if (fromButton || node === undefined) return;
736
736
  event.preventDefault();
737
737
  if (node.children.length > 0 && this.#expanded.has(id)) {
738
738
  this.collapse(id);
@@ -743,13 +743,13 @@ class TreeTable {
743
743
  return;
744
744
  }
745
745
  case "Enter": {
746
- if (from_button || node === undefined || node.children.length === 0) return;
746
+ if (fromButton || node === undefined || node.children.length === 0) return;
747
747
  event.preventDefault();
748
748
  this.toggle(id);
749
749
  return;
750
750
  }
751
751
  case " ": {
752
- if (from_button || node === undefined) return;
752
+ if (fromButton || node === undefined) return;
753
753
  event.preventDefault();
754
754
  if (this.#selectable) this.#select(id);
755
755
  else if (node.children.length > 0) this.toggle(id);
@@ -7,9 +7,9 @@ chui_tree_view {
7
7
  height: max-content;
8
8
  font-size: var(--font_default_size);
9
9
  border: 1px solid var(--border_color);
10
- margin: var(--margin);
10
+ margin: var(--block_margin);
11
11
  padding: 4px;
12
- border-radius: var(--border_radius);
12
+ border-radius: var(--radius_sm);
13
13
  background: var(--element_background_2);
14
14
  box-sizing: border-box;
15
15
  }
@@ -31,7 +31,9 @@ tree_view_button {
31
31
  flex-direction: row;
32
32
  gap: 6px;
33
33
  width: -webkit-fill-available;
34
- min-height: 32px;
34
+ /* Высота строки — одна на вёрстку и на арифметику распорок: в переменном режиме
35
+ её пишет код после замера, 32px — значение до замера */
36
+ min-height: var(--tree_view_row_height, 32px);
35
37
  box-sizing: border-box;
36
38
  /* 4px панели + 9px строки = 13px — тот же отступ текста, что у ячеек таблиц и сетки */
37
39
  padding: 4px 9px;
@@ -66,7 +68,7 @@ tree_view_button_arrow {
66
68
  tree_view_button_arrow chui_icon {
67
69
  font-size: var(--header_icon_size);
68
70
  color: inherit;
69
- transition: transform var(--transition_time) ease;
71
+ transition: transform var(--motion_fast) var(--motion_ease);
70
72
  }
71
73
 
72
74
  /* Стрелка: свёрнутый узел смотрит вправо, раскрытый — вниз */
@@ -88,7 +90,7 @@ tree_view_panel {
88
90
  position: relative;
89
91
  color: var(--text_color);
90
92
  border: none;
91
- transition: max-height var(--transition_time) ease;
93
+ transition: max-height var(--motion_base) var(--motion_ease);
92
94
  }
93
95
 
94
96
  /* Направляющая уровня: показывает, что вложенные строки относятся к раскрытому узлу */
@@ -170,7 +172,7 @@ tree_view_button.tree_view_button_drop_after {
170
172
  }
171
173
 
172
174
  tree_view_button.tree_view_button_drop_inside {
173
- background: var(--blue_prime_background_trans);
175
+ background: var(--blue_prime_background_tint_strong);
174
176
  color: var(--text_color_hover);
175
177
  }
176
178
 
@@ -184,8 +186,8 @@ tree_view_panel.tree_view_search_hidden {
184
186
 
185
187
  /* Совпадение подсвечивается спокойным акцентом: акцент зарезервирован за выбором */
186
188
  tree_view_button.tree_view_button_match {
187
- background: var(--blue_prime_background_trans);
188
- border-radius: var(--border_radius);
189
+ background: var(--blue_prime_background_tint_strong);
190
+ border-radius: var(--radius_sm);
189
191
  }
190
192
 
191
193
  /* === Отложенная отрисовка (опция deferRender) ===