chuijs 3.6.2 → 3.6.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 (119) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +1203 -162
  3. package/framework/appLayout/default/chui_app_layout.js +747 -747
  4. package/framework/appLayout/default/global_style.css +592 -568
  5. package/framework/appLayout/default/main_theme_style.css +118 -101
  6. package/framework/components/chui_accordion/accordion.js +63 -63
  7. package/framework/components/chui_accordion/styles.css +79 -75
  8. package/framework/components/chui_badge/badge.js +55 -55
  9. package/framework/components/chui_badge/styles.css +29 -29
  10. package/framework/components/chui_button/button.js +48 -48
  11. package/framework/components/chui_button/styles.css +75 -70
  12. package/framework/components/chui_calendar/calendar.js +97 -97
  13. package/framework/components/chui_card/card.js +87 -0
  14. package/framework/components/chui_card/styles.css +72 -0
  15. package/framework/components/chui_code/code.js +18 -18
  16. package/framework/components/chui_code/styles.css +9 -9
  17. package/framework/components/chui_console/console.js +27 -27
  18. package/framework/components/chui_console/styles.css +31 -31
  19. package/framework/components/chui_content_block/content_block.js +51 -51
  20. package/framework/components/chui_content_block/styles.css +2 -2
  21. package/framework/components/chui_context_menu/context_menu.js +230 -0
  22. package/framework/components/chui_context_menu/styles.css +136 -0
  23. package/framework/components/chui_custom_element/custom_element.js +24 -24
  24. package/framework/components/chui_details/details.js +85 -85
  25. package/framework/components/chui_details/styles.css +70 -66
  26. package/framework/components/chui_fieldset/fieldset.js +40 -40
  27. package/framework/components/chui_fieldset/styles.css +24 -24
  28. package/framework/components/chui_form/form.js +40 -40
  29. package/framework/components/chui_form/styles.css +21 -21
  30. package/framework/components/chui_graphs/graphs.js +234 -190
  31. package/framework/components/chui_graphs/styles.css +37 -32
  32. package/framework/components/chui_hero/hero.js +98 -0
  33. package/framework/components/chui_hero/styles.css +91 -0
  34. package/framework/components/chui_html_block/html_block.js +16 -16
  35. package/framework/components/chui_html_block/styles.css +5 -5
  36. package/framework/components/chui_hx/hx.js +15 -15
  37. package/framework/components/chui_hx/styles.css +38 -38
  38. package/framework/components/chui_icons/icons.js +2144 -2144
  39. package/framework/components/chui_icons/styles.css +13 -13
  40. package/framework/components/chui_inputs/chui_check_box/check_box.js +32 -32
  41. package/framework/components/chui_inputs/chui_check_box/styles.css +91 -86
  42. package/framework/components/chui_inputs/chui_combo_box/combo_box.js +166 -150
  43. package/framework/components/chui_inputs/chui_combo_box/styles.css +113 -107
  44. package/framework/components/chui_inputs/chui_date/date.js +177 -174
  45. package/framework/components/chui_inputs/chui_date/styles.css +163 -128
  46. package/framework/components/chui_inputs/chui_email/email.js +61 -61
  47. package/framework/components/chui_inputs/chui_email/styles.css +69 -71
  48. package/framework/components/chui_inputs/chui_file/file.js +76 -76
  49. package/framework/components/chui_inputs/chui_file/styles.css +99 -99
  50. package/framework/components/chui_inputs/chui_multi_combo_box/multi_combo_box.js +295 -295
  51. package/framework/components/chui_inputs/chui_multi_combo_box/styles.css +212 -235
  52. package/framework/components/chui_inputs/chui_number/number.js +108 -108
  53. package/framework/components/chui_inputs/chui_number/styles.css +84 -84
  54. package/framework/components/chui_inputs/chui_password/password.js +99 -99
  55. package/framework/components/chui_inputs/chui_password/styles.css +97 -97
  56. package/framework/components/chui_inputs/chui_radio_button/radio_button.js +45 -45
  57. package/framework/components/chui_inputs/chui_radio_button/styles.css +76 -73
  58. package/framework/components/chui_inputs/chui_select_box/select_box.js +187 -170
  59. package/framework/components/chui_inputs/chui_select_box/styles.css +123 -117
  60. package/framework/components/chui_inputs/chui_text/styles.css +83 -84
  61. package/framework/components/chui_inputs/chui_text/text.js +91 -91
  62. package/framework/components/chui_inputs/chui_text_area/styles.css +57 -57
  63. package/framework/components/chui_inputs/chui_text_area/text_area.js +61 -61
  64. package/framework/components/chui_inputs/chui_toggle/styles.css +66 -61
  65. package/framework/components/chui_inputs/chui_toggle/toggle.js +36 -36
  66. package/framework/components/chui_label/label.js +54 -54
  67. package/framework/components/chui_label/styles.css +11 -11
  68. package/framework/components/chui_media/audio.js +908 -908
  69. package/framework/components/chui_media/audio_styles.css +458 -458
  70. package/framework/components/chui_media/image.js +105 -105
  71. package/framework/components/chui_media/image_styles.css +61 -61
  72. package/framework/components/chui_media/video.js +248 -248
  73. package/framework/components/chui_media/video_styles.css +160 -160
  74. package/framework/components/chui_menu_bar/menu_bar.js +66 -74
  75. package/framework/components/chui_menu_bar/styles.css +114 -76
  76. package/framework/components/chui_modal/modal.js +142 -135
  77. package/framework/components/chui_modal/styles.css +36 -36
  78. package/framework/components/chui_notification/notification.js +72 -72
  79. package/framework/components/chui_notification/notification_download.js +78 -78
  80. package/framework/components/chui_notification/notification_download_progress.css +119 -123
  81. package/framework/components/chui_notification/notification_download_progress.js +105 -105
  82. package/framework/components/chui_notification/notification_update.js +54 -54
  83. package/framework/components/chui_notification/styles.css +91 -91
  84. package/framework/components/chui_notification/styles_download.css +85 -85
  85. package/framework/components/chui_notification/styles_update.css +73 -73
  86. package/framework/components/chui_paragraph/paragraph.js +14 -14
  87. package/framework/components/chui_paragraph/styles.css +6 -6
  88. package/framework/components/chui_popups/popups.js +250 -250
  89. package/framework/components/chui_popups/styles.css +129 -115
  90. package/framework/components/chui_progress_bar/progress_bar.js +28 -28
  91. package/framework/components/chui_progress_bar/styles.css +28 -28
  92. package/framework/components/chui_radio_group/radio_group.js +57 -57
  93. package/framework/components/chui_radio_group/styles.css +3 -3
  94. package/framework/components/chui_slideshow/slideshow.js +75 -75
  95. package/framework/components/chui_slideshow/styles.css +94 -85
  96. package/framework/components/chui_spinner/spinner.js +45 -45
  97. package/framework/components/chui_spinner/styles.css +23 -23
  98. package/framework/components/chui_table/styles.css +42 -42
  99. package/framework/components/chui_table/table.js +234 -234
  100. package/framework/components/chui_tabs/chui_tabs.js +77 -77
  101. package/framework/components/chui_tabs/styles.css +54 -48
  102. package/framework/components/chui_text_editor/styles.css +217 -217
  103. package/framework/components/chui_text_editor/text_editor.js +144 -144
  104. package/framework/components/chui_text_editor/text_editor_panel.js +568 -568
  105. package/framework/components/chui_tree_view/styles.css +81 -75
  106. package/framework/components/chui_tree_view/tree_view.js +90 -90
  107. package/framework/components/chui_webview/styles.css +27 -27
  108. package/framework/components/chui_webview/webview.js +103 -103
  109. package/framework/components/telegram_bot/chui_telegram_bot.js +183 -183
  110. package/framework/modules/chui_animations/animations.js +121 -121
  111. package/framework/modules/chui_animations/styles.css +79 -79
  112. package/framework/modules/chui_fonts.js +7129 -6974
  113. package/framework/modules/chui_functions.js +106 -78
  114. package/framework/modules/chui_logger/chui_logger.js +53 -53
  115. package/framework/modules/chui_page/page.js +86 -86
  116. package/framework/modules/chui_page/styles.css +9 -9
  117. package/framework/tray_bar/chui_menu_items.js +48 -48
  118. package/index.js +570 -555
  119. package/package.json +51 -46
@@ -1,145 +1,145 @@
1
- const {Label} = require("../chui_label/label");
2
- const {TextEditorPanel} = require("./text_editor_panel");
3
- const {Dialog} = require("../chui_modal/modal");
4
- const {ContentBlock} = require("../chui_content_block/content_block");
5
- const {Button} = require("../chui_button/button");
6
- const {TextInput} = require("../chui_inputs/chui_text/text");
7
-
8
- class TextEditor {
9
- #chui_text_editor_test = document.createElement("chui_text_editor_test");
10
- #chui_text_editor = document.createElement('chui_text_editor');
11
- #editor_controls = document.createElement('chui_editor_controls');
12
- #text_input = document.createElement('chui_editor_text_input');
13
- #id = require("randomstring").generate();
14
- #label = document.createElement("label");
15
- constructor(height = String(), options) {
16
- require('../../modules/chui_functions').setStyles(__dirname + "/styles.css", 'chUiJS_TextEditor');
17
- if (options.title !== undefined) {
18
- this.#label.innerText = options.title;
19
- this.#label.className = 'text_editor_label';
20
- this.#label.setAttribute('for', this.#id);
21
- this.#chui_text_editor_test.appendChild(this.#label);
22
- }
23
- // Панель управления
24
- this.#editor_controls.appendChild(new TextEditorPanel(this.#id, options.controls).set())
25
- //
26
- this.#text_input.contentEditable = 'true';
27
- this.#text_input.id = this.#id
28
- this.#text_input.style.height = height;
29
- this.#chui_text_editor.appendChild(this.#editor_controls);
30
- this.#chui_text_editor.appendChild(this.#text_input);
31
- //
32
- document.execCommand('defaultParagraphSeparator', false, 'p');
33
- this.#text_input.appendChild(initFirstLine())
34
- //
35
- this.#text_input.addEventListener("keyup", (e) => {
36
- if (e.keyCode === 8 && this.#text_input.children.length === 0) {
37
- this.#text_input.appendChild(initFirstLine())
38
- }
39
- })
40
- let editImage = new DialogEdit("Редактирование изображения")
41
- document.getElementsByTagName("img")
42
- this.#text_input.addEventListener("dblclick", (e) => {
43
- if (e.target.tagName === "IMG") {
44
- editImage.setTarget(e.target)
45
- editImage.openDialog()
46
- }
47
- })
48
- this.#editor_controls.appendChild(editImage.set())
49
- this.#text_input.addEventListener('focus', (e) => {
50
- this.#chui_text_editor.style.border = '1px solid var(--blue_prime_background)';
51
- this.#label.style.color = 'var(--blue_prime_background)';
52
- })
53
- this.#text_input.addEventListener('blur', () => {
54
- this.#chui_text_editor.removeAttribute("style");
55
- this.#label.removeAttribute("style");
56
- })
57
- this.#chui_text_editor_test.appendChild(this.#chui_text_editor)
58
- }
59
- addInputListener(listener = () => {}) {
60
- this.#text_input.addEventListener("input", listener)
61
- }
62
- setValueAsHTML(value) { this.#text_input.innerHTML = value; }
63
- getValueAsHTML() { return this.#text_input.innerHTML; }
64
- setValueAsText(value) { this.#text_input.innerText = value; }
65
- getValueAsText() { return this.#text_input.innerText; }
66
- set() { return this.#chui_text_editor_test; }
67
- #getCaretPosition() {
68
- let select = this.#text_input.ownerDocument.defaultView.getSelection();
69
- if (select.focusNode.parentNode.tagName === "B") {
70
- //console.log("bold")
71
- }
72
- let range = select.getRangeAt(0);
73
- let treeWalker = document.createTreeWalker(this.#text_input, NodeFilter.SHOW_TEXT, (node) => {
74
- let nodeRange = document.createRange();
75
- nodeRange.selectNode(node);
76
- return nodeRange.compareBoundaryPoints(Range.END_TO_END, range) < 1 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
77
- }, false
78
- );
79
- let charCount = 0;
80
- while (treeWalker.nextNode()) {
81
- charCount += treeWalker.currentNode.length;
82
- }
83
- if (range.startContainer.nodeType === 3) {
84
- charCount += range.startOffset;
85
- }
86
- return charCount;
87
- }
88
- }
89
-
90
- exports.TextEditor = TextEditor;
91
-
92
- class DialogEdit {
93
- #target = undefined;
94
- #dialog_link = new Dialog({ width: "max-content", height: "max-content", closeOutSideClick: true })
95
- #img_width = new TextInput({ title: "Ширина", width: "150px" })
96
- #img_height = new TextInput({ title: "Высота", width: "150px" })
97
- constructor(label) {
98
- //
99
- let content_body = new ContentBlock({
100
- direction: "row", wrap: "wrap", align: "center", justify: "center"
101
- })
102
- content_body.setWidth("-webkit-fill-available")
103
- let content_header = new ContentBlock({
104
- direction: "row", wrap: "wrap", align: "center", justify: "space-between", disableMarginChild: true
105
- })
106
- content_header.setWidth("-webkit-fill-available")
107
- content_body.add(this.#img_width, this.#img_height)
108
- this.#dialog_link.addToBody(content_body)
109
- content_header.add(
110
- new Button({
111
- title: "Закрыть",
112
- clickEvent: () => this.#dialog_link.close()
113
- }),
114
- new Label(label),
115
- new Button({
116
- title: "Сохранить",
117
- clickEvent: () => {
118
- this.#target.style.width = `${this.#img_width.getValue()}`
119
- this.#target.style.height = `${this.#img_height.getValue()}`
120
- this.#dialog_link.close()
121
- }
122
- })
123
- )
124
- this.#dialog_link.addToHeader(content_header)
125
- }
126
- setTarget(target) {
127
- this.#target = target;
128
- let style = getComputedStyle(this.#target);
129
- this.#img_width.setValue(style.width)
130
- this.#img_height.setValue(style.height)
131
- }
132
- openDialog() {
133
- this.#dialog_link.open()
134
- }
135
- set() {
136
- return this.#dialog_link.set();
137
- }
138
- }
139
-
140
- function initFirstLine() {
141
- let first_line = document.createElement("p")
142
- let br = document.createElement("br")
143
- first_line.appendChild(br)
144
- return first_line
1
+ const {Label} = require("../chui_label/label");
2
+ const {TextEditorPanel} = require("./text_editor_panel");
3
+ const {Dialog} = require("../chui_modal/modal");
4
+ const {ContentBlock} = require("../chui_content_block/content_block");
5
+ const {Button} = require("../chui_button/button");
6
+ const {TextInput} = require("../chui_inputs/chui_text/text");
7
+
8
+ class TextEditor {
9
+ #chui_text_editor_test = document.createElement("chui_text_editor_test");
10
+ #chui_text_editor = document.createElement('chui_text_editor');
11
+ #editor_controls = document.createElement('chui_editor_controls');
12
+ #text_input = document.createElement('chui_editor_text_input');
13
+ #id = require("randomstring").generate();
14
+ #label = document.createElement("label");
15
+ constructor(height = String(), options) {
16
+ require('../../modules/chui_functions').setStyles(__dirname + "/styles.css", 'chUiJS_TextEditor');
17
+ if (options.title !== undefined) {
18
+ this.#label.innerText = options.title;
19
+ this.#label.className = 'text_editor_label';
20
+ this.#label.setAttribute('for', this.#id);
21
+ this.#chui_text_editor_test.appendChild(this.#label);
22
+ }
23
+ // Панель управления
24
+ this.#editor_controls.appendChild(new TextEditorPanel(this.#id, options.controls).set())
25
+ //
26
+ this.#text_input.contentEditable = 'true';
27
+ this.#text_input.id = this.#id
28
+ this.#text_input.style.height = height;
29
+ this.#chui_text_editor.appendChild(this.#editor_controls);
30
+ this.#chui_text_editor.appendChild(this.#text_input);
31
+ //
32
+ document.execCommand('defaultParagraphSeparator', false, 'p');
33
+ this.#text_input.appendChild(initFirstLine())
34
+ //
35
+ this.#text_input.addEventListener("keyup", (e) => {
36
+ if (e.keyCode === 8 && this.#text_input.children.length === 0) {
37
+ this.#text_input.appendChild(initFirstLine())
38
+ }
39
+ })
40
+ let editImage = new DialogEdit("Редактирование изображения")
41
+ document.getElementsByTagName("img")
42
+ this.#text_input.addEventListener("dblclick", (e) => {
43
+ if (e.target.tagName === "IMG") {
44
+ editImage.setTarget(e.target)
45
+ editImage.openDialog()
46
+ }
47
+ })
48
+ this.#editor_controls.appendChild(editImage.set())
49
+ this.#text_input.addEventListener('focus', (e) => {
50
+ this.#chui_text_editor.style.border = '1px solid var(--blue_prime_background)';
51
+ this.#label.style.color = 'var(--blue_prime_background)';
52
+ })
53
+ this.#text_input.addEventListener('blur', () => {
54
+ this.#chui_text_editor.removeAttribute("style");
55
+ this.#label.removeAttribute("style");
56
+ })
57
+ this.#chui_text_editor_test.appendChild(this.#chui_text_editor)
58
+ }
59
+ addInputListener(listener = () => {}) {
60
+ this.#text_input.addEventListener("input", listener)
61
+ }
62
+ setValueAsHTML(value) { this.#text_input.innerHTML = value; }
63
+ getValueAsHTML() { return this.#text_input.innerHTML; }
64
+ setValueAsText(value) { this.#text_input.innerText = value; }
65
+ getValueAsText() { return this.#text_input.innerText; }
66
+ set() { return this.#chui_text_editor_test; }
67
+ #getCaretPosition() {
68
+ let select = this.#text_input.ownerDocument.defaultView.getSelection();
69
+ if (select.focusNode.parentNode.tagName === "B") {
70
+ //console.log("bold")
71
+ }
72
+ let range = select.getRangeAt(0);
73
+ let treeWalker = document.createTreeWalker(this.#text_input, NodeFilter.SHOW_TEXT, (node) => {
74
+ let nodeRange = document.createRange();
75
+ nodeRange.selectNode(node);
76
+ return nodeRange.compareBoundaryPoints(Range.END_TO_END, range) < 1 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
77
+ }, false
78
+ );
79
+ let charCount = 0;
80
+ while (treeWalker.nextNode()) {
81
+ charCount += treeWalker.currentNode.length;
82
+ }
83
+ if (range.startContainer.nodeType === 3) {
84
+ charCount += range.startOffset;
85
+ }
86
+ return charCount;
87
+ }
88
+ }
89
+
90
+ exports.TextEditor = TextEditor;
91
+
92
+ class DialogEdit {
93
+ #target = undefined;
94
+ #dialog_link = new Dialog({ width: "max-content", height: "max-content", closeOutSideClick: true })
95
+ #img_width = new TextInput({ title: "Ширина", width: "150px" })
96
+ #img_height = new TextInput({ title: "Высота", width: "150px" })
97
+ constructor(label) {
98
+ //
99
+ let content_body = new ContentBlock({
100
+ direction: "row", wrap: "wrap", align: "center", justify: "center"
101
+ })
102
+ content_body.setWidth("-webkit-fill-available")
103
+ let content_header = new ContentBlock({
104
+ direction: "row", wrap: "wrap", align: "center", justify: "space-between", disableMarginChild: true
105
+ })
106
+ content_header.setWidth("-webkit-fill-available")
107
+ content_body.add(this.#img_width, this.#img_height)
108
+ this.#dialog_link.addToBody(content_body)
109
+ content_header.add(
110
+ new Button({
111
+ title: "Закрыть",
112
+ clickEvent: () => this.#dialog_link.close()
113
+ }),
114
+ new Label(label),
115
+ new Button({
116
+ title: "Сохранить",
117
+ clickEvent: () => {
118
+ this.#target.style.width = `${this.#img_width.getValue()}`
119
+ this.#target.style.height = `${this.#img_height.getValue()}`
120
+ this.#dialog_link.close()
121
+ }
122
+ })
123
+ )
124
+ this.#dialog_link.addToHeader(content_header)
125
+ }
126
+ setTarget(target) {
127
+ this.#target = target;
128
+ let style = getComputedStyle(this.#target);
129
+ this.#img_width.setValue(style.width)
130
+ this.#img_height.setValue(style.height)
131
+ }
132
+ openDialog() {
133
+ this.#dialog_link.open()
134
+ }
135
+ set() {
136
+ return this.#dialog_link.set();
137
+ }
138
+ }
139
+
140
+ function initFirstLine() {
141
+ let first_line = document.createElement("p")
142
+ let br = document.createElement("br")
143
+ first_line.appendChild(br)
144
+ return first_line
145
145
  }